From 3a034abb4dca58ff0940687d8dd2b829ce2e226f Mon Sep 17 00:00:00 2001 From: "jk7744.park" Date: Sat, 24 Oct 2015 18:06:19 +0900 Subject: [PATCH] tizen 2.4 release --- CMakeLists.txt | 33 +- {build_wearable => build}/CMakeLists.txt | 0 .../CMakeLists.txt => build/Options.cmake | 10 +- .../certificate_dao/CMakeLists.txt | 2 +- .../wrt-commons-certificate-dao.pc.in | 2 +- {build_mobile => build}/core/CMakeLists.txt | 16 +- {build_wearable => build}/core/DESCRIPTION | 0 {build_wearable => build}/core/dpl-efl.pc.in | 2 +- .../custom_handler_dao/CMakeLists.txt | 4 +- .../wrt-commons-custom-handler-dao-ro.pc.in | 2 +- .../wrt-commons-custom-handler-dao-rw.pc.in | 2 +- {build_mobile => build}/db/CMakeLists.txt | 4 +- {build_mobile => build}/db/dpl-db-efl.pc.in | 2 +- {build_mobile => build}/dbus/CMakeLists.txt | 4 +- {build_mobile => build}/dbus/dpl-dbus-efl.pc.in | 2 +- {build_mobile => build}/event/CMakeLists.txt | 5 +- {build_mobile => build}/event/dpl-event-efl.pc.in | 2 +- {build_mobile => build}/i18n/CMakeLists.txt | 2 +- .../i18n/wrt-commons-i18n-dao-ro.pc.in | 2 +- {build_wearable => build}/log/CMakeLists.txt | 4 +- {build_mobile => build}/log/dpl-log-efl.pc.in | 2 +- {build_wearable => build}/rpc/CMakeLists.txt | 4 +- {build_mobile => build}/rpc/dpl-rpc-efl.pc.in | 2 +- .../security_origin_dao/CMakeLists.txt | 2 +- .../wrt-commons-security-origin-dao.pc.in | 2 +- {build_wearable => build}/socket/CMakeLists.txt | 4 +- .../socket/dpl-socket-efl.pc.in | 2 +- {build_wearable => build}/support/CMakeLists.txt | 2 +- .../support/wrt-plugins-types.pc.in | 0 {build_wearable => build}/test/CMakeLists.txt | 4 +- {build_mobile => build}/test/dpl-test-efl.pc.in | 2 +- {build_wearable => build}/utils/CMakeLists.txt | 4 +- {build_mobile => build}/utils/dpl-utils-efl.pc.in | 2 +- {build_mobile => build}/widget_dao/CMakeLists.txt | 4 +- .../widget_dao/dpl-wrt-dao-ro.pc.in | 2 +- .../widget_dao/dpl-wrt-dao-rw.pc.in | 2 +- .../widget_interface_dao/CMakeLists.txt | 2 +- .../wrt-commons-widget-interface-dao.pc.in | 2 +- build_mobile/CMakeLists.txt | 36 - build_mobile/auto_save_dao/CMakeLists.txt | 22 - .../wrt-commons-auto-save-dao-ro.pc.in | 12 - .../wrt-commons-auto-save-dao-rw.pc.in | 12 - .../auto_save_dao/wrt-commons-auto-save-dao.pc.in | 12 - build_mobile/certificate_dao/CMakeLists.txt | 21 - build_mobile/core/DESCRIPTION | 2 - build_mobile/core/dpl-efl.pc.in | 11 - build_mobile/custom_handler_dao/CMakeLists.txt | 21 - .../wrt-commons-custom-handler-dao-ro.pc.in | 12 - .../wrt-commons-custom-handler-dao-rw.pc.in | 12 - build_mobile/log/CMakeLists.txt | 65 - build_mobile/rpc/CMakeLists.txt | 75 - build_mobile/security_origin_dao/CMakeLists.txt | 21 - .../wrt-commons-security-origin-dao.pc.in | 12 - build_mobile/socket/CMakeLists.txt | 72 - build_mobile/support/CMakeLists.txt | 26 - build_mobile/support/wrt-plugins-types.pc.in | 11 - build_mobile/test/CMakeLists.txt | 70 - build_mobile/utils/CMakeLists.txt | 84 - build_mobile/widget_dao/dpl-wrt-dao-ro.pc.in | 12 - .../wrt-commons-certificate-dao.pc.in | 12 - build_wearable/core/CMakeLists.txt | 79 - build_wearable/db/CMakeLists.txt | 70 - build_wearable/db/dpl-db-efl.pc.in | 11 - build_wearable/dbus/CMakeLists.txt | 72 - build_wearable/dbus/dpl-dbus-efl.pc.in | 11 - build_wearable/event/CMakeLists.txt | 72 - build_wearable/event/dpl-event-efl.pc.in | 11 - build_wearable/i18n/CMakeLists.txt | 20 - build_wearable/i18n/wrt-commons-i18n-dao-ro.pc.in | 12 - build_wearable/log/dpl-log-efl.pc.in | 11 - build_wearable/rpc/dpl-rpc-efl.pc.in | 11 - build_wearable/socket/dpl-socket-efl.pc.in | 11 - build_wearable/test/dpl-test-efl.pc.in | 11 - build_wearable/utils/dpl-utils-efl.pc.in | 11 - build_wearable/widget_dao/CMakeLists.txt | 21 - build_wearable/widget_dao/dpl-wrt-dao-rw.pc.in | 12 - .../wrt-commons-widget-interface-dao.pc.in | 12 - {etc_wearable => etc}/CMakeLists.txt | 0 {etc_wearable => etc}/DESCRIPTION | 0 .../wrt_commons_create_clean_db.sh | 4 +- {etc_wearable => etc}/wrt_commons_reset_db.sh | 10 +- etc_mobile/CMakeLists.txt | 8 - etc_mobile/DESCRIPTION | 1 - etc_mobile/wrt_commons_create_clean_db.sh | 72 - etc_mobile/wrt_commons_reset_db.sh | 65 - examples/binary_queue/binary_queue.cpp | 1 - examples/dbus/client-example/CMakeLists.txt | 22 +- examples/dbus/server-example/CMakeLists.txt | 26 +- examples/dbus/server-example/server-example.cpp | 6 +- examples/fake_rpc/fake_rpc.cpp | 60 +- examples/metronome/metronome_client.cpp | 12 +- examples/metronome/metronome_server.cpp | 10 +- examples/rpc/rpc.cpp | 74 +- examples/simple/simple.cpp | 4 +- examples/socket/socket.cpp | 20 +- examples/tcpsock/tcpsock.cpp | 24 +- examples/timed_event/timed_event.cpp | 6 +- {modules_mobile => modules}/CMakeLists.txt | 25 +- .../certificate_dao/CMakeLists.txt | 2 + .../certificate_dao/dao/certificate_dao.cpp | 167 +- .../certificate_dao/dao/certificate_dao_types.cpp | 1 - .../certificate_dao/dao/certificate_database.cpp | 2 +- .../wrt-commons/certificate-dao/certificate_dao.h | 6 +- .../certificate-dao/certificate_dao_types.h | 0 .../certificate-dao/certificate_database.h | 28 +- .../certificate_dao/orm/certificate_db | 0 .../certificate_dao/orm/certificate_db_definitions | 0 .../orm/certificate_db_sql_generator.h | 0 .../orm/orm_generator_certificate.h | 0 {modules_wearable => modules}/core/DESCRIPTION | 0 {modules_wearable => modules}/core/config.cmake | 7 +- .../core/include/DESCRIPTION | 0 .../core/include/dpl/abstract_input.h | 0 .../core/include/dpl/abstract_input_output.h | 0 .../core/include/dpl/abstract_output.h | 0 .../core/include/dpl/abstract_waitable_input.h | 0 .../include/dpl/abstract_waitable_input_adapter.h | 0 .../include/dpl/abstract_waitable_input_output.h | 0 .../dpl/abstract_waitable_input_output_adapter.h | 0 .../core/include/dpl/abstract_waitable_output.h | 0 .../include/dpl/abstract_waitable_output_adapter.h | 0 .../core/include/dpl/address.h | 0 .../core/include/dpl/aligned.h | 0 .../core/include/dpl/application.h | 17 +- .../core/include/dpl/apply.h | 0 .../core/include/dpl/assert.h | 11 +- .../core/include/dpl/atomic.h | 4 +- .../core/include/dpl/availability.h | 0 .../core/include/dpl/binary_queue.h | 2 +- .../core/include/dpl/bind.h | 0 .../core/include/dpl/bool_operator.h | 0 .../core/include/dpl/char_traits.h | 0 .../core/include/dpl/colors.h | 0 .../core/include/dpl/copy.h | 0 .../core/include/dpl/errno_string.h | 0 .../core/include/dpl/exception.h | 2 +- .../core/include/dpl/file_input.h | 0 .../core/include/dpl/file_output.h | 0 .../core/include/dpl/foreach.h | 0 .../core/include/dpl/framework_appcore.h | 3 +- .../core/include/dpl/framework_efl.h | 1 - .../core/include/dpl/framework_vconf.h | 0 .../core/include/dpl/free_deleter.h | 24 +- .../core/include/dpl/generic_event.h | 10 +- .../core/include/dpl/lexical_cast.h | 0 .../core/include/dpl/main.h | 0 .../core/include/dpl/mutable_task_list.h | 0 .../core/include/dpl/mutex.h | 3 +- .../core/include/dpl/named_base_pipe.h | 0 .../core/include/dpl/named_input_pipe.h | 0 .../core/include/dpl/named_output_pipe.h | 0 .../core/include/dpl/noncopyable.h | 0 .../core/include/dpl/once.h | 9 +- .../core/include/dpl/optional_typedefs.h | 14 +- modules/core/include/dpl/platform.h.in | 162 + .../core/include/dpl/preprocessor.h | 0 .../core/include/dpl/read_write_mutex.h | 0 .../core/include/dpl/recursive_mutex.h | 3 +- .../core/include/dpl/scope_guard.h | 6 +- .../core/include/dpl/scoped_close.h | 9 +- .../core/include/dpl/scoped_dir.h | 0 .../core/include/dpl/scoped_fclose.h | 8 +- .../core/include/dpl/scoped_free.h | 0 .../core/include/dpl/scoped_resource.h | 0 .../core/include/dpl/semaphore.h | 0 .../core/include/dpl/serialization.h | 0 .../core/include/dpl/single_instance.h | 0 .../core/include/dpl/singleton.h | 7 +- .../core/include/dpl/singleton_impl.h | 14 +- .../core/include/dpl/singleton_safe_impl.h | 0 .../core/include/dpl/sstream.h | 0 .../core/include/dpl/static_block.h | 0 .../core/include/dpl/string.h | 0 .../core/include/dpl/task.h | 0 .../core/include/dpl/thread.h | 26 +- modules/core/include/dpl/type_list.h | 120 + .../core/include/dpl/union_cast.h | 3 +- .../core/include/dpl/waitable_event.h | 0 .../core/include/dpl/waitable_handle.h | 0 .../include/dpl/waitable_handle_watch_support.h | 4 +- .../core/include/dpl/workaround.h | 0 .../core/include/dpl/zip_input.h | 0 modules/core/platform.cmake | 53 + {modules_wearable => modules}/core/src/DESCRIPTION | 0 .../core/src/abstract_waitable_input_adapter.cpp | 0 .../src/abstract_waitable_input_output_adapter.cpp | 0 .../core/src/abstract_waitable_output_adapter.cpp | 0 {modules_wearable => modules}/core/src/address.cpp | 0 .../core/src/application.cpp | 70 +- {modules_wearable => modules}/core/src/apply.cpp | 0 {modules_wearable => modules}/core/src/assert.cpp | 38 +- {modules_wearable => modules}/core/src/atomic.cpp | 0 .../core/src/binary_queue.cpp | 13 +- .../core/src/char_traits.cpp | 0 {modules_wearable => modules}/core/src/colors.cpp | 0 {modules_wearable => modules}/core/src/copy.cpp | 0 .../core/src/errno_string.cpp | 7 +- {modules_mobile => modules}/core/src/exception.cpp | 7 +- .../core/src/file_input.cpp | 10 +- .../core/src/file_output.cpp | 19 +- .../core/src/generic_event.cpp | 0 .../core/src/lexical_cast.cpp | 0 {modules_mobile => modules}/core/src/main.cpp | 56 +- .../core/src/mutable_task_list.cpp | 0 {modules_mobile => modules}/core/src/mutex.cpp | 12 +- .../core/src/named_base_pipe.cpp | 0 .../core/src/named_output_pipe.cpp | 9 +- .../core/src/noncopyable.cpp | 0 .../src/model.cpp => modules/core/src/once.cpp | 15 +- .../core/src/read_write_mutex.cpp | 0 .../core/src/recursive_mutex.cpp | 0 .../core/src/scoped_dir.cpp | 8 +- .../core/src/semaphore.cpp | 43 +- .../core/src/serialization.cpp | 0 .../core/src/single_instance.cpp | 12 +- .../core/src/singleton.cpp | 0 {modules_mobile => modules}/core/src/string.cpp | 24 +- {modules_wearable => modules}/core/src/task.cpp | 0 {modules_mobile => modules}/core/src/thread.cpp | 123 +- .../core/src/type_list.cpp | 0 .../core/src/union_cast.cpp | 0 .../core/src/waitable_event.cpp | 13 +- .../core/src/waitable_handle.cpp | 1 - .../core/src/waitable_handle_watch_support.cpp | 61 +- {modules_mobile => modules}/core/src/zip_input.cpp | 123 +- .../custom_handler_dao/CMakeLists.txt | 1 + .../dao/CustomHandlerDatabase.cpp | 2 +- .../custom_handler_dao/dao/custom_handler_dao.cpp | 41 +- .../dao/custom_handler_dao_read_only.cpp | 12 +- .../custom-handler-dao-ro/CustomHandlerDatabase.h | 32 +- .../custom-handler-dao-ro/common_dao_types.h | 0 .../custom_handler_dao_read_only.h | 0 .../custom-handler-dao-rw/custom_handler_dao.h | 0 .../custom_handler_dao/orm/custom_handler_db | 0 .../orm/custom_handler_db_definitions | 0 .../orm/custom_handler_db_sql_generator.h | 0 .../custom_handler_dao}/orm/gen_db_md5.sh | 0 .../orm/orm_generator_custom_handler.h | 0 .../custom_handler_dao}/orm/version_db | 0 {modules_wearable => modules}/db/config.cmake | 0 .../include/dpl/db/naive_synchronization_object.h | 0 .../db/include/dpl/db/orm.h | 34 +- .../db/include/dpl/db/orm_generator.h | 6 +- .../db/include/dpl/db/orm_interface.h | 0 .../db/include/dpl/db/orm_macros.h | 0 .../db/include/dpl/db/sql_connection.h | 41 +- .../db/include/dpl/db/thread_database_support.h | 21 +- .../db/src/naive_synchronization_object.cpp | 0 {modules_wearable => modules}/db/src/orm.cpp | 0 .../db/src/sql_connection.cpp | 293 +- .../db/src/thread_database_support.cpp | 0 {modules_wearable => modules}/dbus/config.cmake | 0 .../dbus/include/dpl/dbus/connection.h | 0 .../dbus/include/dpl/dbus/dbus_client.h | 18 +- .../dbus/include/dpl/dbus/dbus_deserialization.h | 0 .../include/dpl/dbus/dbus_interface_dispatcher.h | 10 +- .../dbus/include/dpl/dbus/dbus_serialization.h | 0 .../include/dpl/dbus/dbus_server_deserialization.h | 0 .../include/dpl/dbus/dbus_server_serialization.h | 0 .../dbus/include/dpl/dbus/dbus_signature.h | 0 .../dbus/include/dpl/dbus/dispatcher.h | 0 .../dbus/include/dpl/dbus/exception.h | 0 .../dbus/include/dpl/dbus/glib_util.h | 0 .../dbus/include/dpl/dbus/interface.h | 0 .../dbus/include/dpl/dbus/method_proxy.h | 6 +- .../dbus/include/dpl/dbus/object.h | 0 .../dbus/include/dpl/dbus/object_proxy.h | 0 .../dbus/include/dpl/dbus/server.h | 0 .../dbus/src/connection.cpp | 11 +- .../dbus/src/dispatcher.cpp | 0 .../dbus/src/interface.cpp | 1 - {modules_wearable => modules}/dbus/src/object.cpp | 0 .../dbus/src/object_proxy.cpp | 0 {modules_wearable => modules}/dbus/src/server.cpp | 8 +- {modules_wearable => modules}/event/config.cmake | 0 .../event/include/dpl/event/abstract_event_call.h | 0 .../include/dpl/event/abstract_event_dispatcher.h | 0 .../event/include/dpl/event/controller.h | 0 .../event/include/dpl/event/event_listener.h | 0 .../event/include/dpl/event/event_support.h | 120 +- .../event/include/dpl/event/generic_event_call.h | 8 +- .../include/dpl/event/inter_context_delegate.h | 13 +- .../include/dpl/event/main_event_dispatcher.h | 4 +- .../event/include/dpl/event/model.h | 0 .../event/include/dpl/event/model_bind_to_dao.h | 0 .../event/include/dpl/event/property.h | 46 +- .../include/dpl/event/thread_event_dispatcher.h | 0 .../event/src/abstract_event_call.cpp | 0 .../event/src/abstract_event_dispatcher.cpp | 0 .../event/src/controller.cpp | 0 .../event/src/event_listener.cpp | 0 .../event/src/event_support.cpp | 2 +- .../event/src/generic_event_call.cpp | 0 .../event/src/inter_context_delegate.cpp | 0 .../event/src/main_event_dispatcher.cpp | 67 +- {modules_wearable => modules}/event/src/model.cpp | 0 .../event/src/thread_event_dispatcher.cpp | 14 +- {modules_wearable => modules}/i18n/CMakeLists.txt | 0 .../i18n/dao/CMakeLists.txt | 15 +- .../wrt-commons/i18n-dao-ro/i18n_dao_read_only.h | 0 .../wrt-commons/i18n-dao-ro/i18n_database.h | 8 +- .../i18n/dao}/orm/gen_db_md5.sh | 0 .../i18n/dao/orm/i18n_db_definitions | 0 .../i18n/dao/orm/i18n_db_sql_generator.h | 0 {modules_wearable => modules}/i18n/dao/orm/iana_db | 0 .../i18n/dao/orm/orm_generator_i18n.h | 0 .../i18n/dao/orm/version_db | 0 .../i18n/dao/src/i18n_dao_read_only.cpp | 0 .../i18n/dao/src/i18n_database.cpp | 2 +- .../localization/config.cmake | 0 .../localization/include/LanguageTagsProvider.h | 1 - .../include/dpl/localization/localization_utils.h | 16 +- .../dpl/localization/w3c_file_localization.h | 10 +- .../localization/src/LanguageTagsProvider.cpp | 26 +- .../localization/src/w3c_file_localization.cpp | 65 +- {modules_mobile => modules}/log/config.cmake | 10 +- .../log/include/dpl/log/abstract_log_provider.h | 0 .../log/include/dpl/log/dlog_log_provider.h | 5 +- .../log/include/dpl/log/log.h | 150 +- .../log/include/dpl/log/old_style_log_provider.h | 0 .../log/include/dpl/log/secure_log.h | 20 +- .../log/include/dpl/log/wrt_log.h | 9 +- .../log/src/abstract_log_provider.cpp | 0 .../log/src/dlog_log_provider.cpp | 0 modules/log/src/log.cpp | 128 + .../log/src/old_style_log_provider.cpp | 0 {modules_wearable => modules}/rpc/config.cmake | 0 .../rpc/include/dpl/rpc/abstract_rpc_connection.h | 0 .../rpc/include/dpl/rpc/abstract_rpc_connector.h | 0 .../rpc/include/dpl/rpc/generic_rpc_connection.h | 0 .../include/dpl/rpc/generic_socket_rpc_client.h | 18 +- .../dpl/rpc/generic_socket_rpc_connection.h | 0 .../include/dpl/rpc/generic_socket_rpc_server.h | 22 +- .../rpc/include/dpl/rpc/rpc_function.h | 8 +- .../rpc/include/dpl/rpc/unix_socket_rpc_client.h | 0 .../include/dpl/rpc/unix_socket_rpc_connection.h | 0 .../rpc/include/dpl/rpc/unix_socket_rpc_server.h | 0 .../rpc/src/abstract_rpc_connection.cpp | 0 .../rpc/src/abstract_rpc_connector.cpp | 0 .../rpc/src/generic_rpc_connection.cpp | 31 +- .../rpc/src/generic_socket_rpc_client.cpp | 0 .../rpc/src/generic_socket_rpc_connection.cpp | 0 .../rpc/src/generic_socket_rpc_server.cpp | 0 .../rpc/src/unix_socket_rpc_client.cpp | 0 .../rpc/src/unix_socket_rpc_connection.cpp | 0 .../rpc/src/unix_socket_rpc_server.cpp | 0 .../security_origin_dao/CMakeLists.txt | 2 + .../dao/security_origin_dao.cpp | 278 +- .../dao/security_origin_dao_types.cpp | 1 - .../security-origin-dao/security_origin_dao.h | 7 +- .../security_origin_dao_types.h | 0 .../orm/orm_generator_security_origin.h | 0 .../security_origin_dao/orm/security_origin_db | 0 .../orm/security_origin_db_definitions | 0 .../orm/security_origin_db_sql_generator.h | 0 {modules_wearable => modules}/socket/config.cmake | 0 .../socket/include/dpl/socket/abstract_socket.h | 0 .../socket/include/dpl/socket/generic_socket.h | 144 +- .../socket/include/dpl/socket/unix_socket.h | 0 ...itable_input_output_execution_context_support.h | 0 .../socket/src/generic_socket.cpp | 0 .../socket/src/unix_socket.cpp | 19 +- ...able_input_output_execution_context_support.cpp | 77 +- {modules_wearable => modules}/support/config.cmake | 0 .../support/wrt_plugin_export.h | 5 +- {modules_wearable => modules}/test/config.cmake | 0 .../test/include/dpl/test/abstract_input_parser.h | 0 .../test/include/dpl/test/abstract_input_reader.h | 1 - .../include/dpl/test/abstract_input_tokenizer.h | 1 - .../test/include/dpl/test/process_pipe.h | 0 .../test/include/dpl/test/test_results_collector.h | 0 .../test/include/dpl/test/test_runner.h | 62 +- .../test/include/dpl/test/test_runner_child.h | 0 .../include/dpl/test/test_runner_multiprocess.h | 0 .../test/include/dpl/test/value_separated_parser.h | 0 .../include/dpl/test/value_separated_policies.h | 0 .../test/include/dpl/test/value_separated_reader.h | 0 .../include/dpl/test/value_separated_tokenizer.h | 0 .../test/include/dpl/test/value_separated_tokens.h | 0 .../test/src/process_pipe.cpp | 6 +- .../test/src/test_results_collector.cpp | 6 +- .../test/src/test_runner.cpp | 21 +- .../test/src/test_runner_child.cpp | 0 .../test/src/test_runner_multiprocess.cpp | 0 .../test/src/value_separated_policies.cpp | 4 +- .../test/src/value_separated_tokens.cpp | 0 .../support => modules/ttrace}/config.cmake | 19 +- modules/ttrace/include/WrtTrace.h | 14 + modules/ttrace/src/WrtTrace.cpp | 14 + {modules_wearable => modules}/utils/config.cmake | 0 .../utils/include/dpl/utils/bash_utils.h | 0 .../utils/include/dpl/utils/folder_size.h | 0 .../utils/include/dpl/utils/mime_type_utils.h | 0 .../utils/include/dpl/utils/path.h | 6 +- .../utils/include/dpl/utils/warp_iri.h | 2 +- .../utils/include/dpl/utils/widget_version.h | 18 +- .../utils/include/dpl/utils/wrt_global_settings.h | 0 .../utils/include/dpl/utils/wrt_utility.h | 13 +- .../utils/src/bash_utils.cpp | 1 - .../utils/src/folder_size.cpp | 39 +- .../utils/src/mime_type_utils.cpp | 10 +- {modules_wearable => modules}/utils/src/path.cpp | 33 +- {modules_mobile => modules}/utils/src/warp_iri.cpp | 5 +- .../utils/src/widget_version.cpp | 48 +- .../utils/src/wrt_global_settings.cpp | 0 .../utils/src/wrt_utility.cpp | 85 +- .../widget_dao/CMakeLists.txt | 22 +- .../widget_dao/dao/WrtDatabase.cpp | 1 - modules/widget_dao/dao/common_dao_types.cpp | 144 + .../widget_dao/dao/config_parser_data.cpp | 112 +- .../widget_dao/dao/feature_dao.cpp | 18 +- .../widget_dao/dao/feature_dao_read_only.cpp | 49 +- .../widget_dao/dao/path_builder.cpp | 0 .../widget_dao/dao/plugin_dao.cpp | 68 +- .../widget_dao/dao/plugin_dao_read_only.cpp | 97 +- .../widget_dao/dao/property_dao.cpp | 25 +- .../widget_dao/dao/property_dao_read_only.cpp | 14 +- .../widget_dao/dao/webruntime_database.cpp | 2 +- .../widget_dao/dao/widget_dao.cpp | 77 +- .../widget_dao/dao/widget_dao_read_only.cpp | 180 +- .../widget_dao/dao/widget_dao_types.cpp | 3 +- .../widget_dao/dao/widget_register_types.cpp | 19 +- .../include/dpl/wrt-dao-ro/WrtDatabase.h | 0 .../include/dpl/wrt-dao-ro/common_dao_types.h | 71 +- .../include/dpl/wrt-dao-ro/config_parser_data.h | 44 +- .../include/dpl/wrt-dao-ro/feature_dao_read_only.h | 0 .../include/dpl/wrt-dao-ro/feature_model.h | 0 .../include/dpl/wrt-dao-ro/global_config.h | 10 +- .../include/dpl/wrt-dao-ro/path_builder.h | 0 .../include/dpl/wrt-dao-ro/plugin_dao_read_only.h | 4 +- .../dpl/wrt-dao-ro/property_dao_read_only.h | 0 .../include/dpl/wrt-dao-ro/webruntime_database.h | 48 +- .../include/dpl/wrt-dao-ro/widget_config.h | 0 .../include/dpl/wrt-dao-ro/widget_dao_read_only.h | 208 +- .../include/dpl/wrt-dao-ro/widget_dao_types.h | 0 .../include/dpl/wrt-dao-ro/widget_register_types.h | 190 + .../include/dpl/wrt-dao-ro/wrt_db_types.h | 0 .../include/dpl/wrt-dao-rw/feature_dao.h | 0 .../widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h | 1 + .../include/dpl/wrt-dao-rw/property_dao.h | 0 .../widget_dao/include/dpl/wrt-dao-rw/widget_dao.h | 32 +- .../widget_dao/orm/gen_db_md5.sh | 0 .../widget_dao/orm/orm_generator_wrt.h | 0 .../widget_dao}/orm/version_db | 0 .../widget_dao/orm/wrt_db | 18 +- .../widget_dao/orm/wrt_db_definitions | 0 .../widget_dao/orm/wrt_db_sql_generator.h | 0 modules/widget_interface_dao/CMakeLists.txt | 33 + .../dao/widget_interface_dao.cpp | 278 + .../widget-interface-dao/widget_interface_dao.h | 26 +- .../certificate_dao/dao/certificate_dao.cpp | 256 - .../certificate-dao/certificate_dao_types.h | 65 - modules_mobile/certificate_dao/orm/certificate_db | 9 - .../certificate_dao/orm/certificate_db_definitions | 5 - .../orm/certificate_db_sql_generator.h | 27 - .../orm/orm_generator_certificate.h | 24 - modules_mobile/core/DESCRIPTION | 1 - modules_mobile/core/config.cmake | 162 - modules_mobile/core/include/DESCRIPTION | 2 - .../dpl/3rdparty/fastdelegate/FastDelegate.h | 2108 ----- .../dpl/3rdparty/fastdelegate/FastDelegateBind.h | 243 - modules_mobile/core/include/dpl/abstract_input.h | 58 - .../core/include/dpl/abstract_input_output.h | 38 - modules_mobile/core/include/dpl/abstract_output.h | 60 - .../core/include/dpl/abstract_waitable_input.h | 39 - .../include/dpl/abstract_waitable_input_adapter.h | 46 - .../include/dpl/abstract_waitable_input_output.h | 38 - .../dpl/abstract_waitable_input_output_adapter.h | 40 - .../core/include/dpl/abstract_waitable_output.h | 39 - .../include/dpl/abstract_waitable_output_adapter.h | 46 - modules_mobile/core/include/dpl/address.h | 59 - modules_mobile/core/include/dpl/aligned.h | 28 - modules_mobile/core/include/dpl/application.h | 111 - modules_mobile/core/include/dpl/apply.h | 199 - modules_mobile/core/include/dpl/assert.h | 43 - modules_mobile/core/include/dpl/atomic.h | 49 - modules_mobile/core/include/dpl/availability.h | 30 - modules_mobile/core/include/dpl/bool_operator.h | 38 - modules_mobile/core/include/dpl/char_traits.h | 38 - modules_mobile/core/include/dpl/colors.h | 73 - modules_mobile/core/include/dpl/copy.h | 59 - .../core/include/dpl/enable_shared_from_this.h | 68 - modules_mobile/core/include/dpl/errno_string.h | 35 - modules_mobile/core/include/dpl/fast_delegate.h | 37 - modules_mobile/core/include/dpl/file_input.h | 62 - modules_mobile/core/include/dpl/file_output.h | 62 - modules_mobile/core/include/dpl/foreach.h | 61 - modules_mobile/core/include/dpl/framework_efl.h | 25 - modules_mobile/core/include/dpl/framework_vconf.h | 24 - modules_mobile/core/include/dpl/lexical_cast.h | 43 - modules_mobile/core/include/dpl/main.h | 93 - .../core/include/dpl/mutable_task_list.h | 53 - modules_mobile/core/include/dpl/named_base_pipe.h | 48 - modules_mobile/core/include/dpl/named_input_pipe.h | 36 - .../core/include/dpl/named_output_pipe.h | 63 - modules_mobile/core/include/dpl/noncopyable.h | 38 - modules_mobile/core/include/dpl/once.h | 45 - modules_mobile/core/include/dpl/optional.h | 175 - .../core/include/dpl/optional_typedefs.h | 31 - modules_mobile/core/include/dpl/preprocessor.h | 35 - modules_mobile/core/include/dpl/read_write_mutex.h | 80 - modules_mobile/core/include/dpl/recursive_mutex.h | 67 - modules_mobile/core/include/dpl/scoped_array.h | 65 - modules_mobile/core/include/dpl/scoped_dir.h | 50 - modules_mobile/core/include/dpl/scoped_free.h | 57 - modules_mobile/core/include/dpl/scoped_gpointer.h | 75 - modules_mobile/core/include/dpl/scoped_ptr.h | 70 - modules_mobile/core/include/dpl/scoped_resource.h | 80 - modules_mobile/core/include/dpl/semaphore.h | 131 - modules_mobile/core/include/dpl/serialization.h | 327 - modules_mobile/core/include/dpl/shared_ptr.h | 282 - modules_mobile/core/include/dpl/single_instance.h | 55 - modules_mobile/core/include/dpl/singleton.h | 57 - modules_mobile/core/include/dpl/singleton_impl.h | 53 - .../core/include/dpl/singleton_safe_impl.h | 45 - modules_mobile/core/include/dpl/sstream.h | 38 - modules_mobile/core/include/dpl/static_block.h | 45 - modules_mobile/core/include/dpl/string.h | 157 - modules_mobile/core/include/dpl/task.h | 169 - modules_mobile/core/include/dpl/task_list.h | 57 - modules_mobile/core/include/dpl/thread.h | 398 - modules_mobile/core/include/dpl/type_list.h | 159 - modules_mobile/core/include/dpl/waitable_event.h | 59 - modules_mobile/core/include/dpl/waitable_handle.h | 115 - .../include/dpl/waitable_handle_watch_support.h | 155 - modules_mobile/core/include/dpl/workaround.h | 43 - modules_mobile/core/include/dpl/zip_input.h | 166 - modules_mobile/core/src/DESCRIPTION | 1 - .../core/src/abstract_waitable_input_adapter.cpp | 43 - .../src/abstract_waitable_input_output_adapter.cpp | 32 - .../core/src/abstract_waitable_output_adapter.cpp | 44 - modules_mobile/core/src/address.cpp | 66 - modules_mobile/core/src/apply.cpp | 31 - modules_mobile/core/src/assert.cpp | 67 - modules_mobile/core/src/atomic.cpp | 56 - modules_mobile/core/src/binary_queue.cpp | 312 - modules_mobile/core/src/char_traits.cpp | 34 - modules_mobile/core/src/colors.cpp | 70 - modules_mobile/core/src/copy.cpp | 138 - modules_mobile/core/src/errno_string.cpp | 98 - modules_mobile/core/src/fast_delegate.cpp | 23 - modules_mobile/core/src/generic_event.cpp | 31 - modules_mobile/core/src/lexical_cast.cpp | 31 - modules_mobile/core/src/mutable_task_list.cpp | 104 - modules_mobile/core/src/named_base_pipe.cpp | 59 - modules_mobile/core/src/named_output_pipe.cpp | 101 - modules_mobile/core/src/noncopyable.cpp | 31 - modules_mobile/core/src/once.cpp | 47 - modules_mobile/core/src/read_write_mutex.cpp | 85 - modules_mobile/core/src/recursive_mutex.cpp | 71 - modules_mobile/core/src/semaphore.cpp | 225 - modules_mobile/core/src/serialization.cpp | 31 - modules_mobile/core/src/single_instance.cpp | 125 - modules_mobile/core/src/singleton.cpp | 31 - modules_mobile/core/src/task.cpp | 32 - modules_mobile/core/src/task_list.cpp | 114 - modules_mobile/core/src/type_list.cpp | 31 - modules_mobile/core/src/union_cast.cpp | 31 - modules_mobile/core/src/waitable_event.cpp | 77 - modules_mobile/core/src/waitable_handle.cpp | 162 - .../custom_handler_dao/dao/custom_handler_dao.cpp | 313 - .../dao/custom_handler_dao_read_only.cpp | 258 - .../custom-handler-dao-ro/CustomHandlerDatabase.h | 64 - .../custom-handler-dao-ro/common_dao_types.h | 64 - .../custom_handler_dao_read_only.h | 96 - .../custom-handler-dao-rw/custom_handler_dao.h | 73 - .../custom_handler_dao/orm/custom_handler_db | 34 - .../orm/custom_handler_db_definitions | 6 - .../orm/custom_handler_db_sql_generator.h | 27 - .../custom_handler_dao/orm/gen_db_md5.sh | 19 - .../orm/orm_generator_custom_handler.h | 24 - modules_mobile/custom_handler_dao/orm/version_db | 5 - modules_mobile/db/config.cmake | 45 - .../include/dpl/db/naive_synchronization_object.h | 45 - modules_mobile/db/include/dpl/db/orm.h | 1116 --- modules_mobile/db/include/dpl/db/orm_generator.h | 382 - modules_mobile/db/include/dpl/db/orm_interface.h | 48 - modules_mobile/db/include/dpl/db/orm_macros.h | 34 - modules_mobile/db/include/dpl/db/sql_connection.h | 492 -- .../db/include/dpl/db/thread_database_support.h | 300 - .../db/src/naive_synchronization_object.cpp | 44 - modules_mobile/db/src/orm.cpp | 102 - modules_mobile/db/src/sql_connection.cpp | 850 -- modules_mobile/db/src/thread_database_support.cpp | 23 - modules_mobile/dbus/config.cmake | 56 - modules_mobile/dbus/include/dpl/dbus/connection.h | 207 - modules_mobile/dbus/include/dpl/dbus/dbus_client.h | 237 - .../dbus/include/dpl/dbus/dbus_deserialization.h | 224 - .../include/dpl/dbus/dbus_interface_dispatcher.h | 105 - .../dbus/include/dpl/dbus/dbus_serialization.h | 158 - .../include/dpl/dbus/dbus_server_deserialization.h | 178 - .../include/dpl/dbus/dbus_server_serialization.h | 95 - .../dbus/include/dpl/dbus/dbus_signature.h | 256 - modules_mobile/dbus/include/dpl/dbus/dispatcher.h | 99 - modules_mobile/dbus/include/dpl/dbus/exception.h | 47 - modules_mobile/dbus/include/dpl/dbus/glib_util.h | 30 - modules_mobile/dbus/include/dpl/dbus/interface.h | 113 - modules_mobile/dbus/include/dpl/dbus/object.h | 72 - .../dbus/include/dpl/dbus/object_proxy.h | 84 - modules_mobile/dbus/include/dpl/dbus/server.h | 90 - modules_mobile/dbus/src/connection.cpp | 275 - modules_mobile/dbus/src/dispatcher.cpp | 50 - modules_mobile/dbus/src/interface.cpp | 187 - modules_mobile/dbus/src/object.cpp | 47 - modules_mobile/dbus/src/object_proxy.cpp | 42 - modules_mobile/dbus/src/server.cpp | 114 - modules_mobile/event/config.cmake | 55 - .../event/include/dpl/event/abstract_event_call.h | 51 - .../include/dpl/event/abstract_event_dispatcher.h | 66 - .../event/include/dpl/event/controller.h | 160 - .../event/include/dpl/event/event_listener.h | 45 - .../event/include/dpl/event/event_support.h | 763 -- .../event/include/dpl/event/generic_event_call.h | 97 - .../include/dpl/event/inter_context_delegate.h | 391 - modules_mobile/event/include/dpl/event/model.h | 48 - .../event/include/dpl/event/model_bind_to_dao.h | 73 - modules_mobile/event/include/dpl/event/property.h | 517 -- .../include/dpl/event/thread_event_dispatcher.h | 56 - modules_mobile/event/src/abstract_event_call.cpp | 33 - .../event/src/abstract_event_dispatcher.cpp | 34 - modules_mobile/event/src/controller.cpp | 31 - modules_mobile/event/src/event_listener.cpp | 31 - modules_mobile/event/src/generic_event_call.cpp | 31 - .../event/src/inter_context_delegate.cpp | 31 - modules_mobile/event/src/main_event_dispatcher.cpp | 382 - .../event/src/thread_event_dispatcher.cpp | 114 - modules_mobile/i18n/CMakeLists.txt | 1 - modules_mobile/i18n/dao/CMakeLists.txt | 59 - .../wrt-commons/i18n-dao-ro/i18n_dao_read_only.h | 39 - modules_mobile/i18n/dao/orm/gen_db_md5.sh | 19 - modules_mobile/i18n/dao/orm/i18n_db_definitions | 6 - .../i18n/dao/orm/i18n_db_sql_generator.h | 27 - modules_mobile/i18n/dao/orm/iana_db | 8957 -------------------- modules_mobile/i18n/dao/orm/version_db | 5 - modules_mobile/i18n/dao/src/i18n_dao_read_only.cpp | 45 - modules_mobile/localization/config.cmake | 39 - .../include/dpl/localization/localization_utils.h | 77 - .../dpl/localization/w3c_file_localization.h | 87 - .../localization/src/LanguageTagsProvider.cpp | 161 - .../localization/src/w3c_file_localization.cpp | 620 -- .../log/include/dpl/log/abstract_log_provider.h | 59 - .../log/include/dpl/log/dlog_log_provider.h | 73 - .../log/include/dpl/log/old_style_log_provider.h | 84 - modules_mobile/log/include/dpl/log/secure_log.h | 92 - modules_mobile/log/src/abstract_log_provider.cpp | 34 - modules_mobile/log/src/dlog_log_provider.cpp | 129 - modules_mobile/log/src/log.cpp | 222 - modules_mobile/log/src/old_style_log_provider.cpp | 200 - modules_mobile/rpc/config.cmake | 52 - .../rpc/include/dpl/rpc/abstract_rpc_connection.h | 96 - .../rpc/include/dpl/rpc/abstract_rpc_connector.h | 53 - .../rpc/include/dpl/rpc/generic_rpc_connection.h | 60 - .../dpl/rpc/generic_socket_rpc_connection.h | 42 - .../include/dpl/rpc/generic_socket_rpc_server.h | 194 - .../rpc/include/dpl/rpc/unix_socket_rpc_client.h | 44 - .../include/dpl/rpc/unix_socket_rpc_connection.h | 40 - .../rpc/include/dpl/rpc/unix_socket_rpc_server.h | 44 - modules_mobile/rpc/src/abstract_rpc_connection.cpp | 31 - modules_mobile/rpc/src/abstract_rpc_connector.cpp | 31 - modules_mobile/rpc/src/generic_rpc_connection.cpp | 225 - .../rpc/src/generic_socket_rpc_client.cpp | 32 - .../rpc/src/generic_socket_rpc_connection.cpp | 32 - .../rpc/src/generic_socket_rpc_server.cpp | 31 - modules_mobile/rpc/src/unix_socket_rpc_client.cpp | 44 - .../rpc/src/unix_socket_rpc_connection.cpp | 33 - modules_mobile/rpc/src/unix_socket_rpc_server.cpp | 44 - modules_mobile/security_origin_dao/CMakeLists.txt | 55 - .../dao/security_origin_dao.cpp | 337 - .../dao/security_origin_dao_types.cpp | 29 - .../security_origin_dao_types.h | 96 - .../orm/orm_generator_security_origin.h | 24 - .../security_origin_dao/orm/security_origin_db | 13 - .../orm/security_origin_db_definitions | 5 - .../orm/security_origin_db_sql_generator.h | 27 - modules_mobile/socket/config.cmake | 40 - .../socket/include/dpl/socket/abstract_socket.h | 215 - .../socket/include/dpl/socket/unix_socket.h | 77 - ...itable_input_output_execution_context_support.h | 100 - modules_mobile/socket/src/generic_socket.cpp | 31 - modules_mobile/socket/src/unix_socket.cpp | 119 - modules_mobile/test/config.cmake | 54 - .../test/include/dpl/test/abstract_input_parser.h | 57 - .../test/include/dpl/test/process_pipe.h | 62 - .../test/include/dpl/test/test_results_collector.h | 95 - modules_mobile/test/include/dpl/test/test_runner.h | 229 - .../test/include/dpl/test/test_runner_child.h | 91 - .../include/dpl/test/test_runner_multiprocess.h | 60 - .../test/include/dpl/test/value_separated_parser.h | 94 - .../include/dpl/test/value_separated_policies.h | 47 - .../test/include/dpl/test/value_separated_reader.h | 63 - .../include/dpl/test/value_separated_tokenizer.h | 149 - .../test/include/dpl/test/value_separated_tokens.h | 44 - modules_mobile/test/src/process_pipe.cpp | 83 - modules_mobile/test/src/test_results_collector.cpp | 975 --- modules_mobile/test/src/test_runner.cpp | 698 -- modules_mobile/test/src/test_runner_child.cpp | 326 - .../test/src/value_separated_policies.cpp | 68 - modules_mobile/test/src/value_separated_tokens.cpp | 44 - modules_mobile/utils/config.cmake | 49 - .../utils/include/dpl/utils/bash_utils.h | 36 - .../utils/include/dpl/utils/file_utils.h | 55 - .../utils/include/dpl/utils/folder_size.h | 37 - .../utils/include/dpl/utils/mime_type_utils.h | 57 - modules_mobile/utils/include/dpl/utils/warp_iri.h | 64 - .../utils/include/dpl/utils/widget_version.h | 131 - .../utils/include/dpl/utils/wrt_global_settings.h | 38 - modules_mobile/utils/src/mime_type_utils.cpp | 154 - modules_mobile/utils/src/path.cpp | 543 -- modules_mobile/utils/src/widget_version.cpp | 398 - modules_mobile/utils/src/wrt_global_settings.cpp | 161 - modules_mobile/widget_dao/CMakeLists.txt | 138 - .../widget_dao/dao/config_parser_data.cpp | 426 - modules_mobile/widget_dao/dao/feature_dao.cpp | 164 - modules_mobile/widget_dao/dao/path_builder.cpp | 125 - .../widget_dao/dao/plugin_dao_read_only.cpp | 458 - modules_mobile/widget_dao/dao/property_dao.cpp | 167 - .../widget_dao/dao/property_dao_read_only.cpp | 199 - .../widget_dao/dao/webruntime_database.cpp | 26 - modules_mobile/widget_dao/dao/widget_dao.cpp | 871 -- .../widget_dao/dao/widget_dao_read_only.cpp | 1274 --- modules_mobile/widget_dao/dao/widget_dao_types.cpp | 37 - .../include/dpl/wrt-dao-ro/WrtDatabase.h | 39 - .../include/dpl/wrt-dao-ro/common_dao_types.h | 392 - .../include/dpl/wrt-dao-ro/config_parser_data.h | 373 - .../include/dpl/wrt-dao-ro/feature_dao_read_only.h | 88 - .../include/dpl/wrt-dao-ro/feature_model.h | 75 - .../include/dpl/wrt-dao-ro/global_config.h | 313 - .../include/dpl/wrt-dao-ro/path_builder.h | 55 - .../dpl/wrt-dao-ro/property_dao_read_only.h | 93 - .../include/dpl/wrt-dao-ro/widget_config.h | 112 - .../include/dpl/wrt-dao-ro/widget_dao_read_only.h | 812 -- .../include/dpl/wrt-dao-ro/widget_dao_types.h | 47 - .../include/dpl/wrt-dao-ro/wrt_db_types.h | 38 - .../include/dpl/wrt-dao-rw/feature_dao.h | 39 - .../include/dpl/wrt-dao-rw/property_dao.h | 59 - .../widget_dao/include/dpl/wrt-dao-rw/widget_dao.h | 216 - modules_mobile/widget_dao/orm/gen_db_md5.sh | 19 - modules_mobile/widget_dao/orm/orm_generator_wrt.h | 24 - modules_mobile/widget_dao/orm/version_db | 5 - modules_mobile/widget_dao/orm/wrt_db | 339 - modules_mobile/widget_dao/orm/wrt_db_definitions | 6 - .../widget_dao/orm/wrt_db_sql_generator.h | 28 - modules_mobile/widget_interface_dao/CMakeLists.txt | 45 - .../dao/widget_interface_dao.cpp | 299 - .../widget-interface-dao/widget_interface_dao.h | 72 - .../orm/orm_generator_widget_interface.h | 24 - .../widget_interface_dao/orm/widget_interface_db | 17 - .../orm/widget_interface_db_definitions | 5 - .../orm/widget_interface_db_sql_generator.h | 28 - modules_wearable/CMakeLists.txt | 38 - modules_wearable/certificate_dao/CMakeLists.txt | 57 - .../certificate_dao/dao/certificate_dao_types.cpp | 30 - .../wrt-commons/certificate-dao/certificate_dao.h | 59 - .../certificate-dao/certificate_database.h | 50 - modules_wearable/core/include/dpl/binary_queue.h | 296 - .../core/include/dpl/enable_shared_from_this.h | 68 - modules_wearable/core/include/dpl/exception.h | 385 - .../core/include/dpl/framework_appcore.h | 23 - modules_wearable/core/include/dpl/generic_event.h | 639 -- modules_wearable/core/include/dpl/mutex.h | 66 - modules_wearable/core/include/dpl/optional.h | 176 - modules_wearable/core/include/dpl/platform.h | 92 - modules_wearable/core/include/dpl/scope_guard.h | 111 - modules_wearable/core/include/dpl/scoped_array.h | 68 - modules_wearable/core/include/dpl/scoped_close.h | 71 - modules_wearable/core/include/dpl/scoped_fclose.h | 72 - .../core/include/dpl/scoped_gpointer.h | 78 - modules_wearable/core/include/dpl/scoped_ptr.h | 73 - modules_wearable/core/include/dpl/shared_ptr.h | 286 - modules_wearable/core/include/dpl/type_list.h | 159 - modules_wearable/core/include/dpl/union_cast.h | 44 - modules_wearable/core/src/application.cpp | 195 - modules_wearable/core/src/exception.cpp | 57 - modules_wearable/core/src/file_input.cpp | 142 - modules_wearable/core/src/file_output.cpp | 122 - modules_wearable/core/src/main.cpp | 473 -- modules_wearable/core/src/mutex.cpp | 92 - modules_wearable/core/src/once.cpp | 47 - modules_wearable/core/src/scoped_dir.cpp | 112 - modules_wearable/core/src/string.cpp | 250 - modules_wearable/core/src/thread.cpp | 623 -- .../core/src/waitable_handle_watch_support.cpp | 394 - modules_wearable/core/src/zip_input.cpp | 637 -- modules_wearable/custom_handler_dao/CMakeLists.txt | 83 - .../dao/CustomHandlerDatabase.cpp | 45 - .../dbus/include/dpl/dbus/method_proxy.h | 228 - .../include/dpl/event/main_event_dispatcher.h | 120 - modules_wearable/event/src/event_support.cpp | 39 - .../wrt-commons/i18n-dao-ro/i18n_database.h | 56 - modules_wearable/i18n/dao/src/i18n_database.cpp | 43 - .../localization/include/LanguageTagsProvider.h | 92 - modules_wearable/log/config.cmake | 42 - modules_wearable/log/include/dpl/log/log.h | 171 - modules_wearable/log/include/dpl/log/secure_log.h | 92 - modules_wearable/log/src/log.cpp | 222 - .../include/dpl/rpc/generic_socket_rpc_client.h | 187 - .../rpc/include/dpl/rpc/rpc_function.h | 212 - .../security-origin-dao/security_origin_dao.h | 71 - .../socket/include/dpl/socket/generic_socket.h | 934 -- ...able_input_output_execution_context_support.cpp | 312 - modules_wearable/support/wrt_plugin_export.h | 292 - .../test/include/dpl/test/abstract_input_reader.h | 110 - .../include/dpl/test/abstract_input_tokenizer.h | 86 - .../test/src/test_runner_multiprocess.cpp | 275 - modules_wearable/utils/include/dpl/utils/path.h | 237 - .../utils/include/dpl/utils/wrt_utility.h | 84 - modules_wearable/utils/src/bash_utils.cpp | 44 - modules_wearable/utils/src/folder_size.cpp | 155 - modules_wearable/utils/src/warp_iri.cpp | 210 - modules_wearable/utils/src/wrt_utility.cpp | 179 - modules_wearable/widget_dao/dao/WrtDatabase.cpp | 65 - .../widget_dao/dao/common_dao_types.cpp | 24 - .../widget_dao/dao/feature_dao_read_only.cpp | 449 - modules_wearable/widget_dao/dao/plugin_dao.cpp | 243 - .../include/dpl/wrt-dao-ro/plugin_dao_read_only.h | 116 - .../include/dpl/wrt-dao-ro/webruntime_database.h | 58 - .../widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h | 61 - .../widget_interface_dao/CMakeLists.txt | 45 - .../dao/widget_interface_dao.cpp | 299 - .../orm/orm_generator_widget_interface.h | 24 - .../widget_interface_dao/orm/widget_interface_db | 17 - .../orm/widget_interface_db_definitions | 5 - .../orm/widget_interface_db_sql_generator.h | 28 - packaging/wrt-commons.spec | 47 +- tests/common/src/loop_control.cpp | 4 +- tests/core/CMakeLists.txt | 3 - tests/core/test_once.cpp | 11 +- tests/core/test_scoped_array.cpp | 82 - tests/core/test_scoped_fclose.cpp | 2 +- tests/core/test_scoped_ptr.cpp | 79 - tests/core/test_semaphore.cpp | 1 - tests/core/test_shared_ptr.cpp | 116 - tests/core/test_thread.cpp | 10 +- tests/core/test_zip_input.cpp | 24 +- tests/dao/TestCases_FeatureDAO.cpp | 28 +- tests/dao/TestCases_PluginDAO.cpp | 5 +- tests/dao/TestCases_PropertyDAO.cpp | 10 +- tests/dao/TestCases_WidgetDAO.cpp | 95 +- tests/dao/TestCases_WidgetInterfaceDAO.cpp | 31 +- tests/dao/tests_dao.cpp | 9 +- tests/dao/wrt_dao_tests_prepare_db.sh | 30 +- tests/db/test_orm.cpp | 36 +- tests/db/test_sql_connection.cpp | 24 +- tests/dbus/main.cpp | 4 +- tests/dbus/test_service.cpp | 4 +- tests/event/test_controller.cpp | 15 +- tests/event/test_event_support.cpp | 4 +- tests/event/test_ic_delegate.cpp | 84 +- tests/files_localization/test_localization.cpp | 8 +- tests/files_localization/test_suite01.cpp | 50 +- tests/i18n/test_i18n_dao_read_only.cpp | 1 - .../Localization_testcases.cpp | 34 +- tests/localizationTagsProvider/tests_miscunit.cpp | 4 +- tests/test/runner_child.cpp | 1 - tests/test/runner_multiprocess.cpp | 1 - tests/test/test_abstract_input_reader.cpp | 1 - tests/test/test_process_pipe.cpp | 4 +- tests/unused/test_message_queue.cpp | 8 +- tests/unused/test_shm.cpp | 101 +- tests/unused/test_task.cpp | 6 +- tests/utils/bash_utils.cpp | 10 +- tests/utils/path_tests.cpp | 33 +- tests/utils/widget_version.cpp | 57 +- tests/utils/wrt_utility.cpp | 6 +- wrt-commons.manifest | 3 + 865 files changed, 4098 insertions(+), 62930 deletions(-) rename {build_wearable => build}/CMakeLists.txt (100%) rename build_wearable/widget_interface_dao/CMakeLists.txt => build/Options.cmake (80%) rename {build_wearable => build}/certificate_dao/CMakeLists.txt (92%) rename {build_mobile => build}/certificate_dao/wrt-commons-certificate-dao.pc.in (93%) mode change 100644 => 100755 rename {build_mobile => build}/core/CMakeLists.txt (88%) rename {build_wearable => build}/core/DESCRIPTION (100%) rename {build_wearable => build}/core/dpl-efl.pc.in (74%) mode change 100644 => 100755 rename {build_wearable => build}/custom_handler_dao/CMakeLists.txt (85%) rename {build_wearable => build}/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in (93%) mode change 100644 => 100755 rename {build_wearable => build}/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in (85%) mode change 100644 => 100755 rename {build_mobile => build}/db/CMakeLists.txt (96%) rename {build_mobile => build}/db/dpl-db-efl.pc.in (86%) mode change 100644 => 100755 rename {build_mobile => build}/dbus/CMakeLists.txt (96%) rename {build_mobile => build}/dbus/dpl-dbus-efl.pc.in (85%) mode change 100644 => 100755 rename {build_mobile => build}/event/CMakeLists.txt (94%) rename {build_mobile => build}/event/dpl-event-efl.pc.in (84%) mode change 100644 => 100755 rename {build_mobile => build}/i18n/CMakeLists.txt (93%) rename {build_mobile => build}/i18n/wrt-commons-i18n-dao-ro.pc.in (93%) mode change 100644 => 100755 rename {build_wearable => build}/log/CMakeLists.txt (95%) rename {build_mobile => build}/log/dpl-log-efl.pc.in (90%) mode change 100644 => 100755 rename {build_wearable => build}/rpc/CMakeLists.txt (96%) rename {build_mobile => build}/rpc/dpl-rpc-efl.pc.in (82%) mode change 100644 => 100755 rename {build_wearable => build}/security_origin_dao/CMakeLists.txt (92%) rename {build_wearable => build}/security_origin_dao/wrt-commons-security-origin-dao.pc.in (93%) mode change 100644 => 100755 rename {build_wearable => build}/socket/CMakeLists.txt (96%) rename {build_mobile => build}/socket/dpl-socket-efl.pc.in (87%) mode change 100644 => 100755 rename {build_wearable => build}/support/CMakeLists.txt (94%) rename {build_wearable => build}/support/wrt-plugins-types.pc.in (100%) rename {build_wearable => build}/test/CMakeLists.txt (96%) rename {build_mobile => build}/test/dpl-test-efl.pc.in (88%) mode change 100644 => 100755 rename {build_wearable => build}/utils/CMakeLists.txt (96%) rename {build_mobile => build}/utils/dpl-utils-efl.pc.in (92%) mode change 100644 => 100755 rename {build_mobile => build}/widget_dao/CMakeLists.txt (89%) rename {build_wearable => build}/widget_dao/dpl-wrt-dao-ro.pc.in (88%) mode change 100644 => 100755 rename {build_mobile => build}/widget_dao/dpl-wrt-dao-rw.pc.in (84%) mode change 100644 => 100755 rename {build_mobile => build}/widget_interface_dao/CMakeLists.txt (92%) rename {build_mobile => build}/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in (93%) mode change 100644 => 100755 delete mode 100644 build_mobile/CMakeLists.txt delete mode 100644 build_mobile/auto_save_dao/CMakeLists.txt delete mode 100644 build_mobile/auto_save_dao/wrt-commons-auto-save-dao-ro.pc.in delete mode 100644 build_mobile/auto_save_dao/wrt-commons-auto-save-dao-rw.pc.in delete mode 100644 build_mobile/auto_save_dao/wrt-commons-auto-save-dao.pc.in delete mode 100755 build_mobile/certificate_dao/CMakeLists.txt delete mode 100644 build_mobile/core/DESCRIPTION delete mode 100644 build_mobile/core/dpl-efl.pc.in delete mode 100644 build_mobile/custom_handler_dao/CMakeLists.txt delete mode 100644 build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in delete mode 100644 build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in delete mode 100644 build_mobile/log/CMakeLists.txt delete mode 100644 build_mobile/rpc/CMakeLists.txt delete mode 100644 build_mobile/security_origin_dao/CMakeLists.txt delete mode 100644 build_mobile/security_origin_dao/wrt-commons-security-origin-dao.pc.in delete mode 100644 build_mobile/socket/CMakeLists.txt delete mode 100644 build_mobile/support/CMakeLists.txt delete mode 100644 build_mobile/support/wrt-plugins-types.pc.in delete mode 100644 build_mobile/test/CMakeLists.txt delete mode 100644 build_mobile/utils/CMakeLists.txt delete mode 100644 build_mobile/widget_dao/dpl-wrt-dao-ro.pc.in delete mode 100644 build_wearable/certificate_dao/wrt-commons-certificate-dao.pc.in delete mode 100644 build_wearable/core/CMakeLists.txt delete mode 100644 build_wearable/db/CMakeLists.txt delete mode 100644 build_wearable/db/dpl-db-efl.pc.in delete mode 100644 build_wearable/dbus/CMakeLists.txt delete mode 100644 build_wearable/dbus/dpl-dbus-efl.pc.in delete mode 100644 build_wearable/event/CMakeLists.txt delete mode 100644 build_wearable/event/dpl-event-efl.pc.in delete mode 100644 build_wearable/i18n/CMakeLists.txt delete mode 100644 build_wearable/i18n/wrt-commons-i18n-dao-ro.pc.in delete mode 100644 build_wearable/log/dpl-log-efl.pc.in delete mode 100644 build_wearable/rpc/dpl-rpc-efl.pc.in delete mode 100644 build_wearable/socket/dpl-socket-efl.pc.in delete mode 100644 build_wearable/test/dpl-test-efl.pc.in delete mode 100644 build_wearable/utils/dpl-utils-efl.pc.in delete mode 100644 build_wearable/widget_dao/CMakeLists.txt delete mode 100644 build_wearable/widget_dao/dpl-wrt-dao-rw.pc.in delete mode 100644 build_wearable/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in rename {etc_wearable => etc}/CMakeLists.txt (100%) rename {etc_wearable => etc}/DESCRIPTION (100%) rename {etc_wearable => etc}/wrt_commons_create_clean_db.sh (95%) rename {etc_wearable => etc}/wrt_commons_reset_db.sh (85%) delete mode 100644 etc_mobile/CMakeLists.txt delete mode 100644 etc_mobile/DESCRIPTION delete mode 100755 etc_mobile/wrt_commons_create_clean_db.sh delete mode 100755 etc_mobile/wrt_commons_reset_db.sh rename {modules_mobile => modules}/CMakeLists.txt (68%) rename {modules_mobile => modules}/certificate_dao/CMakeLists.txt (99%) rename {modules_wearable => modules}/certificate_dao/dao/certificate_dao.cpp (54%) rename {modules_mobile => modules}/certificate_dao/dao/certificate_dao_types.cpp (97%) rename {modules_mobile => modules}/certificate_dao/dao/certificate_database.cpp (94%) rename {modules_mobile => modules}/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h (91%) mode change 100755 => 100644 rename {modules_wearable => modules}/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h (100%) rename {modules_mobile => modules}/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h (86%) rename {modules_wearable => modules}/certificate_dao/orm/certificate_db (100%) rename {modules_wearable => modules}/certificate_dao/orm/certificate_db_definitions (100%) rename {modules_wearable => modules}/certificate_dao/orm/certificate_db_sql_generator.h (100%) rename {modules_wearable => modules}/certificate_dao/orm/orm_generator_certificate.h (100%) rename {modules_wearable => modules}/core/DESCRIPTION (100%) rename {modules_wearable => modules}/core/config.cmake (95%) rename {modules_wearable => modules}/core/include/DESCRIPTION (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_input.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_input_output.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_output.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_waitable_input.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_waitable_input_adapter.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_waitable_input_output.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_waitable_input_output_adapter.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_waitable_output.h (100%) rename {modules_wearable => modules}/core/include/dpl/abstract_waitable_output_adapter.h (100%) rename {modules_wearable => modules}/core/include/dpl/address.h (100%) rename {modules_wearable => modules}/core/include/dpl/aligned.h (100%) rename {modules_wearable => modules}/core/include/dpl/application.h (90%) rename {modules_wearable => modules}/core/include/dpl/apply.h (100%) rename {modules_wearable => modules}/core/include/dpl/assert.h (82%) rename {modules_wearable => modules}/core/include/dpl/atomic.h (93%) rename {modules_wearable => modules}/core/include/dpl/availability.h (100%) rename {modules_mobile => modules}/core/include/dpl/binary_queue.h (99%) mode change 100644 => 100755 rename {modules_wearable => modules}/core/include/dpl/bind.h (100%) rename {modules_wearable => modules}/core/include/dpl/bool_operator.h (100%) rename {modules_wearable => modules}/core/include/dpl/char_traits.h (100%) rename {modules_wearable => modules}/core/include/dpl/colors.h (100%) rename {modules_wearable => modules}/core/include/dpl/copy.h (100%) rename {modules_wearable => modules}/core/include/dpl/errno_string.h (100%) rename {modules_mobile => modules}/core/include/dpl/exception.h (99%) mode change 100644 => 100755 rename {modules_wearable => modules}/core/include/dpl/file_input.h (100%) rename {modules_wearable => modules}/core/include/dpl/file_output.h (100%) rename {modules_wearable => modules}/core/include/dpl/foreach.h (100%) rename {modules_mobile => modules}/core/include/dpl/framework_appcore.h (94%) rename {modules_wearable => modules}/core/include/dpl/framework_efl.h (97%) rename {modules_wearable => modules}/core/include/dpl/framework_vconf.h (100%) rename modules_mobile/core/include/dpl/noreturn.h => modules/core/include/dpl/free_deleter.h (59%) mode change 100644 => 100755 rename {modules_mobile => modules}/core/include/dpl/generic_event.h (99%) mode change 100644 => 100755 rename {modules_wearable => modules}/core/include/dpl/lexical_cast.h (100%) rename {modules_wearable => modules}/core/include/dpl/main.h (100%) rename {modules_wearable => modules}/core/include/dpl/mutable_task_list.h (100%) rename {modules_mobile => modules}/core/include/dpl/mutex.h (94%) rename {modules_wearable => modules}/core/include/dpl/named_base_pipe.h (100%) rename {modules_wearable => modules}/core/include/dpl/named_input_pipe.h (100%) rename {modules_wearable => modules}/core/include/dpl/named_output_pipe.h (100%) rename {modules_wearable => modules}/core/include/dpl/noncopyable.h (100%) rename {modules_wearable => modules}/core/include/dpl/once.h (92%) rename {modules_wearable => modules}/core/include/dpl/optional_typedefs.h (72%) create mode 100644 modules/core/include/dpl/platform.h.in rename {modules_wearable => modules}/core/include/dpl/preprocessor.h (100%) rename {modules_wearable => modules}/core/include/dpl/read_write_mutex.h (100%) rename {modules_wearable => modules}/core/include/dpl/recursive_mutex.h (94%) rename {modules_mobile => modules}/core/include/dpl/scope_guard.h (97%) rename {modules_mobile => modules}/core/include/dpl/scoped_close.h (88%) rename {modules_wearable => modules}/core/include/dpl/scoped_dir.h (100%) rename {modules_mobile => modules}/core/include/dpl/scoped_fclose.h (89%) rename {modules_wearable => modules}/core/include/dpl/scoped_free.h (100%) rename {modules_wearable => modules}/core/include/dpl/scoped_resource.h (100%) rename {modules_wearable => modules}/core/include/dpl/semaphore.h (100%) rename {modules_wearable => modules}/core/include/dpl/serialization.h (100%) rename {modules_wearable => modules}/core/include/dpl/single_instance.h (100%) rename {modules_wearable => modules}/core/include/dpl/singleton.h (89%) mode change 100644 => 100755 rename {modules_wearable => modules}/core/include/dpl/singleton_impl.h (86%) mode change 100644 => 100755 rename {modules_wearable => modules}/core/include/dpl/singleton_safe_impl.h (100%) rename {modules_wearable => modules}/core/include/dpl/sstream.h (100%) rename {modules_wearable => modules}/core/include/dpl/static_block.h (100%) rename {modules_wearable => modules}/core/include/dpl/string.h (100%) rename {modules_wearable => modules}/core/include/dpl/task.h (100%) rename {modules_wearable => modules}/core/include/dpl/thread.h (95%) create mode 100755 modules/core/include/dpl/type_list.h rename {modules_mobile => modules}/core/include/dpl/union_cast.h (92%) rename {modules_wearable => modules}/core/include/dpl/waitable_event.h (100%) rename {modules_wearable => modules}/core/include/dpl/waitable_handle.h (100%) rename {modules_wearable => modules}/core/include/dpl/waitable_handle_watch_support.h (98%) rename {modules_wearable => modules}/core/include/dpl/workaround.h (100%) rename {modules_wearable => modules}/core/include/dpl/zip_input.h (100%) create mode 100755 modules/core/platform.cmake rename {modules_wearable => modules}/core/src/DESCRIPTION (100%) rename {modules_wearable => modules}/core/src/abstract_waitable_input_adapter.cpp (100%) rename {modules_wearable => modules}/core/src/abstract_waitable_input_output_adapter.cpp (100%) rename {modules_wearable => modules}/core/src/abstract_waitable_output_adapter.cpp (100%) rename {modules_wearable => modules}/core/src/address.cpp (100%) rename {modules_mobile => modules}/core/src/application.cpp (69%) rename {modules_wearable => modules}/core/src/apply.cpp (100%) rename {modules_wearable => modules}/core/src/assert.cpp (58%) mode change 100755 => 100644 rename {modules_wearable => modules}/core/src/atomic.cpp (100%) rename {modules_wearable => modules}/core/src/binary_queue.cpp (95%) mode change 100644 => 100755 rename {modules_wearable => modules}/core/src/char_traits.cpp (100%) rename {modules_wearable => modules}/core/src/colors.cpp (100%) rename {modules_wearable => modules}/core/src/copy.cpp (100%) rename {modules_wearable => modules}/core/src/errno_string.cpp (93%) rename {modules_mobile => modules}/core/src/exception.cpp (91%) rename {modules_mobile => modules}/core/src/file_input.cpp (93%) rename {modules_mobile => modules}/core/src/file_output.cpp (86%) rename {modules_wearable => modules}/core/src/generic_event.cpp (100%) rename {modules_wearable => modules}/core/src/lexical_cast.cpp (100%) rename {modules_mobile => modules}/core/src/main.cpp (90%) rename {modules_wearable => modules}/core/src/mutable_task_list.cpp (100%) rename {modules_mobile => modules}/core/src/mutex.cpp (85%) rename {modules_wearable => modules}/core/src/named_base_pipe.cpp (100%) rename {modules_wearable => modules}/core/src/named_output_pipe.cpp (91%) rename {modules_wearable => modules}/core/src/noncopyable.cpp (100%) rename modules_mobile/event/src/model.cpp => modules/core/src/once.cpp (78%) rename {modules_wearable => modules}/core/src/read_write_mutex.cpp (100%) rename {modules_wearable => modules}/core/src/recursive_mutex.cpp (100%) rename {modules_mobile => modules}/core/src/scoped_dir.cpp (92%) rename {modules_wearable => modules}/core/src/semaphore.cpp (78%) rename {modules_wearable => modules}/core/src/serialization.cpp (100%) rename {modules_wearable => modules}/core/src/single_instance.cpp (90%) rename {modules_wearable => modules}/core/src/singleton.cpp (100%) rename {modules_mobile => modules}/core/src/string.cpp (91%) rename {modules_wearable => modules}/core/src/task.cpp (100%) rename {modules_mobile => modules}/core/src/thread.cpp (83%) mode change 100644 => 100755 rename {modules_wearable => modules}/core/src/type_list.cpp (100%) rename {modules_wearable => modules}/core/src/union_cast.cpp (100%) rename {modules_wearable => modules}/core/src/waitable_event.cpp (88%) rename {modules_wearable => modules}/core/src/waitable_handle.cpp (99%) rename {modules_mobile => modules}/core/src/waitable_handle_watch_support.cpp (87%) rename {modules_mobile => modules}/core/src/zip_input.cpp (83%) mode change 100644 => 100755 rename {modules_mobile => modules}/custom_handler_dao/CMakeLists.txt (99%) rename {modules_mobile => modules}/custom_handler_dao/dao/CustomHandlerDatabase.cpp (98%) rename {modules_wearable => modules}/custom_handler_dao/dao/custom_handler_dao.cpp (92%) rename {modules_wearable => modules}/custom_handler_dao/dao/custom_handler_dao_read_only.cpp (96%) rename {modules_wearable => modules}/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h (84%) rename {modules_wearable => modules}/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h (100%) rename {modules_wearable => modules}/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h (100%) rename {modules_wearable => modules}/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h (100%) rename {modules_wearable => modules}/custom_handler_dao/orm/custom_handler_db (100%) rename {modules_wearable => modules}/custom_handler_dao/orm/custom_handler_db_definitions (100%) rename {modules_wearable => modules}/custom_handler_dao/orm/custom_handler_db_sql_generator.h (100%) rename {modules_wearable/i18n/dao => modules/custom_handler_dao}/orm/gen_db_md5.sh (100%) rename {modules_wearable => modules}/custom_handler_dao/orm/orm_generator_custom_handler.h (100%) rename {modules_wearable/widget_dao => modules/custom_handler_dao}/orm/version_db (100%) rename {modules_wearable => modules}/db/config.cmake (100%) rename {modules_wearable => modules}/db/include/dpl/db/naive_synchronization_object.h (100%) rename {modules_wearable => modules}/db/include/dpl/db/orm.h (96%) mode change 100644 => 100755 rename {modules_wearable => modules}/db/include/dpl/db/orm_generator.h (98%) rename {modules_wearable => modules}/db/include/dpl/db/orm_interface.h (100%) rename {modules_wearable => modules}/db/include/dpl/db/orm_macros.h (100%) rename {modules_wearable => modules}/db/include/dpl/db/sql_connection.h (89%) mode change 100644 => 100755 rename {modules_wearable => modules}/db/include/dpl/db/thread_database_support.h (92%) mode change 100644 => 100755 rename {modules_wearable => modules}/db/src/naive_synchronization_object.cpp (100%) rename {modules_wearable => modules}/db/src/orm.cpp (100%) rename {modules_wearable => modules}/db/src/sql_connection.cpp (69%) rename {modules_wearable => modules}/db/src/thread_database_support.cpp (100%) rename {modules_wearable => modules}/dbus/config.cmake (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/connection.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dbus_client.h (93%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dbus_deserialization.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dbus_interface_dispatcher.h (91%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dbus_serialization.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dbus_server_deserialization.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dbus_server_serialization.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dbus_signature.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/dispatcher.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/exception.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/glib_util.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/interface.h (100%) rename {modules_mobile => modules}/dbus/include/dpl/dbus/method_proxy.h (98%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/object.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/object_proxy.h (100%) rename {modules_wearable => modules}/dbus/include/dpl/dbus/server.h (100%) rename {modules_wearable => modules}/dbus/src/connection.cpp (96%) rename {modules_wearable => modules}/dbus/src/dispatcher.cpp (100%) rename {modules_wearable => modules}/dbus/src/interface.cpp (99%) rename {modules_wearable => modules}/dbus/src/object.cpp (100%) rename {modules_wearable => modules}/dbus/src/object_proxy.cpp (100%) rename {modules_wearable => modules}/dbus/src/server.cpp (94%) rename {modules_wearable => modules}/event/config.cmake (100%) rename {modules_wearable => modules}/event/include/dpl/event/abstract_event_call.h (100%) rename {modules_wearable => modules}/event/include/dpl/event/abstract_event_dispatcher.h (100%) rename {modules_wearable => modules}/event/include/dpl/event/controller.h (100%) rename {modules_wearable => modules}/event/include/dpl/event/event_listener.h (100%) rename {modules_wearable => modules}/event/include/dpl/event/event_support.h (85%) mode change 100755 => 100644 rename {modules_wearable => modules}/event/include/dpl/event/generic_event_call.h (94%) rename {modules_wearable => modules}/event/include/dpl/event/inter_context_delegate.h (97%) rename {modules_mobile => modules}/event/include/dpl/event/main_event_dispatcher.h (98%) rename {modules_wearable => modules}/event/include/dpl/event/model.h (100%) rename {modules_wearable => modules}/event/include/dpl/event/model_bind_to_dao.h (100%) rename {modules_wearable => modules}/event/include/dpl/event/property.h (90%) rename {modules_wearable => modules}/event/include/dpl/event/thread_event_dispatcher.h (100%) rename {modules_wearable => modules}/event/src/abstract_event_call.cpp (100%) rename {modules_wearable => modules}/event/src/abstract_event_dispatcher.cpp (100%) rename {modules_wearable => modules}/event/src/controller.cpp (100%) rename {modules_wearable => modules}/event/src/event_listener.cpp (100%) rename {modules_mobile => modules}/event/src/event_support.cpp (95%) rename {modules_wearable => modules}/event/src/generic_event_call.cpp (100%) rename {modules_wearable => modules}/event/src/inter_context_delegate.cpp (100%) rename {modules_wearable => modules}/event/src/main_event_dispatcher.cpp (84%) rename {modules_wearable => modules}/event/src/model.cpp (100%) rename {modules_wearable => modules}/event/src/thread_event_dispatcher.cpp (89%) rename {modules_wearable => modules}/i18n/CMakeLists.txt (100%) rename {modules_wearable => modules}/i18n/dao/CMakeLists.txt (87%) rename {modules_wearable => modules}/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h (100%) rename {modules_mobile => modules}/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h (91%) rename {modules_wearable/custom_handler_dao => modules/i18n/dao}/orm/gen_db_md5.sh (100%) rename {modules_wearable => modules}/i18n/dao/orm/i18n_db_definitions (100%) rename {modules_wearable => modules}/i18n/dao/orm/i18n_db_sql_generator.h (100%) rename {modules_wearable => modules}/i18n/dao/orm/iana_db (100%) rename {modules_wearable => modules}/i18n/dao/orm/orm_generator_i18n.h (100%) rename {modules_wearable => modules}/i18n/dao/orm/version_db (100%) rename {modules_wearable => modules}/i18n/dao/src/i18n_dao_read_only.cpp (100%) rename {modules_mobile => modules}/i18n/dao/src/i18n_database.cpp (97%) rename {modules_wearable => modules}/localization/config.cmake (100%) rename {modules_mobile => modules}/localization/include/LanguageTagsProvider.h (99%) rename {modules_wearable => modules}/localization/include/dpl/localization/localization_utils.h (80%) rename {modules_wearable => modules}/localization/include/dpl/localization/w3c_file_localization.h (89%) rename {modules_wearable => modules}/localization/src/LanguageTagsProvider.cpp (90%) rename {modules_wearable => modules}/localization/src/w3c_file_localization.cpp (89%) rename {modules_mobile => modules}/log/config.cmake (68%) rename {modules_wearable => modules}/log/include/dpl/log/abstract_log_provider.h (100%) rename {modules_wearable => modules}/log/include/dpl/log/dlog_log_provider.h (96%) rename {modules_mobile => modules}/log/include/dpl/log/log.h (53%) mode change 100644 => 100755 rename {modules_wearable => modules}/log/include/dpl/log/old_style_log_provider.h (100%) rename modules_mobile/i18n/dao/orm/orm_generator_i18n.h => modules/log/include/dpl/log/secure_log.h (66%) rename modules_wearable/certificate_dao/dao/certificate_database.cpp => modules/log/include/dpl/log/wrt_log.h (78%) rename {modules_wearable => modules}/log/src/abstract_log_provider.cpp (100%) rename {modules_wearable => modules}/log/src/dlog_log_provider.cpp (100%) create mode 100755 modules/log/src/log.cpp rename {modules_wearable => modules}/log/src/old_style_log_provider.cpp (100%) rename {modules_wearable => modules}/rpc/config.cmake (100%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/abstract_rpc_connection.h (100%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/abstract_rpc_connector.h (100%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/generic_rpc_connection.h (100%) rename {modules_mobile => modules}/rpc/include/dpl/rpc/generic_socket_rpc_client.h (91%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/generic_socket_rpc_connection.h (100%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/generic_socket_rpc_server.h (90%) rename {modules_mobile => modules}/rpc/include/dpl/rpc/rpc_function.h (96%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/unix_socket_rpc_client.h (100%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/unix_socket_rpc_connection.h (100%) rename {modules_wearable => modules}/rpc/include/dpl/rpc/unix_socket_rpc_server.h (100%) rename {modules_wearable => modules}/rpc/src/abstract_rpc_connection.cpp (100%) rename {modules_wearable => modules}/rpc/src/abstract_rpc_connector.cpp (100%) rename {modules_wearable => modules}/rpc/src/generic_rpc_connection.cpp (88%) rename {modules_wearable => modules}/rpc/src/generic_socket_rpc_client.cpp (100%) rename {modules_wearable => modules}/rpc/src/generic_socket_rpc_connection.cpp (100%) rename {modules_wearable => modules}/rpc/src/generic_socket_rpc_server.cpp (100%) rename {modules_wearable => modules}/rpc/src/unix_socket_rpc_client.cpp (100%) rename {modules_wearable => modules}/rpc/src/unix_socket_rpc_connection.cpp (100%) rename {modules_wearable => modules}/rpc/src/unix_socket_rpc_server.cpp (100%) rename {modules_wearable => modules}/security_origin_dao/CMakeLists.txt (99%) rename {modules_wearable => modules}/security_origin_dao/dao/security_origin_dao.cpp (50%) rename {modules_wearable => modules}/security_origin_dao/dao/security_origin_dao_types.cpp (97%) rename {modules_mobile => modules}/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h (93%) rename {modules_wearable => modules}/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h (100%) rename {modules_wearable => modules}/security_origin_dao/orm/orm_generator_security_origin.h (100%) rename {modules_wearable => modules}/security_origin_dao/orm/security_origin_db (100%) rename {modules_wearable => modules}/security_origin_dao/orm/security_origin_db_definitions (100%) rename {modules_wearable => modules}/security_origin_dao/orm/security_origin_db_sql_generator.h (100%) rename {modules_wearable => modules}/socket/config.cmake (100%) rename {modules_wearable => modules}/socket/include/dpl/socket/abstract_socket.h (100%) rename {modules_mobile => modules}/socket/include/dpl/socket/generic_socket.h (88%) mode change 100644 => 100755 rename {modules_wearable => modules}/socket/include/dpl/socket/unix_socket.h (100%) rename {modules_wearable => modules}/socket/include/dpl/socket/waitable_input_output_execution_context_support.h (100%) rename {modules_wearable => modules}/socket/src/generic_socket.cpp (100%) rename {modules_wearable => modules}/socket/src/unix_socket.cpp (90%) mode change 100644 => 100755 rename {modules_mobile => modules}/socket/src/waitable_input_output_execution_context_support.cpp (78%) mode change 100644 => 100755 rename {modules_wearable => modules}/support/config.cmake (100%) rename {modules_mobile => modules}/support/wrt_plugin_export.h (98%) mode change 100644 => 100755 rename {modules_wearable => modules}/test/config.cmake (100%) rename {modules_wearable => modules}/test/include/dpl/test/abstract_input_parser.h (100%) rename {modules_mobile => modules}/test/include/dpl/test/abstract_input_reader.h (99%) rename {modules_mobile => modules}/test/include/dpl/test/abstract_input_tokenizer.h (98%) rename {modules_wearable => modules}/test/include/dpl/test/process_pipe.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/test_results_collector.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/test_runner.h (86%) rename {modules_wearable => modules}/test/include/dpl/test/test_runner_child.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/test_runner_multiprocess.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/value_separated_parser.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/value_separated_policies.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/value_separated_reader.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/value_separated_tokenizer.h (100%) rename {modules_wearable => modules}/test/include/dpl/test/value_separated_tokens.h (100%) rename {modules_wearable => modules}/test/src/process_pipe.cpp (95%) rename {modules_wearable => modules}/test/src/test_results_collector.cpp (99%) rename {modules_wearable => modules}/test/src/test_runner.cpp (97%) rename {modules_wearable => modules}/test/src/test_runner_child.cpp (100%) rename {modules_mobile => modules}/test/src/test_runner_multiprocess.cpp (100%) rename {modules_wearable => modules}/test/src/value_separated_policies.cpp (95%) rename {modules_wearable => modules}/test/src/value_separated_tokens.cpp (100%) rename {modules_mobile/support => modules/ttrace}/config.cmake (63%) create mode 100644 modules/ttrace/include/WrtTrace.h create mode 100644 modules/ttrace/src/WrtTrace.cpp rename {modules_wearable => modules}/utils/config.cmake (100%) rename {modules_wearable => modules}/utils/include/dpl/utils/bash_utils.h (100%) rename {modules_wearable => modules}/utils/include/dpl/utils/folder_size.h (100%) rename {modules_wearable => modules}/utils/include/dpl/utils/mime_type_utils.h (100%) rename {modules_mobile => modules}/utils/include/dpl/utils/path.h (97%) rename {modules_wearable => modules}/utils/include/dpl/utils/warp_iri.h (98%) rename {modules_wearable => modules}/utils/include/dpl/utils/widget_version.h (90%) rename {modules_wearable => modules}/utils/include/dpl/utils/wrt_global_settings.h (100%) rename {modules_mobile => modules}/utils/include/dpl/utils/wrt_utility.h (78%) rename {modules_mobile => modules}/utils/src/bash_utils.cpp (98%) rename {modules_mobile => modules}/utils/src/folder_size.cpp (80%) mode change 100644 => 100755 rename {modules_wearable => modules}/utils/src/mime_type_utils.cpp (95%) rename {modules_wearable => modules}/utils/src/path.cpp (93%) rename {modules_mobile => modules}/utils/src/warp_iri.cpp (97%) rename {modules_wearable => modules}/utils/src/widget_version.cpp (87%) rename {modules_wearable => modules}/utils/src/wrt_global_settings.cpp (100%) rename {modules_mobile => modules}/utils/src/wrt_utility.cpp (64%) mode change 100644 => 100755 rename {modules_wearable => modules}/widget_dao/CMakeLists.txt (93%) mode change 100755 => 100644 rename {modules_mobile => modules}/widget_dao/dao/WrtDatabase.cpp (98%) create mode 100644 modules/widget_dao/dao/common_dao_types.cpp rename {modules_wearable => modules}/widget_dao/dao/config_parser_data.cpp (79%) mode change 100755 => 100644 rename {modules_wearable => modules}/widget_dao/dao/feature_dao.cpp (90%) rename {modules_mobile => modules}/widget_dao/dao/feature_dao_read_only.cpp (91%) rename {modules_wearable => modules}/widget_dao/dao/path_builder.cpp (100%) rename {modules_mobile => modules}/widget_dao/dao/plugin_dao.cpp (76%) rename {modules_wearable => modules}/widget_dao/dao/plugin_dao_read_only.cpp (84%) rename {modules_wearable => modules}/widget_dao/dao/property_dao.cpp (89%) rename {modules_wearable => modules}/widget_dao/dao/property_dao_read_only.cpp (94%) rename {modules_wearable => modules}/widget_dao/dao/webruntime_database.cpp (96%) rename {modules_wearable => modules}/widget_dao/dao/widget_dao.cpp (93%) rename {modules_wearable => modules}/widget_dao/dao/widget_dao_read_only.cpp (89%) mode change 100755 => 100644 rename {modules_wearable => modules}/widget_dao/dao/widget_dao_types.cpp (97%) mode change 100755 => 100644 rename modules_mobile/widget_dao/dao/common_dao_types.cpp => modules/widget_dao/dao/widget_register_types.cpp (67%) mode change 100644 => 100755 rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h (100%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h (84%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h (92%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h (100%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/feature_model.h (100%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/global_config.h (97%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/path_builder.h (100%) rename {modules_mobile => modules}/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h (96%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h (100%) rename {modules_mobile => modules}/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h (83%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/widget_config.h (100%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h (75%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h (100%) mode change 100755 => 100644 create mode 100644 modules/widget_dao/include/dpl/wrt-dao-ro/widget_register_types.h rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h (100%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h (100%) rename {modules_mobile => modules}/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h (96%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-rw/property_dao.h (100%) rename {modules_wearable => modules}/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h (88%) rename {modules_wearable => modules}/widget_dao/orm/gen_db_md5.sh (100%) rename {modules_wearable => modules}/widget_dao/orm/orm_generator_wrt.h (100%) rename {modules_wearable/custom_handler_dao => modules/widget_dao}/orm/version_db (100%) rename {modules_wearable => modules}/widget_dao/orm/wrt_db (95%) mode change 100755 => 100644 rename {modules_wearable => modules}/widget_dao/orm/wrt_db_definitions (100%) rename {modules_wearable => modules}/widget_dao/orm/wrt_db_sql_generator.h (100%) create mode 100644 modules/widget_interface_dao/CMakeLists.txt create mode 100644 modules/widget_interface_dao/dao/widget_interface_dao.cpp rename {modules_wearable => modules}/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h (76%) delete mode 100755 modules_mobile/certificate_dao/dao/certificate_dao.cpp delete mode 100755 modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h delete mode 100755 modules_mobile/certificate_dao/orm/certificate_db delete mode 100644 modules_mobile/certificate_dao/orm/certificate_db_definitions delete mode 100755 modules_mobile/certificate_dao/orm/certificate_db_sql_generator.h delete mode 100755 modules_mobile/certificate_dao/orm/orm_generator_certificate.h delete mode 100644 modules_mobile/core/DESCRIPTION delete mode 100644 modules_mobile/core/config.cmake delete mode 100644 modules_mobile/core/include/DESCRIPTION delete mode 100644 modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegate.h delete mode 100644 modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegateBind.h delete mode 100644 modules_mobile/core/include/dpl/abstract_input.h delete mode 100644 modules_mobile/core/include/dpl/abstract_input_output.h delete mode 100644 modules_mobile/core/include/dpl/abstract_output.h delete mode 100644 modules_mobile/core/include/dpl/abstract_waitable_input.h delete mode 100644 modules_mobile/core/include/dpl/abstract_waitable_input_adapter.h delete mode 100644 modules_mobile/core/include/dpl/abstract_waitable_input_output.h delete mode 100644 modules_mobile/core/include/dpl/abstract_waitable_input_output_adapter.h delete mode 100644 modules_mobile/core/include/dpl/abstract_waitable_output.h delete mode 100644 modules_mobile/core/include/dpl/abstract_waitable_output_adapter.h delete mode 100644 modules_mobile/core/include/dpl/address.h delete mode 100644 modules_mobile/core/include/dpl/aligned.h delete mode 100644 modules_mobile/core/include/dpl/application.h delete mode 100644 modules_mobile/core/include/dpl/apply.h delete mode 100644 modules_mobile/core/include/dpl/assert.h delete mode 100644 modules_mobile/core/include/dpl/atomic.h delete mode 100644 modules_mobile/core/include/dpl/availability.h delete mode 100644 modules_mobile/core/include/dpl/bool_operator.h delete mode 100644 modules_mobile/core/include/dpl/char_traits.h delete mode 100644 modules_mobile/core/include/dpl/colors.h delete mode 100644 modules_mobile/core/include/dpl/copy.h delete mode 100644 modules_mobile/core/include/dpl/enable_shared_from_this.h delete mode 100644 modules_mobile/core/include/dpl/errno_string.h delete mode 100644 modules_mobile/core/include/dpl/fast_delegate.h delete mode 100644 modules_mobile/core/include/dpl/file_input.h delete mode 100644 modules_mobile/core/include/dpl/file_output.h delete mode 100644 modules_mobile/core/include/dpl/foreach.h delete mode 100644 modules_mobile/core/include/dpl/framework_efl.h delete mode 100644 modules_mobile/core/include/dpl/framework_vconf.h delete mode 100644 modules_mobile/core/include/dpl/lexical_cast.h delete mode 100644 modules_mobile/core/include/dpl/main.h delete mode 100644 modules_mobile/core/include/dpl/mutable_task_list.h delete mode 100644 modules_mobile/core/include/dpl/named_base_pipe.h delete mode 100644 modules_mobile/core/include/dpl/named_input_pipe.h delete mode 100644 modules_mobile/core/include/dpl/named_output_pipe.h delete mode 100644 modules_mobile/core/include/dpl/noncopyable.h delete mode 100644 modules_mobile/core/include/dpl/once.h delete mode 100644 modules_mobile/core/include/dpl/optional.h delete mode 100644 modules_mobile/core/include/dpl/optional_typedefs.h delete mode 100644 modules_mobile/core/include/dpl/preprocessor.h delete mode 100644 modules_mobile/core/include/dpl/read_write_mutex.h delete mode 100644 modules_mobile/core/include/dpl/recursive_mutex.h delete mode 100644 modules_mobile/core/include/dpl/scoped_array.h delete mode 100644 modules_mobile/core/include/dpl/scoped_dir.h delete mode 100644 modules_mobile/core/include/dpl/scoped_free.h delete mode 100644 modules_mobile/core/include/dpl/scoped_gpointer.h delete mode 100644 modules_mobile/core/include/dpl/scoped_ptr.h delete mode 100644 modules_mobile/core/include/dpl/scoped_resource.h delete mode 100644 modules_mobile/core/include/dpl/semaphore.h delete mode 100644 modules_mobile/core/include/dpl/serialization.h delete mode 100644 modules_mobile/core/include/dpl/shared_ptr.h delete mode 100644 modules_mobile/core/include/dpl/single_instance.h delete mode 100644 modules_mobile/core/include/dpl/singleton.h delete mode 100644 modules_mobile/core/include/dpl/singleton_impl.h delete mode 100644 modules_mobile/core/include/dpl/singleton_safe_impl.h delete mode 100644 modules_mobile/core/include/dpl/sstream.h delete mode 100644 modules_mobile/core/include/dpl/static_block.h delete mode 100644 modules_mobile/core/include/dpl/string.h delete mode 100644 modules_mobile/core/include/dpl/task.h delete mode 100644 modules_mobile/core/include/dpl/task_list.h delete mode 100644 modules_mobile/core/include/dpl/thread.h delete mode 100644 modules_mobile/core/include/dpl/type_list.h delete mode 100644 modules_mobile/core/include/dpl/waitable_event.h delete mode 100644 modules_mobile/core/include/dpl/waitable_handle.h delete mode 100644 modules_mobile/core/include/dpl/waitable_handle_watch_support.h delete mode 100644 modules_mobile/core/include/dpl/workaround.h delete mode 100644 modules_mobile/core/include/dpl/zip_input.h delete mode 100644 modules_mobile/core/src/DESCRIPTION delete mode 100644 modules_mobile/core/src/abstract_waitable_input_adapter.cpp delete mode 100644 modules_mobile/core/src/abstract_waitable_input_output_adapter.cpp delete mode 100644 modules_mobile/core/src/abstract_waitable_output_adapter.cpp delete mode 100644 modules_mobile/core/src/address.cpp delete mode 100644 modules_mobile/core/src/apply.cpp delete mode 100644 modules_mobile/core/src/assert.cpp delete mode 100644 modules_mobile/core/src/atomic.cpp delete mode 100644 modules_mobile/core/src/binary_queue.cpp delete mode 100644 modules_mobile/core/src/char_traits.cpp delete mode 100644 modules_mobile/core/src/colors.cpp delete mode 100644 modules_mobile/core/src/copy.cpp delete mode 100644 modules_mobile/core/src/errno_string.cpp delete mode 100644 modules_mobile/core/src/fast_delegate.cpp delete mode 100644 modules_mobile/core/src/generic_event.cpp delete mode 100644 modules_mobile/core/src/lexical_cast.cpp delete mode 100644 modules_mobile/core/src/mutable_task_list.cpp delete mode 100644 modules_mobile/core/src/named_base_pipe.cpp delete mode 100644 modules_mobile/core/src/named_output_pipe.cpp delete mode 100644 modules_mobile/core/src/noncopyable.cpp delete mode 100644 modules_mobile/core/src/once.cpp delete mode 100644 modules_mobile/core/src/read_write_mutex.cpp delete mode 100644 modules_mobile/core/src/recursive_mutex.cpp delete mode 100644 modules_mobile/core/src/semaphore.cpp delete mode 100644 modules_mobile/core/src/serialization.cpp delete mode 100644 modules_mobile/core/src/single_instance.cpp delete mode 100644 modules_mobile/core/src/singleton.cpp delete mode 100644 modules_mobile/core/src/task.cpp delete mode 100644 modules_mobile/core/src/task_list.cpp delete mode 100644 modules_mobile/core/src/type_list.cpp delete mode 100644 modules_mobile/core/src/union_cast.cpp delete mode 100644 modules_mobile/core/src/waitable_event.cpp delete mode 100644 modules_mobile/core/src/waitable_handle.cpp delete mode 100644 modules_mobile/custom_handler_dao/dao/custom_handler_dao.cpp delete mode 100644 modules_mobile/custom_handler_dao/dao/custom_handler_dao_read_only.cpp delete mode 100644 modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h delete mode 100644 modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h delete mode 100644 modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h delete mode 100644 modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h delete mode 100644 modules_mobile/custom_handler_dao/orm/custom_handler_db delete mode 100644 modules_mobile/custom_handler_dao/orm/custom_handler_db_definitions delete mode 100644 modules_mobile/custom_handler_dao/orm/custom_handler_db_sql_generator.h delete mode 100755 modules_mobile/custom_handler_dao/orm/gen_db_md5.sh delete mode 100644 modules_mobile/custom_handler_dao/orm/orm_generator_custom_handler.h delete mode 100644 modules_mobile/custom_handler_dao/orm/version_db delete mode 100644 modules_mobile/db/config.cmake delete mode 100644 modules_mobile/db/include/dpl/db/naive_synchronization_object.h delete mode 100644 modules_mobile/db/include/dpl/db/orm.h delete mode 100644 modules_mobile/db/include/dpl/db/orm_generator.h delete mode 100644 modules_mobile/db/include/dpl/db/orm_interface.h delete mode 100644 modules_mobile/db/include/dpl/db/orm_macros.h delete mode 100644 modules_mobile/db/include/dpl/db/sql_connection.h delete mode 100644 modules_mobile/db/include/dpl/db/thread_database_support.h delete mode 100644 modules_mobile/db/src/naive_synchronization_object.cpp delete mode 100644 modules_mobile/db/src/orm.cpp delete mode 100644 modules_mobile/db/src/sql_connection.cpp delete mode 100644 modules_mobile/db/src/thread_database_support.cpp delete mode 100644 modules_mobile/dbus/config.cmake delete mode 100644 modules_mobile/dbus/include/dpl/dbus/connection.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dbus_client.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dbus_deserialization.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dbus_interface_dispatcher.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dbus_serialization.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dbus_server_deserialization.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dbus_server_serialization.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dbus_signature.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/dispatcher.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/exception.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/glib_util.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/interface.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/object.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/object_proxy.h delete mode 100644 modules_mobile/dbus/include/dpl/dbus/server.h delete mode 100644 modules_mobile/dbus/src/connection.cpp delete mode 100644 modules_mobile/dbus/src/dispatcher.cpp delete mode 100644 modules_mobile/dbus/src/interface.cpp delete mode 100644 modules_mobile/dbus/src/object.cpp delete mode 100644 modules_mobile/dbus/src/object_proxy.cpp delete mode 100644 modules_mobile/dbus/src/server.cpp delete mode 100644 modules_mobile/event/config.cmake delete mode 100644 modules_mobile/event/include/dpl/event/abstract_event_call.h delete mode 100644 modules_mobile/event/include/dpl/event/abstract_event_dispatcher.h delete mode 100644 modules_mobile/event/include/dpl/event/controller.h delete mode 100644 modules_mobile/event/include/dpl/event/event_listener.h delete mode 100644 modules_mobile/event/include/dpl/event/event_support.h delete mode 100644 modules_mobile/event/include/dpl/event/generic_event_call.h delete mode 100644 modules_mobile/event/include/dpl/event/inter_context_delegate.h delete mode 100644 modules_mobile/event/include/dpl/event/model.h delete mode 100644 modules_mobile/event/include/dpl/event/model_bind_to_dao.h delete mode 100644 modules_mobile/event/include/dpl/event/property.h delete mode 100644 modules_mobile/event/include/dpl/event/thread_event_dispatcher.h delete mode 100644 modules_mobile/event/src/abstract_event_call.cpp delete mode 100644 modules_mobile/event/src/abstract_event_dispatcher.cpp delete mode 100644 modules_mobile/event/src/controller.cpp delete mode 100644 modules_mobile/event/src/event_listener.cpp delete mode 100644 modules_mobile/event/src/generic_event_call.cpp delete mode 100644 modules_mobile/event/src/inter_context_delegate.cpp delete mode 100644 modules_mobile/event/src/main_event_dispatcher.cpp delete mode 100644 modules_mobile/event/src/thread_event_dispatcher.cpp delete mode 100644 modules_mobile/i18n/CMakeLists.txt delete mode 100644 modules_mobile/i18n/dao/CMakeLists.txt delete mode 100644 modules_mobile/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h delete mode 100755 modules_mobile/i18n/dao/orm/gen_db_md5.sh delete mode 100644 modules_mobile/i18n/dao/orm/i18n_db_definitions delete mode 100644 modules_mobile/i18n/dao/orm/i18n_db_sql_generator.h delete mode 100644 modules_mobile/i18n/dao/orm/iana_db delete mode 100644 modules_mobile/i18n/dao/orm/version_db delete mode 100644 modules_mobile/i18n/dao/src/i18n_dao_read_only.cpp delete mode 100644 modules_mobile/localization/config.cmake delete mode 100644 modules_mobile/localization/include/dpl/localization/localization_utils.h delete mode 100755 modules_mobile/localization/include/dpl/localization/w3c_file_localization.h delete mode 100644 modules_mobile/localization/src/LanguageTagsProvider.cpp delete mode 100644 modules_mobile/localization/src/w3c_file_localization.cpp delete mode 100644 modules_mobile/log/include/dpl/log/abstract_log_provider.h delete mode 100644 modules_mobile/log/include/dpl/log/dlog_log_provider.h delete mode 100644 modules_mobile/log/include/dpl/log/old_style_log_provider.h delete mode 100644 modules_mobile/log/include/dpl/log/secure_log.h delete mode 100644 modules_mobile/log/src/abstract_log_provider.cpp delete mode 100644 modules_mobile/log/src/dlog_log_provider.cpp delete mode 100644 modules_mobile/log/src/log.cpp delete mode 100644 modules_mobile/log/src/old_style_log_provider.cpp delete mode 100644 modules_mobile/rpc/config.cmake delete mode 100644 modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connection.h delete mode 100644 modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connector.h delete mode 100644 modules_mobile/rpc/include/dpl/rpc/generic_rpc_connection.h delete mode 100644 modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_connection.h delete mode 100644 modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_server.h delete mode 100644 modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_client.h delete mode 100644 modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_connection.h delete mode 100644 modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_server.h delete mode 100644 modules_mobile/rpc/src/abstract_rpc_connection.cpp delete mode 100644 modules_mobile/rpc/src/abstract_rpc_connector.cpp delete mode 100644 modules_mobile/rpc/src/generic_rpc_connection.cpp delete mode 100644 modules_mobile/rpc/src/generic_socket_rpc_client.cpp delete mode 100644 modules_mobile/rpc/src/generic_socket_rpc_connection.cpp delete mode 100644 modules_mobile/rpc/src/generic_socket_rpc_server.cpp delete mode 100644 modules_mobile/rpc/src/unix_socket_rpc_client.cpp delete mode 100644 modules_mobile/rpc/src/unix_socket_rpc_connection.cpp delete mode 100644 modules_mobile/rpc/src/unix_socket_rpc_server.cpp delete mode 100644 modules_mobile/security_origin_dao/CMakeLists.txt delete mode 100644 modules_mobile/security_origin_dao/dao/security_origin_dao.cpp delete mode 100755 modules_mobile/security_origin_dao/dao/security_origin_dao_types.cpp delete mode 100755 modules_mobile/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h delete mode 100644 modules_mobile/security_origin_dao/orm/orm_generator_security_origin.h delete mode 100644 modules_mobile/security_origin_dao/orm/security_origin_db delete mode 100644 modules_mobile/security_origin_dao/orm/security_origin_db_definitions delete mode 100644 modules_mobile/security_origin_dao/orm/security_origin_db_sql_generator.h delete mode 100644 modules_mobile/socket/config.cmake delete mode 100644 modules_mobile/socket/include/dpl/socket/abstract_socket.h delete mode 100644 modules_mobile/socket/include/dpl/socket/unix_socket.h delete mode 100644 modules_mobile/socket/include/dpl/socket/waitable_input_output_execution_context_support.h delete mode 100644 modules_mobile/socket/src/generic_socket.cpp delete mode 100644 modules_mobile/socket/src/unix_socket.cpp delete mode 100644 modules_mobile/test/config.cmake delete mode 100644 modules_mobile/test/include/dpl/test/abstract_input_parser.h delete mode 100644 modules_mobile/test/include/dpl/test/process_pipe.h delete mode 100644 modules_mobile/test/include/dpl/test/test_results_collector.h delete mode 100644 modules_mobile/test/include/dpl/test/test_runner.h delete mode 100644 modules_mobile/test/include/dpl/test/test_runner_child.h delete mode 100644 modules_mobile/test/include/dpl/test/test_runner_multiprocess.h delete mode 100644 modules_mobile/test/include/dpl/test/value_separated_parser.h delete mode 100644 modules_mobile/test/include/dpl/test/value_separated_policies.h delete mode 100644 modules_mobile/test/include/dpl/test/value_separated_reader.h delete mode 100644 modules_mobile/test/include/dpl/test/value_separated_tokenizer.h delete mode 100644 modules_mobile/test/include/dpl/test/value_separated_tokens.h delete mode 100644 modules_mobile/test/src/process_pipe.cpp delete mode 100644 modules_mobile/test/src/test_results_collector.cpp delete mode 100644 modules_mobile/test/src/test_runner.cpp delete mode 100644 modules_mobile/test/src/test_runner_child.cpp delete mode 100644 modules_mobile/test/src/value_separated_policies.cpp delete mode 100644 modules_mobile/test/src/value_separated_tokens.cpp delete mode 100644 modules_mobile/utils/config.cmake delete mode 100644 modules_mobile/utils/include/dpl/utils/bash_utils.h delete mode 100644 modules_mobile/utils/include/dpl/utils/file_utils.h delete mode 100644 modules_mobile/utils/include/dpl/utils/folder_size.h delete mode 100644 modules_mobile/utils/include/dpl/utils/mime_type_utils.h delete mode 100644 modules_mobile/utils/include/dpl/utils/warp_iri.h delete mode 100644 modules_mobile/utils/include/dpl/utils/widget_version.h delete mode 100644 modules_mobile/utils/include/dpl/utils/wrt_global_settings.h delete mode 100644 modules_mobile/utils/src/mime_type_utils.cpp delete mode 100644 modules_mobile/utils/src/path.cpp delete mode 100644 modules_mobile/utils/src/widget_version.cpp delete mode 100644 modules_mobile/utils/src/wrt_global_settings.cpp delete mode 100755 modules_mobile/widget_dao/CMakeLists.txt delete mode 100644 modules_mobile/widget_dao/dao/config_parser_data.cpp delete mode 100644 modules_mobile/widget_dao/dao/feature_dao.cpp delete mode 100644 modules_mobile/widget_dao/dao/path_builder.cpp delete mode 100644 modules_mobile/widget_dao/dao/plugin_dao_read_only.cpp delete mode 100644 modules_mobile/widget_dao/dao/property_dao.cpp delete mode 100644 modules_mobile/widget_dao/dao/property_dao_read_only.cpp delete mode 100644 modules_mobile/widget_dao/dao/webruntime_database.cpp delete mode 100644 modules_mobile/widget_dao/dao/widget_dao.cpp delete mode 100644 modules_mobile/widget_dao/dao/widget_dao_read_only.cpp delete mode 100644 modules_mobile/widget_dao/dao/widget_dao_types.cpp delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_model.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/global_config.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/path_builder.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_config.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-rw/property_dao.h delete mode 100644 modules_mobile/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h delete mode 100755 modules_mobile/widget_dao/orm/gen_db_md5.sh delete mode 100644 modules_mobile/widget_dao/orm/orm_generator_wrt.h delete mode 100644 modules_mobile/widget_dao/orm/version_db delete mode 100644 modules_mobile/widget_dao/orm/wrt_db delete mode 100644 modules_mobile/widget_dao/orm/wrt_db_definitions delete mode 100644 modules_mobile/widget_dao/orm/wrt_db_sql_generator.h delete mode 100644 modules_mobile/widget_interface_dao/CMakeLists.txt delete mode 100644 modules_mobile/widget_interface_dao/dao/widget_interface_dao.cpp delete mode 100644 modules_mobile/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h delete mode 100644 modules_mobile/widget_interface_dao/orm/orm_generator_widget_interface.h delete mode 100644 modules_mobile/widget_interface_dao/orm/widget_interface_db delete mode 100644 modules_mobile/widget_interface_dao/orm/widget_interface_db_definitions delete mode 100644 modules_mobile/widget_interface_dao/orm/widget_interface_db_sql_generator.h delete mode 100644 modules_wearable/CMakeLists.txt delete mode 100755 modules_wearable/certificate_dao/CMakeLists.txt delete mode 100755 modules_wearable/certificate_dao/dao/certificate_dao_types.cpp delete mode 100644 modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h delete mode 100755 modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h delete mode 100644 modules_wearable/core/include/dpl/binary_queue.h delete mode 100644 modules_wearable/core/include/dpl/enable_shared_from_this.h delete mode 100644 modules_wearable/core/include/dpl/exception.h delete mode 100644 modules_wearable/core/include/dpl/framework_appcore.h delete mode 100644 modules_wearable/core/include/dpl/generic_event.h delete mode 100644 modules_wearable/core/include/dpl/mutex.h delete mode 100644 modules_wearable/core/include/dpl/optional.h delete mode 100644 modules_wearable/core/include/dpl/platform.h delete mode 100644 modules_wearable/core/include/dpl/scope_guard.h delete mode 100644 modules_wearable/core/include/dpl/scoped_array.h delete mode 100644 modules_wearable/core/include/dpl/scoped_close.h delete mode 100644 modules_wearable/core/include/dpl/scoped_fclose.h delete mode 100644 modules_wearable/core/include/dpl/scoped_gpointer.h delete mode 100644 modules_wearable/core/include/dpl/scoped_ptr.h delete mode 100644 modules_wearable/core/include/dpl/shared_ptr.h delete mode 100644 modules_wearable/core/include/dpl/type_list.h delete mode 100644 modules_wearable/core/include/dpl/union_cast.h delete mode 100644 modules_wearable/core/src/application.cpp delete mode 100644 modules_wearable/core/src/exception.cpp delete mode 100644 modules_wearable/core/src/file_input.cpp delete mode 100644 modules_wearable/core/src/file_output.cpp delete mode 100644 modules_wearable/core/src/main.cpp delete mode 100644 modules_wearable/core/src/mutex.cpp delete mode 100644 modules_wearable/core/src/once.cpp delete mode 100644 modules_wearable/core/src/scoped_dir.cpp delete mode 100644 modules_wearable/core/src/string.cpp delete mode 100644 modules_wearable/core/src/thread.cpp delete mode 100644 modules_wearable/core/src/waitable_handle_watch_support.cpp delete mode 100644 modules_wearable/core/src/zip_input.cpp delete mode 100644 modules_wearable/custom_handler_dao/CMakeLists.txt delete mode 100644 modules_wearable/custom_handler_dao/dao/CustomHandlerDatabase.cpp delete mode 100644 modules_wearable/dbus/include/dpl/dbus/method_proxy.h delete mode 100644 modules_wearable/event/include/dpl/event/main_event_dispatcher.h delete mode 100644 modules_wearable/event/src/event_support.cpp delete mode 100644 modules_wearable/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h delete mode 100644 modules_wearable/i18n/dao/src/i18n_database.cpp delete mode 100644 modules_wearable/localization/include/LanguageTagsProvider.h delete mode 100644 modules_wearable/log/config.cmake delete mode 100644 modules_wearable/log/include/dpl/log/log.h delete mode 100644 modules_wearable/log/include/dpl/log/secure_log.h delete mode 100644 modules_wearable/log/src/log.cpp delete mode 100644 modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_client.h delete mode 100644 modules_wearable/rpc/include/dpl/rpc/rpc_function.h delete mode 100644 modules_wearable/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h delete mode 100644 modules_wearable/socket/include/dpl/socket/generic_socket.h delete mode 100644 modules_wearable/socket/src/waitable_input_output_execution_context_support.cpp delete mode 100755 modules_wearable/support/wrt_plugin_export.h delete mode 100644 modules_wearable/test/include/dpl/test/abstract_input_reader.h delete mode 100644 modules_wearable/test/include/dpl/test/abstract_input_tokenizer.h delete mode 100644 modules_wearable/test/src/test_runner_multiprocess.cpp delete mode 100644 modules_wearable/utils/include/dpl/utils/path.h delete mode 100644 modules_wearable/utils/include/dpl/utils/wrt_utility.h delete mode 100644 modules_wearable/utils/src/bash_utils.cpp delete mode 100644 modules_wearable/utils/src/folder_size.cpp delete mode 100644 modules_wearable/utils/src/warp_iri.cpp delete mode 100644 modules_wearable/utils/src/wrt_utility.cpp delete mode 100644 modules_wearable/widget_dao/dao/WrtDatabase.cpp delete mode 100644 modules_wearable/widget_dao/dao/common_dao_types.cpp delete mode 100644 modules_wearable/widget_dao/dao/feature_dao_read_only.cpp delete mode 100644 modules_wearable/widget_dao/dao/plugin_dao.cpp delete mode 100644 modules_wearable/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h delete mode 100644 modules_wearable/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h delete mode 100644 modules_wearable/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h delete mode 100644 modules_wearable/widget_interface_dao/CMakeLists.txt delete mode 100644 modules_wearable/widget_interface_dao/dao/widget_interface_dao.cpp delete mode 100644 modules_wearable/widget_interface_dao/orm/orm_generator_widget_interface.h delete mode 100644 modules_wearable/widget_interface_dao/orm/widget_interface_db delete mode 100644 modules_wearable/widget_interface_dao/orm/widget_interface_db_definitions delete mode 100644 modules_wearable/widget_interface_dao/orm/widget_interface_db_sql_generator.h delete mode 100644 tests/core/test_scoped_array.cpp delete mode 100644 tests/core/test_scoped_ptr.cpp delete mode 100644 tests/core/test_shared_ptr.cpp mode change 100644 => 100755 tests/db/test_sql_connection.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a2ea90..31e1a9d 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,7 +37,8 @@ IF(NOT CMAKE_BUILD_TYPE) ENDIF(NOT CMAKE_BUILD_TYPE) # Options -OPTION(DPL_LOG "DPL logs status" OFF) +OPTION(DPL_LOG "DPL logs status" ON) +ADD_DEFINITIONS(-DLOG_TAG="WRT_COMMONS") IF(DPL_LOG AND NOT CMAKE_BUILD_TYPE MATCHES "profiling") MESSAGE(STATUS "Logging enabled for DPL") ADD_DEFINITIONS("-DDPL_LOGS_ENABLED") @@ -47,19 +48,29 @@ ENDIF(DPL_LOG AND NOT CMAKE_BUILD_TYPE MATCHES "profiling") OPTION(WITH_TESTS "Build tests" OFF) OPTION(WITH_CHILD "Build additional test subdirectory. WITH_TEST must be ON" OFF) -OPTION(CARD_VIEWER_SUPPORT "Enable card installation feature" OFF) - -IF(CARD_VIEWER_SUPPORT) - ADD_DEFINITIONS("-DCARD_VIEWER_SUPPORT") -ENDIF(CARD_VIEWER_SUPPORT) +OPTION(WEB_PROVIDER_SUPPORT "Support for Web Provider" OFF) + +IF(DEVICE_PROFILE STREQUAL "WEARABLE") + MESSAGE(STATUS "Device Profile: WEARABLE") + ADD_DEFINITIONS("-DDEVICE_PROFILE_WEARABLE") +ELSEIF(DEVICE_PROFILE STREQUAL "MOBILE") + MESSAGE(STATUS "Device Profile: MOBILE") + ADD_DEFINITIONS("-DDEVICE_PROFILE_MOBILE") +ELSEIF(DEVICE_PROFILE STREQUAL "TV") + MESSAGE(STATUS "Device Profile: TV") + ADD_DEFINITIONS("-DDEVICE_PROFILE_TV") + SET(WEB_PROVIDER_SUPPORT OFF) +ENDIF() + +INCLUDE(build/Options.cmake) # Compiler flags SET(CMAKE_C_FLAGS_PROFILING "-O2") SET(CMAKE_CXX_FLAGS_PROFILING "-O2 -std=c++0x") SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -std=c++0x -g") -SET(CMAKE_C_FLAGS_RELEASE "-Os") -SET(CMAKE_CXX_FLAGS_RELEASE "-Os -std=c++0x -fvisibility-inlines-hidden") +SET(CMAKE_C_FLAGS_RELEASE "-O2 -g") +SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -std=c++0x -g -fvisibility-inlines-hidden") SET(CMAKE_CXX_FLAGS_CCOV "-O0 -std=c++0x -g --coverage") ADD_DEFINITIONS("-fPIC") # If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding any limit on the size of the global offset table. This option makes a difference on the m68k, PowerPC and SPARC. (BJ: our ARM too?) @@ -164,6 +175,7 @@ ADD_DEFINITIONS("-Wstrict-overflow=5") # Also warn about cases where th #ADD_DEFINITIONS("-Winline") # Warn if a function can not be inlined and it was declared as inline. ADD_DEFINITIONS("-Wdisabled-optimization") # Warn if a requested optimization pass is disabled. ADD_DEFINITIONS("-std=c++0x") +ADD_DEFINITIONS("-Wno-variadic-macros") # # Core library files @@ -191,11 +203,12 @@ SET(TARGET_CERTIFICATE_DAO_LIB "wrt-commons-certificate-dao") SET(TARGET_DPL_UTILS_EFL "lib${PROJECT_NAME}-utils-efl") SET(TARGET_I18N_DAO_RO_LIB "wrt-commons-i18n-dao-ro") SET(TARGET_WIDGET_INTERFACE_DAO_LIB "wrt-commons-widget-interface-dao") +SET(TARGET_WRT_TRACE "wrt-trace") -macro(configure_and_install_pkg PKG_FILE) +MACRO(configure_and_install_pkg PKG_FILE) CONFIGURE_FILE(${PKG_FILE}.in ${PKG_FILE} @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PKG_FILE} DESTINATION lib/pkgconfig) -endmacro(configure_and_install_pkg) +ENDMACRO(configure_and_install_pkg) ADD_SUBDIRECTORY(modules) diff --git a/build_wearable/CMakeLists.txt b/build/CMakeLists.txt similarity index 100% rename from build_wearable/CMakeLists.txt rename to build/CMakeLists.txt diff --git a/build_wearable/widget_interface_dao/CMakeLists.txt b/build/Options.cmake similarity index 80% rename from build_wearable/widget_interface_dao/CMakeLists.txt rename to build/Options.cmake index e726271..f94d67c 100644 --- a/build_wearable/widget_interface_dao/CMakeLists.txt +++ b/build/Options.cmake @@ -12,10 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# @file CMakeLists.txt -# @author Jihoon Chung (jihoon.chung@samsung.com) -# @brief # - -configure_and_install_pkg(wrt-commons-widget-interface-dao.pc) - +# @file Options.cmake +# @author Janusz Majnert (j.majnert@samsung.com) +# +OPTION(WRT_COMMONS_ENABLE_WIDGET_INTERFACE_DAO_PERFORMANCE "" ON) diff --git a/build_wearable/certificate_dao/CMakeLists.txt b/build/certificate_dao/CMakeLists.txt similarity index 92% rename from build_wearable/certificate_dao/CMakeLists.txt rename to build/certificate_dao/CMakeLists.txt index 037a7c2..e893640 100755 --- a/build_wearable/certificate_dao/CMakeLists.txt +++ b/build/certificate_dao/CMakeLists.txt @@ -17,5 +17,5 @@ # @brief # -configure_and_install_pkg(wrt-commons-certificate-dao.pc) +CONFIGURE_AND_INSTALL_PKG(wrt-commons-certificate-dao.pc) diff --git a/build_mobile/certificate_dao/wrt-commons-certificate-dao.pc.in b/build/certificate_dao/wrt-commons-certificate-dao.pc.in old mode 100644 new mode 100755 similarity index 93% rename from build_mobile/certificate_dao/wrt-commons-certificate-dao.pc.in rename to build/certificate_dao/wrt-commons-certificate-dao.pc.in index 903dc95..8792052 --- a/build_mobile/certificate_dao/wrt-commons-certificate-dao.pc.in +++ b/build/certificate_dao/wrt-commons-certificate-dao.pc.in @@ -7,6 +7,6 @@ Name: wrt-commons-certificate-dao Description: wrt-commons-certificate-dao Version: @VERSION@ -Requires: dpl-efl +Requires: Libs: -lwrt-commons-certificate-dao -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/core/CMakeLists.txt b/build/core/CMakeLists.txt similarity index 88% rename from build_mobile/core/CMakeLists.txt rename to build/core/CMakeLists.txt index 29dfed7..54d8e10 100644 --- a/build_mobile/core/CMakeLists.txt +++ b/build/core/CMakeLists.txt @@ -23,18 +23,21 @@ INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(SYS_EFL ecore appcore-efl + capi-appfw-application openssl dlog vconf libpcrecpp icu-uc minizip + ttrace REQUIRED) # Add core include directories INCLUDE_DIRECTORIES( ${DPL_LOG_INCLUDE_DIR} ${DPL_CORE_INCLUDE_DIR} + ${WRT_TRACE_INCLUDE_DIR} ) INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_INCLUDE_DIRS}) @@ -48,13 +51,14 @@ SET(DPL_EFL_LIBRARY "${PROJECT_NAME}-efl") ADD_LIBRARY(${TARGET_DPL_EFL} SHARED ${DPL_CORE_SOURCES} ${DPL_LOG_SOURCES} + ${WRT_TRACE_SOURCES} ) TARGET_LINK_LIBRARIES(${TARGET_DPL_EFL} ${SYS_EFL_LIBRARIES} "-lrt") # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_LIBRARY}) @@ -71,13 +75,13 @@ INSTALL(FILES ${DPL_CORE_EFL_DETAIL_HEADERS} INSTALL(FILES ${DPL_CORE_HEADERS} DESTINATION include/dpl-efl/dpl) +# Install trace headers +INSTALL(FILES ${WRT_TRACE_HEADERS} + DESTINATION include/dpl-efl) + # Install log headers INSTALL(FILES ${DPL_LOG_HEADERS} DESTINATION include/dpl-efl/dpl/log) -# Install 3rdparty headers -INSTALL(FILES ${DPL_3RDPARTY_HEADERS} - DESTINATION include/dpl-efl/dpl/3rdparty/fastdelegate) - # Install pkgconfig script -configure_and_install_pkg(dpl-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-efl.pc) diff --git a/build_wearable/core/DESCRIPTION b/build/core/DESCRIPTION similarity index 100% rename from build_wearable/core/DESCRIPTION rename to build/core/DESCRIPTION diff --git a/build_wearable/core/dpl-efl.pc.in b/build/core/dpl-efl.pc.in old mode 100644 new mode 100755 similarity index 74% rename from build_wearable/core/dpl-efl.pc.in rename to build/core/dpl-efl.pc.in index 6d2a882..98ab55e --- a/build_wearable/core/dpl-efl.pc.in +++ b/build/core/dpl-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-efl Description: DPL - EFL based Version: @VERSION@ -Requires: ecore appcore-efl openssl dlog vconf +Requires: ecore appcore-efl capi-appfw-application openssl dlog vconf Libs: -L${libdir} -ldpl-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/custom_handler_dao/CMakeLists.txt b/build/custom_handler_dao/CMakeLists.txt similarity index 85% rename from build_wearable/custom_handler_dao/CMakeLists.txt rename to build/custom_handler_dao/CMakeLists.txt index 26e701c..cacc560 100644 --- a/build_wearable/custom_handler_dao/CMakeLists.txt +++ b/build/custom_handler_dao/CMakeLists.txt @@ -17,5 +17,5 @@ # @brief # -configure_and_install_pkg(wrt-commons-custom-handler-dao-ro.pc) -configure_and_install_pkg(wrt-commons-custom-handler-dao-rw.pc) +CONFIGURE_AND_INSTALL_PKG(wrt-commons-custom-handler-dao-ro.pc) +CONFIGURE_AND_INSTALL_PKG(wrt-commons-custom-handler-dao-rw.pc) diff --git a/build_wearable/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in b/build/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in old mode 100644 new mode 100755 similarity index 93% rename from build_wearable/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in rename to build/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in index 7cda187..afc4b9f --- a/build_wearable/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in +++ b/build/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in @@ -7,6 +7,6 @@ Name: wrt-commons-custom-handler-dao-ro Description: wrt-commons-custom-handler-dao-ro Version: @VERSION@ -Requires: dpl-efl +Requires: Libs: -lwrt-commons-custom-handler-dao-ro -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in b/build/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in old mode 100644 new mode 100755 similarity index 85% rename from build_wearable/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in rename to build/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in index 4cd2737..47e1eab --- a/build_wearable/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in +++ b/build/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in @@ -7,6 +7,6 @@ Name: wrt-commons-custom-handler-dao-rw Description: wrt-commons-custom-handler-dao-rw Version: @VERSION@ -Requires: dpl-efl wrt-commons-custom-handler-dao-ro +Requires: Libs: -lwrt-commons-custom-handler-dao-rw -lwrt-commons-custom-handler-dao-ro -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/db/CMakeLists.txt b/build/db/CMakeLists.txt similarity index 96% rename from build_mobile/db/CMakeLists.txt rename to build/db/CMakeLists.txt index 29dd495..1d05a05 100644 --- a/build_mobile/db/CMakeLists.txt +++ b/build/db/CMakeLists.txt @@ -53,7 +53,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_DB_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_DB_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_DB_LIBRARY}) @@ -67,4 +67,4 @@ INSTALL(FILES ${DPL_DB_HEADERS} DESTINATION include/dpl-efl/dpl/db) # Install pkgconfig script -configure_and_install_pkg(dpl-db-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-db-efl.pc) diff --git a/build_mobile/db/dpl-db-efl.pc.in b/build/db/dpl-db-efl.pc.in old mode 100644 new mode 100755 similarity index 86% rename from build_mobile/db/dpl-db-efl.pc.in rename to build/db/dpl-db-efl.pc.in index 866bb0f..146a74f --- a/build_mobile/db/dpl-db-efl.pc.in +++ b/build/db/dpl-db-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-db-efl Description: DPL DB - EFL based Version: @VERSION@ -Requires: dpl-efl sqlite3 db-util +Requires: sqlite3 db-util Libs: -L${libdir} -ldpl-db-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/dbus/CMakeLists.txt b/build/dbus/CMakeLists.txt similarity index 96% rename from build_mobile/dbus/CMakeLists.txt rename to build/dbus/CMakeLists.txt index 59b2db1..dbe3b56 100644 --- a/build_mobile/dbus/CMakeLists.txt +++ b/build/dbus/CMakeLists.txt @@ -55,7 +55,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_DBUS_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_DBUS_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_DBUS_LIBRARY}) @@ -69,4 +69,4 @@ INSTALL(FILES ${DPL_DBUS_HEADERS} DESTINATION include/dpl-efl/dpl/dbus) # Install pkgconfig script -configure_and_install_pkg(dpl-dbus-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-dbus-efl.pc) diff --git a/build_mobile/dbus/dpl-dbus-efl.pc.in b/build/dbus/dpl-dbus-efl.pc.in old mode 100644 new mode 100755 similarity index 85% rename from build_mobile/dbus/dpl-dbus-efl.pc.in rename to build/dbus/dpl-dbus-efl.pc.in index 73f2c03..dece099 --- a/build_mobile/dbus/dpl-dbus-efl.pc.in +++ b/build/dbus/dpl-dbus-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-dbus-efl Description: DPL DBus - EFL based Version: @VERSION@ -Requires: dbus-1 dpl-efl dpl-event-efl +Requires: dbus-1 Libs: -L${libdir} -ldpl-dbus-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/event/CMakeLists.txt b/build/event/CMakeLists.txt similarity index 94% rename from build_mobile/event/CMakeLists.txt rename to build/event/CMakeLists.txt index b023e0a..ae7db22 100644 --- a/build_mobile/event/CMakeLists.txt +++ b/build/event/CMakeLists.txt @@ -32,7 +32,6 @@ INCLUDE_DIRECTORIES( ${DPL_LOG_INCLUDE_DIR} ${DPL_CORE_INCLUDE_DIR} ${DPL_EVENT_INCLUDE_DIR} - ${DPL_EVENT_INCLUDE_DIR} ) INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_EVENT_INCLUDE_DIRS}) @@ -55,7 +54,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_EVENT_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_EVENT_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_EVENT_LIBRARY}) @@ -69,4 +68,4 @@ INSTALL(FILES ${DPL_EVENT_HEADERS} DESTINATION include/dpl-efl/dpl/event) # Install pkgconfig script -configure_and_install_pkg(dpl-event-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-event-efl.pc) diff --git a/build_mobile/event/dpl-event-efl.pc.in b/build/event/dpl-event-efl.pc.in old mode 100644 new mode 100755 similarity index 84% rename from build_mobile/event/dpl-event-efl.pc.in rename to build/event/dpl-event-efl.pc.in index d4befbe..af2d16b --- a/build_mobile/event/dpl-event-efl.pc.in +++ b/build/event/dpl-event-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-event-efl Description: DPL Event - EFL based Version: @VERSION@ -Requires: dpl-efl ecore appcore-efl vconf +Requires: Libs: -L${libdir} -ldpl-event-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/i18n/CMakeLists.txt b/build/i18n/CMakeLists.txt similarity index 93% rename from build_mobile/i18n/CMakeLists.txt rename to build/i18n/CMakeLists.txt index 3d97f54..20ef24c 100644 --- a/build_mobile/i18n/CMakeLists.txt +++ b/build/i18n/CMakeLists.txt @@ -17,4 +17,4 @@ # @brief # -configure_and_install_pkg(wrt-commons-i18n-dao-ro.pc) +CONFIGURE_AND_INSTALL_PKG(wrt-commons-i18n-dao-ro.pc) diff --git a/build_mobile/i18n/wrt-commons-i18n-dao-ro.pc.in b/build/i18n/wrt-commons-i18n-dao-ro.pc.in old mode 100644 new mode 100755 similarity index 93% rename from build_mobile/i18n/wrt-commons-i18n-dao-ro.pc.in rename to build/i18n/wrt-commons-i18n-dao-ro.pc.in index 270630b..8f13348 --- a/build_mobile/i18n/wrt-commons-i18n-dao-ro.pc.in +++ b/build/i18n/wrt-commons-i18n-dao-ro.pc.in @@ -7,6 +7,6 @@ Name: wrt-commons-i18n-dao-ro Description: wrt-commons-i18n-dao-ro Version: @VERSION@ -Requires: dpl-efl +Requires: Libs: -lwrt-commons-i18n-dao-ro -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/log/CMakeLists.txt b/build/log/CMakeLists.txt similarity index 95% rename from build_wearable/log/CMakeLists.txt rename to build/log/CMakeLists.txt index 47379d5..af3d605 100644 --- a/build_wearable/log/CMakeLists.txt +++ b/build/log/CMakeLists.txt @@ -49,7 +49,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_LOG_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_LOG_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_LOG_LIBRARY}) @@ -62,4 +62,4 @@ INSTALL(FILES ${DPL_LOG_HEADERS} DESTINATION include/dpl-efl/dpl/log) # Install pkgconfig script -configure_and_install_pkg(dpl-log-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-log-efl.pc) diff --git a/build_mobile/log/dpl-log-efl.pc.in b/build/log/dpl-log-efl.pc.in old mode 100644 new mode 100755 similarity index 90% rename from build_mobile/log/dpl-log-efl.pc.in rename to build/log/dpl-log-efl.pc.in index 7f18689..d4c0de3 --- a/build_mobile/log/dpl-log-efl.pc.in +++ b/build/log/dpl-log-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-log-efl Description: DPL Log Engine - EFL based Version: @VERSION@ -Requires: dpl-efl dlog +Requires: dlog Libs: -L${libdir} -ldpl-log-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/rpc/CMakeLists.txt b/build/rpc/CMakeLists.txt similarity index 96% rename from build_wearable/rpc/CMakeLists.txt rename to build/rpc/CMakeLists.txt index 9c52217..2ee60b5 100644 --- a/build_wearable/rpc/CMakeLists.txt +++ b/build/rpc/CMakeLists.txt @@ -58,7 +58,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_RPC_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_RPC_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_RPC_LIBRARY}) @@ -72,4 +72,4 @@ INSTALL(FILES ${DPL_RPC_HEADERS} DESTINATION include/dpl-efl/dpl/rpc) # Install pkgconfig script -configure_and_install_pkg(dpl-rpc-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-rpc-efl.pc) diff --git a/build_mobile/rpc/dpl-rpc-efl.pc.in b/build/rpc/dpl-rpc-efl.pc.in old mode 100644 new mode 100755 similarity index 82% rename from build_mobile/rpc/dpl-rpc-efl.pc.in rename to build/rpc/dpl-rpc-efl.pc.in index d857bbe..9ec4af3 --- a/build_mobile/rpc/dpl-rpc-efl.pc.in +++ b/build/rpc/dpl-rpc-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-rpc-efl Description: DPL RPC - EFL based Version: @VERSION@ -Requires: dpl-efl dpl-event-efl dpl-socket-efl +Requires: Libs: -L${libdir} -ldpl-rpc-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/security_origin_dao/CMakeLists.txt b/build/security_origin_dao/CMakeLists.txt similarity index 92% rename from build_wearable/security_origin_dao/CMakeLists.txt rename to build/security_origin_dao/CMakeLists.txt index ee0dcf8..7e6d0d3 100644 --- a/build_wearable/security_origin_dao/CMakeLists.txt +++ b/build/security_origin_dao/CMakeLists.txt @@ -17,5 +17,5 @@ # @brief # -configure_and_install_pkg(wrt-commons-security-origin-dao.pc) +CONFIGURE_AND_INSTALL_PKG(wrt-commons-security-origin-dao.pc) diff --git a/build_wearable/security_origin_dao/wrt-commons-security-origin-dao.pc.in b/build/security_origin_dao/wrt-commons-security-origin-dao.pc.in old mode 100644 new mode 100755 similarity index 93% rename from build_wearable/security_origin_dao/wrt-commons-security-origin-dao.pc.in rename to build/security_origin_dao/wrt-commons-security-origin-dao.pc.in index 2ab81cb..afb5d36 --- a/build_wearable/security_origin_dao/wrt-commons-security-origin-dao.pc.in +++ b/build/security_origin_dao/wrt-commons-security-origin-dao.pc.in @@ -7,6 +7,6 @@ Name: wrt-commons-security-origin-dao Description: wrt-commons-security-origin-dao Version: @VERSION@ -Requires: dpl-efl +Requires: Libs: -lwrt-commons-security-origin-dao -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/socket/CMakeLists.txt b/build/socket/CMakeLists.txt similarity index 96% rename from build_wearable/socket/CMakeLists.txt rename to build/socket/CMakeLists.txt index 3ef033f..316598e 100644 --- a/build_wearable/socket/CMakeLists.txt +++ b/build/socket/CMakeLists.txt @@ -55,7 +55,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_SOCKET_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_SOCKET_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_SOCKET_LIBRARY}) @@ -69,4 +69,4 @@ INSTALL(FILES ${DPL_SOCKET_HEADERS} DESTINATION include/dpl-efl/dpl/socket) # Install pkgconfig script -configure_and_install_pkg(dpl-socket-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-socket-efl.pc) diff --git a/build_mobile/socket/dpl-socket-efl.pc.in b/build/socket/dpl-socket-efl.pc.in old mode 100644 new mode 100755 similarity index 87% rename from build_mobile/socket/dpl-socket-efl.pc.in rename to build/socket/dpl-socket-efl.pc.in index 1e1409a..e528f82 --- a/build_mobile/socket/dpl-socket-efl.pc.in +++ b/build/socket/dpl-socket-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-socket-efl Description: DPL Socket - EFL based Version: @VERSION@ -Requires: dpl-efl dpl-event-efl +Requires: Libs: -L${libdir} -ldpl-socket-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/support/CMakeLists.txt b/build/support/CMakeLists.txt similarity index 94% rename from build_wearable/support/CMakeLists.txt rename to build/support/CMakeLists.txt index f0a67a4..8a1345e 100644 --- a/build_wearable/support/CMakeLists.txt +++ b/build/support/CMakeLists.txt @@ -23,4 +23,4 @@ INSTALL(FILES ${DPL_WRT_ENGINE_HEADERS} DESTINATION include/dpl-efl/wrt-commons) # Install pkgconfig script -configure_and_install_pkg(wrt-plugins-types.pc) +CONFIGURE_AND_INSTALL_PKG(wrt-plugins-types.pc) diff --git a/build_wearable/support/wrt-plugins-types.pc.in b/build/support/wrt-plugins-types.pc.in similarity index 100% rename from build_wearable/support/wrt-plugins-types.pc.in rename to build/support/wrt-plugins-types.pc.in diff --git a/build_wearable/test/CMakeLists.txt b/build/test/CMakeLists.txt similarity index 96% rename from build_wearable/test/CMakeLists.txt rename to build/test/CMakeLists.txt index d992952..a92aae2 100644 --- a/build_wearable/test/CMakeLists.txt +++ b/build/test/CMakeLists.txt @@ -53,7 +53,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_TEST_ENGINE_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_TEST_ENGINE_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_TEST_ENGINE_LIBRARY}) @@ -67,4 +67,4 @@ INSTALL(FILES ${DPL_TEST_ENGINE_HEADERS} DESTINATION include/dpl-efl/dpl/test) # Install pkgconfig script -configure_and_install_pkg(dpl-test-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-test-efl.pc) diff --git a/build_mobile/test/dpl-test-efl.pc.in b/build/test/dpl-test-efl.pc.in old mode 100644 new mode 100755 similarity index 88% rename from build_mobile/test/dpl-test-efl.pc.in rename to build/test/dpl-test-efl.pc.in index 056ae09..33bfb0e --- a/build_mobile/test/dpl-test-efl.pc.in +++ b/build/test/dpl-test-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-test-efl Description: DPL Test Engine - EFL based Version: @VERSION@ -Requires: dpl-efl libxml-2.0 +Requires: libxml-2.0 Libs: -L${libdir} -ldpl-test-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/utils/CMakeLists.txt b/build/utils/CMakeLists.txt similarity index 96% rename from build_wearable/utils/CMakeLists.txt rename to build/utils/CMakeLists.txt index ccc52ae..f05414c 100644 --- a/build_wearable/utils/CMakeLists.txt +++ b/build/utils/CMakeLists.txt @@ -64,7 +64,7 @@ TARGET_LINK_LIBRARIES(${TARGET_DPL_UTILS_EFL} # Target library properties SET_TARGET_PROPERTIES(${TARGET_DPL_UTILS_EFL} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION} CLEAN_DIRECT_OUTPUT 1 OUTPUT_NAME ${DPL_EFL_UTILS_LIBRARY}) @@ -81,4 +81,4 @@ INSTALL(FILES ${DPL_LOCALIZATION_HEADERS} DESTINATION include/dpl-efl/dpl/localization) # Install pkgconfig script -configure_and_install_pkg(dpl-utils-efl.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-utils-efl.pc) diff --git a/build_mobile/utils/dpl-utils-efl.pc.in b/build/utils/dpl-utils-efl.pc.in old mode 100644 new mode 100755 similarity index 92% rename from build_mobile/utils/dpl-utils-efl.pc.in rename to build/utils/dpl-utils-efl.pc.in index 8e1d4c9..7e7dbae --- a/build_mobile/utils/dpl-utils-efl.pc.in +++ b/build/utils/dpl-utils-efl.pc.in @@ -6,6 +6,6 @@ includedir=${prefix}/include Name: dpl-utils-efl Description: DPL UTILS - EFL based Version: @VERSION@ -Requires: dpl-efl +Requires: Libs: -L${libdir} -ldpl-utils-efl Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/widget_dao/CMakeLists.txt b/build/widget_dao/CMakeLists.txt similarity index 89% rename from build_mobile/widget_dao/CMakeLists.txt rename to build/widget_dao/CMakeLists.txt index 0590e56..f52c106 100644 --- a/build_mobile/widget_dao/CMakeLists.txt +++ b/build/widget_dao/CMakeLists.txt @@ -17,5 +17,5 @@ # @brief # -configure_and_install_pkg(dpl-wrt-dao-ro.pc) -configure_and_install_pkg(dpl-wrt-dao-rw.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-wrt-dao-ro.pc) +CONFIGURE_AND_INSTALL_PKG(dpl-wrt-dao-rw.pc) diff --git a/build_wearable/widget_dao/dpl-wrt-dao-ro.pc.in b/build/widget_dao/dpl-wrt-dao-ro.pc.in old mode 100644 new mode 100755 similarity index 88% rename from build_wearable/widget_dao/dpl-wrt-dao-ro.pc.in rename to build/widget_dao/dpl-wrt-dao-ro.pc.in index d2d112b..b4d3b49 --- a/build_wearable/widget_dao/dpl-wrt-dao-ro.pc.in +++ b/build/widget_dao/dpl-wrt-dao-ro.pc.in @@ -7,6 +7,6 @@ Name: dpl-wrt-dao-ro Description: dpl-wrt-dao-ro Version: @VERSION@ -Requires: dpl-efl libxml-2.0 +Requires: libxml-2.0 Libs: -ldpl-wrt-dao-ro -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/widget_dao/dpl-wrt-dao-rw.pc.in b/build/widget_dao/dpl-wrt-dao-rw.pc.in old mode 100644 new mode 100755 similarity index 84% rename from build_mobile/widget_dao/dpl-wrt-dao-rw.pc.in rename to build/widget_dao/dpl-wrt-dao-rw.pc.in index c71e58d..9e3ca17 --- a/build_mobile/widget_dao/dpl-wrt-dao-rw.pc.in +++ b/build/widget_dao/dpl-wrt-dao-rw.pc.in @@ -7,6 +7,6 @@ Name: dpl-wrt-dao-rw Description: dpl-wrt-dao-rw Version: @VERSION@ -Requires: dpl-efl dpl-wrt-dao-ro libxml-2.0 +Requires: libxml-2.0 Libs: -ldpl-wrt-dao-rw -ldpl-wrt-dao-ro -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/widget_interface_dao/CMakeLists.txt b/build/widget_interface_dao/CMakeLists.txt similarity index 92% rename from build_mobile/widget_interface_dao/CMakeLists.txt rename to build/widget_interface_dao/CMakeLists.txt index e726271..d132545 100644 --- a/build_mobile/widget_interface_dao/CMakeLists.txt +++ b/build/widget_interface_dao/CMakeLists.txt @@ -17,5 +17,5 @@ # @brief # -configure_and_install_pkg(wrt-commons-widget-interface-dao.pc) +CONFIGURE_AND_INSTALL_PKG(wrt-commons-widget-interface-dao.pc) diff --git a/build_mobile/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in b/build/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in old mode 100644 new mode 100755 similarity index 93% rename from build_mobile/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in rename to build/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in index 348b178..b04aa48 --- a/build_mobile/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in +++ b/build/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in @@ -7,6 +7,6 @@ Name: wrt-commons-widget-interface-dao Description: wrt-commons-widget-interface-dao Version: @VERSION@ -Requires: dpl-efl +Requires: Libs: -lwrt-commons-widget-interface-dao -L${libdir} Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/CMakeLists.txt b/build_mobile/CMakeLists.txt deleted file mode 100644 index b94d51f..0000000 --- a/build_mobile/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -ADD_SUBDIRECTORY(core) -ADD_SUBDIRECTORY(dbus) -ADD_SUBDIRECTORY(db) -ADD_SUBDIRECTORY(event) -ADD_SUBDIRECTORY(socket) -ADD_SUBDIRECTORY(rpc) -ADD_SUBDIRECTORY(test) -#ADD_SUBDIRECTORY(log) -ADD_SUBDIRECTORY(widget_dao) -ADD_SUBDIRECTORY(security_origin_dao) -ADD_SUBDIRECTORY(custom_handler_dao) -ADD_SUBDIRECTORY(utils) -ADD_SUBDIRECTORY(support) -ADD_SUBDIRECTORY(certificate_dao) -ADD_SUBDIRECTORY(i18n) -ADD_SUBDIRECTORY(widget_interface_dao) diff --git a/build_mobile/auto_save_dao/CMakeLists.txt b/build_mobile/auto_save_dao/CMakeLists.txt deleted file mode 100644 index 62e656a..0000000 --- a/build_mobile/auto_save_dao/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Jihoon Chung (jihoon.chung@samsung.com) -# @brief -# - -configure_and_install_pkg(wrt-commons-auto-save-dao.pc) -configure_and_install_pkg(wrt-commons-auto-save-dao-ro.pc) -configure_and_install_pkg(wrt-commons-auto-save-dao-rw.pc) diff --git a/build_mobile/auto_save_dao/wrt-commons-auto-save-dao-ro.pc.in b/build_mobile/auto_save_dao/wrt-commons-auto-save-dao-ro.pc.in deleted file mode 100644 index 2784bef..0000000 --- a/build_mobile/auto_save_dao/wrt-commons-auto-save-dao-ro.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-auto-save-dao-ro -Description: wrt-commons-auto-save-dao-ro - -Version: @VERSION@ -Requires: dpl-efl wrt-commons-auto-save-dao libxml-2.0 -Libs: -lwrt-commons-auto-save-dao-ro -lwrt-commons-auto-save-dao -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/auto_save_dao/wrt-commons-auto-save-dao-rw.pc.in b/build_mobile/auto_save_dao/wrt-commons-auto-save-dao-rw.pc.in deleted file mode 100644 index bb4bd70..0000000 --- a/build_mobile/auto_save_dao/wrt-commons-auto-save-dao-rw.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-auto-save-dao-rw -Description: wrt-commons-auto-save-dao-rw - -Version: @VERSION@ -Requires: dpl-efl wrt-commons-auto-save-dao wrt-commons-auto-save-dao-ro libxml-2.0 -Libs: -lwrt-commons-auto-save-dao-rw -lwrt-commons-auto-save-dao-ro -lwrt-commons-auto-save-dao -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/auto_save_dao/wrt-commons-auto-save-dao.pc.in b/build_mobile/auto_save_dao/wrt-commons-auto-save-dao.pc.in deleted file mode 100644 index 11e3ca9..0000000 --- a/build_mobile/auto_save_dao/wrt-commons-auto-save-dao.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-auto-save-dao -Description: wrt-commons-auto-save-dao - -Version: @VERSION@ -Requires: dpl-efl libxml-2.0 -Libs: -lwrt-commons-auto-save-dao -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/certificate_dao/CMakeLists.txt b/build_mobile/certificate_dao/CMakeLists.txt deleted file mode 100755 index 037a7c2..0000000 --- a/build_mobile/certificate_dao/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Leerang Song (leerang.song@samsung.com) -# @brief -# - -configure_and_install_pkg(wrt-commons-certificate-dao.pc) - diff --git a/build_mobile/core/DESCRIPTION b/build_mobile/core/DESCRIPTION deleted file mode 100644 index f7f1581..0000000 --- a/build_mobile/core/DESCRIPTION +++ /dev/null @@ -1,2 +0,0 @@ -!!!options!!! stop -EFL support diff --git a/build_mobile/core/dpl-efl.pc.in b/build_mobile/core/dpl-efl.pc.in deleted file mode 100644 index 6d2a882..0000000 --- a/build_mobile/core/dpl-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-efl -Description: DPL - EFL based -Version: @VERSION@ -Requires: ecore appcore-efl openssl dlog vconf -Libs: -L${libdir} -ldpl-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/custom_handler_dao/CMakeLists.txt b/build_mobile/custom_handler_dao/CMakeLists.txt deleted file mode 100644 index 26e701c..0000000 --- a/build_mobile/custom_handler_dao/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) -# @brief -# - -configure_and_install_pkg(wrt-commons-custom-handler-dao-ro.pc) -configure_and_install_pkg(wrt-commons-custom-handler-dao-rw.pc) diff --git a/build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in b/build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in deleted file mode 100644 index 7cda187..0000000 --- a/build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-ro.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-custom-handler-dao-ro -Description: wrt-commons-custom-handler-dao-ro - -Version: @VERSION@ -Requires: dpl-efl -Libs: -lwrt-commons-custom-handler-dao-ro -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in b/build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in deleted file mode 100644 index 4cd2737..0000000 --- a/build_mobile/custom_handler_dao/wrt-commons-custom-handler-dao-rw.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-custom-handler-dao-rw -Description: wrt-commons-custom-handler-dao-rw - -Version: @VERSION@ -Requires: dpl-efl wrt-commons-custom-handler-dao-ro -Libs: -lwrt-commons-custom-handler-dao-rw -lwrt-commons-custom-handler-dao-ro -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/log/CMakeLists.txt b/build_mobile/log/CMakeLists.txt deleted file mode 100644 index 47379d5..0000000 --- a/build_mobile/log/CMakeLists.txt +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_LOG - dlog - REQUIRED -) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_LOG_INCLUDE_DIRS}) - -LINK_DIRECTORIES( - ${SYS_EFL_LOG_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_LOG_LIBRARY "${PROJECT_NAME}-log-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_LOG_EFL} SHARED ${DPL_LOG_SOURCES}) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_LOG_EFL} - ${SYS_EFL_LOG_LIBRARIES} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_LOG_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_LOG_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_LOG_EFL} - DESTINATION lib) - -INSTALL(FILES ${DPL_LOG_HEADERS} - DESTINATION include/dpl-efl/dpl/log) - -# Install pkgconfig script -configure_and_install_pkg(dpl-log-efl.pc) diff --git a/build_mobile/rpc/CMakeLists.txt b/build_mobile/rpc/CMakeLists.txt deleted file mode 100644 index 9c52217..0000000 --- a/build_mobile/rpc/CMakeLists.txt +++ /dev/null @@ -1,75 +0,0 @@ - -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_RPC - ecore - appcore-efl - REQUIRED -) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} - ${DPL_SOCKET_INCLUDE_DIR} - ${DPL_EVENT_INCLUDE_DIR} - ${DPL_RPC_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_RPC_INCLUDE_DIRS}) - -LINK_DIRECTORIES( - ${SYS_EFL_RPC_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_RPC_LIBRARY "${PROJECT_NAME}-rpc-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_RPC_EFL} SHARED ${DPL_RPC_SOURCES}) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_RPC_EFL} - ${SYS_EFL_RPC_LIBRARIES} - ${TARGET_DPL_EFL} - ${TARGET_DPL_EVENT_EFL} - ${TARGET_DPL_SOCKET_EFL} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_RPC_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_RPC_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_RPC_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_RPC_HEADERS} - DESTINATION include/dpl-efl/dpl/rpc) - -# Install pkgconfig script -configure_and_install_pkg(dpl-rpc-efl.pc) diff --git a/build_mobile/security_origin_dao/CMakeLists.txt b/build_mobile/security_origin_dao/CMakeLists.txt deleted file mode 100644 index ee0dcf8..0000000 --- a/build_mobile/security_origin_dao/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Jihoon Chung (jihoon.chung@samsung.com) -# @brief -# - -configure_and_install_pkg(wrt-commons-security-origin-dao.pc) - diff --git a/build_mobile/security_origin_dao/wrt-commons-security-origin-dao.pc.in b/build_mobile/security_origin_dao/wrt-commons-security-origin-dao.pc.in deleted file mode 100644 index 2ab81cb..0000000 --- a/build_mobile/security_origin_dao/wrt-commons-security-origin-dao.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-security-origin-dao -Description: wrt-commons-security-origin-dao - -Version: @VERSION@ -Requires: dpl-efl -Libs: -lwrt-commons-security-origin-dao -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_mobile/socket/CMakeLists.txt b/build_mobile/socket/CMakeLists.txt deleted file mode 100644 index 3ef033f..0000000 --- a/build_mobile/socket/CMakeLists.txt +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_SOCKET - ecore - appcore-efl - REQUIRED -) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} - ${DPL_SOCKET_INCLUDE_DIR} - ${DPL_EVENT_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_SOCKET_INCLUDE_DIRS}) - -LINK_DIRECTORIES( - ${SYS_EFL_SOCKET_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_SOCKET_LIBRARY "${PROJECT_NAME}-socket-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_SOCKET_EFL} SHARED ${DPL_SOCKET_SOURCES}) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_SOCKET_EFL} - ${SYS_EFL_SOCKET_LIBRARIES} - ${TARGET_DPL_EFL} - ${TARGET_DPL_EVENT_EFL} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_SOCKET_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_SOCKET_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_SOCKET_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_SOCKET_HEADERS} - DESTINATION include/dpl-efl/dpl/socket) - -# Install pkgconfig script -configure_and_install_pkg(dpl-socket-efl.pc) diff --git a/build_mobile/support/CMakeLists.txt b/build_mobile/support/CMakeLists.txt deleted file mode 100644 index f0a67a4..0000000 --- a/build_mobile/support/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -# Install headers -INSTALL(FILES ${DPL_WRT_ENGINE_HEADERS} - DESTINATION include/dpl-efl/wrt-commons) - -# Install pkgconfig script -configure_and_install_pkg(wrt-plugins-types.pc) diff --git a/build_mobile/support/wrt-plugins-types.pc.in b/build_mobile/support/wrt-plugins-types.pc.in deleted file mode 100644 index b35b9b4..0000000 --- a/build_mobile/support/wrt-plugins-types.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: wrt-plugins-types -Description: Header for plugins types -Version: @VERSION@ -Requires: -Libs: -Cflags: -I${includedir}/dpl-efl/wrt-commons diff --git a/build_mobile/test/CMakeLists.txt b/build_mobile/test/CMakeLists.txt deleted file mode 100644 index d992952..0000000 --- a/build_mobile/test/CMakeLists.txt +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_TEST_ENGINE - appcore-efl - libxml-2.0 - REQUIRED) - - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} - ${DPL_TEST_ENGINE_INCLUDE_DIR} - ${DPL_UTILS_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_TEST_ENGINE_INCLUDE_DIRS}) - -LINK_DIRECTORIES( - ${SYS_EFL_TEST_ENGINE_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_TEST_ENGINE_LIBRARY "${PROJECT_NAME}-test-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_TEST_ENGINE_EFL} SHARED ${DPL_TEST_ENGINE_SOURCES}) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_TEST_ENGINE_EFL} - ${TARGET_DPL_EFL} - ${TARGET_DPL_UTILS_EFL} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_TEST_ENGINE_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_TEST_ENGINE_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_TEST_ENGINE_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_TEST_ENGINE_HEADERS} - DESTINATION include/dpl-efl/dpl/test) - -# Install pkgconfig script -configure_and_install_pkg(dpl-test-efl.pc) diff --git a/build_mobile/utils/CMakeLists.txt b/build_mobile/utils/CMakeLists.txt deleted file mode 100644 index ccc52ae..0000000 --- a/build_mobile/utils/CMakeLists.txt +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Soyoung Kim (sy037.kim@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_UTILS - dlog - libiri - appcore-efl - libidn - REQUIRED -) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} - ${DPL_DB_INCLUDE_DIR} - ${DPL_UTILS_INCLUDE_DIR} - ${DPL_LOCALIZATION_INCLUDE_DIR} -) -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_UTILS_INCLUDE_DIRS}) - -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/modules/widget_dao/include) -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/modules/vcore/src/vcore) - -LINK_DIRECTORIES( - ${SYS_EFL_UTILS_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_UTILS_LIBRARY "${PROJECT_NAME}-utils-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_UTILS_EFL} SHARED - ${DPL_UTILS_SOURCES} - ${DPL_LOCALIZATION_SOURCES} -) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_UTILS_EFL} - ${SYS_EFL_UTILS_LIBRARIES} - ${TARGET_DPL_EFL} - ${TARGET_WRT_DAO_RW_LIB} - ${SYS_EFL_DB_LIBRARIES} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_UTILS_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_UTILS_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_UTILS_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_UTILS_HEADERS} - DESTINATION include/dpl-efl/dpl/utils) - -INSTALL(FILES ${DPL_LOCALIZATION_HEADERS} - DESTINATION include/dpl-efl/dpl/localization) - -# Install pkgconfig script -configure_and_install_pkg(dpl-utils-efl.pc) diff --git a/build_mobile/widget_dao/dpl-wrt-dao-ro.pc.in b/build_mobile/widget_dao/dpl-wrt-dao-ro.pc.in deleted file mode 100644 index d2d112b..0000000 --- a/build_mobile/widget_dao/dpl-wrt-dao-ro.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: dpl-wrt-dao-ro -Description: dpl-wrt-dao-ro - -Version: @VERSION@ -Requires: dpl-efl libxml-2.0 -Libs: -ldpl-wrt-dao-ro -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/certificate_dao/wrt-commons-certificate-dao.pc.in b/build_wearable/certificate_dao/wrt-commons-certificate-dao.pc.in deleted file mode 100644 index 903dc95..0000000 --- a/build_wearable/certificate_dao/wrt-commons-certificate-dao.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-certificate-dao -Description: wrt-commons-certificate-dao - -Version: @VERSION@ -Requires: dpl-efl -Libs: -lwrt-commons-certificate-dao -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/core/CMakeLists.txt b/build_wearable/core/CMakeLists.txt deleted file mode 100644 index d67e246..0000000 --- a/build_wearable/core/CMakeLists.txt +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL - ecore - appcore-efl - openssl - dlog - vconf - libpcrecpp - icu-uc - minizip - REQUIRED) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_INCLUDE_DIRS}) - -LINK_DIRECTORIES(${SYS_EFL_LIBRARY_DIRS}) - -# Base EFL based DPL library -SET(DPL_EFL_LIBRARY "${PROJECT_NAME}-efl") - -# Build shared library -ADD_LIBRARY(${TARGET_DPL_EFL} SHARED - ${DPL_CORE_SOURCES} - ${DPL_LOG_SOURCES} -) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_EFL} ${SYS_EFL_LIBRARIES} "-lrt") - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_CORE_EFL_DETAIL_HEADERS} - DESTINATION include/dpl-efl/dpl) - -# Install core headers -INSTALL(FILES ${DPL_CORE_HEADERS} - DESTINATION include/dpl-efl/dpl) - -# Install log headers -INSTALL(FILES ${DPL_LOG_HEADERS} - DESTINATION include/dpl-efl/dpl/log) - -# Install pkgconfig script -configure_and_install_pkg(dpl-efl.pc) diff --git a/build_wearable/db/CMakeLists.txt b/build_wearable/db/CMakeLists.txt deleted file mode 100644 index 29dd495..0000000 --- a/build_wearable/db/CMakeLists.txt +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_DB - sqlite3 - db-util - REQUIRED) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} - ${DPL_DB_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_INCLUDE_DIRS}) -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_DB_INCLUDE_DIRS}) - -LINK_DIRECTORIES( - ${SYS_EFL_DB_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_DB_LIBRARY "${PROJECT_NAME}-db-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_DB_EFL} SHARED ${DPL_DB_SOURCES}) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_DB_EFL} - ${SYS_EFL_DB_LIBRARIES} - ${TARGET_DPL_EFL} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_DB_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_DB_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_DB_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_DB_HEADERS} - DESTINATION include/dpl-efl/dpl/db) - -# Install pkgconfig script -configure_and_install_pkg(dpl-db-efl.pc) diff --git a/build_wearable/db/dpl-db-efl.pc.in b/build_wearable/db/dpl-db-efl.pc.in deleted file mode 100644 index 866bb0f..0000000 --- a/build_wearable/db/dpl-db-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-db-efl -Description: DPL DB - EFL based -Version: @VERSION@ -Requires: dpl-efl sqlite3 db-util -Libs: -L${libdir} -ldpl-db-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/dbus/CMakeLists.txt b/build_wearable/dbus/CMakeLists.txt deleted file mode 100644 index 59b2db1..0000000 --- a/build_wearable/dbus/CMakeLists.txt +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_DBUS - dbus-1 - gio-2.0 - REQUIRED) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} - ${DPL_DBUS_INCLUDE_DIR} - ${DPL_EVENT_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_INCLUDE_DIRS}) -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_DBUS_INCLUDE_DIRS}) - -LINK_DIRECTORIES( - ${SYS_EFL_DBUS_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_DBUS_LIBRARY "${PROJECT_NAME}-dbus-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_DBUS_EFL} SHARED ${DPL_DBUS_SOURCES}) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_DBUS_EFL} - ${SYS_EFL_DBUS_LIBRARIES} - ${TARGET_DPL_EFL} - ${TARGET_DPL_EVENT_EFL} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_DBUS_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_DBUS_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_DBUS_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_DBUS_HEADERS} - DESTINATION include/dpl-efl/dpl/dbus) - -# Install pkgconfig script -configure_and_install_pkg(dpl-dbus-efl.pc) diff --git a/build_wearable/dbus/dpl-dbus-efl.pc.in b/build_wearable/dbus/dpl-dbus-efl.pc.in deleted file mode 100644 index 73f2c03..0000000 --- a/build_wearable/dbus/dpl-dbus-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-dbus-efl -Description: DPL DBus - EFL based -Version: @VERSION@ -Requires: dbus-1 dpl-efl dpl-event-efl -Libs: -L${libdir} -ldpl-dbus-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/event/CMakeLists.txt b/build_wearable/event/CMakeLists.txt deleted file mode 100644 index b023e0a..0000000 --- a/build_wearable/event/CMakeLists.txt +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -# Check required modules -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(SYS_EFL_EVENT - ecore - appcore-efl - vconf - REQUIRED -) - -# Add core include directories -INCLUDE_DIRECTORIES( - ${DPL_LOG_INCLUDE_DIR} - ${DPL_CORE_INCLUDE_DIR} - ${DPL_EVENT_INCLUDE_DIR} - ${DPL_EVENT_INCLUDE_DIR} -) - -INCLUDE_DIRECTORIES(SYSTEM ${SYS_EFL_EVENT_INCLUDE_DIRS}) - -LINK_DIRECTORIES( - ${SYS_EFL_EVENT_LIBRARY_DIRS} -) - -# Base EFL based DPL library -SET(DPL_EFL_EVENT_LIBRARY "${PROJECT_NAME}-event-efl") - -# Build shared library - -ADD_LIBRARY(${TARGET_DPL_EVENT_EFL} SHARED ${DPL_EVENT_SOURCES}) - -TARGET_LINK_LIBRARIES(${TARGET_DPL_EVENT_EFL} - ${SYS_EFL_EVENT_LIBRARIES} - ${TARGET_DPL_EFL} -) - -# Target library properties -SET_TARGET_PROPERTIES(${TARGET_DPL_EVENT_EFL} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION} - CLEAN_DIRECT_OUTPUT 1 - OUTPUT_NAME ${DPL_EFL_EVENT_LIBRARY}) - -# Install libraries -INSTALL(TARGETS ${TARGET_DPL_EVENT_EFL} - DESTINATION lib) - -# Install detail headers -INSTALL(FILES ${DPL_EVENT_HEADERS} - DESTINATION include/dpl-efl/dpl/event) - -# Install pkgconfig script -configure_and_install_pkg(dpl-event-efl.pc) diff --git a/build_wearable/event/dpl-event-efl.pc.in b/build_wearable/event/dpl-event-efl.pc.in deleted file mode 100644 index d4befbe..0000000 --- a/build_wearable/event/dpl-event-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-event-efl -Description: DPL Event - EFL based -Version: @VERSION@ -Requires: dpl-efl ecore appcore-efl vconf -Libs: -L${libdir} -ldpl-event-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/i18n/CMakeLists.txt b/build_wearable/i18n/CMakeLists.txt deleted file mode 100644 index 3d97f54..0000000 --- a/build_wearable/i18n/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) -# @brief -# - -configure_and_install_pkg(wrt-commons-i18n-dao-ro.pc) diff --git a/build_wearable/i18n/wrt-commons-i18n-dao-ro.pc.in b/build_wearable/i18n/wrt-commons-i18n-dao-ro.pc.in deleted file mode 100644 index 270630b..0000000 --- a/build_wearable/i18n/wrt-commons-i18n-dao-ro.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-i18n-dao-ro -Description: wrt-commons-i18n-dao-ro - -Version: @VERSION@ -Requires: dpl-efl -Libs: -lwrt-commons-i18n-dao-ro -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/log/dpl-log-efl.pc.in b/build_wearable/log/dpl-log-efl.pc.in deleted file mode 100644 index 7f18689..0000000 --- a/build_wearable/log/dpl-log-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-log-efl -Description: DPL Log Engine - EFL based -Version: @VERSION@ -Requires: dpl-efl dlog -Libs: -L${libdir} -ldpl-log-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/rpc/dpl-rpc-efl.pc.in b/build_wearable/rpc/dpl-rpc-efl.pc.in deleted file mode 100644 index d857bbe..0000000 --- a/build_wearable/rpc/dpl-rpc-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-rpc-efl -Description: DPL RPC - EFL based -Version: @VERSION@ -Requires: dpl-efl dpl-event-efl dpl-socket-efl -Libs: -L${libdir} -ldpl-rpc-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/socket/dpl-socket-efl.pc.in b/build_wearable/socket/dpl-socket-efl.pc.in deleted file mode 100644 index 1e1409a..0000000 --- a/build_wearable/socket/dpl-socket-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-socket-efl -Description: DPL Socket - EFL based -Version: @VERSION@ -Requires: dpl-efl dpl-event-efl -Libs: -L${libdir} -ldpl-socket-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/test/dpl-test-efl.pc.in b/build_wearable/test/dpl-test-efl.pc.in deleted file mode 100644 index 056ae09..0000000 --- a/build_wearable/test/dpl-test-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-test-efl -Description: DPL Test Engine - EFL based -Version: @VERSION@ -Requires: dpl-efl libxml-2.0 -Libs: -L${libdir} -ldpl-test-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/utils/dpl-utils-efl.pc.in b/build_wearable/utils/dpl-utils-efl.pc.in deleted file mode 100644 index 8e1d4c9..0000000 --- a/build_wearable/utils/dpl-utils-efl.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: dpl-utils-efl -Description: DPL UTILS - EFL based -Version: @VERSION@ -Requires: dpl-efl -Libs: -L${libdir} -ldpl-utils-efl -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/widget_dao/CMakeLists.txt b/build_wearable/widget_dao/CMakeLists.txt deleted file mode 100644 index 0590e56..0000000 --- a/build_wearable/widget_dao/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# @file CMakeLists.txt -# @author Bartlomiej Grzelewski (b.grzelewski@samsung.com) -# @brief -# - -configure_and_install_pkg(dpl-wrt-dao-ro.pc) -configure_and_install_pkg(dpl-wrt-dao-rw.pc) diff --git a/build_wearable/widget_dao/dpl-wrt-dao-rw.pc.in b/build_wearable/widget_dao/dpl-wrt-dao-rw.pc.in deleted file mode 100644 index c71e58d..0000000 --- a/build_wearable/widget_dao/dpl-wrt-dao-rw.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: dpl-wrt-dao-rw -Description: dpl-wrt-dao-rw - -Version: @VERSION@ -Requires: dpl-efl dpl-wrt-dao-ro libxml-2.0 -Libs: -ldpl-wrt-dao-rw -ldpl-wrt-dao-ro -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/build_wearable/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in b/build_wearable/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in deleted file mode 100644 index 348b178..0000000 --- a/build_wearable/widget_interface_dao/wrt-commons-widget-interface-dao.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} - -libdir=${prefix}/lib -includedir=${prefix}/include -Name: wrt-commons-widget-interface-dao -Description: wrt-commons-widget-interface-dao - -Version: @VERSION@ -Requires: dpl-efl -Libs: -lwrt-commons-widget-interface-dao -L${libdir} -Cflags: -I${includedir}/dpl-efl diff --git a/etc_wearable/CMakeLists.txt b/etc/CMakeLists.txt similarity index 100% rename from etc_wearable/CMakeLists.txt rename to etc/CMakeLists.txt diff --git a/etc_wearable/DESCRIPTION b/etc/DESCRIPTION similarity index 100% rename from etc_wearable/DESCRIPTION rename to etc/DESCRIPTION diff --git a/etc_wearable/wrt_commons_create_clean_db.sh b/etc/wrt_commons_create_clean_db.sh similarity index 95% rename from etc_wearable/wrt_commons_create_clean_db.sh rename to etc/wrt_commons_create_clean_db.sh index d77048b..fef3a59 100755 --- a/etc_wearable/wrt_commons_create_clean_db.sh +++ b/etc/wrt_commons_create_clean_db.sh @@ -41,8 +41,8 @@ function create_db { SQL=".read /usr/share/wrt-engine/"$name"_db.sql" /usr/bin/sqlite3 $dbpath.$name.db "$SQL" /bin/touch $dbpath.$name.db-journal - /bin/chown 0:6026 $dbpath.$name.db - /bin/chown 0:6026 $dbpath.$name.db-journal + /bin/chown 0:5000 $dbpath.$name.db + /bin/chown 0:5000 $dbpath.$name.db-journal /bin/chmod 660 $dbpath.$name.db /bin/chmod 660 $dbpath.$name.db-journal diff --git a/etc_wearable/wrt_commons_reset_db.sh b/etc/wrt_commons_reset_db.sh similarity index 85% rename from etc_wearable/wrt_commons_reset_db.sh rename to etc/wrt_commons_reset_db.sh index 6d578c7..c8e6eb0 100755 --- a/etc_wearable/wrt_commons_reset_db.sh +++ b/etc/wrt_commons_reset_db.sh @@ -28,8 +28,6 @@ WIDGET_DESKTOP_PATH=/opt/share/applications/ SMACK_RULES_PATH=/etc/smack/accesses.d/ WRT_DB=/opt/dbspace/.wrt.db PKGMGR_DB=/opt/dbspace/.pkgmgr_parser.db -PLUGINS_INSTALLATION_REQUIRED_PATH=/opt/share/widget/ -PLUGINS_INSTALLATION_REQUIRED=plugin-installation-required if [ -f ${WRT_DB} ] then @@ -60,14 +58,8 @@ fi /usr/bin/wrt_commons_create_clean_db.sh -#TODO: remove this when switched to wrt-plugins-installer completely -if [ -e ${PLUGINS_INSTALLATION_REQUIRED_PATH} ] && [ -d ${PLUGINS_INSTALLATION_REQUIRED_PATH} ] -then - /bin/touch ${PLUGINS_INSTALLATION_REQUIRED_PATH}${PLUGINS_INSTALLATION_REQUIRED} -fi - #update plugins if [ -x /usr/bin/wrt-installer ] then /usr/bin/wrt-installer -p -fi +fi \ No newline at end of file diff --git a/etc_mobile/CMakeLists.txt b/etc_mobile/CMakeLists.txt deleted file mode 100644 index f3436e6..0000000 --- a/etc_mobile/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ - -SET(ETC_DIR ${PROJECT_SOURCE_DIR}/etc) - -INSTALL(FILES - ${ETC_DIR}/wrt_commons_reset_db.sh - ${ETC_DIR}/wrt_commons_create_clean_db.sh - DESTINATION /usr/bin - ) diff --git a/etc_mobile/DESCRIPTION b/etc_mobile/DESCRIPTION deleted file mode 100644 index bf6eac9..0000000 --- a/etc_mobile/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -This directory contain confiration scripts, config files, certificates and all other data that don't fit to other directories. diff --git a/etc_mobile/wrt_commons_create_clean_db.sh b/etc_mobile/wrt_commons_create_clean_db.sh deleted file mode 100755 index 6a2a389..0000000 --- a/etc_mobile/wrt_commons_create_clean_db.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/sh -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -DB_PATH=/opt/dbspace/ -DB_USER_PATH=/opt/usr/dbspace/ - -function create_db { - name=$1 - dbpath=$2 - # extract smack label before removal - DB_LABEL="" - if [ -f $dbpath.$name.db ] - then - DB_LABEL=`chsmack $dbpath.$name.db | sed -r "s/.*access=\"([^\"]+)\"/\1/"` - fi - rm -f $dbpath.$name.db - - # extract smack label before removal - JOURNAL_LABEL="" - if [ -f $dbpath.$name.db-journal ] - then - JOURNAL_LABEL=`chsmack $dbpath.$name.db-journal | sed -r "s/.*access=\"([^\"]+)\"/\1/"` - fi - rm -f $dbpath.$name.db-journal - - SQL="PRAGMA journal_mode = PERSIST;" - sqlite3 $dbpath.$name.db "$SQL" - SQL=".read /usr/share/wrt-engine/"$name"_db.sql" - sqlite3 $dbpath.$name.db "$SQL" - touch $dbpath.$name.db-journal - chown 0:6026 $dbpath.$name.db - chown 0:6026 $dbpath.$name.db-journal - chmod 660 $dbpath.$name.db - chmod 660 $dbpath.$name.db-journal - - pkill -9 security-serv - - # restore smack label - if [ -n "$DB_LABEL" ] - then - chsmack -a "$DB_LABEL" $dbpath.$name.db - fi - - # restore smack label - if [ -n "$JOURNAL_LABEL" ] - then - chsmack -a "$JOURNAL_LABEL" $dbpath.$name.db-journal - fi -} - -for name in wrt -do - create_db $name $DB_PATH -done - -for name in wrt_custom_handler wrt_i18n -do - create_db $name $DB_USER_PATH -done diff --git a/etc_mobile/wrt_commons_reset_db.sh b/etc_mobile/wrt_commons_reset_db.sh deleted file mode 100755 index 7ca543d..0000000 --- a/etc_mobile/wrt_commons_reset_db.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -rm -rf /opt/share/widget/system/* -uninstall_widgets=1 -if [ "$1" == "--old" ] -then - echo "Uninstalling turned off" - uninstall_widgets=0 -fi -#Removing of widget desktop icons -WIDGET_EXEC_PATH=/opt/usr/apps/ -WIDGET_PRELOAD_EXEC_PATH=/usr/apps/ -WIDGET_DESKTOP_PATH=/opt/share/applications/ -SMACK_RULES_PATH=/etc/smack/accesses.d/ -WRT_DB=/opt/dbspace/.wrt.db -PKGMGR_DB=/opt/dbspace/.pkgmgr_parser.db -PLUGINS_INSTALLATION_REQUIRED_PATH=/opt/share/widget/ -PLUGINS_INSTALLATION_REQUIRED=plugin-installation-required - -if [ -f ${WRT_DB} ] -then - PKG_NAME_SET=$(sqlite3 $WRT_DB 'select tizen_appid from WidgetInfo;') - for appid in $PKG_NAME_SET - do - if [ $uninstall_widgets -eq 1 ] - then - wrt-installer -un $appid 2&>1 >/dev/null - fi - pkgId=`echo "$appid" | cut -f1 -d"."` - sqlite3 $PKGMGR_DB "delete from package_info where package=\"$pkgId\"" - sqlite3 $PKGMGR_DB "delete from package_app_info where app_id=\"$appid\"" - rm -rf ${WIDGET_EXEC_PATH}${pkgId} - rm -rf ${WIDGET_PRELOAD_EXEC_PATH}${pkgId} - widget_desktop_file="${WIDGET_DESKTOP_PATH}${appid}.desktop"; - if [ -f ${widget_desktop_file} ]; then - rm -f $widget_desktop_file; - fi - widget_smack_rule="${SMACK_RULES_PATH}${pkgId}" - if [ -f ${widget_smack_rule} ]; then - rm -f $widget_smack_rule; - fi - done -else - echo "${WRT_DB} doesn't exist" -fi - -wrt_commons_create_clean_db.sh -if [ -e ${PLUGINS_INSTALLATION_REQUIRED_PATH} ] && [ -d ${PLUGINS_INSTALLATION_REQUIRED_PATH} ] -then - touch ${PLUGINS_INSTALLATION_REQUIRED_PATH}${PLUGINS_INSTALLATION_REQUIRED} -fi diff --git a/examples/binary_queue/binary_queue.cpp b/examples/binary_queue/binary_queue.cpp index 063b6af..0452e76 100644 --- a/examples/binary_queue/binary_queue.cpp +++ b/examples/binary_queue/binary_queue.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include int main(int argc, char *argv[]) diff --git a/examples/dbus/client-example/CMakeLists.txt b/examples/dbus/client-example/CMakeLists.txt index 1f9241f..48add08 100644 --- a/examples/dbus/client-example/CMakeLists.txt +++ b/examples/dbus/client-example/CMakeLists.txt @@ -1,24 +1,24 @@ -cmake_minimum_required(VERSION 2.6) -project(client-example) +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(client-example) -include(FindPkgConfig) +INCLUDE(FindPkgConfig) -pkg_check_modules(DEPS +PKG_CHECK_MODULES(DEPS dbus-1 dpl-efl dpl-dbus-efl REQUIRED) -set(TARGET_NAME "client-example") +SET(TARGET_NAME "client-example") -set(SRCS +SET(SRCS client-example.cpp) -include_directories(${DEPS_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${DEPS_INCLUDE_DIRS}) -add_definitions("-std=c++0x") -add_definitions("-DDPL_LOGS_ENABLED") +ADD_DEFINITIONS("-std=c++0x") +ADD_DEFINITIONS("-DDPL_LOGS_ENABLED") -add_executable(${TARGET_NAME} ${SRCS}) -target_link_libraries(${TARGET_NAME} ${DEPS_LIBRARIES}) +ADD_EXECUTABLE(${TARGET_NAME} ${SRCS}) +TARGET_LINK_LIBRARIES(${TARGET_NAME} ${DEPS_LIBRARIES}) diff --git a/examples/dbus/server-example/CMakeLists.txt b/examples/dbus/server-example/CMakeLists.txt index 34266e3..4562355 100644 --- a/examples/dbus/server-example/CMakeLists.txt +++ b/examples/dbus/server-example/CMakeLists.txt @@ -1,26 +1,26 @@ -cmake_minimum_required(VERSION 2.6) -project(server-example) +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(server-example) -include(FindPkgConfig) +INCLUDE(FindPkgConfig) -pkg_check_modules(DEPS +PKG_CHECK_MODULES(DEPS glib-2.0 gio-2.0 dpl-efl dpl-dbus-efl REQUIRED) -set(TARGET_NAME "server-example") +SET(TARGET_NAME "server-example") -set(SRCS +SET(SRCS server-example.cpp) -include_directories(${DEPS_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${DEPS_INCLUDE_DIRS}) -add_definitions("-std=c++0x") -add_definitions("-pedantic") -add_definitions("-Wall") -add_definitions("-DDPL_LOGS_ENABLED") +ADD_DEFINITIONS("-std=c++0x") +ADD_DEFINITIONS("-pedantic") +ADD_DEFINITIONS("-Wall") +ADD_DEFINITIONS("-DDPL_LOGS_ENABLED") -add_executable(${TARGET_NAME} ${SRCS}) -target_link_libraries(${TARGET_NAME} ${DEPS_LIBRARIES}) \ No newline at end of file +ADD_EXECUTABLE(${TARGET_NAME} ${SRCS}) +TARGET_LINK_LIBRARIES(${TARGET_NAME} ${DEPS_LIBRARIES}) \ No newline at end of file diff --git a/examples/dbus/server-example/server-example.cpp b/examples/dbus/server-example/server-example.cpp index 84e665d..b6aa0aa 100644 --- a/examples/dbus/server-example/server-example.cpp +++ b/examples/dbus/server-example/server-example.cpp @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include @@ -52,14 +52,14 @@ public: GVariant *parameters, GDBusMethodInvocation *invocation) { - LogDebug("On method call: " << methodName); + WrtLogD("On method call: %s", methodName); if (g_strcmp0(methodName, "echo") == 0) { const gchar* arg = NULL; g_variant_get(parameters, "(&s)", &arg); - LogDebug("Client said: " << arg); + WrtLogD("Client said: %s", arg); gchar* response = g_strdup_printf(arg); g_dbus_method_invocation_return_value(invocation, diff --git a/examples/fake_rpc/fake_rpc.cpp b/examples/fake_rpc/fake_rpc.cpp index bab1069..62d16c9 100644 --- a/examples/fake_rpc/fake_rpc.cpp +++ b/examples/fake_rpc/fake_rpc.cpp @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include // FLOW: @@ -67,27 +67,27 @@ private: virtual void OnEventReceived(const AsyncCallEvent &event) { - LogDebug("CLIENT: AsyncCallEvent received"); + WrtLogD("CLIENT: AsyncCallEvent received"); event.GetArg0().ConsumeArg(m_receivedData); - LogDebug("CLIENT: Result from server: " << m_receivedData); + WrtLogD("CLIENT: Result from server: %i", m_receivedData); if (m_receivedData != m_sentData) - LogError("Wrong data Received!"); + WrtLogE("Wrong data Received!"); } virtual void OnEventReceived(const ConnectionEstablishedEvent &event) { if (dynamic_cast(event.GetArg1())){ ++m_connections; - LogDebug("CLIENT: Acquiring new fake connection"); + WrtLogD("CLIENT: Acquiring new fake connection"); m_rpcFakeConnection.reset(event.GetArg1()); //this is not used on this side // m_rpcFakeConnection->DPL::EventSupport::AddListener(this); } else{ ++m_connections; - LogDebug("CLIENT: Acquiring new unix connection"); + WrtLogD("CLIENT: Acquiring new unix connection"); m_rpcUnixConnection.reset(event.GetArg1()); m_rpcUnixConnection->DPL::EventSupport::AddListener(this); } @@ -96,7 +96,7 @@ private: // Emit RPC function call DPL::RPCFunction proc; proc.AppendArg(m_sentData); - LogDebug("CLIENT: Calling RPC function"); + WrtLogD("CLIENT: Calling RPC function"); m_rpcFakeConnection->AsyncCall(proc); } } @@ -120,41 +120,41 @@ public: { m_connections = 0; // Attach RPC listeners - LogDebug("CLIENT: Attaching connection established event"); + WrtLogD("CLIENT: Attaching connection established event"); m_rpcUnixClient.DPL::EventSupport::AddListener(this); m_rpcFakeClient.DPL::EventSupport::AddListener(this); // Open connection to server - LogDebug("CLIENT: Opening connection to RPC"); + WrtLogD("CLIENT: Opening connection to RPC"); m_rpcUnixClient.Open(UNIX_RPC_NAME); m_rpcFakeClient.Open(FAKE_RPC_NAME); // Start message loop - LogDebug("CLIENT: Starting thread event loop"); + WrtLogD("CLIENT: Starting thread event loop"); int ret = Exec(); if (m_rpcUnixConnection.get()){ - LogDebug("CLIENT: Removing Unix connection"); + WrtLogD("CLIENT: Removing Unix connection"); m_rpcUnixConnection->DPL::EventSupport::RemoveListener(this); m_rpcUnixConnection.reset(); } - LogDebug("CLIENT: Closing"); + WrtLogD("CLIENT: Closing"); if (m_rpcFakeConnection.get()){ - LogDebug("CLIENT: Removing Fake connection"); + WrtLogD("CLIENT: Removing Fake connection"); //this is not used on this side // m_rpcFakeConnection->DPL::EventSupport::RemoveListener(this); m_rpcFakeConnection.reset(); } // Detach RPC client listener - LogDebug("CLIENT: Detaching connection established event"); + WrtLogD("CLIENT: Detaching connection established event"); m_rpcUnixClient.DPL::EventSupport::RemoveListener(this); m_rpcFakeClient.DPL::EventSupport::RemoveListener(this); // Close RPC - LogDebug("CLIENT: Closing RPC client"); + WrtLogD("CLIENT: Closing RPC client"); m_rpcUnixClient.CloseAll(); m_rpcFakeClient.Close();//not needed @@ -185,7 +185,7 @@ private: // Quit application event occurred virtual void OnEventReceived(const QuitEvent &/*event*/){ // Close RPC now - LogDebug("SERVER: Closing RPC connection..."); + WrtLogD("SERVER: Closing RPC connection..."); // Detach RPC connection listeners if (m_rpcUnixConnection.get()) { @@ -199,13 +199,13 @@ private: m_rpcFakeConnection.reset(); } - LogDebug("SERVER: Closing Server"); + WrtLogD("SERVER: Closing Server"); m_rpcUnixServer.CloseAll(); m_rpcFakeServer.CloseAll();//not needed m_rpcUnixServer.DPL::EventSupport::RemoveListener(this); m_rpcFakeServer.DPL::EventSupport::RemoveListener(this); - LogDebug("SERVER: Server closed"); + WrtLogD("SERVER: Server closed"); Quit(); } @@ -216,17 +216,17 @@ private: virtual void OnEventReceived(const AsyncCallEvent &event) { - LogDebug("SERVER: AsyncCallEvent received"); + WrtLogD("SERVER: AsyncCallEvent received"); int value; event.GetArg0().ConsumeArg(value); - LogDebug("SERVER: Result from client: " << value); + WrtLogD("SERVER: Result from client: %i", value); // send back data to client (via fake) // Emit RPC function call DPL::RPCFunction proc; proc.AppendArg(value); - LogDebug("SERVER: Calling RPC function"); + WrtLogD("SERVER: Calling RPC function"); m_rpcUnixConnection->AsyncCall(proc); } @@ -234,12 +234,12 @@ private: { // Save connection pointer if (dynamic_cast(event.GetArg1())){ - LogDebug("SERVER: Acquiring Fake RPC connection"); + WrtLogD("SERVER: Acquiring Fake RPC connection"); m_rpcFakeConnection.reset(event.GetArg1()); m_rpcFakeConnection->DPL::EventSupport::AddListener(this); } else{ - LogDebug("SERVER: Acquiring Unix RPC connection"); + WrtLogD("SERVER: Acquiring Unix RPC connection"); m_rpcUnixConnection.reset(event.GetArg1()); //this is not used on this side // m_rpcUnixConnection->DPL::EventSupport::AddListener(this); @@ -251,25 +251,25 @@ public: : Application(argc, argv, "rpc") { // Attach RPC server listeners - LogDebug("SERVER: Attaching connection established event"); + WrtLogD("SERVER: Attaching connection established event"); m_rpcUnixServer.DPL::EventSupport::AddListener(this); m_rpcFakeServer.DPL::EventSupport::AddListener(this); // Self touch - LogDebug("SERVER: Touching controller"); + WrtLogD("SERVER: Touching controller"); Touch(); // Open RPC server - LogDebug("SERVER: Opening server RPC"); + WrtLogD("SERVER: Opening server RPC"); m_rpcUnixServer.Open(UNIX_RPC_NAME); m_rpcFakeServer.Open(FAKE_RPC_NAME); // Run RPC client in thread - LogDebug("SERVER: Starting RPC client thread"); + WrtLogD("SERVER: Starting RPC client thread"); m_thread.Run(); // Quit application automatically in few seconds - LogDebug("SERVER: Sending control timed events"); + WrtLogD("SERVER: Sending control timed events"); DPL::ControllerEventHandler::PostTimedEvent(CloseThreadEvent(), 2); DPL::ControllerEventHandler::PostTimedEvent(QuitEvent(), 3); } @@ -277,13 +277,13 @@ public: virtual ~MyApplication() { // Quit thread - LogDebug("SERVER: Quitting thread"); + WrtLogD("SERVER: Quitting thread"); } }; int main(int argc, char *argv[]) { - LogDebug("Starting"); + WrtLogD("Starting"); MyApplication app(argc, argv); return app.Exec(); } diff --git a/examples/metronome/metronome_client.cpp b/examples/metronome/metronome_client.cpp index 1fca0df..ac8ae93 100644 --- a/examples/metronome/metronome_client.cpp +++ b/examples/metronome/metronome_client.cpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include class MetronomeClientApplication : public DPL::Application, @@ -41,14 +41,14 @@ private: (void)event; // Heart beat - LogDebug("* Got metronome signal *"); + WrtLogD("* Got metronome signal *"); } virtual void OnEventReceived(const DPL::AbstractRPCConnectionEvents::ConnectionClosedEvent &event) { (void)event; - LogDebug("Connection closed"); + WrtLogD("Connection closed"); // Must quit Quit(); @@ -58,7 +58,7 @@ private: { (void)event; - LogDebug("Connection broken"); + WrtLogD("Connection broken"); // Must quit Quit(); @@ -67,7 +67,7 @@ private: virtual void OnEventReceived(const DPL::AbstractRPCConnectorEvents::ConnectionEstablishedEvent &event) { // Save connection pointer - LogDebug("Connected to metronome server"); + WrtLogD("Connected to metronome server"); m_rpcConnection.reset(event.GetArg1()); // Attach event listeners @@ -87,7 +87,7 @@ public: m_rpcClient.Open("127.0.0.1", 12345); // Started - LogDebug("Metronome client started"); + WrtLogD("Metronome client started"); } virtual ~MetronomeClientApplication() diff --git a/examples/metronome/metronome_server.cpp b/examples/metronome/metronome_server.cpp index cc0ad0a..f7c8fb6 100644 --- a/examples/metronome/metronome_server.cpp +++ b/examples/metronome/metronome_server.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include @@ -103,7 +103,7 @@ private: { (void)event; - LogDebug("Connection closed"); + WrtLogD("Connection closed"); // Remove connection from list RemoveConnection(static_cast(event.GetSender())); @@ -113,7 +113,7 @@ private: { (void)event; - LogDebug("Connection broken"); + WrtLogD("Connection broken"); // Remove connection from list RemoveConnection(static_cast(event.GetSender())); @@ -122,7 +122,7 @@ private: virtual void OnEventReceived(const DPL::AbstractRPCConnectorEvents::ConnectionEstablishedEvent &event) { // Save connection pointer - LogDebug("New connection"); + WrtLogD("New connection"); // Add nre connection to list AddConnection(event.GetArg1()); @@ -145,7 +145,7 @@ public: DPL::ControllerEventHandler::PostTimedEvent(SignalEvent(), HEART_BEAT_INTERVAL); // Started - LogDebug("Metronome server started"); + WrtLogD("Metronome server started"); } virtual ~MetronomeServerApplication() diff --git a/examples/rpc/rpc.cpp b/examples/rpc/rpc.cpp index 6991edb..a70e49f 100644 --- a/examples/rpc/rpc.cpp +++ b/examples/rpc/rpc.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include static const char *RPC_NAME = "/tmp/unix_socket_rpc"; @@ -47,43 +47,43 @@ private: { (void)event; - LogDebug("CLIENT: AsyncCallEvent received"); + WrtLogD("CLIENT: AsyncCallEvent received"); int value; event.GetArg0().ConsumeArg(value); - LogDebug("CLIENT: Result from server: " << value); + WrtLogD("CLIENT: Result from server: %i", value); } virtual void OnEventReceived(const DPL::AbstractRPCConnectionEvents::ConnectionClosedEvent &event) { (void)event; - LogDebug("CLIENT: ConnectionClosedEvent received"); + WrtLogD("CLIENT: ConnectionClosedEvent received"); } virtual void OnEventReceived(const DPL::AbstractRPCConnectionEvents::ConnectionBrokenEvent &event) { (void)event; - LogDebug("CLIENT: ConnectionBrokenEvent received"); + WrtLogD("CLIENT: ConnectionBrokenEvent received"); } virtual void OnEventReceived(const DPL::AbstractRPCConnectorEvents::ConnectionEstablishedEvent &event) { // Save connection pointer - LogDebug("CLIENT: Acquiring new connection"); + WrtLogD("CLIENT: Acquiring new connection"); m_rpcConnection.reset(event.GetArg1()); // Attach listener to new connection - LogDebug("CLIENT: Attaching connection event listeners"); + WrtLogD("CLIENT: Attaching connection event listeners"); m_rpcConnection->DPL::EventSupport::AddListener(this); m_rpcConnection->DPL::EventSupport::AddListener(this); m_rpcConnection->DPL::EventSupport::AddListener(this); - LogDebug("CLIENT: Connection established"); + WrtLogD("CLIENT: Connection established"); // Emit RPC function call DPL::RPCFunction proc; proc.AppendArg((int)1111); - LogDebug("CLIENT: Calling RPC function"); + WrtLogD("CLIENT: Calling RPC function"); m_rpcConnection->AsyncCall(proc); } @@ -97,35 +97,35 @@ public: virtual int ThreadEntry() { // Attach RPC listeners - LogDebug("CLIENT: Attaching connection established event"); + WrtLogD("CLIENT: Attaching connection established event"); m_rpcClient.DPL::EventSupport::AddListener(this); // Open connection to server - LogDebug("CLIENT: Opening connection to RPC"); + WrtLogD("CLIENT: Opening connection to RPC"); m_rpcClient.Open(RPC_NAME); // Start message loop - LogDebug("CLIENT: Starting thread event loop"); + WrtLogD("CLIENT: Starting thread event loop"); int ret = Exec(); // Detach RPC listeners if (m_rpcConnection.get()) { - LogDebug("CLIENT: Detaching RPC connection events"); + WrtLogD("CLIENT: Detaching RPC connection events"); m_rpcConnection->DPL::EventSupport::RemoveListener(this); m_rpcConnection->DPL::EventSupport::RemoveListener(this); m_rpcConnection->DPL::EventSupport::RemoveListener(this); - LogDebug("CLIENT: Resetting connection"); + WrtLogD("CLIENT: Resetting connection"); m_rpcConnection.reset(); } // Detach RPC client listener - LogDebug("CLIENT: Detaching connection established event"); + WrtLogD("CLIENT: Detaching connection established event"); m_rpcClient.DPL::EventSupport::RemoveListener(this); // Close RPC - LogDebug("CLIENT: Closing RPC client"); + WrtLogD("CLIENT: Closing RPC client"); m_rpcClient.CloseAll(); // Done @@ -168,61 +168,61 @@ private: { (void)event; - LogDebug("SERVER: AsyncCallEvent received"); + WrtLogD("SERVER: AsyncCallEvent received"); int value; event.GetArg0().ConsumeArg(value); - LogDebug("SERVER: Result from client: " << value); + WrtLogD("SERVER: Result from client: %i", value); } virtual void OnEventReceived(const DPL::AbstractRPCConnectionEvents::ConnectionClosedEvent &event) { (void)event; - LogDebug("SERVER: ConnectionClosedEvent received"); + WrtLogD("SERVER: ConnectionClosedEvent received"); // Close RPC now - LogDebug("SERVER: Closing RPC connection on event..."); + WrtLogD("SERVER: Closing RPC connection on event..."); // Detach RPC connection listeners if (m_rpcConnection.get()) { - LogDebug("SERVER: Detaching connection events"); + WrtLogD("SERVER: Detaching connection events"); m_rpcConnection->DPL::EventSupport::RemoveListener(this); m_rpcConnection->DPL::EventSupport::RemoveListener(this); m_rpcConnection->DPL::EventSupport::RemoveListener(this); } - LogDebug("SERVER: RPC connection closed"); + WrtLogD("SERVER: RPC connection closed"); - LogDebug("SERVER: Closing RPC on event..."); + WrtLogD("SERVER: Closing RPC on event..."); m_rpcServer.CloseAll(); - LogDebug("SERVER: RPC closed"); + WrtLogD("SERVER: RPC closed"); } virtual void OnEventReceived(const DPL::AbstractRPCConnectionEvents::ConnectionBrokenEvent &event) { (void)event; - LogDebug("SERVER: ConnectionBrokenEvent received"); + WrtLogD("SERVER: ConnectionBrokenEvent received"); } virtual void OnEventReceived(const DPL::AbstractRPCConnectorEvents::ConnectionEstablishedEvent &event) { // Save connection pointer - LogDebug("SERVER: Acquiring RPC connection"); + WrtLogD("SERVER: Acquiring RPC connection"); m_rpcConnection.reset(event.GetArg1()); // Attach event listeners - LogDebug("SERVER: Attaching connection listeners"); + WrtLogD("SERVER: Attaching connection listeners"); m_rpcConnection->DPL::EventSupport::AddListener(this); m_rpcConnection->DPL::EventSupport::AddListener(this); m_rpcConnection->DPL::EventSupport::AddListener(this); - LogDebug("SERVER: Connection established"); + WrtLogD("SERVER: Connection established"); // Emit RPC function call DPL::RPCFunction proc; proc.AppendArg((int)2222); - LogDebug("SERVER: Calling RPC function"); + WrtLogD("SERVER: Calling RPC function"); m_rpcConnection->AsyncCall(proc); } @@ -231,23 +231,23 @@ public: : Application(argc, argv, "rpc") { // Attach RPC server listeners - LogDebug("SERVER: Attaching connection established event"); + WrtLogD("SERVER: Attaching connection established event"); m_rpcServer.DPL::EventSupport::AddListener(this); // Self touch - LogDebug("SERVER: Touching controller"); + WrtLogD("SERVER: Touching controller"); Touch(); // Open RPC server - LogDebug("SERVER: Opening server RPC"); + WrtLogD("SERVER: Opening server RPC"); m_rpcServer.Open(RPC_NAME); // Run RPC client in thread - LogDebug("SERVER: Starting RPC client thread"); + WrtLogD("SERVER: Starting RPC client thread"); m_thread.Run(); // Quit application automatically in few seconds - LogDebug("SERVER: Sending control timed events"); + WrtLogD("SERVER: Sending control timed events"); DPL::ControllerEventHandler::PostTimedEvent(CloseThreadEvent(), 2); DPL::ControllerEventHandler::PostTimedEvent(QuitEvent(), 3); } @@ -255,11 +255,11 @@ public: virtual ~MyApplication() { // Quit thread - LogDebug("SERVER: Quitting thread"); + WrtLogD("SERVER: Quitting thread"); m_thread.Quit(); // Close RPC server - LogDebug("SERVER: Closing RPC server"); + WrtLogD("SERVER: Closing RPC server"); m_rpcServer.CloseAll(); // Detach RPC server listener @@ -269,7 +269,7 @@ public: int main(int argc, char *argv[]) { - LogDebug("Starting"); + WrtLogD("Starting"); MyApplication app(argc, argv); return app.Exec(); } diff --git a/examples/simple/simple.cpp b/examples/simple/simple.cpp index 2ed9fab..55ac1b3 100644 --- a/examples/simple/simple.cpp +++ b/examples/simple/simple.cpp @@ -20,13 +20,13 @@ * @brief This file is the implementation file of simple example */ #include -#include +#include int main(int argc, char *argv[]) { (void)argc; (void)argv; - LogDebug("Hello world!"); + WrtLogD("Hello world!"); return 0; } diff --git a/examples/socket/socket.cpp b/examples/socket/socket.cpp index fc42632..5a2f76a 100644 --- a/examples/socket/socket.cpp +++ b/examples/socket/socket.cpp @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include @@ -46,12 +46,12 @@ private: virtual void OnEventReceived(const DPL::AbstractSocketEvents::AcceptEvent &event) { (void)event; - LogDebug("Accept event occurred"); + WrtLogD("Accept event occurred"); DPL::UnixSocket *client = static_cast(m_socket.Accept()); - LogDebug("Accepted client remote address: " << client->GetRemoteAddress().ToString()); - LogDebug("Accepted client local address: " << client->GetLocalAddress().ToString()); + WrtLogD("Accepted client remote address: %s", client->GetRemoteAddress().ToString().c_str()); + WrtLogD("Accepted client local address: %s", client->GetLocalAddress().ToString().c_str()); delete client; } @@ -69,14 +69,14 @@ public: m_socket.DPL::EventSupport::AddListener(this); // Create server - LogDebug("Starting server..."); + WrtLogD("Starting server..."); m_socket.Bind(DPL::Address(SOCKET_NAME)); m_socket.Listen(5); - LogDebug("Server started"); + WrtLogD("Server started"); - LogDebug("Server local address: " << m_socket.GetLocalAddress().ToString()); + WrtLogD("Server local address: %s", m_socket.GetLocalAddress().ToString().c_str()); int result = Exec(); @@ -112,7 +112,7 @@ private: virtual void OnEventReceived(const DPL::AbstractSocketEvents::ConnectedEvent &event) { (void)event; - LogDebug("Connected event occurred"); + WrtLogD("Connected event occurred"); } public: @@ -126,12 +126,12 @@ public: Touch(); // Start threaded server - LogDebug("Running threaded server"); + WrtLogD("Running threaded server"); // Run server in thread thread.Run(); - LogDebug("Waiting for server to start..."); + WrtLogD("Waiting for server to start..."); sleep(1); // Connect to server diff --git a/examples/tcpsock/tcpsock.cpp b/examples/tcpsock/tcpsock.cpp index 57141ca..6af7ab1 100644 --- a/examples/tcpsock/tcpsock.cpp +++ b/examples/tcpsock/tcpsock.cpp @@ -20,13 +20,13 @@ * @brief This file is the implementation file of tcpsock example */ #include +#include #include #include #include #include #include -#include -#include +#include #include #include @@ -41,7 +41,7 @@ private: virtual void OnEventReceived(const DPL::AbstractSocketEvents::ConnectedEvent &event) { (void)event; - LogDebug("Connected!"); + WrtLogD("Connected!"); // Send request DPL::BinaryQueue data; @@ -53,7 +53,7 @@ private: virtual void OnEventReceived(const DPL::AbstractSocketEvents::ReadEvent &event) { (void)event; - LogDebug("Read!"); + WrtLogD("Read!"); DPL::BinaryQueueAutoPtr data = m_socket.Read(100); // Bad: DLOG cannot log more than about 450 bytes... @@ -61,7 +61,7 @@ private: if (data->Empty()) { - LogDebug("Connection closed!"); + WrtLogD("Connection closed!"); m_socket.Close(); // Done @@ -70,11 +70,11 @@ private: } // Show data - DPL::ScopedArray text(new char[data->Size()]); - data->Flatten(text.Get(), data->Size()); + std::unique_ptr text(new char[data->Size()]); + data->Flatten(text.get(), data->Size()); - LogPedantic("READ: \n--------------------------------------------------------\n" - << std::string(text.Get(), text.Get() + data->Size()) << + WrtLogD("READ: \n--------------------------------------------------------\n" + << std::string(text.Get(), text.get() + data->Size()) << "\n--------------------------------------------------------"); } @@ -82,7 +82,7 @@ public: MyApplication(int argc, char **argv) : Application(argc, argv, "tcpsock") { - LogDebug("CTOR!"); + WrtLogD("CTOR!"); // Add listeners m_socket.DPL::EventSupport::AddListener(this); @@ -90,13 +90,13 @@ public: // Connect m_socket.Open(); - LogDebug("Connecting..."); + WrtLogD("Connecting..."); m_socket.Connect(DPL::Address("en.wikipedia.org", 80)); } virtual ~MyApplication() { - LogDebug("DTOR!"); + WrtLogD("DTOR!"); // Remove listeners m_socket.DPL::EventSupport::RemoveListener(this); diff --git a/examples/timed_event/timed_event.cpp b/examples/timed_event/timed_event.cpp index f3d8e80..3148088 100644 --- a/examples/timed_event/timed_event.cpp +++ b/examples/timed_event/timed_event.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include DECLARE_GENERIC_EVENT_0(FirstEvent) @@ -39,13 +39,13 @@ protected: virtual void OnEventReceived(const FirstEvent &event) { (void)event; - LogDebug("First event occurred"); + WrtLogD("First event occurred"); } virtual void OnEventReceived(const SecondEvent &event) { (void)event; - LogDebug("Second event occurred"); + WrtLogD("Second event occurred"); } }; diff --git a/modules_mobile/CMakeLists.txt b/modules/CMakeLists.txt similarity index 68% rename from modules_mobile/CMakeLists.txt rename to modules/CMakeLists.txt index 07c4c05..e03cf1b 100644 --- a/modules_mobile/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -19,20 +19,23 @@ # @brief # -include(core/config.cmake) -include(dbus/config.cmake) -include(db/config.cmake) -include(event/config.cmake) -include(socket/config.cmake) -include(rpc/config.cmake) -include(test/config.cmake) -include(log/config.cmake) +# platform.cmake must run earlier than other to generate header file +INCLUDE(core/platform.cmake) +INCLUDE(core/config.cmake) +INCLUDE(dbus/config.cmake) +INCLUDE(db/config.cmake) +INCLUDE(event/config.cmake) +INCLUDE(socket/config.cmake) +INCLUDE(rpc/config.cmake) +INCLUDE(test/config.cmake) +INCLUDE(log/config.cmake) ADD_SUBDIRECTORY(widget_dao) ADD_SUBDIRECTORY(widget_interface_dao) ADD_SUBDIRECTORY(security_origin_dao) ADD_SUBDIRECTORY(custom_handler_dao) ADD_SUBDIRECTORY(certificate_dao) ADD_SUBDIRECTORY(i18n) -include(utils/config.cmake) -include(localization/config.cmake) -include(support/config.cmake) +INCLUDE(utils/config.cmake) +INCLUDE(localization/config.cmake) +INCLUDE(support/config.cmake) +INCLUDE(ttrace/config.cmake) diff --git a/modules_mobile/certificate_dao/CMakeLists.txt b/modules/certificate_dao/CMakeLists.txt similarity index 99% rename from modules_mobile/certificate_dao/CMakeLists.txt rename to modules/certificate_dao/CMakeLists.txt index f55ee45..32039fd 100755 --- a/modules_mobile/certificate_dao/CMakeLists.txt +++ b/modules/certificate_dao/CMakeLists.txt @@ -21,6 +21,8 @@ INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(CERTIFICATE_DAO_DEPS glib-2.0 + dlog + db-util REQUIRED) SET(CERTIFICATE_DAO_INCLUDE_DIRS diff --git a/modules_wearable/certificate_dao/dao/certificate_dao.cpp b/modules/certificate_dao/dao/certificate_dao.cpp similarity index 54% rename from modules_wearable/certificate_dao/dao/certificate_dao.cpp rename to modules/certificate_dao/dao/certificate_dao.cpp index 0d2138f..73b5bec 100644 --- a/modules_wearable/certificate_dao/dao/certificate_dao.cpp +++ b/modules/certificate_dao/dao/certificate_dao.cpp @@ -16,6 +16,7 @@ /* * @file certificate_dao.cpp * @author Leerang Song (leerang.song@samsung.com) + * @author Wojciech Kosowicz (w.kosowicz@samsung.com * @version 1.0 * @brief This file contains the definition of certificate dao class. */ @@ -31,6 +32,8 @@ #include #include #include +#include +#include #include /* GCC versions 4.7 had changes to the C++ standard. It * no longer includes to remove namespace pollution. @@ -45,7 +48,7 @@ namespace CertificateDB { #define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ + WrtLogE(message); \ ReThrowMsg(CertificateDAO::Exception::DatabaseError, \ message); \ } @@ -59,6 +62,23 @@ const char* const CERTIFICATE_DB_NAME = ".certificate.db"; const char* const CERTIFICATE_DB_SQL_PATH = "/usr/share/wrt-engine/certificate_db.sql"; const char* const CERTIFICATE_DATABASE_JOURNAL_FILENAME = "-journal"; +const char* const SELECT_CERTIFICATE_DATA_LIST = + "select certificate from CertificateInfo"; +const char* const SELECT_CERTIFICATE_GET_RESULT = + "select result from CertificateInfo" + " where certificate=?"; +const char* const INSERT_CERTIFICATE = + "insert into CertificateInfo (certificate, result)" + " values (?, ?)"; +const char* const UPDATE_CERTIFICATE = + "update CertificateInfo set result=?" + " where certificate=?"; +const char* const DELETE_CERTIFICATE = + "delete from CertificateInfo" + " where certificate=?"; +const char* const DELETE_CERTIFICATE_BY_RESULT = + "delete from CertificateInfo" + " where result=?"; const int WEB_APPLICATION_UID = 5000; const int WEB_APPLICATION_GUID = 5000; @@ -85,7 +105,7 @@ void checkDatabase(std::string databasePath) struct stat buffer; if (stat(databasePath.c_str(), &buffer) != 0) { //Create fresh database - LogDebug("Creating database " << databasePath); + WrtLogD("Creating database %s", databasePath.c_str()); std::fstream file; file.open(CERTIFICATE_DB_SQL_PATH, std::ios_base::in); @@ -126,34 +146,46 @@ void checkDatabase(std::string databasePath) } } -CertificateDAO::CertificateDAO(const WrtDB::TizenPkgId &pkgName) : - m_certificateDBPath(createDatabasePath(pkgName)), - m_certificateDBInterface(m_certificateDBPath, CERTIFICATE_DB_TYPE) +CertificateDAO::CertificateDAO(const WrtDB::TizenPkgId &pkgName) { - checkDatabase(m_certificateDBPath); - m_certificateDBInterface.AttachToThread(CERTIFICATE_DB_OPTION); + std::string dbPath = createDatabasePath(pkgName); + checkDatabase(dbPath); + if (DB_UTIL_OK != db_util_open_with_options( + dbPath.c_str(), + &m_databaseInterface, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_NOMUTEX, + NULL)) { + WrtLogE("Cannot open database. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(CertificateDAO::Exception::DatabaseError, "Cannot open database"); + } } CertificateDAO::~CertificateDAO() { - m_certificateDBInterface.DetachFromThread(); } CertificateDataList CertificateDAO::getCertificateDataList(void) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - CertificateDataList list; - CERTIFICATE_DB_SELECT(select, - CertificateInfo, - &m_certificateDBInterface); - typedef std::list RowList; - RowList rowList = select->GetRowList(); + sqlite3_stmt* stmt = sqlPrepare(SELECT_CERTIFICATE_DATA_LIST); + int rw = sqlite3_step(stmt); - FOREACH(it, rowList) { + CertificateDataList list; + while (SQLITE_ROW == rw) { + //Read from row list.push_back( CertificateDataPtr( - new CertificateData(it->Get_certificate()))); + new CertificateData(sqlite3_column_string(stmt, 0)))); + //Next row + rw = sqlite3_step(stmt); + } + releaseStatement(stmt); + if (SQLITE_DONE != rw) { + //Error occurede + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(CertificateDAO::Exception::DatabaseError, "getSecurityOriginDataList fail"); } return list; } @@ -163,23 +195,24 @@ CertificateDataList CertificateDAO::getCertificateDataList(void) Result CertificateDAO::getResult( const CertificateData &certificateData) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - CERTIFICATE_DB_SELECT(select, - CertificateInfo, - &m_certificateDBInterface); - select->Where( - Equals(certificateData.certificate)); - CertificateInfo::Select::RowList rows = select->GetRowList(); - - if (rows.empty()) { - return RESULT_UNKNOWN; + Result retval = RESULT_UNKNOWN; + sqlite3_stmt* stmt = sqlPrepare(SELECT_CERTIFICATE_GET_RESULT); + sqlBind(stmt, 1, certificateData.certificate); + int rw = sqlite3_step(stmt); + if (SQLITE_ROW == rw) { + retval = static_cast(sqlite3_column_int(stmt, 0)); + } + releaseStatement(stmt); + if (SQLITE_DONE != rw && SQLITE_ROW != rw) { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(CertificateDAO::Exception::DatabaseError, "getResult fail"); } - CertificateInfo::Row row = rows.front(); - return static_cast(row.Get_result()); + return retval; } - SQL_CONNECTION_EXCEPTION_HANDLER_END( - "Failed to get result for security certiInfo") + SQL_CONNECTION_EXCEPTION_HANDLER_END("getResult error") } void CertificateDAO::setCertificateData(const CertificateData &certificateData, @@ -187,25 +220,30 @@ void CertificateDAO::setCertificateData(const CertificateData &certificateData, { SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - ScopedTransaction transaction(&m_certificateDBInterface); - CertificateInfo::Row row; - row.Set_certificate(certificateData.certificate); - row.Set_result(result); - if (true == hasResult(certificateData)) { - CERTIFICATE_DB_UPDATE(update, - CertificateInfo, - &m_certificateDBInterface); - update->Values(row); - update->Execute(); + std::lock_guard lock(m_dbLock); + sqlite3_stmt* stmt = sqlPrepare(UPDATE_CERTIFICATE); + sqlBind(stmt, 1, static_cast(result)); + sqlBind(stmt, 2, certificateData.certificate); + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(CertificateDAO::Exception::DatabaseError, "updateData fail"); + } } else { - CERTIFICATE_DB_INSERT(insert, - CertificateInfo, - &m_certificateDBInterface); - insert->Values(row); - insert->Execute(); + std::lock_guard lock(m_dbLock); + sqlite3_stmt* stmt = sqlPrepare(INSERT_CERTIFICATE); + sqlBind(stmt, 1, certificateData.certificate); + sqlBind(stmt, 2, static_cast(result)); + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) + { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(CertificateDAO::Exception::DatabaseError, "insertData fail"); + } } - transaction.Commit(); } SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to set security certiInfo data") } @@ -215,34 +253,33 @@ void CertificateDAO::removeCertificateData( { SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - ScopedTransaction transaction(&m_certificateDBInterface); - - if (true == hasResult(certificateData)) { - CERTIFICATE_DB_DELETE(del, - CertificateInfo, - &m_certificateDBInterface) - del->Where( - Equals(certificateData.certificate)); - del->Execute(); - transaction.Commit(); + sqlite3_stmt* stmt = sqlPrepare(DELETE_CERTIFICATE); + sqlBind(stmt, 1, certificateData.certificate); + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(CertificateDAO::Exception::DatabaseError, "failed to delete certificate"); } } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to set certiInfo data") + SQL_CONNECTION_EXCEPTION_HANDLER_END("failed to delete certificate") } void CertificateDAO::removeCertificateData(const Result result) { SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - ScopedTransaction transaction(&m_certificateDBInterface); - CERTIFICATE_DB_DELETE(del, - CertificateInfo, - &m_certificateDBInterface) - del->Where(Equals(result)); - del->Execute(); - transaction.Commit(); + std::lock_guard lock(m_dbLock); + sqlite3_stmt* stmt = sqlPrepare(DELETE_CERTIFICATE_BY_RESULT); + sqlBind(stmt, 1, static_cast(result)); + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(CertificateDAO::Exception::DatabaseError, "failed to delete certificate"); + } } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to remove data by result") + SQL_CONNECTION_EXCEPTION_HANDLER_END("failed to delete certificate") } bool CertificateDAO::hasResult(const CertificateData &certificateData) @@ -251,6 +288,4 @@ bool CertificateDAO::hasResult(const CertificateData &certificateData) return (res != RESULT_UNKNOWN); } -#undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN -#undef SQL_CONNECTION_EXCEPTION_HANDLER_END } // namespace CertificateDB diff --git a/modules_mobile/certificate_dao/dao/certificate_dao_types.cpp b/modules/certificate_dao/dao/certificate_dao_types.cpp similarity index 97% rename from modules_mobile/certificate_dao/dao/certificate_dao_types.cpp rename to modules/certificate_dao/dao/certificate_dao_types.cpp index 35e8a58..ce4c9f6 100755 --- a/modules_mobile/certificate_dao/dao/certificate_dao_types.cpp +++ b/modules/certificate_dao/dao/certificate_dao_types.cpp @@ -23,7 +23,6 @@ */ #include -#include namespace CertificateDB { diff --git a/modules_mobile/certificate_dao/dao/certificate_database.cpp b/modules/certificate_dao/dao/certificate_database.cpp similarity index 94% rename from modules_mobile/certificate_dao/dao/certificate_database.cpp rename to modules/certificate_dao/dao/certificate_database.cpp index 4392e0c..7b1805d 100755 --- a/modules_mobile/certificate_dao/dao/certificate_database.cpp +++ b/modules/certificate_dao/dao/certificate_database.cpp @@ -16,4 +16,4 @@ #include -DPL::Mutex g_certificateDBQueriesMutex; +std::mutex g_certificateDBQueriesMutex; diff --git a/modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h b/modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h old mode 100755 new mode 100644 similarity index 91% rename from modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h rename to modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h index 26e981b..c254a17 --- a/modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h +++ b/modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h @@ -16,6 +16,7 @@ /** * @file certificate_dao.h * @author Leerang Song (leerang.song@samsung.com) + * @author Wojciech Kosowicz (w.kosowicz@samsung.com) * @version 1.0 * @brief This file contains the declaration of certificate dao */ @@ -25,9 +26,10 @@ #include #include #include +#include namespace CertificateDB { -class CertificateDAO +class CertificateDAO : public WrtDB::SQLiteDAOBase { public: class Exception @@ -48,8 +50,8 @@ class CertificateDAO void removeCertificateData(const Result result); private: + std::mutex m_dbLock; std::string m_certificateDBPath; - DPL::DB::ThreadDatabaseSupport m_certificateDBInterface; bool hasResult(const CertificateData &certificateData); }; diff --git a/modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h b/modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h similarity index 100% rename from modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h rename to modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h diff --git a/modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h b/modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h similarity index 86% rename from modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h rename to modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h index f0ee954..1265660 100755 --- a/modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h +++ b/modules/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h @@ -18,20 +18,20 @@ #define _CERTIFICATE_DATABASE_H_ #include -#include - -extern DPL::Mutex g_certificateDBQueriesMutex; - -#define CERTIFICATE_DB_INTERNAL(tlsCommand, InternalType, interface) \ - static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ - { \ - DPL::Mutex::ScopedLock lock(&g_certificateDBQueriesMutex); \ - if (!tlsCommand##Ptr) { \ - static DPL::ThreadLocalVariable tmp; \ - tlsCommand##Ptr = &tmp; \ - } \ - } \ - DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ +#include + +extern std::mutex g_certificateDBQueriesMutex; + +#define CERTIFICATE_DB_INTERNAL(tlsCommand, InternalType, interface) \ + static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ + { \ + std::lock_guard lock(g_certificateDBQueriesMutex); \ + if (!tlsCommand##Ptr) { \ + static DPL::ThreadLocalVariable tmp; \ + tlsCommand##Ptr = &tmp; \ + } \ + } \ + DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ if (tlsCommand.IsNull()) { tlsCommand = InternalType(interface); } #define CERTIFICATE_DB_SELECT(name, type, interface) \ diff --git a/modules_wearable/certificate_dao/orm/certificate_db b/modules/certificate_dao/orm/certificate_db similarity index 100% rename from modules_wearable/certificate_dao/orm/certificate_db rename to modules/certificate_dao/orm/certificate_db diff --git a/modules_wearable/certificate_dao/orm/certificate_db_definitions b/modules/certificate_dao/orm/certificate_db_definitions similarity index 100% rename from modules_wearable/certificate_dao/orm/certificate_db_definitions rename to modules/certificate_dao/orm/certificate_db_definitions diff --git a/modules_wearable/certificate_dao/orm/certificate_db_sql_generator.h b/modules/certificate_dao/orm/certificate_db_sql_generator.h similarity index 100% rename from modules_wearable/certificate_dao/orm/certificate_db_sql_generator.h rename to modules/certificate_dao/orm/certificate_db_sql_generator.h diff --git a/modules_wearable/certificate_dao/orm/orm_generator_certificate.h b/modules/certificate_dao/orm/orm_generator_certificate.h similarity index 100% rename from modules_wearable/certificate_dao/orm/orm_generator_certificate.h rename to modules/certificate_dao/orm/orm_generator_certificate.h diff --git a/modules_wearable/core/DESCRIPTION b/modules/core/DESCRIPTION similarity index 100% rename from modules_wearable/core/DESCRIPTION rename to modules/core/DESCRIPTION diff --git a/modules_wearable/core/config.cmake b/modules/core/config.cmake similarity index 95% rename from modules_wearable/core/config.cmake rename to modules/core/config.cmake index 13f83d1..9e9c1f3 100644 --- a/modules_wearable/core/config.cmake +++ b/modules/core/config.cmake @@ -89,12 +89,12 @@ SET(DPL_CORE_HEADERS ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/char_traits.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/colors.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/copy.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/enable_shared_from_this.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/errno_string.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/exception.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/file_input.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/file_output.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/foreach.h + ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/free_deleter.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/generic_event.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/lexical_cast.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/mutable_task_list.h @@ -104,7 +104,6 @@ SET(DPL_CORE_HEADERS ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/named_output_pipe.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/noncopyable.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/once.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/optional.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/optional_typedefs.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/platform.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/preprocessor.h @@ -112,16 +111,12 @@ SET(DPL_CORE_HEADERS ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/recursive_mutex.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scope_guard.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_resource.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_array.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_close.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_dir.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_fclose.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_free.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_ptr.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_gpointer.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/serialization.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/semaphore.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/shared_ptr.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/single_instance.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/singleton.h ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/singleton_impl.h diff --git a/modules_wearable/core/include/DESCRIPTION b/modules/core/include/DESCRIPTION similarity index 100% rename from modules_wearable/core/include/DESCRIPTION rename to modules/core/include/DESCRIPTION diff --git a/modules_wearable/core/include/dpl/abstract_input.h b/modules/core/include/dpl/abstract_input.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_input.h rename to modules/core/include/dpl/abstract_input.h diff --git a/modules_wearable/core/include/dpl/abstract_input_output.h b/modules/core/include/dpl/abstract_input_output.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_input_output.h rename to modules/core/include/dpl/abstract_input_output.h diff --git a/modules_wearable/core/include/dpl/abstract_output.h b/modules/core/include/dpl/abstract_output.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_output.h rename to modules/core/include/dpl/abstract_output.h diff --git a/modules_wearable/core/include/dpl/abstract_waitable_input.h b/modules/core/include/dpl/abstract_waitable_input.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_waitable_input.h rename to modules/core/include/dpl/abstract_waitable_input.h diff --git a/modules_wearable/core/include/dpl/abstract_waitable_input_adapter.h b/modules/core/include/dpl/abstract_waitable_input_adapter.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_waitable_input_adapter.h rename to modules/core/include/dpl/abstract_waitable_input_adapter.h diff --git a/modules_wearable/core/include/dpl/abstract_waitable_input_output.h b/modules/core/include/dpl/abstract_waitable_input_output.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_waitable_input_output.h rename to modules/core/include/dpl/abstract_waitable_input_output.h diff --git a/modules_wearable/core/include/dpl/abstract_waitable_input_output_adapter.h b/modules/core/include/dpl/abstract_waitable_input_output_adapter.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_waitable_input_output_adapter.h rename to modules/core/include/dpl/abstract_waitable_input_output_adapter.h diff --git a/modules_wearable/core/include/dpl/abstract_waitable_output.h b/modules/core/include/dpl/abstract_waitable_output.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_waitable_output.h rename to modules/core/include/dpl/abstract_waitable_output.h diff --git a/modules_wearable/core/include/dpl/abstract_waitable_output_adapter.h b/modules/core/include/dpl/abstract_waitable_output_adapter.h similarity index 100% rename from modules_wearable/core/include/dpl/abstract_waitable_output_adapter.h rename to modules/core/include/dpl/abstract_waitable_output_adapter.h diff --git a/modules_wearable/core/include/dpl/address.h b/modules/core/include/dpl/address.h similarity index 100% rename from modules_wearable/core/include/dpl/address.h rename to modules/core/include/dpl/address.h diff --git a/modules_wearable/core/include/dpl/aligned.h b/modules/core/include/dpl/aligned.h similarity index 100% rename from modules_wearable/core/include/dpl/aligned.h rename to modules/core/include/dpl/aligned.h diff --git a/modules_wearable/core/include/dpl/application.h b/modules/core/include/dpl/application.h similarity index 90% rename from modules_wearable/core/include/dpl/application.h rename to modules/core/include/dpl/application.h index d4d9754..c358e8a 100644 --- a/modules_wearable/core/include/dpl/application.h +++ b/modules/core/include/dpl/application.h @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include namespace DPL { @@ -40,13 +40,6 @@ class Application DECLARE_EXCEPTION_TYPE(Base, FrameworkError) }; - private: - static int app_create(void *data); - static int app_terminate(void *data); - static int app_pause(void *data); - static int app_resume(void *data); - static int app_reset(bundle *b, void *data); - protected: int m_argc; char **m_argv; @@ -54,6 +47,12 @@ class Application bool m_mainWindowVisible; + static bool app_create(void *data); + static void app_terminate(void *data); + static void app_pause(void *data); + static void app_resume(void *data); + static void app_control(app_control_h app_control, void *data); + virtual void OnCreate(); virtual void OnStart(); virtual void OnStop(); @@ -104,7 +103,7 @@ class ApplicationExt : public Application virtual void Quit(); private: - static DPL::Atomic m_useCount; + static std::atomic m_useCount; }; } // namespace DPL diff --git a/modules_wearable/core/include/dpl/apply.h b/modules/core/include/dpl/apply.h similarity index 100% rename from modules_wearable/core/include/dpl/apply.h rename to modules/core/include/dpl/apply.h diff --git a/modules_wearable/core/include/dpl/assert.h b/modules/core/include/dpl/assert.h similarity index 82% rename from modules_wearable/core/include/dpl/assert.h rename to modules/core/include/dpl/assert.h index abdb481..e11727b 100644 --- a/modules_wearable/core/include/dpl/assert.h +++ b/modules/core/include/dpl/assert.h @@ -32,11 +32,12 @@ void AssertProc(const char *condition, const char *function) __attribute__ ((__noreturn__)); } // namespace DPL -#define Assert(Condition) do { if (!(Condition)) { DPL::AssertProc(#Condition, \ - __FILE__, \ - __LINE__, \ - __FUNCTION__); \ - } } while (0) +#define Assert(Condition) \ +do { \ + if (!(Condition)) { \ + DPL::AssertProc(#Condition, __FILE__, __LINE__, __FUNCTION__); \ + } \ +} while (0) #define AssertMsg(Condition, Msg) \ do { \ diff --git a/modules_wearable/core/include/dpl/atomic.h b/modules/core/include/dpl/atomic.h similarity index 93% rename from modules_wearable/core/include/dpl/atomic.h rename to modules/core/include/dpl/atomic.h index 50c4a1a..80dd445 100644 --- a/modules_wearable/core/include/dpl/atomic.h +++ b/modules/core/include/dpl/atomic.h @@ -25,6 +25,8 @@ #pragma GCC system_header #include +#include + namespace DPL { class Atomic { @@ -43,7 +45,7 @@ class Atomic void operator++(); operator ValueType() const; -}; +} DPL_DEPRECATED_WITH_MESSAGE("Use std::atomic instead"); } // namespace DPL #endif // DPL_ATOMIC_H diff --git a/modules_wearable/core/include/dpl/availability.h b/modules/core/include/dpl/availability.h similarity index 100% rename from modules_wearable/core/include/dpl/availability.h rename to modules/core/include/dpl/availability.h diff --git a/modules_mobile/core/include/dpl/binary_queue.h b/modules/core/include/dpl/binary_queue.h old mode 100644 new mode 100755 similarity index 99% rename from modules_mobile/core/include/dpl/binary_queue.h rename to modules/core/include/dpl/binary_queue.h index f4fa278..933cb93 --- a/modules_mobile/core/include/dpl/binary_queue.h +++ b/modules/core/include/dpl/binary_queue.h @@ -131,7 +131,7 @@ class BinaryQueue : * @param[in] other Other binary queue to copy from * @warning One cannot assume that bucket structure is preserved during copy */ - const BinaryQueue &operator=(const BinaryQueue &other); + BinaryQueue &operator=(const BinaryQueue &other); /** * Append copy of @a bufferSize bytes from memory pointed by @a buffer diff --git a/modules_wearable/core/include/dpl/bind.h b/modules/core/include/dpl/bind.h similarity index 100% rename from modules_wearable/core/include/dpl/bind.h rename to modules/core/include/dpl/bind.h diff --git a/modules_wearable/core/include/dpl/bool_operator.h b/modules/core/include/dpl/bool_operator.h similarity index 100% rename from modules_wearable/core/include/dpl/bool_operator.h rename to modules/core/include/dpl/bool_operator.h diff --git a/modules_wearable/core/include/dpl/char_traits.h b/modules/core/include/dpl/char_traits.h similarity index 100% rename from modules_wearable/core/include/dpl/char_traits.h rename to modules/core/include/dpl/char_traits.h diff --git a/modules_wearable/core/include/dpl/colors.h b/modules/core/include/dpl/colors.h similarity index 100% rename from modules_wearable/core/include/dpl/colors.h rename to modules/core/include/dpl/colors.h diff --git a/modules_wearable/core/include/dpl/copy.h b/modules/core/include/dpl/copy.h similarity index 100% rename from modules_wearable/core/include/dpl/copy.h rename to modules/core/include/dpl/copy.h diff --git a/modules_wearable/core/include/dpl/errno_string.h b/modules/core/include/dpl/errno_string.h similarity index 100% rename from modules_wearable/core/include/dpl/errno_string.h rename to modules/core/include/dpl/errno_string.h diff --git a/modules_mobile/core/include/dpl/exception.h b/modules/core/include/dpl/exception.h old mode 100644 new mode 100755 similarity index 99% rename from modules_mobile/core/include/dpl/exception.h rename to modules/core/include/dpl/exception.h index cdbdc53..bcf0d0e --- a/modules_mobile/core/include/dpl/exception.h +++ b/modules/core/include/dpl/exception.h @@ -298,7 +298,7 @@ class Exception do \ { \ std::ostringstream dplLoggingStream; \ - dplLoggingStream << Message; \ + dplLoggingStream << Message << "\n"; \ throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str()); \ } while (0) diff --git a/modules_wearable/core/include/dpl/file_input.h b/modules/core/include/dpl/file_input.h similarity index 100% rename from modules_wearable/core/include/dpl/file_input.h rename to modules/core/include/dpl/file_input.h diff --git a/modules_wearable/core/include/dpl/file_output.h b/modules/core/include/dpl/file_output.h similarity index 100% rename from modules_wearable/core/include/dpl/file_output.h rename to modules/core/include/dpl/file_output.h diff --git a/modules_wearable/core/include/dpl/foreach.h b/modules/core/include/dpl/foreach.h similarity index 100% rename from modules_wearable/core/include/dpl/foreach.h rename to modules/core/include/dpl/foreach.h diff --git a/modules_mobile/core/include/dpl/framework_appcore.h b/modules/core/include/dpl/framework_appcore.h similarity index 94% rename from modules_mobile/core/include/dpl/framework_appcore.h rename to modules/core/include/dpl/framework_appcore.h index 034134a..ca318b7 100644 --- a/modules_mobile/core/include/dpl/framework_appcore.h +++ b/modules/core/include/dpl/framework_appcore.h @@ -20,4 +20,5 @@ * @brief This file is the forward header file for APPCORE framework */ #pragma GCC system_header -#include +#include +#include diff --git a/modules_wearable/core/include/dpl/framework_efl.h b/modules/core/include/dpl/framework_efl.h similarity index 97% rename from modules_wearable/core/include/dpl/framework_efl.h rename to modules/core/include/dpl/framework_efl.h index 6246587..d5f4192 100644 --- a/modules_wearable/core/include/dpl/framework_efl.h +++ b/modules/core/include/dpl/framework_efl.h @@ -22,4 +22,3 @@ #pragma GCC system_header #include #include -#include diff --git a/modules_wearable/core/include/dpl/framework_vconf.h b/modules/core/include/dpl/framework_vconf.h similarity index 100% rename from modules_wearable/core/include/dpl/framework_vconf.h rename to modules/core/include/dpl/framework_vconf.h diff --git a/modules_mobile/core/include/dpl/noreturn.h b/modules/core/include/dpl/free_deleter.h old mode 100644 new mode 100755 similarity index 59% rename from modules_mobile/core/include/dpl/noreturn.h rename to modules/core/include/dpl/free_deleter.h index 93845b7..4a09904 --- a/modules_mobile/core/include/dpl/noreturn.h +++ b/modules/core/include/dpl/free_deleter.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,14 +14,20 @@ * limitations under the License. */ /* - * @file noreturn.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) + * @file free_deleter.h + * @author Pawel Czajkowski (p.czajkowski@samsung.com) * @version 1.0 - * @brief This file is the implementation file of noreturn + * @brief This file is the implementation file deleter with use std::free() */ -#ifndef DPL_NORETURN_H -#define DPL_NORETURN_H +#ifndef FREE_DELETER_H +#define FREE_DELETER_H -#define DPL_NORETURN __attribute__((__noreturn__)) - -#endif // DPL_NORETURN_H +#include +namespace DPL +{ +struct free_deleter +{ + void operator()(void *p) { std::free(p); } +}; +}// DPL +#endif // FREE_DELETER_H diff --git a/modules_mobile/core/include/dpl/generic_event.h b/modules/core/include/dpl/generic_event.h old mode 100644 new mode 100755 similarity index 99% rename from modules_mobile/core/include/dpl/generic_event.h rename to modules/core/include/dpl/generic_event.h index b20d913..8f06082 --- a/modules_mobile/core/include/dpl/generic_event.h +++ b/modules/core/include/dpl/generic_event.h @@ -39,17 +39,17 @@ class EventSender void *m_sender; }; -class GenericEvent +class GenericEventBase { protected: void *m_sender; public: - explicit GenericEvent(const EventSender &sender) : + explicit GenericEventBase(const EventSender &sender) : m_sender(sender.GetSender()) {} - virtual ~GenericEvent() + virtual ~GenericEventBase() {} void *GetSender() const @@ -59,11 +59,11 @@ class GenericEvent }; class GenericEvent0 : - public GenericEvent + public GenericEventBase { public: explicit GenericEvent0(const EventSender &sender) : - GenericEvent(sender) + GenericEventBase(sender) {} virtual ~GenericEvent0() diff --git a/modules_wearable/core/include/dpl/lexical_cast.h b/modules/core/include/dpl/lexical_cast.h similarity index 100% rename from modules_wearable/core/include/dpl/lexical_cast.h rename to modules/core/include/dpl/lexical_cast.h diff --git a/modules_wearable/core/include/dpl/main.h b/modules/core/include/dpl/main.h similarity index 100% rename from modules_wearable/core/include/dpl/main.h rename to modules/core/include/dpl/main.h diff --git a/modules_wearable/core/include/dpl/mutable_task_list.h b/modules/core/include/dpl/mutable_task_list.h similarity index 100% rename from modules_wearable/core/include/dpl/mutable_task_list.h rename to modules/core/include/dpl/mutable_task_list.h diff --git a/modules_mobile/core/include/dpl/mutex.h b/modules/core/include/dpl/mutex.h similarity index 94% rename from modules_mobile/core/include/dpl/mutex.h rename to modules/core/include/dpl/mutex.h index 315a92c..d55871f 100644 --- a/modules_mobile/core/include/dpl/mutex.h +++ b/modules/core/include/dpl/mutex.h @@ -24,6 +24,7 @@ #include #include +#include #include namespace DPL { @@ -60,7 +61,7 @@ class Mutex : public: Mutex(); ~Mutex(); -}; +} DPL_DEPRECATED_WITH_MESSAGE("Use std::mutex instead"); } // namespace DPL #endif // DPL_MUTEX_H diff --git a/modules_wearable/core/include/dpl/named_base_pipe.h b/modules/core/include/dpl/named_base_pipe.h similarity index 100% rename from modules_wearable/core/include/dpl/named_base_pipe.h rename to modules/core/include/dpl/named_base_pipe.h diff --git a/modules_wearable/core/include/dpl/named_input_pipe.h b/modules/core/include/dpl/named_input_pipe.h similarity index 100% rename from modules_wearable/core/include/dpl/named_input_pipe.h rename to modules/core/include/dpl/named_input_pipe.h diff --git a/modules_wearable/core/include/dpl/named_output_pipe.h b/modules/core/include/dpl/named_output_pipe.h similarity index 100% rename from modules_wearable/core/include/dpl/named_output_pipe.h rename to modules/core/include/dpl/named_output_pipe.h diff --git a/modules_wearable/core/include/dpl/noncopyable.h b/modules/core/include/dpl/noncopyable.h similarity index 100% rename from modules_wearable/core/include/dpl/noncopyable.h rename to modules/core/include/dpl/noncopyable.h diff --git a/modules_wearable/core/include/dpl/once.h b/modules/core/include/dpl/once.h similarity index 92% rename from modules_wearable/core/include/dpl/once.h rename to modules/core/include/dpl/once.h index ab3710f..67c5564 100644 --- a/modules_wearable/core/include/dpl/once.h +++ b/modules/core/include/dpl/once.h @@ -22,23 +22,22 @@ #ifndef DPL_ONCE_H #define DPL_ONCE_H -#include #include -#include -#include +#include +#include namespace DPL { class Once : private Noncopyable { public: + Once(); typedef std::function Delegate; void Call(Delegate delegate); private: - Atomic m_atomic; - Mutex m_mutex; + std::once_flag m_callFlag; }; } // namespace DPL diff --git a/modules_wearable/core/include/dpl/optional_typedefs.h b/modules/core/include/dpl/optional_typedefs.h similarity index 72% rename from modules_wearable/core/include/dpl/optional_typedefs.h rename to modules/core/include/dpl/optional_typedefs.h index 8b56b4c..dd68dc2 100644 --- a/modules_wearable/core/include/dpl/optional_typedefs.h +++ b/modules/core/include/dpl/optional_typedefs.h @@ -18,15 +18,15 @@ #include #include -#include +#include namespace DPL { -typedef Optional OptionalString; -typedef Optional OptionalInt; -typedef Optional OptionalUInt; -typedef Optional OptionalBool; -typedef Optional OptionalFloat; -typedef Optional OptionalStdString; +typedef boost::optional OptionalString; +typedef boost::optional OptionalInt; +typedef boost::optional OptionalUInt; +typedef boost::optional OptionalBool; +typedef boost::optional OptionalFloat; +typedef boost::optional OptionalStdString; } //namespace DPL #endif /* DPL_OPTIONAL_TYPEDEFS_H */ diff --git a/modules/core/include/dpl/platform.h.in b/modules/core/include/dpl/platform.h.in new file mode 100644 index 0000000..449b9ac --- /dev/null +++ b/modules/core/include/dpl/platform.h.in @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file platform.h + * @author Jihoon Chung (jihoon.chung@samsung.com) + * @version 1.0 + */ +#ifndef DPL_PLATFORM_H +#define DPL_PLATFORM_H + +// Use Features definition +// Use a particular optional platform service or third-party library +// +// Description : +// +// Author : () - +// #define USE__ (0 or 1) +#define USE(FEATURE) (defined (USE_##FEATURE) && USE_##FEATURE) + +// Description : Application side patch to use manual rotation feature in webkit +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 10.26.2013 +#define USE_WEBKIT_MANUAL_ROTATION 1 + +// Description : Temporary patch about enable/disable webapp specific settings, especially for web-provider. +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 11.09.2013 +#define USE_WEB_PROVIDER_EXCEPTION_IN_EWK_CONTEXT 0 + +// Description : Enhanced "progress bar" user experience. +// Show "progress bar" in "load,started" webkit callback to show earlier. +// Confirmed by webkit loader team. +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 11.21.2013 +#define USE_WEBKIT_SHOW_PROGRESS_BAR_EARLIER 1 + +// Description : Webkit version-up +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 01.14.2013 +#define USE_WEBKIT_UPVERSION 0 + +// Description : Webkit support HW Backend +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 05.23.2014 +#define USE_WEBKIT_HW_BACKEND @VALUE_USE_WEBKIT_HW_BACKEND@ + +// Description : EFL assist support screen reader +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 05.23.2014 +#define USE_EA_SCREEN_READER @VALUE_USE_EA_SCREEN_READER@ + +// Description : Platform support OSP +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 05.23.2014 +#define USE_OSP @VALUE_USE_OSP@ + +// Description : Support web-provider +// Livebox for webapp is valid in the platform depends on home screen. +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 05.23.2014 +#define USE_WEB_PROVIDER @VALUE_USE_WEB_PROVIDER@ + +// Description : Support Core Hybrid Package +// Support for Core Hybrid package installation +#define USE_CORE_HYBRID_PKG @VALUE_USE_CORE_HYBRID_PKG@ + +// Description : Support DRM for WebApplication +// DRM support depends on model +#define USE_DRM @VALUE_USE_DRM@ + +// Description : Exception code to allow that any process uses "wrt-setting" ug. +// The root cause is ug cannot get independent smack rule. +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 07.08.2014 +#define USE_UI_GADGET_SMACK_EXCEPTION 1 + +// Description : To support Kiran specific EFL features. +// Few of the EFL APIs have different implementation in Kiran. +// Author : Ravi Ranjan Kumar (rr.kumar@samsung.com) - 29.08.2014 +#define USE_EFL_LITE @VALUE_USE_EFL_LITE@ + +// Enable Features definition +// Turn on a specific feature of WRT +// +// Description : +// +// Author : () - +// #define ENABLE_ (0 or 1) +#define ENABLE(FEATURE) (defined (ENABLE_##FEATURE) && ENABLE_##FEATURE) + +// Description : Support onbeforeunload event +// Author : Jihoon Chung(jihoon.chung@samsung.com) - 11.15.2013 +#define ENABLE_JAVASCRIPT_ONBEFOREUNLOAD_EVENT 0 + +// Description : Support app scheme(app://) +// App scheme(app://) supports special scheme to packaged resources. +// Main reason of requirement is that enhance cross origin security and deprecate file scheme(file://). +// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 11.16.2013 +#define ENABLE_APP_SCHEME 0 + +// Description : Custom user agent support by tizen widget setting +// Author : Tae-Jeong Lee (taejeong.lee@samsung.com) - 11.26.2013 +#define ENABLE_CUSTOM_USER_AGENT_SUPPORT 0 + +// Description : Support CORS(Cross-origin resource sharing) whitelisting +// Allow to use resource by trust origin. Basically, trust domain includes own app scheme(app://). +// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 01.02.2014 +#define ENABLE_CORS_WHITELISTING 0 + +// Description : Support CSP(Content security policy) +// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 01.03.2014 +#define ENABLE_CONTENT_SECURITY_POLICY 1 + +// Description : Enabling background decryption for encrypted resources +// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 16.12.2013 +#define ENABLE_BACKGROUND_THREAD_DECRYPTION 0 + +// Description : Support allow-navigation +// Origin based navigation control of main resource. +// Author : Jihoon Chung (jihoon.chung@samsung.com) - 01.08.2014 +#define ENABLE_ALLOW_NAVIGATION 1 + +// Description : Support pre-launching +// Launchpad daemon automatically prelaunch selected web applications to enhance launching time. +// Author : Tae-Jeong Lee(taejeong.lee@samsung.com) - 12.04.2013 +#define ENABLE_PRE_LAUNCH 0 + +// Description : Plugin deinstallation and updating +// Plugin installer detects automatically removing and updating of plugins and make changes in database upon that facts. +// Author : Tomasz Iwanek (t.iwanek@samsung.com) - 04.07.2014 +#define ENABLE_DOWNLOADABLE_PLUGIN 1 + +// Description : WidgetInterfaceDAO performance optimization +// Adds some performance optimizations to WidgetInterfaceDAO in exchange for bigger memory usage. +// Author : Janusz Majnert (j.majnert@samsung.com) - 18.06.2014 +#define ENABLE_WIDGET_INTERFACE_DAO_PERFORMANCE @VALUE_ENABLE_WIDGET_INTERFACE_DAO_PERFORMANCE@ + +// Description : One UI Process WRT Model +// Combine all UI process into the wrt-launchpad-daemon to enhance memory usage of web apps. +// Author : Jihoon Chung (jihoon.chung@samsung.com) - 15.08.2014 +#define ENABLE_ONE_UI_PROCESS_MODEL @VALUE_ENABLE_ONE_UI_PROCESS_MODEL@ + +// Description : Restrict Max Length of Config Element Attributes +// Wrt Installer restricts value of Element attributes' length to Maximum Length if defined. +// Author : Sankeerth V S (sankeerth.vs@samsung.com) - 03.09.2014 +#define ENABLE_ELEMENT_ATTR_MAX_LENGTH 1 + +// Description : Add Ellipsis at the end if element or attribute length exceeds the max allowed length +// as Wrt Installer restricts value of Element attributes' length to Maximum Length if defined. +// Author : Sankeerth V S (sankeerth.vs@samsung.com) / Lalit Arora (lalit.arora@samsung.com) - 01.11.2014 +#define ENABLE_ADD_ELLIPSIS 0 + +// Description : Enabling install location setting in package manifest file +// Enable move to internal or external (SD card) memory area +// Author : Lalit Arora (lalit.arora@samsung.com) - 20.11.2014 +#define ENABLE_INSTALL_LOCATION 0 + +#endif // DPL_PLATFORM_H diff --git a/modules_wearable/core/include/dpl/preprocessor.h b/modules/core/include/dpl/preprocessor.h similarity index 100% rename from modules_wearable/core/include/dpl/preprocessor.h rename to modules/core/include/dpl/preprocessor.h diff --git a/modules_wearable/core/include/dpl/read_write_mutex.h b/modules/core/include/dpl/read_write_mutex.h similarity index 100% rename from modules_wearable/core/include/dpl/read_write_mutex.h rename to modules/core/include/dpl/read_write_mutex.h diff --git a/modules_wearable/core/include/dpl/recursive_mutex.h b/modules/core/include/dpl/recursive_mutex.h similarity index 94% rename from modules_wearable/core/include/dpl/recursive_mutex.h rename to modules/core/include/dpl/recursive_mutex.h index e4744cc..a950ee5 100644 --- a/modules_wearable/core/include/dpl/recursive_mutex.h +++ b/modules/core/include/dpl/recursive_mutex.h @@ -22,6 +22,7 @@ #ifndef DPL_RECURSIVE_MUTEX_H #define DPL_RECURSIVE_MUTEX_H +#include #include #include #include @@ -61,7 +62,7 @@ class RecursiveMutex : public: explicit RecursiveMutex(); virtual ~RecursiveMutex(); -}; +} DPL_DEPRECATED_WITH_MESSAGE("Use std::recursive_mutex instead"); } // namespace DPL #endif // DPL_RECURSIVE_MUTEX_H diff --git a/modules_mobile/core/include/dpl/scope_guard.h b/modules/core/include/dpl/scope_guard.h similarity index 97% rename from modules_mobile/core/include/dpl/scope_guard.h rename to modules/core/include/dpl/scope_guard.h index 21a7b0c..3791d63 100644 --- a/modules_mobile/core/include/dpl/scope_guard.h +++ b/modules/core/include/dpl/scope_guard.h @@ -71,9 +71,11 @@ class ScopeGuard private: // FIXME change to noexcept when available - void Execute() throw() + void Execute() { - m_function(); + try { + m_function(); + } catch(...) {} } FunctionType m_function; diff --git a/modules_mobile/core/include/dpl/scoped_close.h b/modules/core/include/dpl/scoped_close.h similarity index 88% rename from modules_mobile/core/include/dpl/scoped_close.h rename to modules/core/include/dpl/scoped_close.h index 45477af..1ab7b31 100644 --- a/modules_mobile/core/include/dpl/scoped_close.h +++ b/modules/core/include/dpl/scoped_close.h @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include @@ -42,14 +42,13 @@ struct ScopedClosePolicy if (handle != -1) { if (TEMP_FAILURE_RETRY(::fsync(handle)) == -1) { std::string errString = GetErrnoString(); - LogPedantic("Failed to fsync scoped close error: " - << errString); + WrtLogD("Failed to fsync scoped close error: %s", + errString.c_str()); } if (::close(handle) == -1) { std::string errString = GetErrnoString(); - LogPedantic("Failed to scoped close error: " - << errString); + WrtLogD("Failed to scoped close error: %s", errString.c_str()); } } } diff --git a/modules_wearable/core/include/dpl/scoped_dir.h b/modules/core/include/dpl/scoped_dir.h similarity index 100% rename from modules_wearable/core/include/dpl/scoped_dir.h rename to modules/core/include/dpl/scoped_dir.h diff --git a/modules_mobile/core/include/dpl/scoped_fclose.h b/modules/core/include/dpl/scoped_fclose.h similarity index 89% rename from modules_mobile/core/include/dpl/scoped_fclose.h rename to modules/core/include/dpl/scoped_fclose.h index b029803..e774ef2 100644 --- a/modules_mobile/core/include/dpl/scoped_fclose.h +++ b/modules/core/include/dpl/scoped_fclose.h @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include @@ -44,14 +44,14 @@ struct ScopedFClosePolicy // Try to flush first if (TEMP_FAILURE_RETRY(fflush(file)) != 0) { std::string errString = GetErrnoString(); - LogPedantic("Failed to fflush scoped fclose error: " - << errString); + WrtLogD("Failed to fflush scoped fclose error: %s", + errString.c_str()); } // fclose cannot be retried, try to close once if (fclose(file) != 0) { std::string errString = GetErrnoString(); - LogPedantic("Failed scoped fclose error: " << errString); + WrtLogD("Failed scoped fclose error: %s", errString.c_str()); } } } diff --git a/modules_wearable/core/include/dpl/scoped_free.h b/modules/core/include/dpl/scoped_free.h similarity index 100% rename from modules_wearable/core/include/dpl/scoped_free.h rename to modules/core/include/dpl/scoped_free.h diff --git a/modules_wearable/core/include/dpl/scoped_resource.h b/modules/core/include/dpl/scoped_resource.h similarity index 100% rename from modules_wearable/core/include/dpl/scoped_resource.h rename to modules/core/include/dpl/scoped_resource.h diff --git a/modules_wearable/core/include/dpl/semaphore.h b/modules/core/include/dpl/semaphore.h similarity index 100% rename from modules_wearable/core/include/dpl/semaphore.h rename to modules/core/include/dpl/semaphore.h diff --git a/modules_wearable/core/include/dpl/serialization.h b/modules/core/include/dpl/serialization.h similarity index 100% rename from modules_wearable/core/include/dpl/serialization.h rename to modules/core/include/dpl/serialization.h diff --git a/modules_wearable/core/include/dpl/single_instance.h b/modules/core/include/dpl/single_instance.h similarity index 100% rename from modules_wearable/core/include/dpl/single_instance.h rename to modules/core/include/dpl/single_instance.h diff --git a/modules_wearable/core/include/dpl/singleton.h b/modules/core/include/dpl/singleton.h old mode 100644 new mode 100755 similarity index 89% rename from modules_wearable/core/include/dpl/singleton.h rename to modules/core/include/dpl/singleton.h index 530f5c1..353edb5 --- a/modules_wearable/core/include/dpl/singleton.h +++ b/modules/core/include/dpl/singleton.h @@ -22,9 +22,11 @@ #ifndef DPL_SINGLETON_H #define DPL_SINGLETON_H -#include +#include #include #include +#include +#include namespace DPL { template @@ -42,9 +44,10 @@ class Singleton : Singleton() {} - typedef Optional OptionalThreadPtr; + typedef boost::optional OptionalThreadPtr; static Singleton &InternalInstance(); + static std::once_flag m_onceFlag; public: virtual ~Singleton() diff --git a/modules_wearable/core/include/dpl/singleton_impl.h b/modules/core/include/dpl/singleton_impl.h old mode 100644 new mode 100755 similarity index 86% rename from modules_wearable/core/include/dpl/singleton_impl.h rename to modules/core/include/dpl/singleton_impl.h index 12dbf32..f4ba187 --- a/modules_wearable/core/include/dpl/singleton_impl.h +++ b/modules/core/include/dpl/singleton_impl.h @@ -22,6 +22,8 @@ #ifndef DPL_SINGLETON_IMPL_H #define DPL_SINGLETON_IMPL_H +#include + /* * WARNING! * @@ -31,11 +33,19 @@ */ namespace DPL { + +template +std::once_flag Singleton::m_onceFlag; + template Singleton& Singleton::InternalInstance() { - static Singleton instance; - return instance; + static Singleton* instance = NULL; + std::call_once(m_onceFlag, + [] { + instance = new Singleton; + }); + return *instance; } template diff --git a/modules_wearable/core/include/dpl/singleton_safe_impl.h b/modules/core/include/dpl/singleton_safe_impl.h similarity index 100% rename from modules_wearable/core/include/dpl/singleton_safe_impl.h rename to modules/core/include/dpl/singleton_safe_impl.h diff --git a/modules_wearable/core/include/dpl/sstream.h b/modules/core/include/dpl/sstream.h similarity index 100% rename from modules_wearable/core/include/dpl/sstream.h rename to modules/core/include/dpl/sstream.h diff --git a/modules_wearable/core/include/dpl/static_block.h b/modules/core/include/dpl/static_block.h similarity index 100% rename from modules_wearable/core/include/dpl/static_block.h rename to modules/core/include/dpl/static_block.h diff --git a/modules_wearable/core/include/dpl/string.h b/modules/core/include/dpl/string.h similarity index 100% rename from modules_wearable/core/include/dpl/string.h rename to modules/core/include/dpl/string.h diff --git a/modules_wearable/core/include/dpl/task.h b/modules/core/include/dpl/task.h similarity index 100% rename from modules_wearable/core/include/dpl/task.h rename to modules/core/include/dpl/task.h diff --git a/modules_wearable/core/include/dpl/thread.h b/modules/core/include/dpl/thread.h similarity index 95% rename from modules_wearable/core/include/dpl/thread.h rename to modules/core/include/dpl/thread.h index a0040eb..01fd0fe 100644 --- a/modules_wearable/core/include/dpl/thread.h +++ b/modules/core/include/dpl/thread.h @@ -23,21 +23,17 @@ #define DPL_THREAD_H #include -//#include -//#include #include #include -#include #include -#include +#include #include #include #include -#include -#include +#include #include #include -#include +#include namespace DPL { class Thread : @@ -126,19 +122,19 @@ class Thread : typedef std::vector InternalTimedEventVector; // State managment - pthread_t m_thread; + std::thread m_thread; volatile bool m_abandon; volatile bool m_running; - Mutex m_stateMutex; + std::mutex m_stateMutex; WaitableEvent m_quitEvent; // Event processing - Mutex m_eventMutex; + std::mutex m_eventMutex; InternalEventList m_eventList; WaitableEvent m_eventInvoker; // Timed events processing - Mutex m_timedEventMutex; + std::mutex m_timedEventMutex; InternalTimedEventVector m_timedEventVector; WaitableEvent m_timedEventInvoker; @@ -248,7 +244,7 @@ class ThreadLocalVariable : struct ManagedValue { ValueType value; - Optional guardKey; + boost::optional guardKey; }; static void MainThreadExitClean() @@ -265,7 +261,7 @@ class ThreadLocalVariable : { // Destroy underlying type ManagedValue *instance = static_cast(specific); - if (instance->guardKey.IsNull()) { + if (!instance->guardKey) { delete instance; } else { int result = pthread_setspecific(*(instance->guardKey), instance); @@ -370,7 +366,7 @@ class ThreadLocalVariable : // TODO Should be an assert? is it developers fault to Reset Guarded // value? - specific->guardKey = Optional::Null; + specific->guardKey = boost::optional(); InternalDestroy(specific); @@ -390,7 +386,7 @@ class ThreadLocalVariable : Assert(instance && "Failed to get the value"); - instance->guardKey = guard ? m_key : Optional::Null; + instance->guardKey = guard ? m_key : boost::optional(); } }; } // namespace DPL diff --git a/modules/core/include/dpl/type_list.h b/modules/core/include/dpl/type_list.h new file mode 100755 index 0000000..75c44cf --- /dev/null +++ b/modules/core/include/dpl/type_list.h @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @file type_list.h + * @author Bartosz Janiak (b.janiak@samsung.com) + * @version 1.0 + * @brief Generic type list template + */ +#ifndef DPL_TYPE_LIST_H +#define DPL_TYPE_LIST_H + +#include + +namespace DPL { +class TypeListGuard +{ + public: + template + struct Element + { + struct ERROR_TypeListElementIndexIsOutOfBounds; + typedef ERROR_TypeListElementIndexIsOutOfBounds Type; + }; + + static const size_t Size = 0; +}; + +template +class TypeList +{ + private: + class DummyClass + {}; + + template + struct TypeCounter : public TypeCounter + {}; + + template + struct TypeCounter + { + static const size_t Size = Enum; + }; + + public: + typedef TailType Tail; + typedef HeadType Head; + typedef TypeList ThisType; + + template + struct Element + { + typedef typename TailType::template Element::Type Type; + }; + + template + struct Element<0, DummyType> + { + typedef HeadType Type; + }; + + template + struct Contains + { + typedef typename TailType::template Contains::Yes Yes; + }; + + template + struct Contains + { + typedef int Yes; + }; + + static const size_t Size = TypeCounter::Size; +}; + +template +struct TypeListDecl; + +template +struct TypeListDecl +{ + typedef TypeList::Type> Type; +}; + +template +struct TypeListDecl +{ + typedef TypeList Type; +}; + +template<> +struct TypeListDecl +{ + typedef TypeListGuard Type; +}; + +template<> +struct TypeListDecl<> +{ + typedef TypeListGuard Type; +}; + +} // namespace DPL + +#endif // DPL_TYPE_LIST_H diff --git a/modules_mobile/core/include/dpl/union_cast.h b/modules/core/include/dpl/union_cast.h similarity index 92% rename from modules_mobile/core/include/dpl/union_cast.h rename to modules/core/include/dpl/union_cast.h index 3f499a4..3cd3f6c 100644 --- a/modules_mobile/core/include/dpl/union_cast.h +++ b/modules/core/include/dpl/union_cast.h @@ -23,10 +23,11 @@ #define DPL_UNION_CAST_H #include +#include namespace DPL { template -TargetType union_cast(const SourceType &data) +DPL_DEPRECATED TargetType union_cast(const SourceType &data) { union { diff --git a/modules_wearable/core/include/dpl/waitable_event.h b/modules/core/include/dpl/waitable_event.h similarity index 100% rename from modules_wearable/core/include/dpl/waitable_event.h rename to modules/core/include/dpl/waitable_event.h diff --git a/modules_wearable/core/include/dpl/waitable_handle.h b/modules/core/include/dpl/waitable_handle.h similarity index 100% rename from modules_wearable/core/include/dpl/waitable_handle.h rename to modules/core/include/dpl/waitable_handle.h diff --git a/modules_wearable/core/include/dpl/waitable_handle_watch_support.h b/modules/core/include/dpl/waitable_handle_watch_support.h similarity index 98% rename from modules_wearable/core/include/dpl/waitable_handle_watch_support.h rename to modules/core/include/dpl/waitable_handle_watch_support.h index ac0987f..644799c 100644 --- a/modules_wearable/core/include/dpl/waitable_handle_watch_support.h +++ b/modules/core/include/dpl/waitable_handle_watch_support.h @@ -26,9 +26,9 @@ #include #include #include -#include #include #include +#include namespace DPL { class Thread; @@ -98,7 +98,7 @@ class WaitableHandleWatchSupport WaitableHandleWatchers> WaitableHandleWatchersMap; // Waitable event watch support - mutable RecursiveMutex m_watchersMutex; + mutable std::recursive_mutex m_watchersMutex; WaitableHandleWatchersMap m_watchersMap; WaitableEvent m_watchersInvoker; WaitableEvent m_watchersInvokerCommit; diff --git a/modules_wearable/core/include/dpl/workaround.h b/modules/core/include/dpl/workaround.h similarity index 100% rename from modules_wearable/core/include/dpl/workaround.h rename to modules/core/include/dpl/workaround.h diff --git a/modules_wearable/core/include/dpl/zip_input.h b/modules/core/include/dpl/zip_input.h similarity index 100% rename from modules_wearable/core/include/dpl/zip_input.h rename to modules/core/include/dpl/zip_input.h diff --git a/modules/core/platform.cmake b/modules/core/platform.cmake new file mode 100755 index 0000000..cc653a7 --- /dev/null +++ b/modules/core/platform.cmake @@ -0,0 +1,53 @@ +# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# @file platform.cmake +# @author Jihoon Chung (jihoon.chung@samsung.com) +# @version 1.0 +# @brief Generate "platform.h" +# + +# Platform feature macro generator +# Gererate a header file, "platform.h", to apply platform feature macro during building +# +# PRODUCT_XXX : Value definition come from "wrt-commons.spec" by "platform feature macro". +# VALUE_XXX : Value is used by "platform.h.in" to generate "platform.h". + +# Definitions of feature by platform +# PRODUCT_FEATURE_OSP_DISABLE - sec_product_feature_osp_disable + +# Definitions of values effect to platform.h +# VALUE_USE_WEBKIT_HW_BACKEND - USE_WEBKIT_HW_BACKEND +# VALUE_USE_EA_SCREEN_READER - USE_EA_SCREEN_READER +# VALUE_USE_OSP - USE_OSP +# VALUE_USE_WEB_PROVIDER - USE_WEB_PROVIDER +# VALUE_USE_CORE_HYBRID_PKG - USE_CORE_HYBRID_PKG + +SET(VALUE_ENABLE_ONE_UI_PROCESS_MODEL 0) +SET(VALUE_ENABLE_WIDGET_INTERFACE_DAO_PERFORMANCE 1) +SET(VALUE_USE_CORE_HYBRID_PKG 1) +SET(VALUE_USE_DRM 1) +SET(VALUE_USE_EA_SCREEN_READER 0) +SET(VALUE_USE_EFL_LITE 0) +SET(VALUE_USE_WEBKIT_HW_BACKEND 1) +SET(VALUE_USE_OSP 0) + +IF(WEB_PROVIDER_SUPPORT) +SET(VALUE_USE_WEB_PROVIDER 1) +ELSE(WEB_PROVIDER_SUPPORT) +SET(VALUE_USE_WEB_PROVIDER 0) +ENDIF(WEB_PROVIDER_SUPPORT) + +CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/modules/core/include/dpl/platform.h.in ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/platform.h) diff --git a/modules_wearable/core/src/DESCRIPTION b/modules/core/src/DESCRIPTION similarity index 100% rename from modules_wearable/core/src/DESCRIPTION rename to modules/core/src/DESCRIPTION diff --git a/modules_wearable/core/src/abstract_waitable_input_adapter.cpp b/modules/core/src/abstract_waitable_input_adapter.cpp similarity index 100% rename from modules_wearable/core/src/abstract_waitable_input_adapter.cpp rename to modules/core/src/abstract_waitable_input_adapter.cpp diff --git a/modules_wearable/core/src/abstract_waitable_input_output_adapter.cpp b/modules/core/src/abstract_waitable_input_output_adapter.cpp similarity index 100% rename from modules_wearable/core/src/abstract_waitable_input_output_adapter.cpp rename to modules/core/src/abstract_waitable_input_output_adapter.cpp diff --git a/modules_wearable/core/src/abstract_waitable_output_adapter.cpp b/modules/core/src/abstract_waitable_output_adapter.cpp similarity index 100% rename from modules_wearable/core/src/abstract_waitable_output_adapter.cpp rename to modules/core/src/abstract_waitable_output_adapter.cpp diff --git a/modules_wearable/core/src/address.cpp b/modules/core/src/address.cpp similarity index 100% rename from modules_wearable/core/src/address.cpp rename to modules/core/src/address.cpp diff --git a/modules_mobile/core/src/application.cpp b/modules/core/src/application.cpp similarity index 69% rename from modules_mobile/core/src/application.cpp rename to modules/core/src/application.cpp index b2c9cc0..d5efe00 100644 --- a/modules_mobile/core/src/application.cpp +++ b/modules/core/src/application.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include namespace // anonymous { @@ -29,39 +29,40 @@ static DPL::Application *g_application = NULL; } // namespace anonymous namespace DPL { -int Application::app_create(void *data) +bool Application::app_create(void *data) { Application *This = static_cast(data); This->OnCreate(); - return 0; + return true; } -int Application::app_terminate(void *data) +void Application::app_terminate(void *data) { Application *This = static_cast(data); This->OnTerminate(); - return 0; } -int Application::app_pause(void *data) +void Application::app_pause(void *data) { Application *This = static_cast(data); This->OnPause(); - return 0; } -int Application::app_resume(void *data) +void Application::app_resume(void *data) { Application *This = static_cast(data); This->OnResume(); - return 0; } -int Application::app_reset(bundle *b, void *data) +void Application::app_control(app_control_h app_control, void *data) { Application *This = static_cast(data); + + // convert app_control to bundle + bundle *b; + app_control_to_bundle(app_control, &b); + This->OnReset(b); - return 0; } Application::Application(int argc, char** argv, @@ -87,78 +88,76 @@ Application::~Application() int Application::Exec() { - LogPedantic("Starting application framework..."); + WrtLogD("Starting application framework..."); - struct appcore_ops ops; - ops.create = app_create; - ops.terminate = app_terminate; - ops.pause = app_pause; - ops.resume = app_resume; - ops.reset = app_reset; - ops.data = this; + ui_app_lifecycle_callback_s callback; + callback.create = app_create; + callback.terminate = app_terminate; + callback.pause = app_pause; + callback.resume = app_resume; + callback.app_control = app_control; - int result = appcore_efl_main( - m_applicationName.c_str(), &m_argc, &m_argv, &ops); + int result = ui_app_main(m_argc, m_argv, &callback, this); - LogPedantic("Exited application framework"); + WrtLogD("Exited application framework"); return result; } void Application::OnCreate() { - LogPedantic("On application create"); + WrtLogD("On application create"); } void Application::OnStart() { - LogPedantic("On application start"); + WrtLogD("On application start"); } void Application::OnStop() { - LogPedantic("On application stop"); + WrtLogD("On application stop"); } void Application::OnResume() { - LogPedantic("On application resume"); + WrtLogD("On application resume"); } void Application::OnPause() { - LogPedantic("On application pause"); + WrtLogD("On application pause"); } void Application::OnRelaunch() { - LogPedantic("On application relaunch"); + WrtLogD("On application relaunch"); } void Application::OnReset(bundle *b) { (void)b; - LogPedantic("On application reset"); + WrtLogD("On application reset"); } void Application::OnTerminate() { - LogPedantic("On application terminate"); + WrtLogD("On application terminate"); } void Application::OnLowMemory() { - LogPedantic("On application low memory"); + WrtLogD("On application low memory"); } void Application::OnLowBattery() { - LogPedantic("On application low battery"); + WrtLogD("On application low battery"); } void Application::OnLanguageChanged() { - LogPedantic("On application language changed"); + WrtLogD("On application language changed"); } void Application::Quit() @@ -166,7 +165,7 @@ void Application::Quit() elm_exit(); } -DPL::Atomic ApplicationExt::m_useCount(0); +std::atomic ApplicationExt::m_useCount(0); ApplicationExt::ApplicationExt(int argc, char** argv, @@ -180,7 +179,8 @@ ApplicationExt::~ApplicationExt() int ApplicationExt::Exec() { - if (0 == m_useCount.CompareAndExchange(0, 1)) { + int testVal = 0; + if (!m_useCount.compare_exchange_strong(testVal, 1)) { return Application::Exec(); } else { elm_run(); diff --git a/modules_wearable/core/src/apply.cpp b/modules/core/src/apply.cpp similarity index 100% rename from modules_wearable/core/src/apply.cpp rename to modules/core/src/apply.cpp diff --git a/modules_wearable/core/src/assert.cpp b/modules/core/src/assert.cpp old mode 100755 new mode 100644 similarity index 58% rename from modules_wearable/core/src/assert.cpp rename to modules/core/src/assert.cpp index 5a18977..76a13ef --- a/modules_wearable/core/src/assert.cpp +++ b/modules/core/src/assert.cpp @@ -20,11 +20,13 @@ * @brief This file is the implementation file of assert */ #include +#include +#include #include #include #include -#include -#include +#include +#include namespace DPL { void AssertProc(const char *condition, @@ -32,32 +34,24 @@ void AssertProc(const char *condition, int line, const char *function) { -#define INTERNAL_LOG(message) \ - do \ - { \ - std::ostringstream platformLog; \ - platformLog << message; \ - DPL::Log::LogSystemSingleton::Instance().Pedantic( \ - platformLog.str().c_str(), \ - __FILE__, __LINE__, __FUNCTION__); \ - } \ - while (0) + +#define INTERNAL_LOG(message) \ +do { \ + std::ostringstream platformLog; \ + platformLog << message; \ + WrtLogE("%s", platformLog.str().c_str()); \ +} while (0) // Try to log failed assertion to log system - Try - { - INTERNAL_LOG( - "################################################################################"); - INTERNAL_LOG( - "### DPL assertion failed! ###"); - INTERNAL_LOG( - "################################################################################"); + Try { + INTERNAL_LOG("########################################################################"); + INTERNAL_LOG("### DPL assertion failed! ###"); + INTERNAL_LOG("########################################################################"); INTERNAL_LOG("### Condition: " << condition); INTERNAL_LOG("### File: " << file); INTERNAL_LOG("### Line: " << line); INTERNAL_LOG("### Function: " << function); - INTERNAL_LOG( - "################################################################################"); + INTERNAL_LOG("########################################################################"); } catch (Exception) { // Just ignore possible double errors } diff --git a/modules_wearable/core/src/atomic.cpp b/modules/core/src/atomic.cpp similarity index 100% rename from modules_wearable/core/src/atomic.cpp rename to modules/core/src/atomic.cpp diff --git a/modules_wearable/core/src/binary_queue.cpp b/modules/core/src/binary_queue.cpp old mode 100644 new mode 100755 similarity index 95% rename from modules_wearable/core/src/binary_queue.cpp rename to modules/core/src/binary_queue.cpp index 2234c8f..25b0f68 --- a/modules_wearable/core/src/binary_queue.cpp +++ b/modules/core/src/binary_queue.cpp @@ -22,7 +22,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -45,7 +46,7 @@ BinaryQueue::~BinaryQueue() Clear(); } -const BinaryQueue &BinaryQueue::operator=(const BinaryQueue &other) +BinaryQueue &BinaryQueue::operator=(const BinaryQueue &other) { if (this != &other) { Clear(); @@ -286,7 +287,7 @@ BinaryQueueAutoPtr BinaryQueue::Read(size_t size) // Simulate input stream size_t available = std::min(size, m_size); - ScopedFree bufferCopy(malloc(available)); + std::unique_ptr bufferCopy(malloc(available)); if (!bufferCopy) { throw std::bad_alloc(); @@ -294,10 +295,10 @@ BinaryQueueAutoPtr BinaryQueue::Read(size_t size) BinaryQueueAutoPtr result(new BinaryQueue()); - Flatten(bufferCopy.Get(), available); + Flatten(bufferCopy.get(), available); result->AppendUnmanaged( - bufferCopy.Get(), available, &BufferDeleterFree, NULL); - bufferCopy.Release(); + bufferCopy.get(), available, &BufferDeleterFree, NULL); + bufferCopy.release(); Consume(available); return result; diff --git a/modules_wearable/core/src/char_traits.cpp b/modules/core/src/char_traits.cpp similarity index 100% rename from modules_wearable/core/src/char_traits.cpp rename to modules/core/src/char_traits.cpp diff --git a/modules_wearable/core/src/colors.cpp b/modules/core/src/colors.cpp similarity index 100% rename from modules_wearable/core/src/colors.cpp rename to modules/core/src/colors.cpp diff --git a/modules_wearable/core/src/copy.cpp b/modules/core/src/copy.cpp similarity index 100% rename from modules_wearable/core/src/copy.cpp rename to modules/core/src/copy.cpp diff --git a/modules_wearable/core/src/errno_string.cpp b/modules/core/src/errno_string.cpp similarity index 93% rename from modules_wearable/core/src/errno_string.cpp rename to modules/core/src/errno_string.cpp index 86cb59b..6c59776 100644 --- a/modules_wearable/core/src/errno_string.cpp +++ b/modules/core/src/errno_string.cpp @@ -24,7 +24,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -63,7 +64,7 @@ std::string GetErrnoString(int error) int result = ::strerror_r(error, buffer, size); if (result == 0) { - ScopedFree scopedBufferFree(buffer); + std::unique_ptr scopedBufferFree(buffer); return std::string(buffer); } #else @@ -73,7 +74,7 @@ std::string GetErrnoString(int error) char *result = ::strerror_r(error, buffer, size); if (result != NULL) { - ScopedFree scopedBufferFree(buffer); + std::unique_ptr scopedBufferFree(buffer); return std::string(result); } #endif diff --git a/modules_mobile/core/src/exception.cpp b/modules/core/src/exception.cpp similarity index 91% rename from modules_mobile/core/src/exception.cpp rename to modules/core/src/exception.cpp index d3673e6..9454dbb 100644 --- a/modules_mobile/core/src/exception.cpp +++ b/modules/core/src/exception.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include namespace DPL { @@ -35,7 +35,7 @@ void LogUnhandledException(const std::string &str) printf("%s\n", str.c_str()); // Logging to dlog - LogPedantic(str); + WrtLogD("%s", str.c_str()); } void LogUnhandledException(const std::string &str, @@ -51,7 +51,6 @@ void LogUnhandledException(const std::string &str, printf("%s\n", msg.str().c_str()); // Logging to dlog - DPL::Log::LogSystemSingleton::Instance().Error( - str.c_str(), filename, line, function); + WrtLogE("%s", str.c_str()); } } // namespace DPL diff --git a/modules_mobile/core/src/file_input.cpp b/modules/core/src/file_input.cpp similarity index 93% rename from modules_mobile/core/src/file_input.cpp rename to modules/core/src/file_input.cpp index 36fb4b5..dc66a04 100644 --- a/modules_mobile/core/src/file_input.cpp +++ b/modules/core/src/file_input.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -65,7 +65,7 @@ void FileInput::Open(const std::string& fileName) // Save new descriptor m_fd = fd; - LogPedantic("Opened file: " << fileName); + WrtLogD("Opened file: %s", fileName.c_str()); } void FileInput::Close() @@ -80,7 +80,7 @@ void FileInput::Close() m_fd = -1; - LogPedantic("Closed file"); + WrtLogD("Closed file"); } BinaryQueueAutoPtr FileInput::Read(size_t size) @@ -96,11 +96,11 @@ BinaryQueueAutoPtr FileInput::Read(size_t size) throw std::bad_alloc(); } - LogPedantic("Trying to read " << bytesToRead << " bytes"); + WrtLogD("Trying to read %u bytes", bytesToRead); ssize_t result = TEMP_FAILURE_RETRY(read(m_fd, buffer, bytesToRead)); - LogPedantic("Read " << result << " bytes from file"); + WrtLogD("Read %u bytes from file", result); if (result > 0) { // Succedded to read socket data diff --git a/modules_mobile/core/src/file_output.cpp b/modules/core/src/file_output.cpp similarity index 86% rename from modules_mobile/core/src/file_output.cpp rename to modules/core/src/file_output.cpp index 8342698..df56023 100644 --- a/modules_mobile/core/src/file_output.cpp +++ b/modules/core/src/file_output.cpp @@ -22,8 +22,9 @@ #include #include #include -#include -#include +#include +#include +#include #include #include #include @@ -64,7 +65,7 @@ void FileOutput::Open(const std::string& fileName) // Save new descriptor m_fd = fd; - LogPedantic("Opened file: " << fileName); + WrtLogD("Opened file: %s", fileName.c_str()); } void FileOutput::Close() @@ -79,7 +80,7 @@ void FileOutput::Close() m_fd = -1; - LogPedantic("Closed file"); + WrtLogD("Closed file"); } size_t FileOutput::Write(const BinaryQueue &buffer, size_t bufferSize) @@ -92,14 +93,14 @@ size_t FileOutput::Write(const BinaryQueue &buffer, size_t bufferSize) // FIXME: User write visitor to write ! // WriteVisitor visitor - ScopedFree flattened(malloc(bufferSize)); - buffer.Flatten(flattened.Get(), bufferSize); + std::unique_ptr flattened(malloc(bufferSize)); + buffer.Flatten(flattened.get(), bufferSize); - LogPedantic("Trying to write " << bufferSize << " bytes"); + WrtLogD("Trying to write %u bytes", bufferSize); - ssize_t result = TEMP_FAILURE_RETRY(write(m_fd, flattened.Get(), bufferSize)); + ssize_t result = TEMP_FAILURE_RETRY(write(m_fd, flattened.get(), bufferSize)); - LogPedantic("Wrote " << result << " bytes to file"); + WrtLogD("Wrote %u bytes to file", result); if (result > 0) { // Successfuly written some bytes diff --git a/modules_wearable/core/src/generic_event.cpp b/modules/core/src/generic_event.cpp similarity index 100% rename from modules_wearable/core/src/generic_event.cpp rename to modules/core/src/generic_event.cpp diff --git a/modules_wearable/core/src/lexical_cast.cpp b/modules/core/src/lexical_cast.cpp similarity index 100% rename from modules_wearable/core/src/lexical_cast.cpp rename to modules/core/src/lexical_cast.cpp diff --git a/modules_mobile/core/src/main.cpp b/modules/core/src/main.cpp similarity index 90% rename from modules_mobile/core/src/main.cpp rename to modules/core/src/main.cpp index 1d0326b..0b6b1fc 100644 --- a/modules_mobile/core/src/main.cpp +++ b/modules/core/src/main.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include #include #include @@ -82,7 +82,7 @@ Main::Main() // It is impossible that there exist watchers at this time // No need to add watchers - LogPedantic("ECORE event handler registered"); + WrtLogD("ECORE event handler registered"); } Main::~Main() @@ -124,7 +124,7 @@ Main::~Main() Eina_Bool Main::StaticDispatchInvoker(void *data, Ecore_Fd_Handler *fd_handler) { - LogPedantic("Static ECORE dispatch invoker"); + WrtLogD("Static ECORE dispatch invoker"); Main *This = static_cast
(data); (void)fd_handler; @@ -133,7 +133,7 @@ Eina_Bool Main::StaticDispatchInvoker(void *data, Ecore_Fd_Handler *fd_handler) // Late EFL event handling if (g_lateMain == NULL) { - LogPedantic("WARNING: Late EFL invoker dispatch!"); + WrtLogD("WARNING: Late EFL invoker dispatch!"); } else { This->DispatchInvoker(); } @@ -144,7 +144,7 @@ Eina_Bool Main::StaticDispatchInvoker(void *data, Ecore_Fd_Handler *fd_handler) Eina_Bool Main::StaticDispatchReadWatcher(void* data, Ecore_Fd_Handler* fd_handler) { - LogPedantic("Static ECORE dispatch read watcher"); + WrtLogD("Static ECORE dispatch read watcher"); Main *This = static_cast
(data); @@ -152,7 +152,7 @@ Eina_Bool Main::StaticDispatchReadWatcher(void* data, // Late EFL event handling if (g_lateMain == NULL) { - LogPedantic("WARNING: Late EFL read watcher dispatch!"); + WrtLogD("WARNING: Late EFL read watcher dispatch!"); } else { This->DispatchReadWatcher(static_cast( ecore_main_fd_handler_fd_get(fd_handler))); @@ -164,7 +164,7 @@ Eina_Bool Main::StaticDispatchReadWatcher(void* data, Eina_Bool Main::StaticDispatchWriteWatcher(void* data, Ecore_Fd_Handler* fd_handler) { - LogPedantic("Static ECORE dispatch write watcher"); + WrtLogD("Static ECORE dispatch write watcher"); Main *This = static_cast
(data); @@ -172,7 +172,7 @@ Eina_Bool Main::StaticDispatchWriteWatcher(void* data, // Late EFL event handling if (g_lateMain == NULL) { - LogPedantic("WARNING: Late EFL write watcher dispatch!"); + WrtLogD("WARNING: Late EFL write watcher dispatch!"); } else { This->DispatchWriteWatcher(static_cast( ecore_main_fd_handler_fd_get(fd_handler))); @@ -183,7 +183,7 @@ Eina_Bool Main::StaticDispatchWriteWatcher(void* data, void Main::DispatchInvoker() { - LogPedantic("Dispatching invoker..."); + WrtLogD("Dispatching invoker..."); // Reload watch list ReloadWatchList(); @@ -191,14 +191,13 @@ void Main::DispatchInvoker() // Handle base invoker WaitableHandleWatchSupport::InvokerFinished(); - LogPedantic("Invoker dispatched"); + WrtLogD("Invoker dispatched"); } void Main::ReloadWatchList() { - LogPedantic( - "Reloading watch list... (" << m_readWatchersList.size() << " + " << - m_writeWatchersList.size() << ")"); + WrtLogD("Reloading watch list... (%i + %i)", + m_readWatchersList.size(), m_writeWatchersList.size()); // Reload list of watchers WaitableHandleListEx waitableWatcherHandles = @@ -349,29 +348,28 @@ void Main::ReloadWatchList() } } - LogPedantic( - "Watch list reloaded (" << m_readWatchersList.size() << " + " << - m_writeWatchersList.size() << ")"); + WrtLogD("Watch list reloaded (%i + %i)", + m_readWatchersList.size(), m_writeWatchersList.size()); } void Main::DispatchReadWatcher(WaitableHandle waitableHandle) { - LogPedantic("Dispatching read watcher..."); + WrtLogD("Dispatching read watcher..."); // Handle watcher WaitableHandleWatchSupport::HandleWatcher(waitableHandle, WaitMode::Read); - LogPedantic("Watcher dispatched"); + WrtLogD("Watcher dispatched"); } void Main::DispatchWriteWatcher(WaitableHandle waitableHandle) { - LogPedantic("Dispatching write watcher..."); + WrtLogD("Dispatching write watcher..."); // Handle watcher WaitableHandleWatchSupport::HandleWatcher(waitableHandle, WaitMode::Write); - LogPedantic("Watcher dispatched"); + WrtLogD("Watcher dispatched"); } Thread *Main::GetInvokerThread() @@ -420,23 +418,20 @@ int Main::EcoreSelectInterceptor(int nfds, if (errno == EBADF) { // This a bad descriptor. Remove all occurrences of it. if (FD_ISSET(i, readfds)) { - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad read descriptor: " - << i); + WrtLogD( + "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad read descriptor: %i", i); FD_CLR(i, readfds); } if (FD_ISSET(i, writefds)) { - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad write descriptor: " - << i); + WrtLogD( + "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad write descriptor: %i", i); FD_CLR(i, writefds); } if (FD_ISSET(i, exceptfds)) { - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad exception descriptor: " - << i); + WrtLogD( + "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad exception descriptor: %i", i); FD_CLR(i, exceptfds); } } else { @@ -447,8 +442,7 @@ int Main::EcoreSelectInterceptor(int nfds, } } - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad read descriptor. Retrying with default select."); + WrtLogD("GLIB_LOOP_INTEGRATION_WORKAROUND: Bad read descriptor. Retrying with default select."); //Retry with old values and return new error memcpy(readfds, &rfds, sizeof(fd_set)); diff --git a/modules_wearable/core/src/mutable_task_list.cpp b/modules/core/src/mutable_task_list.cpp similarity index 100% rename from modules_wearable/core/src/mutable_task_list.cpp rename to modules/core/src/mutable_task_list.cpp diff --git a/modules_mobile/core/src/mutex.cpp b/modules/core/src/mutex.cpp similarity index 85% rename from modules_mobile/core/src/mutex.cpp rename to modules/core/src/mutex.cpp index eed1f2e..07abae0 100644 --- a/modules_mobile/core/src/mutex.cpp +++ b/modules/core/src/mutex.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include namespace DPL { @@ -31,7 +31,7 @@ Mutex::Mutex() if (pthread_mutex_init(&m_mutex, NULL) != 0) { int error = errno; - LogPedantic("Failed to create mutex. Errno: " << error); + WrtLogD("Failed to create mutex. Errno: %i", error); ThrowMsg(Exception::CreateFailed, "Failed to create mutex. Errno: " << error); @@ -43,7 +43,7 @@ Mutex::~Mutex() if (pthread_mutex_destroy(&m_mutex) != 0) { int error = errno; - LogPedantic("Failed to destroy mutex. Errno: " << error); + WrtLogD("Failed to destroy mutex. Errno: %i", error); } } @@ -52,7 +52,7 @@ void Mutex::Lock() const if (pthread_mutex_lock(&m_mutex) != 0) { int error = errno; - LogPedantic("Failed to lock mutex. Errno: " << error); + WrtLogD("Failed to lock mutex. Errno: %i", error); ThrowMsg(Exception::LockFailed, "Failed to lock mutex. Errno: " << error); @@ -64,7 +64,7 @@ void Mutex::Unlock() const if (pthread_mutex_unlock(&m_mutex) != 0) { int error = errno; - LogPedantic("Failed to unlock mutex. Errno: " << error); + WrtLogD("Failed to unlock mutex. Errno: %i", error); ThrowMsg(Exception::UnlockFailed, "Failed to unlock mutex. Errno: " << error); @@ -86,7 +86,7 @@ Mutex::ScopedLock::~ScopedLock() } Catch(Mutex::Exception::UnlockFailed) { - LogPedantic("Failed to leave mutex scoped lock"); + WrtLogD("Failed to leave mutex scoped lock"); } } } // namespace DPL diff --git a/modules_wearable/core/src/named_base_pipe.cpp b/modules/core/src/named_base_pipe.cpp similarity index 100% rename from modules_wearable/core/src/named_base_pipe.cpp rename to modules/core/src/named_base_pipe.cpp diff --git a/modules_wearable/core/src/named_output_pipe.cpp b/modules/core/src/named_output_pipe.cpp similarity index 91% rename from modules_wearable/core/src/named_output_pipe.cpp rename to modules/core/src/named_output_pipe.cpp index 2a9a1fa..128f820 100644 --- a/modules_wearable/core/src/named_output_pipe.cpp +++ b/modules/core/src/named_output_pipe.cpp @@ -22,7 +22,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -74,11 +75,11 @@ size_t NamedOutputPipe::Write(const BinaryQueue &buffer, size_t bufferSize) // FIXME: User write visitor to write ! // WriteVisitor visitor - ScopedFree flattened(malloc(bufferSize)); - buffer.Flatten(flattened.Get(), bufferSize); + std::unique_ptr flattened(malloc(bufferSize)); + buffer.Flatten(flattened.get(), bufferSize); ssize_t result = - TEMP_FAILURE_RETRY(write(m_fifo, flattened.Get(), bufferSize)); + TEMP_FAILURE_RETRY(write(m_fifo, flattened.get(), bufferSize)); if (result > 0) { // Successfuly written some bytes diff --git a/modules_wearable/core/src/noncopyable.cpp b/modules/core/src/noncopyable.cpp similarity index 100% rename from modules_wearable/core/src/noncopyable.cpp rename to modules/core/src/noncopyable.cpp diff --git a/modules_mobile/event/src/model.cpp b/modules/core/src/once.cpp similarity index 78% rename from modules_mobile/event/src/model.cpp rename to modules/core/src/once.cpp index 58e9a1b..3f3cc4e 100644 --- a/modules_mobile/event/src/model.cpp +++ b/modules/core/src/once.cpp @@ -14,17 +14,20 @@ * limitations under the License. */ /* - * @file model.cpp + * @file once.cpp * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) * @version 1.0 - * @brief This file is the implementation file of model + * @brief This file is the implementation file of once */ -#include -#include +#include namespace DPL { -namespace Event { -Model::~Model() +Once::Once() {} + +void Once::Call(Delegate delegate) +{ + // Call delegate + std::call_once(m_callFlag, delegate); } } // namespace DPL diff --git a/modules_wearable/core/src/read_write_mutex.cpp b/modules/core/src/read_write_mutex.cpp similarity index 100% rename from modules_wearable/core/src/read_write_mutex.cpp rename to modules/core/src/read_write_mutex.cpp diff --git a/modules_wearable/core/src/recursive_mutex.cpp b/modules/core/src/recursive_mutex.cpp similarity index 100% rename from modules_wearable/core/src/recursive_mutex.cpp rename to modules/core/src/recursive_mutex.cpp diff --git a/modules_mobile/core/src/scoped_dir.cpp b/modules/core/src/scoped_dir.cpp similarity index 92% rename from modules_mobile/core/src/scoped_dir.cpp rename to modules/core/src/scoped_dir.cpp index 96550e6..11f6c3f 100644 --- a/modules_mobile/core/src/scoped_dir.cpp +++ b/modules/core/src/scoped_dir.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include #include @@ -90,7 +90,7 @@ void ScopedDirPolicy::Destroy(Type str) bool status = removeRecusive(str.c_str()); if(!status) { - LogError("Error while removing recursively: " << str); + WrtLogE("Error while removing recursively: %s", str.c_str()); } } } @@ -102,8 +102,8 @@ ScopedDir::ScopedDir(const std::string & str, mode_t mode) : BaseType(str) if (mkdir(str.c_str(), mode) == -1) { std::string errstr = DPL::GetErrnoString(); - LogError("Error while creating directory: " << str - << " [" << errstr << "]"); + WrtLogE("Error while creating directory: %s [%s]", + str.c_str(), errstr.c_str()); } } } diff --git a/modules_wearable/core/src/semaphore.cpp b/modules/core/src/semaphore.cpp similarity index 78% rename from modules_wearable/core/src/semaphore.cpp rename to modules/core/src/semaphore.cpp index 387c009..73e3315 100644 --- a/modules_wearable/core/src/semaphore.cpp +++ b/modules/core/src/semaphore.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -34,7 +34,7 @@ void Semaphore::Remove(const std::string &fileName) { if (sem_unlink(fileName.c_str()) == -1) { int error = errno; - LogPedantic("Failed to unlink semaphore. Errno: " << error); + WrtLogD("Failed to unlink semaphore. Errno: %i", error); ThrowMsg(Exception::RemoveFailed, "Failed to unlink semaphore. Errno: " << error); } @@ -42,8 +42,8 @@ void Semaphore::Remove(const std::string &fileName) Semaphore::Semaphore(size_t maxLockCount) { - LogPedantic("Allocating unnamed semaphore:"); - LogPedantic(" Maximum lock count: " << maxLockCount); + WrtLogD("Allocating unnamed semaphore:"); + WrtLogD(" Maximum lock count: %u", maxLockCount); if (-1 == sem_init(&m_semaphore.unnamed.handle, 0, @@ -51,7 +51,7 @@ Semaphore::Semaphore(size_t maxLockCount) { int error = errno; - LogPedantic("Failed to create semaphore. Errno: " << error); + WrtLogD("Failed to create semaphore. Errno: %i", error); ThrowMsg(Exception::CreateFailed, "Failed to create semaphore. Errno: " << error); @@ -67,14 +67,13 @@ Semaphore::Semaphore(const std::string &fileName, int permissions, bool unlinkOnDestroy) { - LogPedantic("Allocating named semaphore:"); - LogPedantic(" File name: " << fileName); - LogPedantic(" Maximum lock count: " << maxLockCount); - LogPedantic(" File name: " << fileName); - LogPedantic(" Allowed create: " << allowCreate); - LogPedantic(" Exclusive create: " << exclusiveCreate); - LogPedantic(" Permissions: " << permissions); - LogPedantic(" Unlink on destroy: " << unlinkOnDestroy); + WrtLogD("Allocating named semaphore:"); + WrtLogD(" File name: %s", fileName.c_str()); + WrtLogD(" Maximum lock count: %u", maxLockCount); + WrtLogD(" Allowed create: %s", allowCreate ? "true" : "false"); + WrtLogD(" Exclusive create: %s", exclusiveCreate ? "true" : "false"); + WrtLogD(" Permissions: %i", permissions); + WrtLogD(" Unlink on destroy: %s", unlinkOnDestroy ? "true" : "false"); sem_t *semaphore; @@ -99,8 +98,7 @@ Semaphore::Semaphore(const std::string &fileName, if (semaphore == SEM_FAILED) { int error = errno; - LogPedantic("Failed to create semaphore '" << fileName - << "'. Errno: " << error); + WrtLogD("Failed to create semaphore '%s'. Errno: %i", fileName.c_str(), error); ThrowMsg(Exception::CreateFailed, "Failed to create semaphore '" << fileName @@ -112,7 +110,7 @@ Semaphore::Semaphore(const std::string &fileName, m_semaphore.named.name = strdup(fileName.c_str()); // May be NULL if (m_semaphore.named.name == NULL) { - LogPedantic("Out of memory while duplicating semaphore name"); + WrtLogD("Out of memory while duplicating semaphore name"); } m_semaphore.named.unlinkOnDestroy = unlinkOnDestroy; @@ -148,7 +146,7 @@ void Semaphore::InternalDestroy() if (sem_destroy(&m_semaphore.unnamed.handle) == -1) { int error = errno; - LogPedantic("Failed to destroy semaphore. Errno: " << error); + WrtLogD("Failed to destroy semaphore. Errno: %i", error); } break; @@ -156,7 +154,7 @@ void Semaphore::InternalDestroy() if (sem_close(m_semaphore.named.handle) == -1) { int error = errno; - LogPedantic("Failed to close semaphore. Errno: " << error); + WrtLogD("Failed to close semaphore. Errno: %i", error); } if (m_semaphore.named.name != NULL) { @@ -166,8 +164,7 @@ void Semaphore::InternalDestroy() { int error = errno; - LogPedantic("Failed to unlink semaphore. Errno: " - << error); + WrtLogD("Failed to unlink semaphore. Errno: %i", error); } // Free name @@ -185,7 +182,7 @@ void Semaphore::Lock() const if (TEMP_FAILURE_RETRY(sem_wait(InternalGet())) != 0) { int error = errno; - LogPedantic("Failed to lock semaphore. Errno: " << error); + WrtLogD("Failed to lock semaphore. Errno: %i", error); ThrowMsg(Exception::LockFailed, "Failed to lock semaphore. Errno: " << error); @@ -197,7 +194,7 @@ void Semaphore::Unlock() const if (sem_post(InternalGet()) != 0) { int error = errno; - LogPedantic("Failed to unlock semaphore. Errno: " << error); + WrtLogD("Failed to unlock semaphore. Errno: %i", error); ThrowMsg(Exception::UnlockFailed, "Failed to unlock semaphore. Errno: " << error); @@ -219,7 +216,7 @@ Semaphore::ScopedLock::~ScopedLock() } Catch(Semaphore::Exception::UnlockFailed) { - LogPedantic("Failed to leave semaphore scoped lock"); + WrtLogD("Failed to leave semaphore scoped lock"); } } } // namespace DPL diff --git a/modules_wearable/core/src/serialization.cpp b/modules/core/src/serialization.cpp similarity index 100% rename from modules_wearable/core/src/serialization.cpp rename to modules/core/src/serialization.cpp diff --git a/modules_wearable/core/src/single_instance.cpp b/modules/core/src/single_instance.cpp similarity index 90% rename from modules_wearable/core/src/single_instance.cpp rename to modules/core/src/single_instance.cpp index 274b5f8..68ad11f 100644 --- a/modules_wearable/core/src/single_instance.cpp +++ b/modules/core/src/single_instance.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include #include #include @@ -44,7 +44,7 @@ SingleInstance::~SingleInstance() bool SingleInstance::TryLock(const std::string &lockName) { - LogPedantic("Locking single instance: " << lockName); + WrtLogD("Locking single instance: %s", lockName.c_str()); struct flock lock; @@ -68,7 +68,7 @@ bool SingleInstance::TryLock(const std::string &lockName) // Was the instance successfuly locked ? if (result == 0) { - LogPedantic("Instance locked: " << lockName); + WrtLogD("Instance locked: %s", lockName.c_str()); // It is locked now m_locked = true; @@ -78,7 +78,7 @@ bool SingleInstance::TryLock(const std::string &lockName) } if (errno == EACCES || errno == EAGAIN) { - LogPedantic("Instance is already running: " << lockName); + WrtLogD("Instance is already running: %s", lockName.c_str()); return false; } @@ -92,7 +92,7 @@ void SingleInstance::Release() return; } - LogPedantic("Unlocking single instance"); + WrtLogD("Unlocking single instance"); // Unlock file struct flock lock; @@ -120,6 +120,6 @@ void SingleInstance::Release() // Done m_locked = false; - LogPedantic("Instance unlocked"); + WrtLogD("Instance unlocked"); } } // namespace DPL diff --git a/modules_wearable/core/src/singleton.cpp b/modules/core/src/singleton.cpp similarity index 100% rename from modules_wearable/core/src/singleton.cpp rename to modules/core/src/singleton.cpp diff --git a/modules_mobile/core/src/string.cpp b/modules/core/src/string.cpp similarity index 91% rename from modules_mobile/core/src/string.cpp rename to modules/core/src/string.cpp index e81ae22..26acbce 100644 --- a/modules_mobile/core/src/string.cpp +++ b/modules/core/src/string.cpp @@ -20,12 +20,12 @@ * @version 1.0 */ #include +#include #include #include #include #include -#include -#include +#include #include #include #include @@ -181,7 +181,7 @@ String FromUTF32String(const std::wstring& aString) static UChar *ConvertToICU(const String &inputString) { - ScopedArray outputString; + std::unique_ptr outputString; int32_t size = 0; int32_t convertedSize = 0; UErrorCode error = U_ZERO_ERROR; @@ -198,7 +198,7 @@ static UChar *ConvertToICU(const String &inputString) error == U_BUFFER_OVERFLOW_ERROR) { // What buffer size is ok ? - LogPedantic("ICU: Output buffer size: " << size); + WrtLogD("ICU: Output buffer size: %i", size); } else { ThrowMsg(StringException::ICUInvalidCharacterFound, "ICU: Failed to retrieve output string size. Error: " @@ -206,13 +206,13 @@ static UChar *ConvertToICU(const String &inputString) } // Allocate proper buffer - outputString.Reset(new UChar[size + 1]); - ::memset(outputString.Get(), 0, sizeof(UChar) * (size + 1)); + outputString.reset(new UChar[size + 1]); + ::memset(outputString.get(), 0, sizeof(UChar) * (size + 1)); error = U_ZERO_ERROR; // Do conversion - ::u_strFromWCS(outputString.Get(), + ::u_strFromWCS(outputString.get(), size + 1, &convertedSize, inputString.c_str(), @@ -225,7 +225,7 @@ static UChar *ConvertToICU(const String &inputString) } // Done - return outputString.Release(); + return outputString.release(); } int StringCompare(const String &left, @@ -233,13 +233,13 @@ int StringCompare(const String &left, bool caseInsensitive) { // Convert input strings - ScopedArray leftICU(ConvertToICU(left)); - ScopedArray rightICU(ConvertToICU(right)); + std::unique_ptr leftICU(ConvertToICU(left)); + std::unique_ptr rightICU(ConvertToICU(right)); if (caseInsensitive) { - return static_cast(u_strcasecmp(leftICU.Get(), rightICU.Get(), 0)); + return static_cast(u_strcasecmp(leftICU.get(), rightICU.get(), 0)); } else { - return static_cast(u_strcmp(leftICU.Get(), rightICU.Get())); + return static_cast(u_strcmp(leftICU.get(), rightICU.get())); } } } //namespace DPL diff --git a/modules_wearable/core/src/task.cpp b/modules/core/src/task.cpp similarity index 100% rename from modules_wearable/core/src/task.cpp rename to modules/core/src/task.cpp diff --git a/modules_mobile/core/src/thread.cpp b/modules/core/src/thread.cpp old mode 100644 new mode 100755 similarity index 83% rename from modules_mobile/core/src/thread.cpp rename to modules/core/src/thread.cpp index 0e75810..5709545 --- a/modules_mobile/core/src/thread.cpp +++ b/modules/core/src/thread.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include #include #include @@ -40,7 +40,7 @@ static const size_t NANOSECONDS_PER_MILISECOND = static const size_t NANOSECONDS_PER_MICROSECOND = static_cast(1000); -static const pthread_t g_mainThread = pthread_self(); +static const std::thread::id g_mainThread = std::this_thread::get_id(); class ThreadSpecific { @@ -67,7 +67,7 @@ namespace DPL { bool g_TLSforMainCreated = false; Thread::Thread() : - m_thread(0), + m_thread(), m_abandon(false), m_running(false), m_directInvoke(false) @@ -95,12 +95,12 @@ Thread::~Thread() bool Thread::IsMainThread() { - return (pthread_equal(pthread_self(), g_mainThread)); + return (std::this_thread::get_id() == g_mainThread); } Thread *Thread::GetCurrentThread() { - if (pthread_equal(pthread_self(), g_mainThread)) { + if (std::this_thread::get_id() == g_mainThread) { return NULL; } @@ -116,7 +116,9 @@ Thread *Thread::GetCurrentThread() void *Thread::StaticThreadEntry(void *param) { - LogPedantic("Entered static thread entry"); + char *errstr = NULL; + char errbuf[512] = {0,}; + WrtLogD("Entered static thread entry"); // Retrieve context Thread *This = static_cast(param); @@ -126,7 +128,13 @@ void *Thread::StaticThreadEntry(void *param) int result = pthread_setspecific(g_threadSpecific.threadSpecific, This); if (result != 0) { - LogError("Failed to set threadSpecific. Error: " << strerror(result)); +#ifdef _GNU_SOURCE + errstr = strerror_r(result, errbuf, sizeof(errbuf)); +#else + strerror_r(result, errbuf, sizeof(errbuf)); + errstr = errbuf; +#endif + WrtLogE("Failed to set threadSpecific. Error: %s", errstr); } // Enter thread proc @@ -140,16 +148,16 @@ void *Thread::StaticThreadEntry(void *param) // Critical section { // Leave running state - Mutex::ScopedLock lock(&This->m_stateMutex); + std::lock_guard lock(This->m_stateMutex); This->m_running = false; // Abandon thread if (This->m_abandon) { - LogPedantic("Thread was abandoned"); - pthread_detach(This->m_thread); + WrtLogD("Thread was abandoned"); + This->m_thread.detach(); } else { - LogPedantic("Thread is joinable"); + WrtLogD("Thread is joinable"); } } @@ -158,26 +166,26 @@ void *Thread::StaticThreadEntry(void *param) int Thread::ThreadEntry() { - LogPedantic("Entered default thread entry"); + WrtLogD("Entered default thread entry"); return Exec(); } void Thread::ProcessEvents() { - LogPedantic("Processing events"); + WrtLogD("Processing events"); // Steal current event list InternalEventList stolenEvents; // Enter event list critical section { - Mutex::ScopedLock lock(&m_eventMutex); + std::lock_guard lock(m_eventMutex); m_eventList.swap(stolenEvents); m_eventInvoker.Reset(); } // Process event list - LogPedantic("Stolen " << stolenEvents.size() << " internal events"); + WrtLogD("Stolen %u internal events", stolenEvents.size()); for (InternalEventList::iterator iterator = stolenEvents.begin(); iterator != stolenEvents.end(); @@ -195,15 +203,13 @@ void Thread::ProcessTimedEvents() { // Critical section on timed events mutex { - Mutex::ScopedLock lock(&m_timedEventMutex); + std::lock_guard lock(m_timedEventMutex); // Get current time unsigned long currentTimeMiliseconds = GetCurrentTimeMiliseconds(); // Info - LogPedantic( - "Processing timed events. Time now: " << currentTimeMiliseconds << - " ms"); + WrtLogD("Processing timed events. Time now: %lu ms", currentTimeMiliseconds); // All timed events are sorted chronologically // Emit timed out events @@ -213,12 +219,9 @@ void Thread::ProcessTimedEvents() m_timedEventVector.begin()->dueTimeMiliseconds) { // Info - LogPedantic( - "Transforming timed event into immediate event. Absolute due time: " - << - (m_timedEventVector.begin()->registerTimeMiliseconds + - m_timedEventVector.begin()->dueTimeMiliseconds) << - " ms"); + WrtLogD("Transforming timed event into immediate event. Absolute due time: %lu ms", + (m_timedEventVector.begin()->registerTimeMiliseconds + + m_timedEventVector.begin()->dueTimeMiliseconds)); // Emit immediate event PushEvent(m_timedEventVector.begin()->event, @@ -243,7 +246,7 @@ unsigned long Thread::GetCurrentTimeMiliseconds() const int Thread::Exec() { - LogPedantic("Executing thread event processing"); + WrtLogD("Executing thread event processing"); const std::size_t MIN_HANDLE_LIST_SIZE = 4; @@ -287,7 +290,7 @@ int Thread::Exec() // Critical section on timed events mutex { - Mutex::ScopedLock lock(&m_timedEventMutex); + std::lock_guard lock(m_timedEventMutex); if (!m_timedEventVector.empty()) { unsigned long currentTimeMiliseconds = @@ -309,8 +312,7 @@ int Thread::Exec() } // Info - LogPedantic( - "Thread loop minimum wait time: " << minimumWaitTime << " ms"); + WrtLogD("Thread loop minimum wait time: %lu ms", minimumWaitTime); // Do thread waiting WaitableHandleIndexList waitableHandleIndexList = @@ -318,7 +320,7 @@ int Thread::Exec() if (waitableHandleIndexList.empty()) { // Timeout occurred. Process timed events. - LogPedantic("Timed event list elapsed invoker"); + WrtLogD("Timed event list elapsed invoker"); ProcessTimedEvents(); continue; } @@ -331,7 +333,7 @@ int Thread::Exec() { size_t index = *waitableHandleIndexIterator; - LogPedantic("Event loop triggered with index: " << index); + WrtLogD("Event loop triggered with index: %u", index); switch (index) { case 0: @@ -347,7 +349,7 @@ int Thread::Exec() if (m_directInvoke) { m_directInvoke = false; - LogPedantic("Handling direct invoker"); + WrtLogD("Handling direct invoker"); // Update list while (handleList.size() > MIN_HANDLE_LIST_SIZE) { @@ -370,7 +372,7 @@ int Thread::Exec() case 2: // Timed event list changed - LogPedantic("Timed event list changed invoker"); + WrtLogD("Timed event list changed invoker"); ProcessTimedEvents(); // Reset timed event invoker @@ -381,7 +383,7 @@ int Thread::Exec() case 3: // Waitable handle watch support invoker - LogPedantic("Waitable handle watch invoker event occurred"); + WrtLogD("Waitable handle watch invoker event occurred"); // First, remove all previous handles while (handleList.size() > MIN_HANDLE_LIST_SIZE) { @@ -401,14 +403,14 @@ int Thread::Exec() // Handle invoker in waitable watch support WaitableHandleWatchSupport::InvokerFinished(); - LogPedantic("Waitable handle watch invoker event handled"); + WrtLogD("Waitable handle watch invoker event handled"); // Done break; default: // Waitable event watch list - LogPedantic("Waitable handle watch event occurred"); + WrtLogD("Waitable handle watch event occurred"); // Handle event in waitable handle watch { @@ -421,7 +423,7 @@ int Thread::Exec() if (m_directInvoke) { m_directInvoke = false; - LogPedantic("Handling direct invoker"); + WrtLogD("Handling direct invoker"); // Update list while (handleList.size() > MIN_HANDLE_LIST_SIZE) { @@ -439,7 +441,7 @@ int Thread::Exec() } } - LogPedantic("Waitable handle watch event handled"); + WrtLogD("Waitable handle watch event handled"); // Done break; @@ -447,24 +449,25 @@ int Thread::Exec() } } - LogPedantic("Leaving thread event processing"); + WrtLogD("Leaving thread event processing"); return 0; } void Thread::Run() { - LogPedantic("Running thread"); + WrtLogD("Running thread"); // Critical section { - Mutex::ScopedLock lock(&m_stateMutex); + std::lock_guard lock(m_stateMutex); if (m_running) { return; } - // Try to create new thread - if (pthread_create(&m_thread, NULL, &StaticThreadEntry, this) != 0) { + try{ + m_thread = std::thread(StaticThreadEntry,this); + }catch(std::system_error e){ Throw(Exception::RunFailed); } @@ -475,43 +478,36 @@ void Thread::Run() m_running = true; } - LogPedantic("Thread run"); + WrtLogD("Thread run"); } void Thread::Quit() { - pthread_t joinableThread; - // Critical section { - Mutex::ScopedLock lock(&m_stateMutex); + std::lock_guard lock(m_stateMutex); // Is thread running ? if (!m_running) { return; } - LogPedantic("Quitting thread..."); + WrtLogD("Quitting thread..."); // Do not abandon thread, we will join m_abandon = false; // Singal quit waitable event m_quitEvent.Signal(); - - // Copy joinable thread identifier, because - // we are leaving critical section - joinableThread = m_thread; } - // Wait for joinable thread - void *result; - - if (pthread_join(joinableThread, &result) != 0) { + try{ + m_thread.join(); + }catch(std::system_error e){ Throw(Exception::QuitFailed); } - LogPedantic("Thread quit"); + WrtLogD("Thread quit"); } void Thread::PushEvent(void *event, @@ -520,7 +516,7 @@ void Thread::PushEvent(void *event, void *userParam) { // Enter event list critical section - Mutex::ScopedLock lock(&m_eventMutex); + std::lock_guard lock(m_eventMutex); // Push new event m_eventList.push_back(InternalEvent(event, userParam, eventDispatchProc, @@ -529,7 +525,7 @@ void Thread::PushEvent(void *event, // Trigger invoker m_eventInvoker.Signal(); - LogPedantic("Event pushed and invoker signaled"); + WrtLogD("Event pushed and invoker signaled"); } void Thread::PushTimedEvent(void *event, @@ -542,7 +538,7 @@ void Thread::PushTimedEvent(void *event, Assert(dueTimeSeconds >= 0.0); // Enter timed event list critical section - Mutex::ScopedLock lock(&m_timedEventMutex); + std::lock_guard lock(m_timedEventMutex); // Get current time unsigned long currentTimeMiliseconds = GetCurrentTimeMiliseconds(); @@ -564,10 +560,9 @@ void Thread::PushTimedEvent(void *event, // Trigger invoker m_timedEventInvoker.Signal(); - LogPedantic( - "Timed event pushed and invoker signaled: due time: " << - dueTimeMiliseconds << " ms, absolute due time: " << - currentTimeMiliseconds + dueTimeMiliseconds << " ms"); + WrtLogD("Timed event pushed and invoker signaled: " + "due time: %lu ms, absolute due time: %lu ms", + dueTimeMiliseconds, currentTimeMiliseconds + dueTimeMiliseconds); } Thread *Thread::GetInvokerThread() diff --git a/modules_wearable/core/src/type_list.cpp b/modules/core/src/type_list.cpp similarity index 100% rename from modules_wearable/core/src/type_list.cpp rename to modules/core/src/type_list.cpp diff --git a/modules_wearable/core/src/union_cast.cpp b/modules/core/src/union_cast.cpp similarity index 100% rename from modules_wearable/core/src/union_cast.cpp rename to modules/core/src/union_cast.cpp diff --git a/modules_wearable/core/src/waitable_event.cpp b/modules/core/src/waitable_event.cpp similarity index 88% rename from modules_wearable/core/src/waitable_event.cpp rename to modules/core/src/waitable_event.cpp index 4808896..3530d46 100644 --- a/modules_wearable/core/src/waitable_event.cpp +++ b/modules/core/src/waitable_event.cpp @@ -21,11 +21,11 @@ */ #include #include +#include #include #include #include #include -#include namespace DPL { WaitableEvent::WaitableEvent() @@ -35,8 +35,7 @@ WaitableEvent::WaitableEvent() } if (fcntl(m_pipe[0], F_SETFL, O_NONBLOCK | - fcntl(m_pipe[0], F_GETFL)) == -1) - { + fcntl(m_pipe[0], F_GETFL)) == -1) { Throw(Exception::CreateFailed); } } @@ -44,11 +43,11 @@ WaitableEvent::WaitableEvent() WaitableEvent::~WaitableEvent() { if (TEMP_FAILURE_RETRY(close(m_pipe[0])) == -1) { - Throw(Exception::DestroyFailed); + WrtLogW("Fail to close fd"); } if (TEMP_FAILURE_RETRY(close(m_pipe[1])) == -1) { - Throw(Exception::DestroyFailed); + WrtLogW("Fail to close fd"); } } @@ -62,7 +61,7 @@ void WaitableEvent::Signal() const char data = 0; if (TEMP_FAILURE_RETRY(write(m_pipe[1], &data, 1)) != 1) { - Throw(Exception::SignalFailed); + WrtLogW("Fail to signal fd"); } } @@ -71,7 +70,7 @@ void WaitableEvent::Reset() const char data; if (TEMP_FAILURE_RETRY(read(m_pipe[0], &data, 1)) != 1) { - Throw(Exception::ResetFailed); + WrtLogW("Fail to reset fd"); } } } // namespace DPL diff --git a/modules_wearable/core/src/waitable_handle.cpp b/modules/core/src/waitable_handle.cpp similarity index 99% rename from modules_wearable/core/src/waitable_handle.cpp rename to modules/core/src/waitable_handle.cpp index 5ea600d..c8e0cf6 100644 --- a/modules_wearable/core/src/waitable_handle.cpp +++ b/modules/core/src/waitable_handle.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include diff --git a/modules_mobile/core/src/waitable_handle_watch_support.cpp b/modules/core/src/waitable_handle_watch_support.cpp similarity index 87% rename from modules_mobile/core/src/waitable_handle_watch_support.cpp rename to modules/core/src/waitable_handle_watch_support.cpp index 53f8b65..13f765e 100644 --- a/modules_mobile/core/src/waitable_handle_watch_support.cpp +++ b/modules/core/src/waitable_handle_watch_support.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include @@ -36,30 +36,25 @@ WaitableHandleWatchSupport::~WaitableHandleWatchSupport() { // Developer assertions if (!m_watchersMap.empty()) { - LogWarning("### Leaked watchers map dump ###"); + WrtLogW("### Leaked watchers map dump ###"); for (WaitableHandleWatchersMap::const_iterator iterator = m_watchersMap.begin(); iterator != m_watchersMap.end(); ++iterator) { - LogWarning("### Waitable handle: " << iterator->first); + WrtLogW("### Waitable handle: %i", iterator->first); - LogWarning( - "### Read listeners: " << - iterator->second.readListenersCount); - LogWarning( - "### Write listeners: " << - iterator->second.writeListenersCount); + WrtLogW("### Read listeners: %u", iterator->second.readListenersCount); + WrtLogW("### Write listeners: %u", iterator->second.writeListenersCount); for (WaitableHandleListenerList::const_iterator listenersIterator = iterator->second.listeners.begin(); listenersIterator != iterator->second.listeners.end(); ++listenersIterator) { - LogWarning( - "### Mode: " << listenersIterator->mode << - ". Listener: 0x" << std::hex << listenersIterator->listener); + WrtLogW("### Mode: %i. Listener: %p", + listenersIterator->mode, listenersIterator->listener); } } } @@ -74,7 +69,7 @@ WaitableHandleListEx WaitableHandleWatchSupport::WaitableWatcherHandles() const { // Critical section { - RecursiveMutex::ScopedLock lock(&m_watchersMutex); + std::lock_guard lock(m_watchersMutex); WaitableHandleListEx handleList; @@ -103,7 +98,7 @@ WaitableHandleListEx WaitableHandleWatchSupport::WaitableWatcherHandles() const void WaitableHandleWatchSupport::InvokerFinished() { - LogPedantic("Invoker finished called"); + WrtLogD("Invoker finished called"); // Reset invoker m_watchersInvoker.Reset(); @@ -122,11 +117,11 @@ void WaitableHandleWatchSupport::HandleWatcher(WaitableHandle waitableHandle, // Warning: Listeners and/or watcher may also disappear during dispatching // handlers! // - LogPedantic("Waitable event occurred"); + WrtLogD("Waitable event occurred"); // Critical section for other threads { - RecursiveMutex::ScopedLock lock(&m_watchersMutex); + std::lock_guard lock(m_watchersMutex); // Notice: We must carefully call watchers here as they may disappear // (zero listeners) or be created during each of handler call @@ -145,7 +140,7 @@ void WaitableHandleWatchSupport::HandleWatcher(WaitableHandle waitableHandle, if (m_watchersMap.find(trackedWatchersIterator->first) == m_watchersMap.end()) { - LogPedantic("Watcher disappeared during watcher handler"); + WrtLogD("Watcher disappeared during watcher handler"); continue; } @@ -158,9 +153,8 @@ void WaitableHandleWatchSupport::HandleWatcher(WaitableHandle waitableHandle, WaitableHandleListenerList trackedListeners = trackedWatchersIterator->second.listeners; - LogPedantic( - "Calling waitable event listeners (" << - trackedListeners.size() << ")..."); + WrtLogD("Calling waitable event listeners (%u)...", + trackedListeners.size()); // Notice: We must carefully call listeners here as they may // disappear or be created during each of handler call @@ -181,7 +175,7 @@ void WaitableHandleWatchSupport::HandleWatcher(WaitableHandle waitableHandle, if (m_watchersMap.find(trackedWatchersIterator->first) == m_watchersMap.end()) { - LogPedantic("Watcher disappeared during watcher handler"); + WrtLogD("Watcher disappeared during watcher handler"); break; } @@ -207,8 +201,7 @@ void WaitableHandleWatchSupport::HandleWatcher(WaitableHandle waitableHandle, } if (!listenerStillExists) { - LogPedantic( - "Watcher listener disappeared during watcher handler"); + WrtLogD("Watcher listener disappeared during watcher handler"); break; } @@ -218,17 +211,17 @@ void WaitableHandleWatchSupport::HandleWatcher(WaitableHandle waitableHandle, } // Call waitable event watch listener - LogPedantic("Before tracker listener call..."); + WrtLogD("Before tracker listener call..."); trackedListenersIterator->listener->OnWaitableHandleEvent( trackedWatchersIterator->first, trackedListenersIterator->mode); - LogPedantic("After tracker listener call..."); + WrtLogD("After tracker listener call..."); } // Now call all those listeners who registered during listener calls // FIXME: Implement! Notice, that scenario may be recursive! - LogPedantic("Waitable event listeners called"); + WrtLogD("Waitable event listeners called"); // No more waitable events possible - consistency check break; @@ -242,7 +235,7 @@ void WaitableHandleWatchSupport::AddWaitableHandleWatch( WaitMode::Type mode) { // Enter waitable event list critical section - RecursiveMutex::ScopedLock lock(&m_watchersMutex); + std::lock_guard lock(m_watchersMutex); // Find proper list to register into WaitableHandleWatchersMap::iterator mapIterator = m_watchersMap.find( @@ -263,7 +256,7 @@ void WaitableHandleWatchSupport::AddWaitableHandleWatch( } } - LogPedantic("Adding waitable handle watch: " << waitableHandle); + WrtLogD("Adding waitable handle watch: %i", waitableHandle); // Push new waitable event watch if (mapIterator != m_watchersMap.end()) { @@ -291,7 +284,7 @@ void WaitableHandleWatchSupport::AddWaitableHandleWatch( // Trigger waitable event invoker to commit changes CommitInvoker(); - LogPedantic("Waitable event watch added and invoker signaled"); + WrtLogD("Waitable event watch added and invoker signaled"); } void WaitableHandleWatchSupport::RemoveWaitableHandleWatch( @@ -300,7 +293,7 @@ void WaitableHandleWatchSupport::RemoveWaitableHandleWatch( WaitMode::Type mode) { // Enter waitable event list critical section - RecursiveMutex::ScopedLock lock(&m_watchersMutex); + std::lock_guard lock(m_watchersMutex); // Find proper list with listener WaitableHandleWatchersMap::iterator mapIterator = m_watchersMap.find( @@ -329,7 +322,7 @@ void WaitableHandleWatchSupport::RemoveWaitableHandleWatch( // Same pair listener-mode must exist Assert(listIterator != mapIterator->second.listeners.end()); - LogPedantic("Removing waitable handle watch: " << waitableHandle); + WrtLogD("Removing waitable handle watch: %i", waitableHandle); // Remove waitable event watch mapIterator->second.listeners.erase(listIterator); @@ -356,19 +349,19 @@ void WaitableHandleWatchSupport::RemoveWaitableHandleWatch( // Trigger waitable event invoker to commit changes CommitInvoker(); - LogPedantic("Waitable event watch removed and invoker signaled"); + WrtLogD("Waitable event watch removed and invoker signaled"); } void WaitableHandleWatchSupport::CommitInvoker() { // Check calling context and execute invoker if (Thread::GetCurrentThread() == GetInvokerThread()) { - LogPedantic("Calling direct invoker"); + WrtLogD("Calling direct invoker"); // Direct invoker call HandleDirectInvoker(); } else { - LogPedantic("Calling indirect invoker"); + WrtLogD("Calling indirect invoker"); // Indirect invoker call m_watchersInvoker.Signal(); diff --git a/modules_mobile/core/src/zip_input.cpp b/modules/core/src/zip_input.cpp old mode 100644 new mode 100755 similarity index 83% rename from modules_mobile/core/src/zip_input.cpp rename to modules/core/src/zip_input.cpp index fadc60f..ce2abd4 --- a/modules_mobile/core/src/zip_input.cpp +++ b/modules/core/src/zip_input.cpp @@ -28,11 +28,10 @@ #include #include #include -#include +#include #include -#include #include -#include +#include #include #include @@ -58,7 +57,7 @@ class ScopedUnzClose } if (unzClose(m_file) != UNZ_OK) { - LogPedantic("Failed to close zip input file"); + WrtLogD("Failed to close zip input file"); } } @@ -110,9 +109,16 @@ class Device }; public: - Device(const std::string &fileName) + + Device (const Device &) = delete; + Device & operator= (const Device &) = delete; + + Device(const std::string &fileName) : + m_handle(-1), + m_size(0), + m_address(NULL) { - LogPedantic("Creating file mapping"); + WrtLogD("Creating file mapping"); // Open device and map it to user space int file = TEMP_FAILURE_RETRY(open(fileName.c_str(), O_RDONLY)); @@ -151,10 +157,8 @@ class Device m_size = size; m_address = static_cast(address); - LogPedantic("Created file mapping: " << fileName << - " of size: " << m_size << - " at address: " << std::hex << - static_cast(m_address)); + WrtLogD("Created file mapping: %s of size: %lli at address: %p", + fileName.c_str(), m_size, m_address); } ~Device() @@ -162,14 +166,15 @@ class Device // Close mapping if (munmap(m_address, static_cast(m_size)) == -1) { int error = errno; - LogPedantic("Failed to munmap file. errno = " << error); + WrtLogD("Failed to munmap file. errno = %i", error); } - + m_address= NULL; // Close file descriptor if (close(m_handle) == -1) { int error = errno; - LogPedantic("Failed to close file. errno = " << error); + WrtLogD("Failed to close file. errno = %i", error); } + m_handle = -1; } // zlib_filefunc64_def interface: files @@ -188,12 +193,22 @@ class Device void* buf, uLong size) { + if(!buf){ + WrtLogE("target buffer is null"); + return -1; + } + Device *device = static_cast(opaque); File *deviceFile = static_cast(pstream); + if(device->m_address == NULL) { + WrtLogE("Device: already closed"); + return -1; + } + // Check if offset is out of bounds if (deviceFile->offset >= device->m_size) { - LogPedantic("Device: read offset out of bounds"); + WrtLogD("Device: read offset out of bounds"); return -1; } @@ -209,6 +224,10 @@ class Device bytesToRead = static_cast(size); } + if(device->m_size < deviceFile->offset + bytesToRead){ + WrtLogE("Device : end offset out of bounds"); + return -1; + } // Do copy memcpy(buf, device->m_address + deviceFile->offset, @@ -227,7 +246,7 @@ class Device uLong /*size*/) { // Not supported by device - LogPedantic("Unsupported function called!"); + WrtLogD("Unsupported function called!"); return -1; } @@ -296,10 +315,10 @@ ZipInput::ZipInput(const std::string &fileName) : m_totalUncompressedSize(0), m_fileInfos() { - LogPedantic("Zip input file: " << fileName); + WrtLogD("Zip input file: %s", fileName.c_str()); // Create master device - LogPedantic("Creating master device"); + WrtLogD("Creating master device"); std::unique_ptr device(new Device(fileName)); // Open master file @@ -313,11 +332,11 @@ ZipInput::ZipInput(const std::string &fileName) : interface.zerror_file = &Device::testerror_file; interface.opaque = device.get(); - LogPedantic("Opening zip file"); + WrtLogD("Opening zip file"); unzFile file = unzOpen2_64(NULL, &interface); if (file == NULL) { - LogPedantic("Failed to open zip file"); + WrtLogD("Failed to open zip file"); // Some errror occured ThrowMsg(Exception::OpenFailed, @@ -336,14 +355,14 @@ ZipInput::ZipInput(const std::string &fileName) : m_masterFile = scopedUnzClose.Release(); m_device = device.release(); - LogPedantic("Zip file opened"); + WrtLogD("Zip file opened"); } ZipInput::~ZipInput() { // Close zip if (unzClose(static_cast(m_masterFile)) != UNZ_OK) { - LogPedantic("Failed to close zip input file"); + WrtLogD("Failed to close zip input file"); } // Close device @@ -358,7 +377,7 @@ void ZipInput::ReadGlobalInfo(void *masterFile) if (unzGetGlobalInfo(static_cast(masterFile), &globalInfo) != UNZ_OK) { - LogPedantic("Failed to read zip global info"); + WrtLogD("Failed to read zip global info"); ThrowMsg(Exception::ReadGlobalInfoFailed, "Failed to read global info"); @@ -367,26 +386,26 @@ void ZipInput::ReadGlobalInfo(void *masterFile) m_numberOfFiles = static_cast(globalInfo.number_entry); m_globalCommentSize = static_cast(globalInfo.size_comment); - LogPedantic("Number of files: " << m_numberOfFiles); - LogPedantic("Global comment size: " << m_globalCommentSize); + WrtLogD("Number of files: %u", m_numberOfFiles); + WrtLogD("Global comment size: %u", m_globalCommentSize); } void ZipInput::ReadGlobalComment(void *masterFile) { - ScopedArray comment(new char[m_globalCommentSize + 1]); + std::unique_ptr comment(new char[m_globalCommentSize + 1]); if (unzGetGlobalComment(static_cast(masterFile), - comment.Get(), + comment.get(), m_globalCommentSize + 1) != UNZ_OK) { - LogPedantic("Failed to read zip global comment"); + WrtLogD("Failed to read zip global comment"); ThrowMsg(Exception::ReadGlobalCommentFailed, "Failed to read global comment"); } - m_globalComment = comment.Get(); - LogPedantic("Global comment: " << m_globalComment); + m_globalComment = comment.get(); + WrtLogD("Global comment: %s", m_globalComment.c_str()); } void ZipInput::ReadInfos(void *masterFile) @@ -395,7 +414,7 @@ void ZipInput::ReadInfos(void *masterFile) m_fileInfos.reserve(m_numberOfFiles); if (unzGoToFirstFile(static_cast(masterFile)) != UNZ_OK) { - LogPedantic("Failed to go to first file"); + WrtLogD("Failed to go to first file"); ThrowMsg(Exception::SeekFileFailed, "Failed to seek first file"); } @@ -405,7 +424,7 @@ void ZipInput::ReadInfos(void *masterFile) if (unzGetFilePos(static_cast(masterFile), &filePos) != UNZ_OK) { - LogPedantic("Failed to get file pos"); + WrtLogD("Failed to get file pos"); ThrowMsg(Exception::FileInfoFailed, "Failed to get zip file info"); } @@ -420,23 +439,23 @@ void ZipInput::ReadInfos(void *masterFile) NULL, 0) != UNZ_OK) { - LogPedantic("Failed to get file pos"); + WrtLogD("Failed to get file pos"); ThrowMsg(Exception::FileInfoFailed, "Failed to get zip file info"); } - ScopedArray fileName(new char[fileInfo.size_filename + 1]); - ScopedArray fileComment(new char[fileInfo.size_file_comment + 1]); + std::unique_ptr fileName(new char[fileInfo.size_filename + 1]); + std::unique_ptr fileComment(new char[fileInfo.size_file_comment + 1]); if (unzGetCurrentFileInfo64(static_cast(masterFile), &fileInfo, - fileName.Get(), + fileName.get(), fileInfo.size_filename + 1, NULL, 0, - fileComment.Get(), + fileComment.get(), fileInfo.size_file_comment + 1) != UNZ_OK) { - LogPedantic("Failed to get file pos"); + WrtLogD("Failed to get file pos"); ThrowMsg(Exception::FileInfoFailed, "Failed to get zip file info"); } @@ -446,8 +465,8 @@ void ZipInput::ReadInfos(void *masterFile) static_cast(filePos.pos_in_zip_directory), static_cast(filePos.num_of_file) ), - std::string(fileName.Get()), - std::string(fileComment.Get()), + std::string(fileName.get()), + std::string(fileComment.get()), static_cast(fileInfo.compressed_size), static_cast(fileInfo.uncompressed_size) ) @@ -459,7 +478,7 @@ void ZipInput::ReadInfos(void *masterFile) if (unzGoToNextFile( static_cast(masterFile)) != UNZ_OK) { - LogPedantic("Failed to go to next file"); + WrtLogD("Failed to go to next file"); ThrowMsg(Exception::FileInfoFailed, "Failed to go to next file"); @@ -519,11 +538,11 @@ ZipInput::File::File(class Device *device, FileHandle handle) interface.zerror_file = &Device::testerror_file; interface.opaque = device; - LogPedantic("Opening zip file"); + WrtLogD("Opening zip file"); unzFile file = unzOpen2_64(NULL, &interface); if (file == NULL) { - LogPedantic("Failed to open zip file"); + WrtLogD("Failed to open zip file"); // Some errror occured ThrowMsg(ZipInput::Exception::OpenFileFailed, @@ -540,7 +559,7 @@ ZipInput::File::File(class Device *device, FileHandle handle) }; if (unzGoToFilePos64(file, &filePos) != UNZ_OK) { - LogPedantic("Failed to seek to zip file"); + WrtLogD("Failed to seek to zip file"); // Some errror occured ThrowMsg(ZipInput::Exception::OpenFileFailed, @@ -549,7 +568,7 @@ ZipInput::File::File(class Device *device, FileHandle handle) // Open current file for reading if (unzOpenCurrentFile(file) != UNZ_OK) { - LogPedantic("Failed to open current zip file"); + WrtLogD("Failed to open current zip file"); // Some errror occured ThrowMsg(ZipInput::Exception::OpenFileFailed, @@ -559,19 +578,19 @@ ZipInput::File::File(class Device *device, FileHandle handle) // Release scoped unz close m_file = scopedUnzClose.Release(); - LogPedantic("Zip file opened"); + WrtLogD("Zip file opened"); } ZipInput::File::~File() { // Close current file for reading if (unzCloseCurrentFile(static_cast(m_file)) != UNZ_OK) { - LogPedantic("Failed to close current zip input file"); + WrtLogD("Failed to close current zip input file"); } // Close zip file if (unzClose(static_cast(m_file)) != UNZ_OK) { - LogPedantic("Failed to close zip input file"); + WrtLogD("Failed to close zip input file"); } } @@ -588,7 +607,7 @@ DPL::BinaryQueueAutoPtr ZipInput::File::Read(size_t size) size; // Extract zip file data (one-copy) - ScopedFree rawBuffer(malloc(sizeToRead)); + std::unique_ptr rawBuffer(malloc(sizeToRead)); if (!rawBuffer) { throw std::bad_alloc(); @@ -596,12 +615,12 @@ DPL::BinaryQueueAutoPtr ZipInput::File::Read(size_t size) // Do unpack int bytes = unzReadCurrentFile(static_cast(m_file), - rawBuffer.Get(), + rawBuffer.get(), sizeToRead); // Internal unzipper error if (bytes < 0) { - LogPedantic("Extract failed. Error: " << bytes); + WrtLogD("Extract failed. Error: %i", bytes); ThrowMsg(ZipInput::Exception::ReadFileFailed, "Failed to extract file with error: " << bytes); @@ -610,12 +629,12 @@ DPL::BinaryQueueAutoPtr ZipInput::File::Read(size_t size) // Data was read (may be zero bytes) DPL::BinaryQueueAutoPtr buffer(new DPL::BinaryQueue()); - buffer->AppendUnmanaged(rawBuffer.Get(), + buffer->AppendUnmanaged(rawBuffer.get(), static_cast(bytes), &DPL::BinaryQueue::BufferDeleterFree, NULL); - rawBuffer.Release(); + rawBuffer.release(); return buffer; } diff --git a/modules_mobile/custom_handler_dao/CMakeLists.txt b/modules/custom_handler_dao/CMakeLists.txt similarity index 99% rename from modules_mobile/custom_handler_dao/CMakeLists.txt rename to modules/custom_handler_dao/CMakeLists.txt index 1afddd5..4a88649 100644 --- a/modules_mobile/custom_handler_dao/CMakeLists.txt +++ b/modules/custom_handler_dao/CMakeLists.txt @@ -31,6 +31,7 @@ INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(CUSTOM_HANDLER_DAO_DEPS glib-2.0 + dlog REQUIRED) SET(CUSTOM_HANDLER_DAO_INCLUDE_DIRS diff --git a/modules_mobile/custom_handler_dao/dao/CustomHandlerDatabase.cpp b/modules/custom_handler_dao/dao/CustomHandlerDatabase.cpp similarity index 98% rename from modules_mobile/custom_handler_dao/dao/CustomHandlerDatabase.cpp rename to modules/custom_handler_dao/dao/CustomHandlerDatabase.cpp index 5f26fd7..a2b75f7 100644 --- a/modules_mobile/custom_handler_dao/dao/CustomHandlerDatabase.cpp +++ b/modules/custom_handler_dao/dao/CustomHandlerDatabase.cpp @@ -23,7 +23,7 @@ DPL::DB::SqlConnection::Flag::Type CustomHandler_DB_FLAGS = DPL::DB::SqlConnection::Flag::UseLucene; } -DPL::Mutex g_dbQueriesMutex; +std::mutex g_dbQueriesMutex; DPL::DB::ThreadDatabaseSupport g_dbInterface(CustomHandler_DB_DATABASE, CustomHandler_DB_FLAGS); diff --git a/modules_wearable/custom_handler_dao/dao/custom_handler_dao.cpp b/modules/custom_handler_dao/dao/custom_handler_dao.cpp similarity index 92% rename from modules_wearable/custom_handler_dao/dao/custom_handler_dao.cpp rename to modules/custom_handler_dao/dao/custom_handler_dao.cpp index 6d57771..2805d43 100644 --- a/modules_wearable/custom_handler_dao/dao/custom_handler_dao.cpp +++ b/modules/custom_handler_dao/dao/custom_handler_dao.cpp @@ -51,8 +51,8 @@ CustomHandlerDAO::~CustomHandlerDAO() void CustomHandlerDAO::registerContentHandler(const CustomHandler& handler) { - LogDebug("Registering content handler " << handler.target << " " << - handler.base_url); + WrtLogD("Registering content handler %ls %ls", + handler.target.c_str(), handler.base_url.c_str()); Try { if (handler.user_decision & Agreed) { //need to disable all previous, agreed entries @@ -66,7 +66,7 @@ void CustomHandlerDAO::registerContentHandler(const CustomHandler& handler) if (rows.size() > 1) { //more than one activ content handler - not good. Remove all. //this should never happen - LogError("Database data incoherent."); + WrtLogE("Database data incoherent."); CUSTOM_HANDLER_DB_DELETE(deleteContent, ContentHandlers); deleteContent->Where(And(Equals( handler.target), @@ -79,7 +79,7 @@ void CustomHandlerDAO::registerContentHandler(const CustomHandler& handler) //all content handlers removed. New one can be inserted } else if (!rows.empty()) { //one active handler. Can be updaed - LogDebug("Activ content handler exist. Update"); + WrtLogD("Activ content handler exist. Update"); CUSTOM_HANDLER_DB_UPDATE(update, ContentHandlers); update->Where(And(Equals(handler. target), @@ -101,11 +101,11 @@ void CustomHandlerDAO::registerContentHandler(const CustomHandler& handler) update->Execute(); } } - LogDebug("Inserting new content handler"); + WrtLogD("Inserting new content handler"); ContentHandlers::Row row; fillRow(row, handler, m_pkgName); if (getContentHandler(handler.target, handler.url, handler.base_url)) { - LogDebug("Content handler exist. Update its state"); + WrtLogD("Content handler exist. Update its state"); CUSTOM_HANDLER_DB_UPDATE(updateRow, ContentHandlers); updateRow->Where(And(Equals(m_pkgName), And(Equals(handler. @@ -116,13 +116,13 @@ void CustomHandlerDAO::registerContentHandler(const CustomHandler& handler) handler.base_url))))); updateRow->Values(row); updateRow->Execute(); - LogDebug("updated"); + WrtLogD("updated"); return; } CUSTOM_HANDLER_DB_INSERT(insert, ContentHandlers); insert->Values(row); insert->Execute(); - LogDebug("insterted"); + WrtLogD("insterted"); } Catch(DPL::DB::SqlConnection::Exception::Base){ ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, @@ -132,8 +132,7 @@ void CustomHandlerDAO::registerContentHandler(const CustomHandler& handler) void CustomHandlerDAO::registerProtocolHandler(const CustomHandler& handler) { - LogDebug("Registering protocol handler " << handler.target << " " << - handler.base_url); + WrtLogD("Registering protocol handler %ls %ls", handler.target.c_str(), handler.base_url.c_str()); Try { if (handler.user_decision & Agreed) { //need to disable all previous, agreed entries @@ -147,7 +146,7 @@ void CustomHandlerDAO::registerProtocolHandler(const CustomHandler& handler) if (rows.size() > 1) { //more than one activ protocol handler - not good. Remove all. //this should never happen - LogError("Database data incoherent."); + WrtLogE("Database data incoherent."); CUSTOM_HANDLER_DB_DELETE(deleteProtocol, ProtocolHandlers); deleteProtocol->Where(And(Equals( handler.target), @@ -181,13 +180,13 @@ void CustomHandlerDAO::registerProtocolHandler(const CustomHandler& handler) update->Execute(); } } - LogDebug("Inserting new protocol handler"); + WrtLogD("Inserting new protocol handler"); ProtocolHandlers::Row row; fillRow(row, handler, m_pkgName); if (getProtocolHandler(handler.target, handler.url, handler.base_url)) { - LogDebug("Protocol handler exist. Update its state"); + WrtLogD("Protocol handler exist. Update its state"); CUSTOM_HANDLER_DB_UPDATE(updateRow, ProtocolHandlers); updateRow->Where(And(Equals(m_pkgName), And(Equals(handler. @@ -198,13 +197,13 @@ void CustomHandlerDAO::registerProtocolHandler(const CustomHandler& handler) handler.base_url))))); updateRow->Values(row); updateRow->Execute(); - LogDebug("updated"); + WrtLogD("updated"); return; } CUSTOM_HANDLER_DB_INSERT(insert, ProtocolHandlers); insert->Values(row); insert->Execute(); - LogDebug("insterted"); + WrtLogD("insterted"); } Catch(DPL::DB::SqlConnection::Exception::Base){ ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, @@ -215,7 +214,7 @@ void CustomHandlerDAO::registerProtocolHandler(const CustomHandler& handler) void CustomHandlerDAO::unregisterContentHandler(const DPL::String& target, const DPL::String& url) { - LogDebug("Removing content handler " << target << " " << url); + WrtLogD("Removing content handler %ls %ls", target.c_str(), url.c_str()); Try { CUSTOM_HANDLER_DB_DELETE(deleteFrom, ContentHandlers); deleteFrom->Where(And(Equals(m_pkgName), @@ -232,7 +231,7 @@ void CustomHandlerDAO::unregisterContentHandler(const DPL::String& target, void CustomHandlerDAO::unregisterProtocolHandler(const DPL::String& target, const DPL::String& url) { - LogDebug("Removing protocol handler " << target << " " << url); + WrtLogD("Removing protocol handler %ls %ls", target.c_str(), url.c_str()); Try { CUSTOM_HANDLER_DB_DELETE(deleteFrom, ProtocolHandlers); deleteFrom->Where(And(Equals(m_pkgName), @@ -250,7 +249,7 @@ void CustomHandlerDAO::unregisterContentHandler(const DPL::String& target, const DPL::String& url, const DPL::String& baseURL) { - LogDebug("Removing content handler " << target << " " << url); + WrtLogD("Removing content handler %ls %ls", target.c_str(), url.c_str()); Try { CUSTOM_HANDLER_DB_DELETE(deleteFrom, ContentHandlers); deleteFrom->Where(And(Equals(m_pkgName), @@ -269,7 +268,7 @@ void CustomHandlerDAO::unregisterProtocolHandler(const DPL::String& target, const DPL::String& url, const DPL::String& baseURL) { - LogDebug("Removing protocol handler " << target << " " << url); + WrtLogD("Removing protocol handler %ls %ls", target.c_str(), url.c_str()); Try { CUSTOM_HANDLER_DB_DELETE(deleteFrom, ProtocolHandlers); deleteFrom->Where(And(Equals(m_pkgName), @@ -287,7 +286,7 @@ void CustomHandlerDAO::unregisterProtocolHandler(const DPL::String& target, void CustomHandlerDAO::removeWidgetProtocolHandlers() { - LogDebug("ente"); + WrtLogD("enter"); Try { CUSTOM_HANDLER_DB_DELETE(deleteProtocol, ProtocolHandlers); deleteProtocol->Where(Equals(m_pkgName)); @@ -300,7 +299,7 @@ void CustomHandlerDAO::removeWidgetProtocolHandlers() void CustomHandlerDAO::removeWidgetContentHandlers() { - LogDebug("ente"); + WrtLogD("enter"); Try { CUSTOM_HANDLER_DB_DELETE(deleteContent, ContentHandlers); deleteContent->Where(Equals(m_pkgName)); diff --git a/modules_wearable/custom_handler_dao/dao/custom_handler_dao_read_only.cpp b/modules/custom_handler_dao/dao/custom_handler_dao_read_only.cpp similarity index 96% rename from modules_wearable/custom_handler_dao/dao/custom_handler_dao_read_only.cpp rename to modules/custom_handler_dao/dao/custom_handler_dao_read_only.cpp index fd88c12..0b34503 100644 --- a/modules_wearable/custom_handler_dao/dao/custom_handler_dao_read_only.cpp +++ b/modules/custom_handler_dao/dao/custom_handler_dao_read_only.cpp @@ -67,7 +67,7 @@ CustomHandlerPtr CustomHandlerDAOReadOnly::getProtocolHandler( const DPL::String& protocol, const DPL::String& url) { - LogDebug("Getting protocol handler"); + WrtLogD("Getting protocol handler"); Try { CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); @@ -87,7 +87,7 @@ CustomHandlerPtr CustomHandlerDAOReadOnly::getContentHandler( const DPL::String& content, const DPL::String& url) { - LogDebug("Getting content handler"); + WrtLogD("Getting content handler"); Try { CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers); @@ -106,7 +106,7 @@ CustomHandlerPtr CustomHandlerDAOReadOnly::getContentHandler( CustomHandlerPtr CustomHandlerDAOReadOnly::getActivProtocolHandler( const DPL::String& protocol) { - LogDebug("Getting active protocol handler"); + WrtLogD("Getting active protocol handler"); Try { CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); @@ -139,7 +139,7 @@ CustomHandlerPtr CustomHandlerDAOReadOnly::getProtocolHandler( const DPL::String& url, const DPL::String& baseURL) { - LogDebug("Check if protocol is registered"); + WrtLogD("Check if protocol is registered"); Try { CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); @@ -163,7 +163,7 @@ CustomHandlerPtr CustomHandlerDAOReadOnly::getProtocolHandler( CustomHandlerPtr CustomHandlerDAOReadOnly::getActivContentHandler( const DPL::String& content) { - LogDebug("Getting active content handler"); + WrtLogD("Getting active content handler"); Try { CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers); @@ -196,7 +196,7 @@ CustomHandlerPtr CustomHandlerDAOReadOnly::getContentHandler( const DPL::String& url, const DPL::String& baseURL) { - LogDebug("Check if content is registered"); + WrtLogD("Check if content is registered"); Try { CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers); diff --git a/modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h b/modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h similarity index 84% rename from modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h rename to modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h index 4eabd55..2f41a6e 100644 --- a/modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h +++ b/modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h @@ -18,8 +18,8 @@ #define _CUSTOM_HANDLER_DATABASE_H_ #include -#include #include +#include namespace CustomHandlerDB { namespace Interface { @@ -27,25 +27,25 @@ void attachDatabaseRO(); void attachDatabaseRW(); void detachDatabase(); -extern DPL::Mutex g_dbQueriesMutex; +extern std::mutex g_dbQueriesMutex; extern DPL::DB::ThreadDatabaseSupport g_dbInterface; } // namespace Interface } // namespace CustomHandlerDB -#define CUSTOM_HANDLER_DB_INTERNAL(tlsCommand, InternalType) \ - static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ - { \ - DPL::Mutex::ScopedLock lock( \ - &CustomHandlerDB::Interface::g_dbQueriesMutex); \ - if (!tlsCommand##Ptr) { \ - static DPL::ThreadLocalVariable tmp; \ - tlsCommand##Ptr = &tmp; \ - } \ - } \ - DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ - if (tlsCommand.IsNull()) \ - { \ - tlsCommand = InternalType(&CustomHandlerDB::Interface::g_dbInterface); \ +#define CUSTOM_HANDLER_DB_INTERNAL(tlsCommand, InternalType) \ + static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ + { \ + std::lock_guard lock( \ + CustomHandlerDB::Interface::g_dbQueriesMutex); \ + if (!tlsCommand##Ptr) { \ + static DPL::ThreadLocalVariable tmp; \ + tlsCommand##Ptr = &tmp; \ + } \ + } \ + DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ + if (tlsCommand.IsNull()) \ + { \ + tlsCommand = InternalType(&CustomHandlerDB::Interface::g_dbInterface);\ } #define CUSTOM_HANDLER_DB_SELECT(name, type) \ diff --git a/modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h b/modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h similarity index 100% rename from modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h rename to modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h diff --git a/modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h b/modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h similarity index 100% rename from modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h rename to modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h diff --git a/modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h b/modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h similarity index 100% rename from modules_wearable/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h rename to modules/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h diff --git a/modules_wearable/custom_handler_dao/orm/custom_handler_db b/modules/custom_handler_dao/orm/custom_handler_db similarity index 100% rename from modules_wearable/custom_handler_dao/orm/custom_handler_db rename to modules/custom_handler_dao/orm/custom_handler_db diff --git a/modules_wearable/custom_handler_dao/orm/custom_handler_db_definitions b/modules/custom_handler_dao/orm/custom_handler_db_definitions similarity index 100% rename from modules_wearable/custom_handler_dao/orm/custom_handler_db_definitions rename to modules/custom_handler_dao/orm/custom_handler_db_definitions diff --git a/modules_wearable/custom_handler_dao/orm/custom_handler_db_sql_generator.h b/modules/custom_handler_dao/orm/custom_handler_db_sql_generator.h similarity index 100% rename from modules_wearable/custom_handler_dao/orm/custom_handler_db_sql_generator.h rename to modules/custom_handler_dao/orm/custom_handler_db_sql_generator.h diff --git a/modules_wearable/i18n/dao/orm/gen_db_md5.sh b/modules/custom_handler_dao/orm/gen_db_md5.sh similarity index 100% rename from modules_wearable/i18n/dao/orm/gen_db_md5.sh rename to modules/custom_handler_dao/orm/gen_db_md5.sh diff --git a/modules_wearable/custom_handler_dao/orm/orm_generator_custom_handler.h b/modules/custom_handler_dao/orm/orm_generator_custom_handler.h similarity index 100% rename from modules_wearable/custom_handler_dao/orm/orm_generator_custom_handler.h rename to modules/custom_handler_dao/orm/orm_generator_custom_handler.h diff --git a/modules_wearable/widget_dao/orm/version_db b/modules/custom_handler_dao/orm/version_db similarity index 100% rename from modules_wearable/widget_dao/orm/version_db rename to modules/custom_handler_dao/orm/version_db diff --git a/modules_wearable/db/config.cmake b/modules/db/config.cmake similarity index 100% rename from modules_wearable/db/config.cmake rename to modules/db/config.cmake diff --git a/modules_wearable/db/include/dpl/db/naive_synchronization_object.h b/modules/db/include/dpl/db/naive_synchronization_object.h similarity index 100% rename from modules_wearable/db/include/dpl/db/naive_synchronization_object.h rename to modules/db/include/dpl/db/naive_synchronization_object.h diff --git a/modules_wearable/db/include/dpl/db/orm.h b/modules/db/include/dpl/db/orm.h old mode 100644 new mode 100755 similarity index 96% rename from modules_wearable/db/include/dpl/db/orm.h rename to modules/db/include/dpl/db/orm.h index 652e8e1..fc5f88f --- a/modules_wearable/db/include/dpl/db/orm.h +++ b/modules/db/include/dpl/db/orm.h @@ -26,12 +26,14 @@ #include #include #include +#include #include +#include +#include #include #include #include -#include #include #include #include @@ -56,8 +58,8 @@ namespace ORM { typedef size_t ColumnIndex; typedef size_t ArgumentIndex; -typedef DPL::Optional OptionalString; -typedef DPL::Optional OptionalInteger; +typedef boost::optional OptionalString; +typedef boost::optional OptionalInteger; typedef DPL::DB::SqlConnection::DataCommand DataCommand; namespace RelationTypes { @@ -430,6 +432,12 @@ public: { CustomRowUtil::CopyColumnList(r.m_columns, m_columns); } + CustomRow& operator=(const CustomRow& r) + { + if(this == &r) return *this; + CustomRowUtil::CopyColumnList(r.m_columns, m_columns); + return *this; + } virtual ~CustomRow() { @@ -663,7 +671,7 @@ protected: this->m_command = TableDefinition::AllocTableDataCommand( this->m_commandString.c_str(), Query::m_interface); - LogPedantic("Prepared SQL command " << this->m_commandString); + //WrtLogD("Prepared SQL command %s", this->m_commandString.c_str()); } } @@ -719,7 +727,7 @@ public: typedef DPL::DB::SqlConnection::RowID RowID; protected: - DPL::Optional m_orClause; + boost::optional m_orClause; Row m_row; class PrepareVisitor { @@ -761,7 +769,7 @@ protected: this->m_commandString += " ( " + visitor.m_columnNames + " ) "; this->m_commandString += "VALUES ( " + visitor.m_values + " )"; - LogPedantic("Prepared SQL command " << this->m_commandString); + //WrtLogD("Prepared SQL command %s", this->m_commandString.c_str()); this->m_command = TableDefinition::AllocTableDataCommand( this->m_commandString.c_str(), Query::m_interface); @@ -777,7 +785,7 @@ protected: public: explicit Insert( IOrmInterface* interface = NULL, - const DPL::Optional& orClause = DPL::Optional::Null) : + const boost::optional& orClause = boost::optional()) : Query(interface), m_orClause(orClause) { @@ -820,7 +828,7 @@ public: typedef std::list RowList; protected: - DPL::Optional m_orderBy; + boost::optional m_orderBy; std::string m_JoinClause; bool m_distinctResults; @@ -839,7 +847,7 @@ protected: QueryWithWhereClause::Prepare(); - if ( !m_orderBy.IsNull() ) + if ( !!m_orderBy ) { this->m_commandString += " ORDER BY " + *m_orderBy; } @@ -848,7 +856,7 @@ protected: this->m_commandString.c_str(), Query::m_interface); - LogPedantic("Prepared SQL command " << this->m_commandString); + //WrtLogD("Prepared SQL command %s", this->m_commandString.c_str()); } } @@ -1012,7 +1020,7 @@ public: typedef typename TableDefinition::Row Row; protected: - DPL::Optional m_orClause; + boost::optional m_orClause; Row m_row; class PrepareVisitor { @@ -1064,7 +1072,7 @@ protected: this->m_command = TableDefinition::AllocTableDataCommand( this->m_commandString.c_str(), Query::m_interface); - LogPedantic("Prepared SQL command " << this->m_commandString); + //WrtLogD("Prepared SQL command %s", this->m_commandString.c_str()); } } @@ -1080,7 +1088,7 @@ protected: public: explicit Update(IOrmInterface *interface = NULL, - const DPL::Optional& orClause = DPL::Optional::Null) : + const boost::optional& orClause = boost::optional()) : QueryWithWhereClause(interface), m_orClause(orClause) { diff --git a/modules_wearable/db/include/dpl/db/orm_generator.h b/modules/db/include/dpl/db/orm_generator.h similarity index 98% rename from modules_wearable/db/include/dpl/db/orm_generator.h rename to modules/db/include/dpl/db/orm_generator.h index 8bd9fdb..2c41e69 100644 --- a/modules_wearable/db/include/dpl/db/orm_generator.h +++ b/modules/db/include/dpl/db/orm_generator.h @@ -35,8 +35,8 @@ #define DPL_ORM_GENERATOR_H +#include #include -#include #include #include #include @@ -84,7 +84,7 @@ namespace ORM { #define SQL(...) #define TABLE_CONSTRAINTS(...) -#define OPTIONAL(type) DPL::Optional< type > +#define OPTIONAL(type) boost::optional< type > #define DATABASE_START(db_name) \ namespace db_name \ { \ @@ -182,7 +182,7 @@ namespace ORM { #define CREATE_TABLE(name) std::ostream& name::operator<<(std::ostream& ostr, const RowBase& row) { using ::operator<< ; ostr << STRINGIFY(name) << " ("; #define COLUMN_NOT_NULL(name, type, ...) ostr << " '" << row.name << "'" ; -#define COLUMN(name, type, ...) ostr << " '" << row.name << "'" ; +#define COLUMN(name, type, ...) if (!!(row.name)) { ostr << " '" << *(row.name) << "'"; } else { ostr << " '" << "NULL" << "'"; } #define CREATE_TABLE_END() ostr << " )" ; return ostr; } #include ORM_GENERATOR_DATABASE_NAME_LOCAL diff --git a/modules_wearable/db/include/dpl/db/orm_interface.h b/modules/db/include/dpl/db/orm_interface.h similarity index 100% rename from modules_wearable/db/include/dpl/db/orm_interface.h rename to modules/db/include/dpl/db/orm_interface.h diff --git a/modules_wearable/db/include/dpl/db/orm_macros.h b/modules/db/include/dpl/db/orm_macros.h similarity index 100% rename from modules_wearable/db/include/dpl/db/orm_macros.h rename to modules/db/include/dpl/db/orm_macros.h diff --git a/modules_wearable/db/include/dpl/db/sql_connection.h b/modules/db/include/dpl/db/sql_connection.h old mode 100644 new mode 100755 similarity index 89% rename from modules_wearable/db/include/dpl/db/sql_connection.h rename to modules/db/include/dpl/db/sql_connection.h index d1eab36..0ef4cd5 --- a/modules_wearable/db/include/dpl/db/sql_connection.h +++ b/modules/db/include/dpl/db/sql_connection.h @@ -24,11 +24,10 @@ #include #include -#include #include #include +#include #include -#include #include #include #include @@ -165,7 +164,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindInteger(ArgumentIndex position, const Optional &value); + void BindInteger(ArgumentIndex position, const boost::optional &value); /** * Bind optional int8 to the prepared statement argument. @@ -174,7 +173,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindInt8(ArgumentIndex position, const Optional &value); + void BindInt8(ArgumentIndex position, const boost::optional &value); /** * Bind optional int16 to the prepared statement argument. @@ -183,7 +182,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindInt16(ArgumentIndex position, const Optional &value); + void BindInt16(ArgumentIndex position, const boost::optional &value); /** * Bind optional int32 to the prepared statement argument. @@ -192,7 +191,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindInt32(ArgumentIndex position, const Optional &value); + void BindInt32(ArgumentIndex position, const boost::optional &value); /** * Bind optional int64 to the prepared statement argument. @@ -201,7 +200,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindInt64(ArgumentIndex position, const Optional &value); + void BindInt64(ArgumentIndex position, const boost::optional &value); /** * Bind optional float to the prepared statement argument. @@ -210,7 +209,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindFloat(ArgumentIndex position, const Optional &value); + void BindFloat(ArgumentIndex position, const boost::optional &value); /** * Bind optional double to the prepared statement argument. @@ -219,7 +218,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindDouble(ArgumentIndex position, const Optional &value); + void BindDouble(ArgumentIndex position, const boost::optional &value); /** * Bind optional string to the prepared statement argument. @@ -228,7 +227,7 @@ class SqlConnection * @param position Index of argument to bind value to * @param value Value to bind */ - void BindString(ArgumentIndex position, const Optional &value); + void BindString(ArgumentIndex position, const boost::optional &value); /** * Execute the prepared statement and/or move @@ -311,56 +310,56 @@ class SqlConnection * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalInteger(ColumnIndex column); + boost::optional GetColumnOptionalInteger(ColumnIndex column); /** * Get optional int8 value from column in current row. * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalInt8(ColumnIndex column); + boost::optional GetColumnOptionalInt8(ColumnIndex column); /** * Get optional int16value from column in current row. * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalInt16(ColumnIndex column); + boost::optional GetColumnOptionalInt16(ColumnIndex column); /** * Get optional int32 value from column in current row. * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalInt32(ColumnIndex column); + boost::optional GetColumnOptionalInt32(ColumnIndex column); /** * Get optional int64 value from column in current row. * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalInt64(ColumnIndex column); + boost::optional GetColumnOptionalInt64(ColumnIndex column); /** * Get optional float value from column in current row. * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalFloat(ColumnIndex column); + boost::optional GetColumnOptionalFloat(ColumnIndex column); /** * Get optional double value from column in current row. * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalDouble(ColumnIndex column); + boost::optional GetColumnOptionalDouble(ColumnIndex column); /** * Get optional string value from column in current row. * * @throw Exception::InvalidColumn */ - Optional GetColumnOptionalString(ColumnIndex column); + boost::optional GetColumnOptionalString(ColumnIndex column); }; // Move on copy semantics @@ -372,7 +371,7 @@ class SqlConnection public: enum Type { - None = 1 << 0, + NotDefined = 1 << 0, UseLucene = 1 << 1 }; @@ -425,7 +424,7 @@ class SqlConnection std::unique_ptr m_synchronizationObject; virtual void Connect(const std::string &address, - Flag::Type = Flag::None, Flag::Option = Flag::RO); + Flag::Type = Flag::NotDefined, Flag::Option = Flag::RO); virtual void Disconnect(); void TurnOnForeignKeys(); @@ -446,7 +445,7 @@ class SqlConnection * @param synchronizationObject A synchronization object to use. */ explicit SqlConnection(const std::string &address = std::string(), - Flag::Type flags = Flag::None, + Flag::Type flags = Flag::NotDefined, Flag::Option options = Flag::RO, SynchronizationObject *synchronizationObject = AllocDefaultSynchronizationObject()); diff --git a/modules_wearable/db/include/dpl/db/thread_database_support.h b/modules/db/include/dpl/db/thread_database_support.h old mode 100644 new mode 100755 similarity index 92% rename from modules_wearable/db/include/dpl/db/thread_database_support.h rename to modules/db/include/dpl/db/thread_database_support.h index 04ec923..5c3239d --- a/modules_wearable/db/include/dpl/db/thread_database_support.h +++ b/modules/db/include/dpl/db/thread_database_support.h @@ -24,6 +24,7 @@ #define DPL_THREAD_DATABASE_SUPPORT_H #include +#include #include #include #include @@ -97,7 +98,7 @@ class ThreadDatabaseSupport : } // Destroy connection - LogDebug("Destroying thread database connection: " << m_address); + WrtLogD("Destroying thread database connection: %s", m_address.c_str()); delete *Connection(); @@ -119,16 +120,16 @@ class ThreadDatabaseSupport : void TransactionUnref() { - LogPedantic("Unref transaction"); + WrtLogD("Unref transaction"); if (--(*TransactionDepth()) == 0) { - LogPedantic("Transaction is finalized"); + WrtLogD("Transaction is finalized"); if (*TransactionCancel()) { - LogPedantic("Transaction will be rolled back"); + WrtLogD("Transaction will be rolled back"); (*Connection())->RollbackTransaction(); } else { - LogPedantic("Transaction will be commited"); + WrtLogD("Transaction will be commited"); (*Connection())->CommitTransaction(); } } @@ -157,7 +158,7 @@ class ThreadDatabaseSupport : } // Initialize SQL connection described in traits - LogDebug("Attaching thread database connection: " << m_address); + WrtLogD("Attaching thread database connection: %s", m_address.c_str()); Connection() = new DPL::DB::SqlConnection( m_address.c_str(), m_flags, options); @@ -194,7 +195,7 @@ class ThreadDatabaseSupport : // It must not be in linger state yet Assert(*Linger() == false); - LogDebug("Detaching thread database connection: " << m_address); + WrtLogD("Detaching thread database connection: %s", m_address.c_str()); // Enter linger state *Linger() = true; @@ -246,11 +247,11 @@ class ThreadDatabaseSupport : // Calling thread must support thread database connections Assert(!Connection().IsNull()); - LogPedantic("Begin transaction"); + WrtLogD("Begin transaction"); // Addref transaction if (++(*TransactionDepth()) == 1) { - LogPedantic("Transaction is initialized"); + WrtLogD("Transaction is initialized"); TransactionCancel() = false; (*Connection())->BeginTransaction(); @@ -262,7 +263,7 @@ class ThreadDatabaseSupport : // Calling thread must support thread database connections Assert(!Connection().IsNull()); - LogPedantic("Commit transaction"); + WrtLogD("Commit transaction"); // Unref transation TransactionUnref(); diff --git a/modules_wearable/db/src/naive_synchronization_object.cpp b/modules/db/src/naive_synchronization_object.cpp similarity index 100% rename from modules_wearable/db/src/naive_synchronization_object.cpp rename to modules/db/src/naive_synchronization_object.cpp diff --git a/modules_wearable/db/src/orm.cpp b/modules/db/src/orm.cpp similarity index 100% rename from modules_wearable/db/src/orm.cpp rename to modules/db/src/orm.cpp diff --git a/modules_wearable/db/src/sql_connection.cpp b/modules/db/src/sql_connection.cpp similarity index 69% rename from modules_wearable/db/src/sql_connection.cpp rename to modules/db/src/sql_connection.cpp index a0e5a48..0ceba8f 100755 --- a/modules_wearable/db/src/sql_connection.cpp +++ b/modules/db/src/sql_connection.cpp @@ -20,9 +20,11 @@ * @brief This file is the implementation file of SQL connection */ #include +#include #include #include -#include +#include +#include #include #include #include @@ -52,7 +54,7 @@ class ScopedNotifyAll : return; } - LogPedantic("Notifying after successful synchronize"); + WrtLogD("Notifying after successful synchronize"); m_synchronizationObject->NotifyAll(); } }; @@ -74,14 +76,14 @@ SqlConnection::DataCommand::DataCommand(SqlConnection *connection, &m_stmt, NULL); if (ret == SQLITE_OK) { - LogPedantic("Data command prepared successfuly"); + WrtLogD("Data command prepared successfuly"); break; } else if (ret == SQLITE_BUSY) { - LogPedantic("Collision occurred while preparing SQL command"); + WrtLogD("Collision occurred while preparing SQL command"); // Synchronize if synchronization object is available if (connection->m_synchronizationObject) { - LogPedantic("Performing synchronization"); + WrtLogD("Performing synchronization"); connection->m_synchronizationObject->Synchronize(); continue; } @@ -92,14 +94,14 @@ SqlConnection::DataCommand::DataCommand(SqlConnection *connection, // Fatal error const char *error = sqlite3_errmsg(m_masterConnection->m_connection); - LogPedantic("SQL prepare data command failed"); - LogPedantic(" Statement: " << buffer); - LogPedantic(" Error: " << error); + WrtLogD("SQL prepare data command failed"); + WrtLogD(" Statement: %s", buffer); + WrtLogD(" Error: %s", error); ThrowMsg(Exception::SyntaxError, error); } - LogPedantic("Prepared data command: " << buffer); + WrtLogD("Prepared data command: %s", buffer); // Increment stored data command count ++m_masterConnection->m_dataCommandsCount; @@ -107,10 +109,10 @@ SqlConnection::DataCommand::DataCommand(SqlConnection *connection, SqlConnection::DataCommand::~DataCommand() { - LogPedantic("SQL data command finalizing"); + WrtLogD("SQL data command finalizing"); if (sqlite3_finalize(m_stmt) != SQLITE_OK) { - LogPedantic("Failed to finalize data command"); + WrtLogD("Failed to finalize data command"); } // Decrement stored data command count @@ -123,8 +125,8 @@ void SqlConnection::DataCommand::CheckBindResult(int result) const char *error = sqlite3_errmsg( m_masterConnection->m_connection); - LogPedantic("Failed to bind SQL statement parameter"); - LogPedantic(" Error: " << error); + WrtLogD("Failed to bind SQL statement parameter"); + WrtLogD(" Error: %s", error); ThrowMsg(Exception::SyntaxError, error); } @@ -134,8 +136,7 @@ void SqlConnection::DataCommand::BindNull( SqlConnection::ArgumentIndex position) { CheckBindResult(sqlite3_bind_null(m_stmt, position)); - LogPedantic("SQL data command bind null: [" - << position << "]"); + WrtLogD("SQL data command bind null: [%i]", position); } void SqlConnection::DataCommand::BindInteger( @@ -143,8 +144,7 @@ void SqlConnection::DataCommand::BindInteger( int value) { CheckBindResult(sqlite3_bind_int(m_stmt, position, value)); - LogPedantic("SQL data command bind integer: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind integer: [%i] -> %i", position, value); } void SqlConnection::DataCommand::BindInt8( @@ -153,8 +153,7 @@ void SqlConnection::DataCommand::BindInt8( { CheckBindResult(sqlite3_bind_int(m_stmt, position, static_cast(value))); - LogPedantic("SQL data command bind int8: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind int8: [%i] -> %i", position, value); } void SqlConnection::DataCommand::BindInt16( @@ -163,8 +162,7 @@ void SqlConnection::DataCommand::BindInt16( { CheckBindResult(sqlite3_bind_int(m_stmt, position, static_cast(value))); - LogPedantic("SQL data command bind int16: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind int16: [%i] -> %i", position, value); } void SqlConnection::DataCommand::BindInt32( @@ -173,8 +171,7 @@ void SqlConnection::DataCommand::BindInt32( { CheckBindResult(sqlite3_bind_int(m_stmt, position, static_cast(value))); - LogPedantic("SQL data command bind int32: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind int32: [%i] -> %i", position, value); } void SqlConnection::DataCommand::BindInt64( @@ -183,8 +180,7 @@ void SqlConnection::DataCommand::BindInt64( { CheckBindResult(sqlite3_bind_int64(m_stmt, position, static_cast(value))); - LogPedantic("SQL data command bind int64: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind int64: [%i] -> %lli", position, value); } void SqlConnection::DataCommand::BindFloat( @@ -193,8 +189,7 @@ void SqlConnection::DataCommand::BindFloat( { CheckBindResult(sqlite3_bind_double(m_stmt, position, static_cast(value))); - LogPedantic("SQL data command bind float: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind float: [%i] -> %f", position, value); } void SqlConnection::DataCommand::BindDouble( @@ -202,8 +197,7 @@ void SqlConnection::DataCommand::BindDouble( double value) { CheckBindResult(sqlite3_bind_double(m_stmt, position, value)); - LogPedantic("SQL data command bind double: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind double: [%i] -> %f", position, value); } void SqlConnection::DataCommand::BindString( @@ -220,8 +214,7 @@ void SqlConnection::DataCommand::BindString( value, strlen(value), SQLITE_TRANSIENT)); - LogPedantic("SQL data command bind string: [" - << position << "] -> " << value); + WrtLogD("SQL data command bind string: [%i] -> %s", position, value); } void SqlConnection::DataCommand::BindString( @@ -233,9 +226,9 @@ void SqlConnection::DataCommand::BindString( void SqlConnection::DataCommand::BindInteger( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { - if (value.IsNull()) { + if (!value) { BindNull(position); } else { BindInteger(position, *value); @@ -244,9 +237,9 @@ void SqlConnection::DataCommand::BindInteger( void SqlConnection::DataCommand::BindInt8( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { - if (value.IsNull()) { + if (!value) { BindNull(position); } else { BindInt8(position, *value); @@ -255,9 +248,9 @@ void SqlConnection::DataCommand::BindInt8( void SqlConnection::DataCommand::BindInt16( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { - if (value.IsNull()) { + if (!value) { BindNull(position); } else { BindInt16(position, *value); @@ -266,9 +259,9 @@ void SqlConnection::DataCommand::BindInt16( void SqlConnection::DataCommand::BindInt32( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { - if (value.IsNull()) { + if (!value) { BindNull(position); } else { BindInt32(position, *value); @@ -277,9 +270,9 @@ void SqlConnection::DataCommand::BindInt32( void SqlConnection::DataCommand::BindInt64( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { - if (value.IsNull()) { + if (!value) { BindNull(position); } else { BindInt64(position, *value); @@ -288,9 +281,9 @@ void SqlConnection::DataCommand::BindInt64( void SqlConnection::DataCommand::BindFloat( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { - if (value.IsNull()) { + if (!value) { BindNull(position); } else { BindFloat(position, *value); @@ -299,9 +292,9 @@ void SqlConnection::DataCommand::BindFloat( void SqlConnection::DataCommand::BindDouble( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { - if (value.IsNull()) { + if (!value) { BindNull(position); } else { BindDouble(position, *value); @@ -310,7 +303,7 @@ void SqlConnection::DataCommand::BindDouble( void SqlConnection::DataCommand::BindString( SqlConnection::ArgumentIndex position, - const Optional &value) + const boost::optional &value) { if (!!value) { BindString(position, ToUTF8String(*value).c_str()); @@ -329,17 +322,17 @@ bool SqlConnection::DataCommand::Step() int ret = sqlite3_step(m_stmt); if (ret == SQLITE_ROW) { - LogPedantic("SQL data command step ROW"); + WrtLogD("SQL data command step ROW"); return true; } else if (ret == SQLITE_DONE) { - LogPedantic("SQL data command step DONE"); + WrtLogD("SQL data command step DONE"); return false; } else if (ret == SQLITE_BUSY) { - LogPedantic("Collision occurred while executing SQL command"); + WrtLogD("Collision occurred while executing SQL command"); // Synchronize if synchronization object is available if (m_masterConnection->m_synchronizationObject) { - LogPedantic("Performing synchronization"); + WrtLogD("Performing synchronization"); m_masterConnection-> m_synchronizationObject->Synchronize(); @@ -353,8 +346,8 @@ bool SqlConnection::DataCommand::Step() // Fatal error const char *error = sqlite3_errmsg(m_masterConnection->m_connection); - LogPedantic("SQL step data command failed"); - LogPedantic(" Error: " << error); + WrtLogD("SQL step data command failed"); + WrtLogD(" Error: %s", error); ThrowMsg(Exception::InternalError, error); } @@ -372,7 +365,7 @@ void SqlConnection::DataCommand::Reset() */ sqlite3_reset(m_stmt); - LogPedantic("SQL data command reset"); + WrtLogD("SQL data command reset"); } void SqlConnection::DataCommand::CheckColumnIndex( @@ -386,7 +379,7 @@ void SqlConnection::DataCommand::CheckColumnIndex( bool SqlConnection::DataCommand::IsColumnNull( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column type: [" << column << "]"); + WrtLogD("SQL data command get column type: [%i]", column); CheckColumnIndex(column); return sqlite3_column_type(m_stmt, column) == SQLITE_NULL; } @@ -394,83 +387,83 @@ bool SqlConnection::DataCommand::IsColumnNull( int SqlConnection::DataCommand::GetColumnInteger( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column integer: [" << column << "]"); + WrtLogD("SQL data command get column integer: [%i]", column); CheckColumnIndex(column); int value = sqlite3_column_int(m_stmt, column); - LogPedantic(" Value: " << value); + WrtLogD(" Value: %i", value); return value; } int8_t SqlConnection::DataCommand::GetColumnInt8( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column int8: [" << column << "]"); + WrtLogD("SQL data command get column int8: [%i]", column); CheckColumnIndex(column); int8_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); + WrtLogD(" Value: %i", value); return value; } int16_t SqlConnection::DataCommand::GetColumnInt16( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column int16: [" << column << "]"); + WrtLogD("SQL data command get column int16: [%i]", column); CheckColumnIndex(column); int16_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); + WrtLogD(" Value: %i", value); return value; } int32_t SqlConnection::DataCommand::GetColumnInt32( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column int32: [" << column << "]"); + WrtLogD("SQL data command get column int32: [%i]", column); CheckColumnIndex(column); int32_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); + WrtLogD(" Value: %i", value); return value; } int64_t SqlConnection::DataCommand::GetColumnInt64( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column int64: [" << column << "]"); + WrtLogD("SQL data command get column int64: [%i]", column); CheckColumnIndex(column); int64_t value = static_cast(sqlite3_column_int64(m_stmt, column)); - LogPedantic(" Value: " << value); + WrtLogD(" Value: %lli", value); return value; } float SqlConnection::DataCommand::GetColumnFloat( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column float: [" << column << "]"); + WrtLogD("SQL data command get column float: [%i]", column); CheckColumnIndex(column); float value = static_cast(sqlite3_column_double(m_stmt, column)); - LogPedantic(" Value: " << value); + WrtLogD(" Value: %f", value); return value; } double SqlConnection::DataCommand::GetColumnDouble( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column double: [" << column << "]"); + WrtLogD("SQL data command get column double: [%i]", column); CheckColumnIndex(column); double value = sqlite3_column_double(m_stmt, column); - LogPedantic(" Value: " << value); + WrtLogD(" Value: %f", value); return value; } std::string SqlConnection::DataCommand::GetColumnString( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column string: [" << column << "]"); + WrtLogD("SQL data command get column string: [%i]", column); CheckColumnIndex(column); const char *value = reinterpret_cast( sqlite3_column_text(m_stmt, column)); - LogPedantic("Value: " << (value ? value : "NULL")); + WrtLogD(" Value: %s", value); if (value == NULL) { return std::string(); @@ -479,118 +472,116 @@ std::string SqlConnection::DataCommand::GetColumnString( return std::string(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalInteger( +boost::optional SqlConnection::DataCommand::GetColumnOptionalInteger( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional integer: [" - << column << "]"); + WrtLogD("SQL data command get column optional integer: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } int value = sqlite3_column_int(m_stmt, column); - LogPedantic(" Value: " << value); - return Optional(value); + WrtLogD(" Value: %i", value); + return boost::optional(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalInt8( +boost::optional SqlConnection::DataCommand::GetColumnOptionalInt8( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional int8: [" - << column << "]"); + WrtLogD("SQL data command get column optional int8: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } int8_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); + WrtLogD(" Value: %i", value); + return boost::optional(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalInt16( +boost::optional SqlConnection::DataCommand::GetColumnOptionalInt16( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional int16: [" - << column << "]"); + WrtLogD("SQL data command get column optional int16: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } int16_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); + WrtLogD(" Value: %i", value); + return boost::optional(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalInt32( +boost::optional SqlConnection::DataCommand::GetColumnOptionalInt32( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional int32: [" - << column << "]"); + WrtLogD("SQL data command get column optional int32: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } int32_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); + WrtLogD(" Value: %i", value); + return boost::optional(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalInt64( +boost::optional SqlConnection::DataCommand::GetColumnOptionalInt64( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional int64: [" - << column << "]"); + WrtLogD("SQL data command get column optional int64: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } int64_t value = static_cast(sqlite3_column_int64(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); + WrtLogD(" Value: %lli", value); + return boost::optional(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalFloat( +boost::optional SqlConnection::DataCommand::GetColumnOptionalFloat( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional float: [" - << column << "]"); + WrtLogD("SQL data command get column optional float: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } float value = static_cast(sqlite3_column_double(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); + WrtLogD(" Value: %f", value); + return boost::optional(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalDouble( +boost::optional SqlConnection::DataCommand::GetColumnOptionalDouble( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional double: [" - << column << "]"); + WrtLogD("SQL data command get column optional double: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } double value = sqlite3_column_double(m_stmt, column); - LogPedantic(" Value: " << value); - return Optional(value); + WrtLogD(" Value: %f", value); + return boost::optional(value); } -Optional SqlConnection::DataCommand::GetColumnOptionalString( +boost::optional SqlConnection::DataCommand::GetColumnOptionalString( SqlConnection::ColumnIndex column) { - LogPedantic("SQL data command get column optional string: [" - << column << "]"); + WrtLogD("SQL data command get column optional string: [%i]", column); CheckColumnIndex(column); if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; + return boost::optional(); } const char *value = reinterpret_cast( sqlite3_column_text(m_stmt, column)); - LogPedantic("Value: " << value); + + WrtLogD(" Value: %s", value); + + if (value == NULL) { + return boost::optional(); + } + String s = FromUTF8String(value); - return Optional(s); + return boost::optional(s); } void SqlConnection::Connect(const std::string &address, @@ -598,15 +589,15 @@ void SqlConnection::Connect(const std::string &address, Flag::Option flag) { if (m_connection != NULL) { - LogPedantic("Already connected."); + WrtLogD("Already connected."); return; } - LogPedantic("Connecting to DB: " << address << "..."); + WrtLogD("Connecting to DB: %s...", address.c_str()); // Connect to database int result = -1; int retry = 5; - while (result != SQLITE_OK) { + while( result != SQLITE_OK){ if (type & Flag::UseLucene) { result = db_util_open_with_options( address.c_str(), @@ -615,7 +606,7 @@ void SqlConnection::Connect(const std::string &address, NULL); m_usingLucene = true; - LogPedantic("Lucene index enabled"); + WrtLogD("Lucene index enabled"); } else { result = sqlite3_open_v2( address.c_str(), @@ -624,14 +615,14 @@ void SqlConnection::Connect(const std::string &address, NULL); m_usingLucene = false; - LogPedantic("Lucene index disabled"); + WrtLogD("Lucene index disabled"); } if (result == SQLITE_OK) { - LogPedantic("Connected to DB"); + WrtLogD("Connected to DB"); } else { - LogPedantic("Failed to connect to DB! ret="<BindString(1, tableName); if (!command->Step()) { - LogPedantic("No matching records in table"); + WrtLogD("No matching records in table"); return false; } @@ -703,19 +694,19 @@ SqlConnection::SqlConnection(const std::string &address, m_dataCommandsCount(0), m_synchronizationObject(synchronizationObject) { - LogPedantic("Opening database connection to: " << address); + WrtLogD("Opening database connection to: %s", address.c_str()); // Connect to DB SqlConnection::Connect(address, flag, option); if (!m_synchronizationObject) { - LogPedantic("No synchronization object defined"); + WrtLogD("No synchronization object defined"); } } SqlConnection::~SqlConnection() { - LogPedantic("Closing database connection"); + WrtLogD("Closing database connection"); // Disconnect from DB Try @@ -724,19 +715,19 @@ SqlConnection::~SqlConnection() } Catch(Exception::Base) { - LogPedantic("Failed to disconnect from database"); + WrtLogD("Failed to disconnect from database"); } } void SqlConnection::ExecCommand(const char *format, ...) { if (m_connection == NULL) { - LogPedantic("Cannot execute command. Not connected to DB!"); + WrtLogD("Cannot execute command. Not connected to DB!"); return; } if (format == NULL) { - LogPedantic("Null query!"); + WrtLogD("Null query!"); ThrowMsg(Exception::SyntaxError, "Null statement"); } @@ -751,14 +742,14 @@ void SqlConnection::ExecCommand(const char *format, ...) va_end(args); - ScopedFree buffer(rawBuffer); + std::unique_ptr buffer(rawBuffer); if (!buffer) { - LogPedantic("Failed to allocate statement string"); + WrtLogD("Failed to allocate statement string"); return; } - LogPedantic("Executing SQL command: " << buffer.Get()); + WrtLogD("Executing SQL command: %s", buffer.get()); // Notify all after potentially synchronized database connection access ScopedNotifyAll notifyAll(m_synchronizationObject.get()); @@ -767,7 +758,7 @@ void SqlConnection::ExecCommand(const char *format, ...) char *errorBuffer; int ret = sqlite3_exec(m_connection, - buffer.Get(), + buffer.get(), NULL, NULL, &errorBuffer); @@ -785,11 +776,11 @@ void SqlConnection::ExecCommand(const char *format, ...) } if (ret == SQLITE_BUSY) { - LogPedantic("Collision occurred while executing SQL command"); + WrtLogD("Collision occurred while executing SQL command"); // Synchronize if synchronization object is available if (m_synchronizationObject) { - LogPedantic("Performing synchronization"); + WrtLogD("Performing synchronization"); m_synchronizationObject->Synchronize(); continue; } @@ -798,7 +789,7 @@ void SqlConnection::ExecCommand(const char *format, ...) } // Fatal error - LogPedantic("Failed to execute SQL command. Error: " << errorMsg); + WrtLogD("Failed to execute SQL command. Error: %s", errorMsg.c_str()); ThrowMsg(Exception::SyntaxError, errorMsg); } } @@ -808,7 +799,7 @@ SqlConnection::DataCommandAutoPtr SqlConnection::PrepareDataCommand( ...) { if (m_connection == NULL) { - LogPedantic("Cannot execute data command. Not connected to DB!"); + WrtLogD("Cannot execute data command. Not connected to DB!"); return DataCommandAutoPtr(); } @@ -823,16 +814,16 @@ SqlConnection::DataCommandAutoPtr SqlConnection::PrepareDataCommand( va_end(args); - ScopedFree buffer(rawBuffer); + std::unique_ptr buffer(rawBuffer); if (!buffer) { - LogPedantic("Failed to allocate statement string"); + WrtLogD("Failed to allocate statement string"); return DataCommandAutoPtr(); } - LogPedantic("Executing SQL data command: " << buffer.Get()); + WrtLogD("Executing SQL data command: %s", buffer.get()); - return DataCommandAutoPtr(new DataCommand(this, buffer.Get())); + return DataCommandAutoPtr(new DataCommand(this, buffer.get())); } SqlConnection::RowID SqlConnection::GetLastInsertRowID() const diff --git a/modules_wearable/db/src/thread_database_support.cpp b/modules/db/src/thread_database_support.cpp similarity index 100% rename from modules_wearable/db/src/thread_database_support.cpp rename to modules/db/src/thread_database_support.cpp diff --git a/modules_wearable/dbus/config.cmake b/modules/dbus/config.cmake similarity index 100% rename from modules_wearable/dbus/config.cmake rename to modules/dbus/config.cmake diff --git a/modules_wearable/dbus/include/dpl/dbus/connection.h b/modules/dbus/include/dpl/dbus/connection.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/connection.h rename to modules/dbus/include/dpl/dbus/connection.h diff --git a/modules_wearable/dbus/include/dpl/dbus/dbus_client.h b/modules/dbus/include/dpl/dbus/dbus_client.h similarity index 93% rename from modules_wearable/dbus/include/dpl/dbus/dbus_client.h rename to modules/dbus/include/dpl/dbus/dbus_client.h index 061ec46..0661e9a 100644 --- a/modules_wearable/dbus/include/dpl/dbus/dbus_client.h +++ b/modules/dbus/include/dpl/dbus/dbus_client.h @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include @@ -77,7 +77,7 @@ class Client dbus_error_init(&error); m_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); if (NULL == m_connection) { - LogPedantic("Couldn't get DBUS connection. Error: " << + WrtLogD("Couldn't get DBUS connection. Error: %s", error.message); dbus_error_free(&error); ThrowMsg(Exception::DBusClientException, @@ -123,7 +123,7 @@ class Client -1, &error); if (NULL == ret) { - LogPedantic("Error sending DBUS message: " << + WrtLogD("Error sending DBUS message: %s", error.message); dbus_error_free(&error); ThrowMsg(Exception::DBusClientException, @@ -138,7 +138,7 @@ class Client if (ret != NULL) { dbus_message_unref(ret); } else { - LogPedantic("Error getting DBUS response."); + WrtLogD("Error getting DBUS response."); ThrowMsg(Exception::DBusClientException, "Error getting DBUS response."); } @@ -152,7 +152,7 @@ class Client const Args& ... args) { if (!Serialization::serialize(argsIterator, invalue)) { - LogPedantic("Error in serialization."); + WrtLogD("Error in serialization."); ThrowMsg(Exception::DBusClientException, "Error in serialization."); } @@ -167,7 +167,7 @@ class Client const Args& ... args) { if (!Serialization::serialize(argsIterator, invalue)) { - LogPedantic("Error in serialization."); + WrtLogD("Error in serialization."); ThrowMsg(Exception::DBusClientException, "Error in serialization."); } @@ -181,7 +181,7 @@ class Client const T* invalue) { if (!Serialization::serialize(argsIterator, invalue)) { - LogPedantic("Error in serialization."); + WrtLogD("Error in serialization."); ThrowMsg(Exception::DBusClientException, "Error in serialization."); } @@ -211,7 +211,7 @@ class Client const Args& ... args) { if (!Deserialization::deserialize(responseIterator, out)) { - LogPedantic("Error in deserialization."); + WrtLogD("Error in deserialization."); ThrowMsg(Exception::DBusClientException, "Error in deserialization."); } @@ -222,7 +222,7 @@ class Client void returnFromCall(DBusMessageIter* responseIterator, T* out) { if (!Deserialization::deserialize(responseIterator, out)) { - LogPedantic("Error in deserialization."); + WrtLogD("Error in deserialization."); ThrowMsg(Exception::DBusClientException, "Error in deserialization."); } diff --git a/modules_wearable/dbus/include/dpl/dbus/dbus_deserialization.h b/modules/dbus/include/dpl/dbus/dbus_deserialization.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/dbus_deserialization.h rename to modules/dbus/include/dpl/dbus/dbus_deserialization.h diff --git a/modules_wearable/dbus/include/dpl/dbus/dbus_interface_dispatcher.h b/modules/dbus/include/dpl/dbus/dbus_interface_dispatcher.h similarity index 91% rename from modules_wearable/dbus/include/dpl/dbus/dbus_interface_dispatcher.h rename to modules/dbus/include/dpl/dbus/dbus_interface_dispatcher.h index 97d7407..51306fc 100644 --- a/modules_wearable/dbus/include/dpl/dbus/dbus_interface_dispatcher.h +++ b/modules/dbus/include/dpl/dbus/dbus_interface_dispatcher.h @@ -25,7 +25,7 @@ #define DPL_DBUS_DBUS_INTERFACE_DISPATCHER_H_ #include -#include +#include #include namespace DPL { @@ -70,8 +70,8 @@ class InterfaceDispatcher : public DBus::Dispatcher if (g_strcmp0(interfaceName, m_interfaceName.c_str()) == 0) { onMethodCall(methodName, parameters, invocation); } else { - LogPedantic("Called invalid interface: " << interfaceName << - " instead of: " << m_interfaceName); + WrtLogD("Called invalid interface: %s instead of: %s", + interfaceName, m_interfaceName.c_str()); } } @@ -81,7 +81,7 @@ class InterfaceDispatcher : public DBus::Dispatcher const gchar* /*interfaceName*/, const gchar* propertyName) { - LogDebug("InterfaceDispatcher onPropertyGet: " << propertyName); + WrtLogD("InterfaceDispatcher onPropertyGet: %s", propertyName); return NULL; } @@ -92,7 +92,7 @@ class InterfaceDispatcher : public DBus::Dispatcher const gchar* propertyName, GVariant* /*value*/) { - LogDebug("InterfaceDispatcher onPropertySet: " << propertyName); + WrtLogD("InterfaceDispatcher onPropertySet: %s", propertyName); return false; } diff --git a/modules_wearable/dbus/include/dpl/dbus/dbus_serialization.h b/modules/dbus/include/dpl/dbus/dbus_serialization.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/dbus_serialization.h rename to modules/dbus/include/dpl/dbus/dbus_serialization.h diff --git a/modules_wearable/dbus/include/dpl/dbus/dbus_server_deserialization.h b/modules/dbus/include/dpl/dbus/dbus_server_deserialization.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/dbus_server_deserialization.h rename to modules/dbus/include/dpl/dbus/dbus_server_deserialization.h diff --git a/modules_wearable/dbus/include/dpl/dbus/dbus_server_serialization.h b/modules/dbus/include/dpl/dbus/dbus_server_serialization.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/dbus_server_serialization.h rename to modules/dbus/include/dpl/dbus/dbus_server_serialization.h diff --git a/modules_wearable/dbus/include/dpl/dbus/dbus_signature.h b/modules/dbus/include/dpl/dbus/dbus_signature.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/dbus_signature.h rename to modules/dbus/include/dpl/dbus/dbus_signature.h diff --git a/modules_wearable/dbus/include/dpl/dbus/dispatcher.h b/modules/dbus/include/dpl/dbus/dispatcher.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/dispatcher.h rename to modules/dbus/include/dpl/dbus/dispatcher.h diff --git a/modules_wearable/dbus/include/dpl/dbus/exception.h b/modules/dbus/include/dpl/dbus/exception.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/exception.h rename to modules/dbus/include/dpl/dbus/exception.h diff --git a/modules_wearable/dbus/include/dpl/dbus/glib_util.h b/modules/dbus/include/dpl/dbus/glib_util.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/glib_util.h rename to modules/dbus/include/dpl/dbus/glib_util.h diff --git a/modules_wearable/dbus/include/dpl/dbus/interface.h b/modules/dbus/include/dpl/dbus/interface.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/interface.h rename to modules/dbus/include/dpl/dbus/interface.h diff --git a/modules_mobile/dbus/include/dpl/dbus/method_proxy.h b/modules/dbus/include/dpl/dbus/method_proxy.h similarity index 98% rename from modules_mobile/dbus/include/dpl/dbus/method_proxy.h rename to modules/dbus/include/dpl/dbus/method_proxy.h index 19c3b90..dbcbfcc 100644 --- a/modules_mobile/dbus/include/dpl/dbus/method_proxy.h +++ b/modules/dbus/include/dpl/dbus/method_proxy.h @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include @@ -150,8 +150,8 @@ class MethodProxy { GError* error = NULL; - LogPedantic( - "Invoking method: " << m_interfaceName << "." << m_methodName); + WrtLogD("Invoking method: %s.%s", + m_interfaceName.c_str(), m_methodName.c_str()); GVariant* result = g_dbus_connection_call_sync(m_connection, m_serviceName.c_str(), m_objectPath.c_str(), diff --git a/modules_wearable/dbus/include/dpl/dbus/object.h b/modules/dbus/include/dpl/dbus/object.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/object.h rename to modules/dbus/include/dpl/dbus/object.h diff --git a/modules_wearable/dbus/include/dpl/dbus/object_proxy.h b/modules/dbus/include/dpl/dbus/object_proxy.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/object_proxy.h rename to modules/dbus/include/dpl/dbus/object_proxy.h diff --git a/modules_wearable/dbus/include/dpl/dbus/server.h b/modules/dbus/include/dpl/dbus/server.h similarity index 100% rename from modules_wearable/dbus/include/dpl/dbus/server.h rename to modules/dbus/include/dpl/dbus/server.h diff --git a/modules_wearable/dbus/src/connection.cpp b/modules/dbus/src/connection.cpp similarity index 96% rename from modules_wearable/dbus/src/connection.cpp rename to modules/dbus/src/connection.cpp index 9c3b6ba..196193f 100644 --- a/modules_wearable/dbus/src/connection.cpp +++ b/modules/dbus/src/connection.cpp @@ -20,7 +20,7 @@ * @brief */ #include -#include +#include #include #include #include @@ -115,8 +115,7 @@ Connection::~Connection() if (FALSE == g_dbus_connection_flush_sync(m_connection, NULL, &error)) { - LogPedantic("Could not flush the connection" - << " <" << error->message << ">"); + WrtLogD("Could not flush the connection <%s>", error->message); g_error_free(error); } } @@ -170,7 +169,7 @@ void Connection::registerObject(const ObjectPtr& object) std::string message; if (NULL != error) { message = error->message; - LogPedantic(error->message << " " << error->code); + WrtLogD("%s %i", error->message, error->code); g_error_free(error); } ThrowMsg(DBus::Exception, "Error while registering an object: " @@ -217,7 +216,7 @@ void Connection::onServiceNameAcquired(GDBusConnection* /*connection*/, Connection* self = static_cast(data); - LogPedantic("Emitting service name acquired event: " << serviceName); + WrtLogD("Emitting service name acquired event: %s", serviceName); ConnectionEvents::ServiceNameAcquiredEvent event(serviceName); self->DPL::Event::EventSupport @@ -233,7 +232,7 @@ void Connection::onServiceNameLost(GDBusConnection* /*connection*/, Connection* self = static_cast(data); - LogPedantic("Emitting service name lost event: " << serviceName); + WrtLogD("Emitting service name lost event: %s", serviceName); ConnectionEvents::ServiceNameLostEvent event(serviceName); self->DPL::Event::EventSupport:: diff --git a/modules_wearable/dbus/src/dispatcher.cpp b/modules/dbus/src/dispatcher.cpp similarity index 100% rename from modules_wearable/dbus/src/dispatcher.cpp rename to modules/dbus/src/dispatcher.cpp diff --git a/modules_wearable/dbus/src/interface.cpp b/modules/dbus/src/interface.cpp similarity index 99% rename from modules_wearable/dbus/src/interface.cpp rename to modules/dbus/src/interface.cpp index b449e7c..27a9f2a 100644 --- a/modules_wearable/dbus/src/interface.cpp +++ b/modules/dbus/src/interface.cpp @@ -20,7 +20,6 @@ * @brief */ #include -#include #include #include #include diff --git a/modules_wearable/dbus/src/object.cpp b/modules/dbus/src/object.cpp similarity index 100% rename from modules_wearable/dbus/src/object.cpp rename to modules/dbus/src/object.cpp diff --git a/modules_wearable/dbus/src/object_proxy.cpp b/modules/dbus/src/object_proxy.cpp similarity index 100% rename from modules_wearable/dbus/src/object_proxy.cpp rename to modules/dbus/src/object_proxy.cpp diff --git a/modules_wearable/dbus/src/server.cpp b/modules/dbus/src/server.cpp similarity index 94% rename from modules_wearable/dbus/src/server.cpp rename to modules/dbus/src/server.cpp index 41c6962..06cb986 100644 --- a/modules_wearable/dbus/src/server.cpp +++ b/modules/dbus/src/server.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include namespace DPL { @@ -80,8 +80,8 @@ void Server::start() G_CALLBACK(onNewConnection), this); - LogDebug("Server started at: " - << g_dbus_server_get_client_address(m_server)); + WrtLogD("Server started at: %s", + g_dbus_server_get_client_address(m_server)); } void Server::stop() @@ -102,7 +102,7 @@ gboolean Server::onNewConnection(GDBusServer* /*server*/, ServerEvents::NewConnectionEvent event( ConnectionPtr(new Connection(connection))); - LogDebug("Emitting new connection event"); + WrtLogD("Emitting new connection event"); // TODO Blocking to allow object registration before any DBus messages are // processed. self->DPL::Event::EventSupport:: diff --git a/modules_wearable/event/config.cmake b/modules/event/config.cmake similarity index 100% rename from modules_wearable/event/config.cmake rename to modules/event/config.cmake diff --git a/modules_wearable/event/include/dpl/event/abstract_event_call.h b/modules/event/include/dpl/event/abstract_event_call.h similarity index 100% rename from modules_wearable/event/include/dpl/event/abstract_event_call.h rename to modules/event/include/dpl/event/abstract_event_call.h diff --git a/modules_wearable/event/include/dpl/event/abstract_event_dispatcher.h b/modules/event/include/dpl/event/abstract_event_dispatcher.h similarity index 100% rename from modules_wearable/event/include/dpl/event/abstract_event_dispatcher.h rename to modules/event/include/dpl/event/abstract_event_dispatcher.h diff --git a/modules_wearable/event/include/dpl/event/controller.h b/modules/event/include/dpl/event/controller.h similarity index 100% rename from modules_wearable/event/include/dpl/event/controller.h rename to modules/event/include/dpl/event/controller.h diff --git a/modules_wearable/event/include/dpl/event/event_listener.h b/modules/event/include/dpl/event/event_listener.h similarity index 100% rename from modules_wearable/event/include/dpl/event/event_listener.h rename to modules/event/include/dpl/event/event_listener.h diff --git a/modules_wearable/event/include/dpl/event/event_support.h b/modules/event/include/dpl/event/event_support.h old mode 100755 new mode 100644 similarity index 85% rename from modules_wearable/event/include/dpl/event/event_support.h rename to modules/event/include/dpl/event/event_support.h index c8c0539..3938a03 --- a/modules_wearable/event/include/dpl/event/event_support.h +++ b/modules/event/include/dpl/event/event_support.h @@ -22,10 +22,12 @@ #ifndef DPL_EVENT_SUPPORT_H #define DPL_EVENT_SUPPORT_H +#include #include #include #include #include +#include #include #include @@ -38,10 +40,8 @@ #include #include #include -#include -#include #include -#include +#include namespace DPL { namespace Event { @@ -103,20 +103,20 @@ class EventSupport : DelegateList m_delegateList; // Event support operation mutex - Mutex m_listenerDelegateMutex; + std::mutex m_listenerDelegateMutex; // Dedicated instance of thread event dispatcher ThreadEventDispatcher m_threadEventDispatcher; // Guard destruction of event support in event handler - Atomic m_guardedCallInProgress; + std::atomic m_guardedCallInProgress; // Events created by this support typedef std::list EventCallList; EventCallList m_eventsList; // Events list mutex - Mutex m_eventListMutex; + std::mutex m_eventListMutex; public: class EventSupportData @@ -136,7 +136,7 @@ class EventSupport : // framework/thread's event queue WaitableEvent *m_synchronization; - Mutex m_dataMutex; + std::mutex m_dataMutex; public: EventSupportData(EventSupportType *support, @@ -149,10 +149,10 @@ class EventSupport : ~EventSupportData() { - Mutex::ScopedLock lock(&m_dataMutex); + std::lock_guard lock(m_dataMutex); if (!m_eventSupport) { - LogPedantic("EventSupport for this call does not exist"); + WrtLogD("EventSupport for this call does not exist"); return; } @@ -171,7 +171,7 @@ class EventSupport : DelegateType delegate) { { - Mutex::ScopedLock lock(&m_dataMutex); + std::lock_guard lock(m_dataMutex); if (m_eventSupport != NULL) { (*m_eventSupport.*m_method)(event, @@ -179,7 +179,7 @@ class EventSupport : delegate, m_synchronization); } else { - LogPedantic("EventSupport for this call does not " + WrtLogD("EventSupport for this call does not " "exist anymore. Ignored."); } @@ -193,9 +193,7 @@ class EventSupport : void Reset() { - LogPedantic("Reseting my EventSupport"); - - Mutex::ScopedLock lock(&m_dataMutex); + std::lock_guard lock(m_dataMutex); m_eventSupport = NULL; } }; @@ -206,9 +204,7 @@ class EventSupport : DelegateType delegate, WaitableEvent *waitableEvent) { - LogPedantic("Create and Register EventCall in EventSupport"); - - Mutex::ScopedLock lock(&m_eventListMutex); + std::lock_guard lock(m_eventListMutex); EventSupportDataPtr supportData = new EventSupportData( @@ -230,9 +226,7 @@ class EventSupport : void RemoveEventCall(typename EventCallList::iterator eventIterator) { - Mutex::ScopedLock lock(&m_eventListMutex); - - LogPedantic("Removing event call from EventSupport"); + std::lock_guard lock(m_eventListMutex); m_eventsList.erase(eventIterator); } @@ -241,8 +235,6 @@ class EventSupport : void GuardedEventCall(const EventType &event, EventListenerType *eventListener) { - LogPedantic("Guarded event listener call..."); - ++m_guardedCallInProgress; UNHANDLED_EXCEPTION_HANDLER_BEGIN @@ -252,16 +244,12 @@ class EventSupport : UNHANDLED_EXCEPTION_HANDLER_END -- m_guardedCallInProgress; - - LogPedantic("Guarded event listener finished"); } // Note: Reentrant metod void GuardedEventCall(const EventType &event, DelegateType delegate) { - LogPedantic("Guarded delegate call..."); - ++m_guardedCallInProgress; UNHANDLED_EXCEPTION_HANDLER_BEGIN @@ -271,8 +259,6 @@ class EventSupport : UNHANDLED_EXCEPTION_HANDLER_END -- m_guardedCallInProgress; - - LogPedantic("Guarded delegate call finished"); } void ReceiveAbstractEventCall(const EventType &event, @@ -280,19 +266,17 @@ class EventSupport : DelegateType delegate, WaitableEvent *synchronization) { - LogPedantic("Received abstract event call method"); - Thread *targetThread; // Listener might have been removed, ensure that it still exits if (eventListener != NULL) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); typename EventListenerList::iterator iterator = m_eventListenerList.find(eventListener); if (iterator == m_eventListenerList.end()) { - LogPedantic("Abstract event call listener disappeared." + WrtLogD("Abstract event call listener disappeared." "Event ignored."); // Even though, synchronize caller if needed @@ -307,13 +291,13 @@ class EventSupport : targetThread = iterator->second; } else { // Delegate might have been removed, ensure that it still exits - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); typename DelegateList::iterator iterator = m_delegateList.find(delegate); if (iterator == m_delegateList.end()) { - LogPedantic("Abstract event call delegate disappeared." + WrtLogD("Abstract event call delegate disappeared." "Event ignored."); // Even though, synchronize caller if needed @@ -330,21 +314,21 @@ class EventSupport : // Ensure that we are now in proper thread now if (targetThread != Thread::GetCurrentThread()) { - LogPedantic("Detected event dispatching ping-pong scenario"); + WrtLogD("Detected event dispatching ping-pong scenario"); // Retry if it was not synchronized if (synchronization == NULL) { // Cheat with event delivery EmitEvent(event, EmitMode::Queued); - LogPedantic("Ping-Pong: Resent as queued event"); + WrtLogD("Ping-Pong: Resent as queued event"); } else { // There is a problem // Developer did something nasty, and we will not clean up his // mess synchronization->Signal(); - LogPedantic("### Ping-Pong: Failed to deliver synchronized" + WrtLogD("### Ping-Pong: Failed to deliver synchronized" "event in ping-pong scenario!"); } @@ -370,25 +354,20 @@ class EventSupport : double dueTime = 0.0) { // Emit event, and retrieve later in current context to dispatch - std::unique_ptr lock( - new Mutex::ScopedLock(&m_listenerDelegateMutex)); + std::unique_lock lock(m_listenerDelegateMutex); // Show some info switch (mode) { case EmitMode::Auto: - LogPedantic("Emitting AUTO event..."); break; case EmitMode::Queued: - LogPedantic("Emitting QUEUED event..."); break; case EmitMode::Blocking: - LogPedantic("Emitting BLOCKING event..."); break; case EmitMode::Deffered: - LogPedantic("Emitting DEFFERED event..."); break; default: @@ -406,11 +385,9 @@ class EventSupport : if (iterator->second == NULL) { // Send to main thread - LogPedantic("Sending event to main dispatcher"); dispatcher = &GetMainEventDispatcherInstance(); } else { // Setup thread dispatcher, and send to proper thread - LogPedantic("Sending event to thread dispatcher"); m_threadEventDispatcher.SetThread(iterator->second); dispatcher = &m_threadEventDispatcher; } @@ -475,8 +452,6 @@ class EventSupport : } } - LogPedantic("Added event to dispatchers"); - // Emit to all delegates FOREACH(iterator, m_delegateList) { @@ -485,11 +460,9 @@ class EventSupport : if (iterator->second == NULL) { // Send to main thread - LogPedantic("Sending event to main dispatcher"); dispatcher = &GetMainEventDispatcherInstance(); } else { // Setup thread dispatcher, and send to proper thread - LogPedantic("Sending event to thread dispatcher"); m_threadEventDispatcher.SetThread(iterator->second); dispatcher = &m_threadEventDispatcher; } @@ -562,16 +535,12 @@ class EventSupport : } } - LogPedantic("Added event to dispatchers"); - // Leave listeners lock in case of blocking call if (!synchronizationBarrier.empty()) { - LogPedantic("Leaving lock due to existing barrier"); - lock.reset(); + WrtLogD("Leaving lock due to existing barrier"); + lock.unlock(); } - LogPedantic("Size of barrier: " << synchronizationBarrier.size()); - // Synchronize with barrier // TODO: Implement generic WaitForAllMultipleHandles call while (!synchronizationBarrier.empty()) { @@ -609,12 +578,7 @@ class EventSupport : } synchronizationBarrier.swap(clearedSynchronizationBarrier); - - LogPedantic("Reduced size of barrier: " - << synchronizationBarrier.size()); } - - LogPedantic("Event emitted"); } public: @@ -624,16 +588,14 @@ class EventSupport : virtual ~EventSupport() { - if (m_guardedCallInProgress != 0) { - LogError("The object will terminate, but guardCall is in progress, it could cause segmentation fault"); + if( m_guardedCallInProgress != 0 ){ + WrtLogD("The object will terminate, but guardCall is in progress, it could cause segmentation fault"); } m_eventListenerList.clear(); m_delegateList.clear(); - Mutex::ScopedLock lock(&m_eventListMutex); - - LogPedantic("Disabling events for EventSupport"); + std::lock_guard lock(m_eventListMutex); FOREACH(iterator, m_eventsList) (*iterator)->DisableEvent(); @@ -641,7 +603,7 @@ class EventSupport : void AddListener(EventListenerType *eventListener) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); // Listener must not be NULL Assert(eventListener != NULL); @@ -653,14 +615,11 @@ class EventSupport : // Add new listener, inherit dispatcher from current context m_eventListenerList.insert( std::make_pair(eventListener, Thread::GetCurrentThread())); - - // Done - LogPedantic("Listener registered"); } void AddListener(DelegateType delegate) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); // Delegate must not be empty Assert(delegate); @@ -671,14 +630,11 @@ class EventSupport : // Add new delegate, inherit dispatcher from current context m_delegateList.insert( std::make_pair(delegate, Thread::GetCurrentThread())); - - // Done - LogPedantic("Delegate registered"); } void RemoveListener(EventListenerType *eventListener) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); // Listener must not be NULL Assert(eventListener != NULL); @@ -691,12 +647,11 @@ class EventSupport : // Remove listener from list m_eventListenerList.erase(iterator); - LogPedantic("Listener unregistered"); } void RemoveListener(DelegateType delegate) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); // Delegate must not be empty Assert(delegate); @@ -709,13 +664,12 @@ class EventSupport : // Remove delegate from list m_delegateList.erase(iterator); - LogPedantic("Delegate unregistered"); } void SwitchListenerToThread(EventListenerType *eventListener, Thread *thread) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); // Listener must not be NULL Assert(eventListener != NULL); @@ -728,14 +682,12 @@ class EventSupport : // Set listener thread iterator->second = thread; - - LogPedantic("Listener switched"); } void SwitchListenerToThread(DelegateType delegate, Thread *thread) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); // Delegate must not be empty Assert(!delegate.empty()); @@ -748,13 +700,11 @@ class EventSupport : // Set delegate thread iterator->second = thread; - - LogPedantic("Delegate switched"); } void SwitchAllListenersToThread(Thread *thread) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); + std::lock_guard lock(m_listenerDelegateMutex); // Switch all listeners and delegates FOREACH(iterator, m_eventListenerList) @@ -762,8 +712,6 @@ class EventSupport : FOREACH(iterator, m_delegateList) iterator->second = thread; - - LogPedantic("All listeners and delegates switched"); } }; } diff --git a/modules_wearable/event/include/dpl/event/generic_event_call.h b/modules/event/include/dpl/event/generic_event_call.h similarity index 94% rename from modules_wearable/event/include/dpl/event/generic_event_call.h rename to modules/event/include/dpl/event/generic_event_call.h index 2cdf026..11ac89f 100644 --- a/modules_wearable/event/include/dpl/event/generic_event_call.h +++ b/modules/event/include/dpl/event/generic_event_call.h @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include namespace DPL { @@ -72,19 +72,19 @@ class GenericEventCall : virtual void Call() { - LogPedantic("Calling generic event call"); + WrtLogD("Calling generic event call"); m_supportData->CallAndDestroy(m_event, m_eventListener, m_delegate); // Now m_supportData points to invalid object. Marking it as NULL. m_supportData = NULL; - LogPedantic("Generic event called"); + WrtLogD("Generic event called"); } virtual void DisableEvent() { - LogPedantic("Disabling this EventCall"); + WrtLogD("Disabling this EventCall"); m_supportData->Reset(); // TODO: In the future, event should be completely removed diff --git a/modules_wearable/event/include/dpl/event/inter_context_delegate.h b/modules/event/include/dpl/event/inter_context_delegate.h similarity index 97% rename from modules_wearable/event/include/dpl/event/inter_context_delegate.h rename to modules/event/include/dpl/event/inter_context_delegate.h index 2d711fe..d92e700 100644 --- a/modules_wearable/event/include/dpl/event/inter_context_delegate.h +++ b/modules/event/include/dpl/event/inter_context_delegate.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -37,10 +38,8 @@ #include #include #include -#include -#include #include -#include +#include #include #include #include @@ -98,11 +97,11 @@ class ICDSharedDataBase { public: explicit ScopedLock(ICDSharedDataBasePtr helperBase) : - m_scopedLock(&helperBase->m_mutex) + m_scopedLock(helperBase->m_mutex) {} private: - DPL::RecursiveMutex::ScopedLock m_scopedLock; + std::lock_guard m_scopedLock; }; ICDSharedDataBase() : m_disabled(false) @@ -131,7 +130,7 @@ class ICDSharedDataBase private: bool m_disabled; - DPL::RecursiveMutex m_mutex; + std::recursive_mutex m_mutex; ICDSharedDataBaseList::iterator m_position; }; @@ -299,7 +298,7 @@ class ICDelegate Assert(m_outerDelegate); if (ptr->isDisabled()) { - LogPedantic("ICDSharedData has been disabled - call is ignored"); + WrtLogD("ICDSharedData has been disabled - call is ignored"); } else { DPL::Apply(m_outerDelegate, event.args); diff --git a/modules_mobile/event/include/dpl/event/main_event_dispatcher.h b/modules/event/include/dpl/event/main_event_dispatcher.h similarity index 98% rename from modules_mobile/event/include/dpl/event/main_event_dispatcher.h rename to modules/event/include/dpl/event/main_event_dispatcher.h index db86b1f..6962471 100644 --- a/modules_mobile/event/include/dpl/event/main_event_dispatcher.h +++ b/modules/event/include/dpl/event/main_event_dispatcher.h @@ -28,9 +28,9 @@ #include #include #include -#include #include #include +#include namespace DPL { namespace Event { @@ -67,7 +67,7 @@ class MainEventDispatcher : // Cross thread send support WrappedEventCallList m_wrappedCrossEventCallList; - Mutex m_crossEventCallMutex; + std::mutex m_crossEventCallMutex; WaitableEvent* m_crossEventCallInvoker; Ecore_Event_Handler *m_eventCallHandler; diff --git a/modules_wearable/event/include/dpl/event/model.h b/modules/event/include/dpl/event/model.h similarity index 100% rename from modules_wearable/event/include/dpl/event/model.h rename to modules/event/include/dpl/event/model.h diff --git a/modules_wearable/event/include/dpl/event/model_bind_to_dao.h b/modules/event/include/dpl/event/model_bind_to_dao.h similarity index 100% rename from modules_wearable/event/include/dpl/event/model_bind_to_dao.h rename to modules/event/include/dpl/event/model_bind_to_dao.h diff --git a/modules_wearable/event/include/dpl/event/property.h b/modules/event/include/dpl/event/property.h similarity index 90% rename from modules_wearable/event/include/dpl/event/property.h rename to modules/event/include/dpl/event/property.h index ce2e5c7..da0c802 100644 --- a/modules_wearable/event/include/dpl/event/property.h +++ b/modules/event/include/dpl/event/property.h @@ -67,6 +67,10 @@ namespace Event { * been received from external source, it will * never be updated externally. * + * PropertyStorageDynamicInitCached: The data is stored internally at construction + * with read delegate. Changed data is stored + * internally and also set remotely with delegate. + * * Property access modes: * * PropertyReadOnly: Property is a read-only property. @@ -196,9 +200,10 @@ namespace Event { * std::bind(&Receiver::OnValueChanged, &receiver)); * } */ -struct PropertyStorageCached {}; ///< Always use cached -struct PropertyStorageDynamic {}; ///< Always use dynamic -struct PropertyStorageDynamicCached {}; ///< Use dynamic then cache +struct PropertyStorageCached {}; ///< Always use cached +struct PropertyStorageDynamic {}; ///< Always use dynamic +struct PropertyStorageDynamicCached {}; ///< Use dynamic then cache +struct PropertyStorageDynamicInitCached {}; ///< Use cached with dynamic initialization struct PropertyReadOnly {}; ///< Read only, not setter available struct PropertyReadWrite {}; ///< Read and write @@ -369,6 +374,41 @@ class PropertyStorageMethod +class PropertyStorageMethod: + protected PropertyStorageMethodBase, + protected PropertyStorageMethodDynamicBase, + protected PropertyStorageMethodCachedBase +{ + public: + PropertyStorageMethod(Model *model, + ReadDelegateType readValue, + WriteDelegateType writeValue) : + PropertyStorageMethodBase(model), + PropertyStorageMethodDynamicBase( + readValue, writeValue) + { + this->m_value = this->m_readValue(m_model); + } + + Type Get() const + { + return this->m_value; + } + + void Set(const Type& value) + { + this->m_value = value; + this->m_writeValue(value, m_model); + } +}; + template class PropertyBase : protected EventSupport > diff --git a/modules_wearable/event/include/dpl/event/thread_event_dispatcher.h b/modules/event/include/dpl/event/thread_event_dispatcher.h similarity index 100% rename from modules_wearable/event/include/dpl/event/thread_event_dispatcher.h rename to modules/event/include/dpl/event/thread_event_dispatcher.h diff --git a/modules_wearable/event/src/abstract_event_call.cpp b/modules/event/src/abstract_event_call.cpp similarity index 100% rename from modules_wearable/event/src/abstract_event_call.cpp rename to modules/event/src/abstract_event_call.cpp diff --git a/modules_wearable/event/src/abstract_event_dispatcher.cpp b/modules/event/src/abstract_event_dispatcher.cpp similarity index 100% rename from modules_wearable/event/src/abstract_event_dispatcher.cpp rename to modules/event/src/abstract_event_dispatcher.cpp diff --git a/modules_wearable/event/src/controller.cpp b/modules/event/src/controller.cpp similarity index 100% rename from modules_wearable/event/src/controller.cpp rename to modules/event/src/controller.cpp diff --git a/modules_wearable/event/src/event_listener.cpp b/modules/event/src/event_listener.cpp similarity index 100% rename from modules_wearable/event/src/event_listener.cpp rename to modules/event/src/event_listener.cpp diff --git a/modules_mobile/event/src/event_support.cpp b/modules/event/src/event_support.cpp similarity index 95% rename from modules_mobile/event/src/event_support.cpp rename to modules/event/src/event_support.cpp index d2e643c..9a1dc3d 100644 --- a/modules_mobile/event/src/event_support.cpp +++ b/modules/event/src/event_support.cpp @@ -32,7 +32,7 @@ int dummyInitializerProc() return 0; } -int g_dummyInitializer = dummyInitializerProc(); +//int g_dummyInitializer = dummyInitializerProc(); } // namespace anonymous } } // namespace DPL diff --git a/modules_wearable/event/src/generic_event_call.cpp b/modules/event/src/generic_event_call.cpp similarity index 100% rename from modules_wearable/event/src/generic_event_call.cpp rename to modules/event/src/generic_event_call.cpp diff --git a/modules_wearable/event/src/inter_context_delegate.cpp b/modules/event/src/inter_context_delegate.cpp similarity index 100% rename from modules_wearable/event/src/inter_context_delegate.cpp rename to modules/event/src/inter_context_delegate.cpp diff --git a/modules_wearable/event/src/main_event_dispatcher.cpp b/modules/event/src/main_event_dispatcher.cpp similarity index 84% rename from modules_wearable/event/src/main_event_dispatcher.cpp rename to modules/event/src/main_event_dispatcher.cpp index c860398..e63d296 100644 --- a/modules_wearable/event/src/main_event_dispatcher.cpp +++ b/modules/event/src/main_event_dispatcher.cpp @@ -22,7 +22,7 @@ */ #include #include -#include +#include #include #include @@ -55,7 +55,7 @@ MainEventDispatcher::MainEventDispatcher() // Add new global ECORE event m_eventId = ecore_event_type_new(); - LogPedantic("ECORE event class registered: " << m_eventId); + WrtLogD("ECORE event class registered: %i", m_eventId); // Register event class handler if ((m_eventCallHandler = @@ -82,7 +82,7 @@ MainEventDispatcher::MainEventDispatcher() "Failed to register cross event handler!"); } - LogPedantic("ECORE cross-event handler registered"); + WrtLogD("ECORE cross-event handler registered"); } MainEventDispatcher::~MainEventDispatcher() @@ -90,7 +90,7 @@ MainEventDispatcher::~MainEventDispatcher() // Remove cross event handler ecore_main_fd_handler_del(m_crossEventCallHandler); m_crossEventCallHandler = NULL; - LogPedantic("ECORE cross-event handler unregistered"); + WrtLogD("ECORE cross-event handler unregistered"); // Remove m_crossEventCallInvoker delete m_crossEventCallInvoker; @@ -114,7 +114,7 @@ void MainEventDispatcher::ResetCrossEventCallHandler() // Remove cross event handler ecore_main_fd_handler_del(m_crossEventCallHandler); m_crossEventCallHandler = NULL; - LogPedantic("ECORE cross-event handler unregistered"); + WrtLogD("ECORE cross-event handler unregistered"); // Re-allocate WaitableEvent delete m_crossEventCallInvoker; @@ -134,12 +134,12 @@ void MainEventDispatcher::ResetCrossEventCallHandler() "Failed to register cross event handler!"); } - LogPedantic("ECORE cross-event handler re-registered"); + WrtLogD("ECORE cross-event handler re-registered"); } void MainEventDispatcher::StaticDeleteEvent(void *data, void *event) { - LogPedantic("Static ECORE delete event handler"); + WrtLogD("Static ECORE delete event handler"); MainEventDispatcher *This = static_cast(data); AbstractEventCall *abstractEventCall = @@ -150,7 +150,7 @@ void MainEventDispatcher::StaticDeleteEvent(void *data, void *event) // Late EFL event handling if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL event delete!"); + WrtLogD("WARNING: Late EFL event delete!"); delete abstractEventCall; } else { This->DeleteEvent(abstractEventCall); @@ -161,7 +161,7 @@ Eina_Bool MainEventDispatcher::StaticDispatchEvent(void *data, int type, void *event) { - LogPedantic("Static ECORE dispatch event"); + WrtLogD("Static ECORE dispatch event"); MainEventDispatcher *This = static_cast(data); AbstractEventCall *abstractEventCall = @@ -173,7 +173,7 @@ Eina_Bool MainEventDispatcher::StaticDispatchEvent(void *data, // Late EFL event handling if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL event dispatch!"); + WrtLogD("WARNING: Late EFL event dispatch!"); } else { This->DispatchEvent(abstractEventCall); } @@ -184,7 +184,7 @@ Eina_Bool MainEventDispatcher::StaticDispatchEvent(void *data, Eina_Bool MainEventDispatcher::StaticDispatchTimedEvent(void *data) { - LogPedantic("Static ECORE dispatch timed event"); + WrtLogD("Static ECORE dispatch timed event"); TimedEventStruct *timedEventStruct = static_cast(data); MainEventDispatcher *This = timedEventStruct->This; @@ -196,7 +196,7 @@ Eina_Bool MainEventDispatcher::StaticDispatchTimedEvent(void *data) // Late EFL event handling if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL timed event dispatch!"); + WrtLogD("WARNING: Late EFL timed event dispatch!"); } else { // Dispatch timed event This->DispatchEvent(abstractEventCall); @@ -217,7 +217,7 @@ Eina_Bool MainEventDispatcher::StaticDispatchCrossInvoker( Ecore_Fd_Handler * fd_handler) { - LogPedantic("Static ECORE dispatch cross invoker"); + WrtLogD("Static ECORE dispatch cross invoker"); MainEventDispatcher *This = static_cast(data); (void)fd_handler; @@ -226,7 +226,7 @@ Eina_Bool MainEventDispatcher::StaticDispatchCrossInvoker( // Late EFL event handling if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL cross invoker dispatch!"); + WrtLogD("WARNING: Late EFL cross invoker dispatch!"); } else { This->DispatchCrossInvoker(); } @@ -236,13 +236,13 @@ Eina_Bool MainEventDispatcher::StaticDispatchCrossInvoker( void MainEventDispatcher::DeleteEvent(AbstractEventCall *abstractEventCall) { - LogPedantic("ECORE delete event"); + WrtLogD("ECORE delete event"); delete abstractEventCall; } void MainEventDispatcher::DispatchEvent(AbstractEventCall *abstractEventCall) { - LogPedantic("ECORE dispatch event"); + WrtLogD("ECORE dispatch event"); // Call event handler abstractEventCall->Call(); @@ -251,7 +251,7 @@ void MainEventDispatcher::DispatchEvent(AbstractEventCall *abstractEventCall) void MainEventDispatcher::DispatchTimedEvent( AbstractEventCall *abstractEventCall) { - LogPedantic("ECORE dispatch timed event"); + WrtLogD("ECORE dispatch timed event"); // Call event handler abstractEventCall->Call(); @@ -259,7 +259,7 @@ void MainEventDispatcher::DispatchTimedEvent( void MainEventDispatcher::DispatchCrossInvoker() { - LogPedantic("ECORE dispatch cross invoker"); + WrtLogD("ECORE dispatch cross invoker"); // Steal cross events list WrappedEventCallList stolenCrossEvents; @@ -267,12 +267,11 @@ void MainEventDispatcher::DispatchCrossInvoker() // Critical section { m_crossEventCallInvoker->Reset(); - Mutex::ScopedLock lock(&m_crossEventCallMutex); + std::lock_guard lock(m_crossEventCallMutex); m_wrappedCrossEventCallList.swap(stolenCrossEvents); } - LogPedantic( - "Cross-thread event list stolen. Number of events: " << + WrtLogD("Cross-thread event list stolen. Number of events: %i", stolenCrossEvents.size()); // Repush all stolen events @@ -283,33 +282,33 @@ void MainEventDispatcher::DispatchCrossInvoker() ++eventIterator) { // Unwrap events - LogPedantic("Dispatching event from invoker"); + WrtLogD("Dispatching event from invoker"); InternalAddEvent(eventIterator->abstractEventCall, eventIterator->timed, eventIterator->dueTime); } - LogPedantic("Cross-thread events dispatched"); + WrtLogD("Cross-thread events dispatched"); } void MainEventDispatcher::AddEventCall(AbstractEventCall *abstractEventCall) { if (pthread_equal(pthread_self(), g_threadMain)) { - LogPedantic("Main thread ECORE event push"); + WrtLogD("Main thread ECORE event push"); InternalAddEvent(abstractEventCall, false, 0.0); } else { - LogPedantic("Cross-thread ECORE event push"); + WrtLogD("Cross-thread ECORE event push"); // Push event to cross event list { - Mutex::ScopedLock lock(&m_crossEventCallMutex); + std::lock_guard lock(m_crossEventCallMutex); m_wrappedCrossEventCallList.push_back(WrappedEventCall( abstractEventCall, false, 0.0)); m_crossEventCallInvoker->Signal(); } - LogPedantic("Event pushed to cross-thread event list"); + WrtLogD("Event pushed to cross-thread event list"); } } @@ -318,21 +317,21 @@ void MainEventDispatcher::AddTimedEventCall( double dueTime) { if (pthread_equal(pthread_self(), g_threadMain)) { - LogPedantic("Main thread timed ECORE event push"); + WrtLogD("Main thread timed ECORE event push"); InternalAddEvent(abstractEventCall, true, dueTime); } else { - LogPedantic("Cross-thread timed ECORE event push"); + WrtLogD("Cross-thread timed ECORE event push"); // Push event to cross event list { - Mutex::ScopedLock lock(&m_crossEventCallMutex); + std::lock_guard lock(m_crossEventCallMutex); m_wrappedCrossEventCallList.push_back(WrappedEventCall( abstractEventCall, true, dueTime)); m_crossEventCallInvoker->Signal(); } - LogPedantic("Event pushed to cross-thread event list"); + WrtLogD("Event pushed to cross-thread event list"); } } @@ -340,7 +339,7 @@ void MainEventDispatcher::InternalAddEvent(AbstractEventCall *abstractEventCall, bool timed, double dueTime) { - LogPedantic("Adding base event"); + WrtLogD("Adding base event"); if (timed == true) { // Push timed event onto ecore stack @@ -357,7 +356,7 @@ void MainEventDispatcher::InternalAddEvent(AbstractEventCall *abstractEventCall, "Failed to add ECORE timed event"); } - LogPedantic("Timed wrapped event added"); + WrtLogD("Timed wrapped event added"); } else { // Push immediate event onto ecore stack Ecore_Event *event = ecore_event_add(m_eventId, @@ -370,7 +369,7 @@ void MainEventDispatcher::InternalAddEvent(AbstractEventCall *abstractEventCall, ThrowMsg(Exception::AddEventFailed, "Failed to add ECORE event"); } - LogPedantic("Wrapped event added"); + WrtLogD("Wrapped event added"); } } diff --git a/modules_wearable/event/src/model.cpp b/modules/event/src/model.cpp similarity index 100% rename from modules_wearable/event/src/model.cpp rename to modules/event/src/model.cpp diff --git a/modules_wearable/event/src/thread_event_dispatcher.cpp b/modules/event/src/thread_event_dispatcher.cpp similarity index 89% rename from modules_wearable/event/src/thread_event_dispatcher.cpp rename to modules/event/src/thread_event_dispatcher.cpp index 7da99a2..6e9d19e 100644 --- a/modules_wearable/event/src/thread_event_dispatcher.cpp +++ b/modules/event/src/thread_event_dispatcher.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include namespace DPL { @@ -45,7 +45,7 @@ void ThreadEventDispatcher::StaticEventDelete(void *event, void *userParam) ThreadEventDispatcher *This = static_cast(userParam); - LogPedantic("Received static event delete from thread"); + WrtLogD("Received static event delete from thread"); Assert(abstractEventCall != NULL); Assert(This != NULL); @@ -60,7 +60,7 @@ void ThreadEventDispatcher::StaticEventDispatch(void *event, void *userParam) ThreadEventDispatcher *This = static_cast(userParam); - LogPedantic("Received static event dispatch from thread"); + WrtLogD("Received static event dispatch from thread"); Assert(abstractEventCall != NULL); Assert(This != NULL); @@ -70,13 +70,13 @@ void ThreadEventDispatcher::StaticEventDispatch(void *event, void *userParam) void ThreadEventDispatcher::EventDelete(AbstractEventCall *abstractEventCall) { - LogPedantic("Deleting event"); + WrtLogD("Deleting event"); delete abstractEventCall; } void ThreadEventDispatcher::EventDispatch(AbstractEventCall *abstractEventCall) { - LogPedantic("Dispatching event to event support"); + WrtLogD("Dispatching event to event support"); abstractEventCall->Call(); } @@ -85,7 +85,7 @@ void ThreadEventDispatcher::AddEventCall(AbstractEventCall *abstractEventCall) // Thread must be set prior to call Assert(m_thread != NULL); - LogPedantic("Adding event to thread event loop"); + WrtLogD("Adding event to thread event loop"); // Call abstract event call in dedicated thread m_thread->PushEvent(abstractEventCall, @@ -101,7 +101,7 @@ void ThreadEventDispatcher::AddTimedEventCall( // Thread must be set prior to call Assert(m_thread != NULL); - LogPedantic("Adding timed event to thread event loop"); + WrtLogD("Adding timed event to thread event loop"); // Call abstract event call in dedicated thread m_thread->PushTimedEvent(abstractEventCall, diff --git a/modules_wearable/i18n/CMakeLists.txt b/modules/i18n/CMakeLists.txt similarity index 100% rename from modules_wearable/i18n/CMakeLists.txt rename to modules/i18n/CMakeLists.txt diff --git a/modules_wearable/i18n/dao/CMakeLists.txt b/modules/i18n/dao/CMakeLists.txt similarity index 87% rename from modules_wearable/i18n/dao/CMakeLists.txt rename to modules/i18n/dao/CMakeLists.txt index c7b5ada..af30e52 100644 --- a/modules_wearable/i18n/dao/CMakeLists.txt +++ b/modules/i18n/dao/CMakeLists.txt @@ -1,18 +1,21 @@ SET(TARGET_I18N_DAO_DB "Sqlite3DbI18n") +SET(I18N_DB_FILE_NAME "iana_db") +SET(I18N_DB_INCLUDE_NAME "i18n_db_sql_generator.h") + ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h COMMAND ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/gen_db_md5.sh ARGS ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h - ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/iana_db - DEPENDS ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/iana_db + ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/${I18N_DB_FILE_NAME} + DEPENDS ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/${I18N_DB_FILE_NAME} ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/gen_db_md5.sh COMMENT "Generating WRT i18n database checksum" ) ADD_CUSTOM_COMMAND( OUTPUT .wrt_i18n.db COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt_i18n.db - COMMAND gcc -Wall -include ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm -E ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm/i18n_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/wrt_i18n_db.sql + COMMAND gcc -Wall -include ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm -E ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm/${I18N_DB_INCLUDE_NAME} | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/wrt_i18n_db.sql COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.wrt_i18n.db ".read ${CMAKE_CURRENT_BINARY_DIR}/wrt_i18n_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt_i18n.db DEPENDS ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm/i18n_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm/iana_db ) @@ -27,6 +30,12 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wrt_i18n_db.sql DESTINATION share/wrt- ############################################################################### +INCLUDE(FindPkgConfig) + +PKG_CHECK_MODULES(I18N_DAO_DEPS + dlog + REQUIRED) + SET(I18N_DAO_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/modules/i18n/dao/include ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm diff --git a/modules_wearable/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h b/modules/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h similarity index 100% rename from modules_wearable/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h rename to modules/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h diff --git a/modules_mobile/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h b/modules/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h similarity index 91% rename from modules_mobile/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h rename to modules/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h index 3492f63..2f4d9d4 100644 --- a/modules_mobile/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h +++ b/modules/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h @@ -18,8 +18,8 @@ #define _I18N_DATABASE_H_ #include -#include #include +#include namespace I18n { namespace DB { @@ -27,7 +27,7 @@ namespace Interface { void attachDatabaseRO(); void detachDatabase(); -extern DPL::Mutex g_dbQueriesMutex; +extern std::mutex g_dbQueriesMutex; extern DPL::DB::ThreadDatabaseSupport g_dbInterface; } // namespace Interface } // namespace DB @@ -36,8 +36,8 @@ extern DPL::DB::ThreadDatabaseSupport g_dbInterface; #define I18N_DB_INTERNAL(tlsCommand, InternalType) \ static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ { \ - DPL::Mutex::ScopedLock lock( \ - &I18n::DB::Interface::g_dbQueriesMutex); \ + std::lock_guard lock( \ + I18n::DB::Interface::g_dbQueriesMutex); \ if (!tlsCommand##Ptr) { \ static DPL::ThreadLocalVariable tmp; \ tlsCommand##Ptr = &tmp; \ diff --git a/modules_wearable/custom_handler_dao/orm/gen_db_md5.sh b/modules/i18n/dao/orm/gen_db_md5.sh similarity index 100% rename from modules_wearable/custom_handler_dao/orm/gen_db_md5.sh rename to modules/i18n/dao/orm/gen_db_md5.sh diff --git a/modules_wearable/i18n/dao/orm/i18n_db_definitions b/modules/i18n/dao/orm/i18n_db_definitions similarity index 100% rename from modules_wearable/i18n/dao/orm/i18n_db_definitions rename to modules/i18n/dao/orm/i18n_db_definitions diff --git a/modules_wearable/i18n/dao/orm/i18n_db_sql_generator.h b/modules/i18n/dao/orm/i18n_db_sql_generator.h similarity index 100% rename from modules_wearable/i18n/dao/orm/i18n_db_sql_generator.h rename to modules/i18n/dao/orm/i18n_db_sql_generator.h diff --git a/modules_wearable/i18n/dao/orm/iana_db b/modules/i18n/dao/orm/iana_db similarity index 100% rename from modules_wearable/i18n/dao/orm/iana_db rename to modules/i18n/dao/orm/iana_db diff --git a/modules_wearable/i18n/dao/orm/orm_generator_i18n.h b/modules/i18n/dao/orm/orm_generator_i18n.h similarity index 100% rename from modules_wearable/i18n/dao/orm/orm_generator_i18n.h rename to modules/i18n/dao/orm/orm_generator_i18n.h diff --git a/modules_wearable/i18n/dao/orm/version_db b/modules/i18n/dao/orm/version_db similarity index 100% rename from modules_wearable/i18n/dao/orm/version_db rename to modules/i18n/dao/orm/version_db diff --git a/modules_wearable/i18n/dao/src/i18n_dao_read_only.cpp b/modules/i18n/dao/src/i18n_dao_read_only.cpp similarity index 100% rename from modules_wearable/i18n/dao/src/i18n_dao_read_only.cpp rename to modules/i18n/dao/src/i18n_dao_read_only.cpp diff --git a/modules_mobile/i18n/dao/src/i18n_database.cpp b/modules/i18n/dao/src/i18n_database.cpp similarity index 97% rename from modules_mobile/i18n/dao/src/i18n_database.cpp rename to modules/i18n/dao/src/i18n_database.cpp index e1a1fc5..dfbb0b2 100644 --- a/modules_mobile/i18n/dao/src/i18n_database.cpp +++ b/modules/i18n/dao/src/i18n_database.cpp @@ -25,7 +25,7 @@ DPL::DB::SqlConnection::Flag::Type I18N_DB_FLAGS = DPL::DB::SqlConnection::Flag::UseLucene; } -DPL::Mutex g_dbQueriesMutex; +std::mutex g_dbQueriesMutex; DPL::DB::ThreadDatabaseSupport g_dbInterface(I18N_DB_FILE_PATH, I18N_DB_FLAGS); diff --git a/modules_wearable/localization/config.cmake b/modules/localization/config.cmake similarity index 100% rename from modules_wearable/localization/config.cmake rename to modules/localization/config.cmake diff --git a/modules_mobile/localization/include/LanguageTagsProvider.h b/modules/localization/include/LanguageTagsProvider.h similarity index 99% rename from modules_mobile/localization/include/LanguageTagsProvider.h rename to modules/localization/include/LanguageTagsProvider.h index 529101f..07e15bb 100644 --- a/modules_mobile/localization/include/LanguageTagsProvider.h +++ b/modules/localization/include/LanguageTagsProvider.h @@ -22,7 +22,6 @@ #ifndef LANGUAGETAGSPROVIDER_H #define LANGUAGETAGSPROVIDER_H -#include #include #include #include diff --git a/modules_wearable/localization/include/dpl/localization/localization_utils.h b/modules/localization/include/dpl/localization/localization_utils.h similarity index 80% rename from modules_wearable/localization/include/dpl/localization/localization_utils.h rename to modules/localization/include/dpl/localization/localization_utils.h index 66a232d..f167238 100644 --- a/modules_wearable/localization/include/dpl/localization/localization_utils.h +++ b/modules/localization/include/dpl/localization/localization_utils.h @@ -24,8 +24,8 @@ #include -#include -#include +#include +#include #include #include @@ -37,8 +37,8 @@ struct WidgetIcon { WidgetIcon() : - width(DPL::Optional::Null), - height(DPL::Optional::Null) + width(boost::optional()), + height(boost::optional()) {} /* @@ -46,8 +46,8 @@ struct WidgetIcon * iconic representation of the widget */ DPL::String src; - DPL::Optional width; /// the width of the icon in pixels - DPL::Optional height; /// the height of the icon in pixels + boost::optional width; /// the width of the icon in pixels + boost::optional height; /// the height of the icon in pixels bool operator==(const WidgetIcon &other) const { @@ -71,7 +71,7 @@ struct WidgetStartFileInfo } }; -typedef DPL::Optional OptionalWidgetIcon; -typedef DPL::Optional OptionalWidgetStartFileInfo; +typedef boost::optional OptionalWidgetIcon; +typedef boost::optional OptionalWidgetStartFileInfo; #endif //LOCALIZATION_UTILS_H diff --git a/modules_wearable/localization/include/dpl/localization/w3c_file_localization.h b/modules/localization/include/dpl/localization/w3c_file_localization.h similarity index 89% rename from modules_wearable/localization/include/dpl/localization/w3c_file_localization.h rename to modules/localization/include/dpl/localization/w3c_file_localization.h index 7a437d8..2b187c1 100755 --- a/modules_wearable/localization/include/dpl/localization/w3c_file_localization.h +++ b/modules/localization/include/dpl/localization/w3c_file_localization.h @@ -23,8 +23,8 @@ #define W3C_FILE_LOCALIZATION_H #include -#include #include +#include #include #include @@ -35,18 +35,18 @@ namespace W3CFileLocalization { typedef std::list WidgetIconList; -DPL::Optional getFilePathInWidgetPackageFromUrl( +DPL::OptionalString getFilePathInWidgetPackageFromUrl( const WrtDB::TizenAppId &tzAppId, const DPL::String &url); -DPL::Optional getFilePathInWidgetPackageFromUrl( +DPL::OptionalString getFilePathInWidgetPackageFromUrl( WrtDB::WidgetDAOReadOnlyPtr dao, const DPL::String &url); std::string getFilePathInWidgetPackageFromUrl(const std::string &tzAppId, const std::string &url); -DPL::Optional getFilePathInWidgetPackage( +DPL::OptionalString getFilePathInWidgetPackage( const WrtDB::TizenAppId &tzAppId, const DPL::String& file); -DPL::Optional getFilePathInWidgetPackage( +DPL::OptionalString getFilePathInWidgetPackage( WrtDB::WidgetDAOReadOnlyPtr dao, const DPL::String& file); diff --git a/modules_wearable/localization/src/LanguageTagsProvider.cpp b/modules/localization/src/LanguageTagsProvider.cpp similarity index 90% rename from modules_wearable/localization/src/LanguageTagsProvider.cpp rename to modules/localization/src/LanguageTagsProvider.cpp index 848cc34..683e3a6 100644 --- a/modules_wearable/localization/src/LanguageTagsProvider.cpp +++ b/modules/localization/src/LanguageTagsProvider.cpp @@ -18,20 +18,18 @@ * @author Marcin Kaminski (marcin.ka@samsung.com) * @version 1.0 */ - +#include #include "LanguageTagsProvider.h" +#include +#include #include -#include #include #include #include #include - -#include +#include #include -#include - IMPLEMENT_SINGLETON(LanguageTagsProvider) /* ========== public ========== */ @@ -57,7 +55,7 @@ void LanguageTagsProvider::setLanguageTags(const LanguageTags& taglist) void LanguageTagsProvider::setLanguageTagsFromLocales(const char* locales) { - LogDebug("Setting new language tags for locales " << locales); + WrtLogD("Setting new language tags for locales %s", locales); this->createTagsFromLocales(locales); } @@ -110,7 +108,7 @@ DPL::String LanguageTagsProvider::LocaleToBCP47LanguageTag( /* ========== private ========== */ LanguageTagsProvider::LanguageTagsProvider() { - LogDebug("Creating LanguageTagsProvider instance"); + WrtLogD("Creating LanguageTagsProvider instance"); this->loadSystemTags(); } @@ -121,9 +119,9 @@ void LanguageTagsProvider::loadSystemTags() { char* language = vconf_get_str(VCONFKEY_LANGSET); if (!language) { - LogError("Failed to get language from vconf"); + WrtLogE("Failed to get language from vconf"); } else { - LogDebug("Language fetched from vconf: " << language); + WrtLogD("Language fetched from vconf: %s", language); } createTagsFromLocales(language); free(language); @@ -133,25 +131,25 @@ void LanguageTagsProvider::createTagsFromLocales(const char* language) { m_languageTagsList.clear(); if (!language) { - LogDebug("Setting default language tags"); + WrtLogD("Setting default language tags"); /* If NULL language given than set default language tags * and return. */ m_languageTagsList.push_back(L""); return; } - LogDebug("Setting tags for language: " << language); + WrtLogD("Setting tags for language: %s", language); DPL::String langdescr = LocaleToBCP47LanguageTag(DPL::FromUTF8String(language)); if (langdescr.empty()) { - LogError("Empty language description while correct value needed"); + WrtLogE("Empty language description while correct value needed"); } else { /* Language tags list should not be cleared before this place to * avoid losing current data when new data are invalid */ size_t position; while (true) { - LogDebug("Processing language description: " << langdescr); + WrtLogD("Processing language description: %ls", langdescr.c_str()); m_languageTagsList.push_back(langdescr); // compatibility with lower language Tag by SDK diff --git a/modules_wearable/localization/src/w3c_file_localization.cpp b/modules/localization/src/w3c_file_localization.cpp similarity index 89% rename from modules_wearable/localization/src/w3c_file_localization.cpp rename to modules/localization/src/w3c_file_localization.cpp index 438c62b..1227523 100644 --- a/modules_wearable/localization/src/w3c_file_localization.cpp +++ b/modules/localization/src/w3c_file_localization.cpp @@ -29,9 +29,8 @@ #include #include -#include +#include #include -#include #include #include @@ -44,18 +43,18 @@ const DPL::String WIDGET_URI_BEGIN = L"widget://"; const DPL::String APP_URI_BEGIN = L"app://"; const DPL::String LOCALE_PREFIX = L"locales/"; -DPL::Optional GetFilePathInWidgetPackageInternal( +DPL::OptionalStdString GetFilePathInWidgetPackageInternal( const std::string& basePath, std::string filePath) { - LogDebug("Looking for file: " << filePath << " in: " << basePath); + WrtLogD("Looking for file: %s in: %s", filePath.c_str(), basePath.c_str()); const LanguageTags& ltags = LanguageTagsProviderSingleton::Instance().getLanguageTags(); //Check if string isn't empty if (filePath.size() == 0) { - return DPL::Optional::Null; + return DPL::OptionalStdString(); } //Removing preceding '/' if (filePath[0] == '/') { @@ -68,15 +67,15 @@ DPL::Optional GetFilePathInWidgetPackageInternal( } //Check if string isn't empty if (filePath.size() == 0) { - return DPL::Optional::Null; + return DPL::OptionalStdString(); } - LogDebug("locales size = " << ltags.size()); + WrtLogD("locales size = %i", ltags.size()); for (LanguageTags::const_iterator it = ltags.begin(); it != ltags.end(); ++it) { - LogDebug("Trying locale: " << *it); + WrtLogD("Trying locale: %ls", it->c_str()); std::string path = basePath; if (path[path.size() - 1] == '/') { path.erase(path.size() - 1); @@ -88,27 +87,27 @@ DPL::Optional GetFilePathInWidgetPackageInternal( path += "/locales/" + DPL::ToUTF8String(*it) + "/" + filePath; } - LogDebug("Trying locale: " << *it << " | " << path); + WrtLogD("Trying locale: %ls | %s", it->c_str(), path.c_str()); struct stat buf; if (0 == stat(path.c_str(), &buf)) { if ((buf.st_mode & S_IFMT) == S_IFREG) { path.erase(0, basePath.length()); - return DPL::Optional(path); + return DPL::OptionalStdString(path); } } } - return DPL::Optional::Null; + return DPL::OptionalStdString(); } -DPL::Optional GetFilePathInWidgetPackageInternal( +DPL::OptionalString GetFilePathInWidgetPackageInternal( const DPL::String& basePath, const DPL::String& filePath) { - DPL::Optional path = + DPL::OptionalStdString path = GetFilePathInWidgetPackageInternal(DPL::ToUTF8String(basePath), DPL::ToUTF8String(filePath)); - DPL::Optional dplPath; + DPL::OptionalString dplPath; if (!!path) { dplPath = DPL::FromUTF8String(*path); } @@ -191,7 +190,7 @@ std::string getFilePathInWidgetPackageFromUrl(const std::string &tzAppId, const if (workingUrl.compare(0, DOUBLE_ROOT.length(), DOUBLE_ROOT) == 0) { workingUrl.erase(0, 1); - LogDebug("workingUrl: " << workingUrl); + WrtLogD("workingUrl: %s", workingUrl.c_str()); } // remove src path @@ -225,7 +224,7 @@ std::string getFilePathInWidgetPackageFromUrl(const std::string &tzAppId, const } else { - LogError("Tizen id does not match, ignoring"); + WrtLogE("Tizen id does not match, ignoring"); return ""; } } @@ -242,7 +241,7 @@ std::string getFilePathInWidgetPackageFromUrl(const std::string &tzAppId, const if (workingUrl.empty()) { - LogError("URL Localization Error!"); + WrtLogE("URL Localization Error!"); return ""; } @@ -296,7 +295,7 @@ std::string getFilePathInWidgetPackageFromUrl(const std::string &tzAppId, const return workingUrl; } -DPL::Optional getFilePathInWidgetPackageFromUrl( +DPL::OptionalString getFilePathInWidgetPackageFromUrl( const WrtDB::TizenAppId &tzAppId, const DPL::String &url) { @@ -305,7 +304,7 @@ DPL::Optional getFilePathInWidgetPackageFromUrl( url); } -DPL::Optional getFilePathInWidgetPackageFromUrl( +DPL::OptionalString getFilePathInWidgetPackageFromUrl( WrtDB::WidgetDAOReadOnlyPtr dao, const DPL::String &url) { @@ -347,24 +346,24 @@ DPL::Optional getFilePathInWidgetPackageFromUrl( DPL::String id = dao->getTizenAppId(); if(req.substr(0, id.size()) != id) { - LogError("Tizen id does not match, ignoring"); - return DPL::Optional::Null; + WrtLogE("Tizen id does not match, ignoring"); + return DPL::OptionalString(); } req.erase(0, id.length()); } else { - LogDebug("Unknown path format, ignoring"); - return DPL::Optional::Null; + WrtLogD("Unknown path format, ignoring"); + return DPL::OptionalString(); } auto widgetPath = dao->getPath(); - LogDebug("Required path: " << req); - DPL::Optional found = + WrtLogD("Required path: %ls", req.c_str()); + DPL::OptionalString found = GetFilePathInWidgetPackageInternal(widgetPath, req); if (!found) { - LogError("Path not found within current locale in current widget"); - return DPL::Optional::Null; + WrtLogE("Path not found within current locale in current widget"); + return DPL::OptionalString(); } found = widgetPath + *found + suffix; @@ -372,7 +371,7 @@ DPL::Optional getFilePathInWidgetPackageFromUrl( return found; } -DPL::Optional getFilePathInWidgetPackage( +DPL::OptionalString getFilePathInWidgetPackage( const WrtDB::TizenAppId &tzAppId, const DPL::String& file) { @@ -381,7 +380,7 @@ DPL::Optional getFilePathInWidgetPackage( file); } -DPL::Optional getFilePathInWidgetPackage( +DPL::OptionalString getFilePathInWidgetPackage( WrtDB::WidgetDAOReadOnlyPtr dao, const DPL::String& file) { @@ -421,7 +420,7 @@ DPL::OptionalString getStartFile(WrtDB::WidgetDAOReadOnlyPtr dao) } } - return DPL::OptionalString::Null; + return DPL::OptionalString(); } OptionalWidgetIcon getIcon(const WrtDB::TizenAppId & tzAppId) @@ -461,7 +460,7 @@ OptionalWidgetIcon getIcon(WrtDB::WidgetDAOReadOnlyPtr dao) } } - return OptionalWidgetIcon::Null; + return OptionalWidgetIcon(); } WidgetIconList getValidIconsList(const WrtDB::TizenAppId &tzAppId) @@ -478,7 +477,7 @@ WidgetIconList getValidIconsList(WrtDB::WidgetDAOReadOnlyPtr dao) FOREACH(it, list) { - LogDebug(":" << it->iconSrc); + WrtLogD(":%ls", it->iconSrc.c_str()); if (!!getFilePathInWidgetPackage(dao->getTizenAppId(), it->iconSrc)) { @@ -535,7 +534,7 @@ OptionalWidgetStartFileInfo getStartFileInfo(WrtDB::WidgetDAOReadOnlyPtr dao) } } - return OptionalWidgetStartFileInfo::Null; + return OptionalWidgetStartFileInfo(); } WidgetLocalizedInfo getLocalizedInfo(const WrtDB::TizenAppId & tzAppId) diff --git a/modules_mobile/log/config.cmake b/modules/log/config.cmake similarity index 68% rename from modules_mobile/log/config.cmake rename to modules/log/config.cmake index 30ad033..2885046 100644 --- a/modules_mobile/log/config.cmake +++ b/modules/log/config.cmake @@ -13,25 +13,17 @@ # limitations under the License. # # -# @file config.cmake # @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief # SET(DPL_LOG_SOURCES - ${PROJECT_SOURCE_DIR}/modules/log/src/abstract_log_provider.cpp - ${PROJECT_SOURCE_DIR}/modules/log/src/dlog_log_provider.cpp ${PROJECT_SOURCE_DIR}/modules/log/src/log.cpp - ${PROJECT_SOURCE_DIR}/modules/log/src/old_style_log_provider.cpp PARENT_SCOPE ) SET(DPL_LOG_HEADERS - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/abstract_log_provider.h - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/dlog_log_provider.h + ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/wrt_log.h ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/log.h - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/old_style_log_provider.h ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/secure_log.h PARENT_SCOPE ) diff --git a/modules_wearable/log/include/dpl/log/abstract_log_provider.h b/modules/log/include/dpl/log/abstract_log_provider.h similarity index 100% rename from modules_wearable/log/include/dpl/log/abstract_log_provider.h rename to modules/log/include/dpl/log/abstract_log_provider.h diff --git a/modules_wearable/log/include/dpl/log/dlog_log_provider.h b/modules/log/include/dpl/log/dlog_log_provider.h similarity index 96% rename from modules_wearable/log/include/dpl/log/dlog_log_provider.h rename to modules/log/include/dpl/log/dlog_log_provider.h index 1dd4c2d..f23399a 100644 --- a/modules_wearable/log/include/dpl/log/dlog_log_provider.h +++ b/modules/log/include/dpl/log/dlog_log_provider.h @@ -23,7 +23,8 @@ #define DPL_DLOG_LOG_PROVIDER_H #include -#include +#include +#include #include namespace DPL { @@ -32,7 +33,7 @@ class DLOGLogProvider : public AbstractLogProvider { private: - DPL::ScopedFree m_tag; + std::unique_ptr m_tag; static std::string FormatMessage(const char *message, const char *filename, diff --git a/modules_mobile/log/include/dpl/log/log.h b/modules/log/include/dpl/log/log.h old mode 100644 new mode 100755 similarity index 53% rename from modules_mobile/log/include/dpl/log/log.h rename to modules/log/include/dpl/log/log.h index d4d95ed..1f6b195 --- a/modules_mobile/log/include/dpl/log/log.h +++ b/modules/log/include/dpl/log/log.h @@ -22,33 +22,37 @@ #ifndef DPL_LOG_H #define DPL_LOG_H +#ifndef LOG_TAG +#warning Please define LOG_TAG +#define LOG_TAG "WRT_UNDEFINED" +#endif + +#include +#include +#include #include #include -#include -#include -#include -#include -#include +#include namespace DPL { namespace Log { /** * DPL log system * - * To switch logs into old style, export - * DPL_USE_OLD_STYLE_LOGS before application start + * @deprecated */ +const char *LocateSourceFileName(const char *filename); +std::string FormatMessage(const char *message, + const char *filename, + int line, + const char *function); + class LogSystem : private Noncopyable { private: - typedef std::list AbstractLogProviderPtrList; - AbstractLogProviderPtrList m_providers; - - DLOGLogProvider *m_dlogProvider; - OldStyleLogProvider *m_oldStyleProvider; - bool m_isLoggingEnabled; + std::unique_ptr m_tag; public: bool IsLoggingEnabled() const; @@ -61,7 +65,8 @@ class LogSystem : void Debug(const char *message, const char *filename, int line, - const char *function); + const char *function, + const char *tag = NULL); /** * Log info message @@ -69,7 +74,8 @@ class LogSystem : void Info(const char *message, const char *filename, int line, - const char *function); + const char *function, + const char *tag = NULL); /** * Log warning message @@ -77,7 +83,8 @@ class LogSystem : void Warning(const char *message, const char *filename, int line, - const char *function); + const char *function, + const char *tag = NULL); /** * Log error message @@ -85,7 +92,8 @@ class LogSystem : void Error(const char *message, const char *filename, int line, - const char *function); + const char *function, + const char *tag = NULL); /** * Log pedantic message @@ -93,39 +101,14 @@ class LogSystem : void Pedantic(const char *message, const char *filename, int line, - const char *function); + const char *function, + const char *tag = NULL); /** * Set default's DLOG provider Tag */ void SetTag(const char *tag); - /** - * Add abstract provider to providers list - * - * @notice Ownership is transfered to LogSystem and deleted upon exit - */ - void AddProvider(AbstractLogProvider *provider); - - /** - * Remove abstract provider from providers list - */ - void RemoveProvider(AbstractLogProvider *provider); -}; - -/* - * Replacement low overhead null logging class - */ -class NullStream -{ - public: - NullStream() {} - - template - NullStream& operator<<(const T&) - { - return *this; - } }; /** @@ -135,31 +118,23 @@ typedef Singleton LogSystemSingleton; } } // namespace DPL -// -// Log support -// -// +/** + * Logging API for C++ + * This API print out messages to the main log buffer + */ #ifdef DPL_LOGS_ENABLED - #define DPL_MACRO_FOR_LOGGING(message, function) \ - do \ - { \ - if (DPL::Log::LogSystemSingleton::Instance().IsLoggingEnabled()) \ - { \ +#define DPL_MACRO_FOR_LOGGING(message, function) \ +do { \ std::ostringstream platformLog; \ platformLog << message; \ DPL::Log::LogSystemSingleton::Instance().function( \ platformLog.str().c_str(), \ - __FILE__, __LINE__, __FUNCTION__); \ - } \ - } while (0) + __FILE__, __LINE__, __FUNCTION__, \ + LOG_TAG); \ +} while (0) #else -/* avoid warnings about unused variables */ - #define DPL_MACRO_FOR_LOGGING(message, function) \ - do { \ - DPL::Log::NullStream ns; \ - ns << message; \ - } while (0) +#define DPL_MACRO_FOR_LOGGING(message, function) do { } while (0) #endif #define LogDebug(message) DPL_MACRO_FOR_LOGGING(message, Debug) @@ -168,4 +143,55 @@ typedef Singleton LogSystemSingleton; #define LogError(message) DPL_MACRO_FOR_LOGGING(message, Error) #define LogPedantic(message) DPL_MACRO_FOR_LOGGING(message, Pedantic) + +/** + * Logging API for C + * This API print out messages to the system log buffer + */ +#define INTERNAL_SECURE_LOG __extension__ SECURE_SLOG +#ifdef DPL_LOGS_ENABLED +#define WRT_LOG_(priority, ...) \ +do { \ + INTERNAL_SECURE_LOG(priority, LOG_TAG, __VA_ARGS__); \ +} while(0) +#else +#define WRT_LOG_(priority, ...) do { } while (0) +#endif + +#define WrtLogD(...) WRT_LOG_(LOG_DEBUG, __VA_ARGS__) +#define WrtLogI(...) WRT_LOG_(LOG_INFO, __VA_ARGS__) +#define WrtLogW(...) WRT_LOG_(LOG_WARN, __VA_ARGS__) +#define WrtLogE(...) WRT_LOG_(LOG_ERROR, __VA_ARGS__) + + +/** + * Logging API for C + * This API print out messages to the system log buffer + */ +#ifndef SECURE_SLOGD +#define SECURE_SLOGD(fmt, arg...) SLOGD(fmt,##arg) +#endif + +#ifndef SECURE_SLOGW +#define SECURE_SLOGW(fmt, arg...) SLOGW(fmt,##arg) +#endif + +#ifndef SECURE_SLOGE +#define SECURE_SLOGE(fmt, arg...) SLOGE(fmt,##arg) +#endif + +#undef _D +#undef _W +#undef _E + +#ifdef DPL_LOGS_ENABLED +#define _D(fmt, arg ...) SECURE_SLOGD(fmt, ##arg) +#define _W(fmt, arg ...) SECURE_SLOGW(fmt, ##arg) +#define _E(fmt, arg ...) SECURE_SLOGE(fmt, ##arg) +#else +#define _D(fmt, arg ...) do { } while (0) +#define _W(fmt, arg ...) do { } while (0) +#define _E(fmt, arg ...) do { } while (0) +#endif + #endif // DPL_LOG_H diff --git a/modules_wearable/log/include/dpl/log/old_style_log_provider.h b/modules/log/include/dpl/log/old_style_log_provider.h similarity index 100% rename from modules_wearable/log/include/dpl/log/old_style_log_provider.h rename to modules/log/include/dpl/log/old_style_log_provider.h diff --git a/modules_mobile/i18n/dao/orm/orm_generator_i18n.h b/modules/log/include/dpl/log/secure_log.h similarity index 66% rename from modules_mobile/i18n/dao/orm/orm_generator_i18n.h rename to modules/log/include/dpl/log/secure_log.h index 53cfea3..0b69e9a 100644 --- a/modules_mobile/i18n/dao/orm/orm_generator_i18n.h +++ b/modules/log/include/dpl/log/secure_log.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,12 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/** + * @file secure_log.h + * @author Jihoon Chung(jihoon.chung@samsung.com) + * @version 0.1 + * @brief + */ + +#ifndef DPL_SECURE_LOG_H +#define DPL_SECURE_LOG_H -#ifndef _ORM_GENERATOR_I18N_H_ -#define _ORM_GENERATOR_I18N_H_ +#include +#include -#define ORM_GENERATOR_DATABASE_NAME i18n_db_definitions -#include -#undef ORM_GENERATOR_DATABASE_NAME +#endif // DPL_SECURE_LOG_H -#endif // _ORM_GENERATOR_I18N_H_ diff --git a/modules_wearable/certificate_dao/dao/certificate_database.cpp b/modules/log/include/dpl/log/wrt_log.h similarity index 78% rename from modules_wearable/certificate_dao/dao/certificate_database.cpp rename to modules/log/include/dpl/log/wrt_log.h index 4392e0c..074be17 100755 --- a/modules_wearable/certificate_dao/dao/certificate_database.cpp +++ b/modules/log/include/dpl/log/wrt_log.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,6 +14,9 @@ * limitations under the License. */ -#include +#ifndef WRT_LOG_H +#define WRT_LOG_H -DPL::Mutex g_certificateDBQueriesMutex; +#include + +#endif diff --git a/modules_wearable/log/src/abstract_log_provider.cpp b/modules/log/src/abstract_log_provider.cpp similarity index 100% rename from modules_wearable/log/src/abstract_log_provider.cpp rename to modules/log/src/abstract_log_provider.cpp diff --git a/modules_wearable/log/src/dlog_log_provider.cpp b/modules/log/src/dlog_log_provider.cpp similarity index 100% rename from modules_wearable/log/src/dlog_log_provider.cpp rename to modules/log/src/dlog_log_provider.cpp diff --git a/modules/log/src/log.cpp b/modules/log/src/log.cpp new file mode 100755 index 0000000..7e1144b --- /dev/null +++ b/modules/log/src/log.cpp @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) + * @brief This file is the implementation file of log system + */ +#include +#include +#include +#include +#include + +/** + * The __extension__ keyword in the following define is required because + * macros used here from dlog.h use non-standard extension that cause + * gcc to show unwanted warnings when compiling with -pedantic switch. + */ +#define INTERNAL_DLP_LOG __extension__ SECURE_LOG + +IMPLEMENT_SINGLETON(DPL::Log::LogSystem) + +namespace DPL { +namespace Log { + +const char *LocateSourceFileName(const char *filename) +{ + const char *ptr = strrchr(filename, '/'); + return ptr != NULL ? ptr + 1 : filename; +} + +std::string FormatMessage(const char *message, + const char *filename, + int line, + const char *function) +{ + std::ostringstream val; + + val << std::string("[") << + LocateSourceFileName(filename) << std::string(":") << line << + std::string("] ") << function << std::string("(): ") << message; + + return val.str(); +} + +bool LogSystem::IsLoggingEnabled() const +{ + return m_isLoggingEnabled; + } + +LogSystem::LogSystem() + : m_isLoggingEnabled(getenv("TIZEN_DEBUG_ENABLE")) // as defined in dlog.h +{ +} + +LogSystem::~LogSystem() +{ +} + +void LogSystem::SetTag(const char* tag) +{ + m_tag.reset(strdup(tag)); +} + +void LogSystem::Debug(const char *message, + const char *filename, + int line, + const char *function, + const char *tag) +{ + INTERNAL_DLP_LOG(LOG_DEBUG, m_tag.get() ? m_tag.get() : tag, "%s", + FormatMessage(message, filename, line, function).c_str()); +} + +void LogSystem::Info(const char *message, + const char *filename, + int line, + const char *function, + const char *tag) +{ + INTERNAL_DLP_LOG(LOG_INFO, m_tag.get() ? m_tag.get() : tag, "%s", + FormatMessage(message, filename, line, function).c_str()); +} + +void LogSystem::Warning(const char *message, + const char *filename, + int line, + const char *function, + const char *tag) +{ + INTERNAL_DLP_LOG(LOG_WARN, m_tag.get() ? m_tag.get() : tag, "%s", + FormatMessage(message, filename, line, function).c_str()); +} + +void LogSystem::Error(const char *message, + const char *filename, + int line, + const char *function, + const char *tag) +{ + INTERNAL_DLP_LOG(LOG_ERROR, m_tag.get() ? m_tag.get() : tag, "%s", + FormatMessage(message, filename, line, function).c_str()); +} + +void LogSystem::Pedantic(const char *message, + const char *filename, + int line, + const char *function, + const char *tag) +{ + LogSystem::Debug(message, filename, line, function, tag); +} + +} +} // namespace DPL diff --git a/modules_wearable/log/src/old_style_log_provider.cpp b/modules/log/src/old_style_log_provider.cpp similarity index 100% rename from modules_wearable/log/src/old_style_log_provider.cpp rename to modules/log/src/old_style_log_provider.cpp diff --git a/modules_wearable/rpc/config.cmake b/modules/rpc/config.cmake similarity index 100% rename from modules_wearable/rpc/config.cmake rename to modules/rpc/config.cmake diff --git a/modules_wearable/rpc/include/dpl/rpc/abstract_rpc_connection.h b/modules/rpc/include/dpl/rpc/abstract_rpc_connection.h similarity index 100% rename from modules_wearable/rpc/include/dpl/rpc/abstract_rpc_connection.h rename to modules/rpc/include/dpl/rpc/abstract_rpc_connection.h diff --git a/modules_wearable/rpc/include/dpl/rpc/abstract_rpc_connector.h b/modules/rpc/include/dpl/rpc/abstract_rpc_connector.h similarity index 100% rename from modules_wearable/rpc/include/dpl/rpc/abstract_rpc_connector.h rename to modules/rpc/include/dpl/rpc/abstract_rpc_connector.h diff --git a/modules_wearable/rpc/include/dpl/rpc/generic_rpc_connection.h b/modules/rpc/include/dpl/rpc/generic_rpc_connection.h similarity index 100% rename from modules_wearable/rpc/include/dpl/rpc/generic_rpc_connection.h rename to modules/rpc/include/dpl/rpc/generic_rpc_connection.h diff --git a/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_client.h b/modules/rpc/include/dpl/rpc/generic_socket_rpc_client.h similarity index 91% rename from modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_client.h rename to modules/rpc/include/dpl/rpc/generic_socket_rpc_client.h index 9629e61..2749a17 100644 --- a/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_client.h +++ b/modules/rpc/include/dpl/rpc/generic_socket_rpc_client.h @@ -58,7 +58,7 @@ class GenericSocketRPCClient : // Retrieve socket sender SocketType *socket = static_cast(event.GetSender()); - LogPedantic("Connection with RPC server established"); + WrtLogD("Connection with RPC server established"); // Is this connection still tracked ? // It might have disappeared on close @@ -66,7 +66,7 @@ class GenericSocketRPCClient : m_internalConnectionSet.find(socket); if (iterator == m_internalConnectionSet.end()) { - LogPedantic("RPC client connection socket disappeared"); + WrtLogD("RPC client connection socket disappeared"); return; } @@ -102,7 +102,7 @@ class GenericSocketRPCClient : AbstractRPCConnectionID Open(const Address &socketAddress) { - LogPedantic("Starting client: " << socketAddress.ToString()); + WrtLogD("Starting client: %s", socketAddress.ToString().c_str()); // Alloc new socket SocketType *socket = new SocketType(); @@ -126,7 +126,7 @@ class GenericSocketRPCClient : ConnectedEvent>::RemoveListener(this); // Log debug message - LogPedantic("Cannot connect to: " << socketAddress.ToString()); + WrtLogD("Cannot connect to: %s", socketAddress.ToString().c_str()); // Problem with client startup ReThrowMsg(typename Exception::OpenFailed, socketAddress.ToString()); @@ -136,9 +136,9 @@ class GenericSocketRPCClient : m_internalConnectionSet.insert(socket); // Debug info - LogPedantic( - "Client started on interface: " << - socket->GetLocalAddress().ToString()); + WrtLogD( + "Client started on interface: %s", + socket->GetLocalAddress().ToString().c_str()); // Return unique identifier return static_cast(socket); @@ -146,7 +146,7 @@ class GenericSocketRPCClient : void Close(AbstractRPCConnectionID connectionID) { - LogPedantic("Closing client interface..."); + WrtLogD("Closing client interface..."); // Get socket from ID SocketType *socket = static_cast(connectionID); @@ -170,7 +170,7 @@ class GenericSocketRPCClient : m_internalConnectionSet.erase(iterator); // Done - LogPedantic("Closed"); + WrtLogD("Closed"); } void CloseAll() diff --git a/modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_connection.h b/modules/rpc/include/dpl/rpc/generic_socket_rpc_connection.h similarity index 100% rename from modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_connection.h rename to modules/rpc/include/dpl/rpc/generic_socket_rpc_connection.h diff --git a/modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_server.h b/modules/rpc/include/dpl/rpc/generic_socket_rpc_server.h similarity index 90% rename from modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_server.h rename to modules/rpc/include/dpl/rpc/generic_socket_rpc_server.h index a4cae00..30474f3 100644 --- a/modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_server.h +++ b/modules/rpc/include/dpl/rpc/generic_socket_rpc_server.h @@ -64,20 +64,19 @@ class GenericSocketRPCServer : m_internalInterfacesSet.find(server); if (iterator == m_internalInterfacesSet.end()) { - LogPedantic("RPC server interface socket disappeared"); + WrtLogD("RPC server interface socket disappeared"); return; } // Accept incoming client SocketType *client = static_cast(server->Accept()); if (client == NULL) { - LogPedantic("Spontaneous accept on socket occurred"); + WrtLogD("Spontaneous accept on socket occurred"); return; } - LogPedantic( - "Client connected to server: " << - client->GetRemoteAddress().ToString()); + WrtLogD("Client connected to server: %s", + client->GetRemoteAddress().ToString().c_str()); // Open specific connection implementation AbstractRPCConnection *connection = OpenSpecificConnection(client); @@ -106,7 +105,7 @@ class GenericSocketRPCServer : AbstractRPCConnectionID Open(const Address &socketAddress) { - LogPedantic("Starting server: " << socketAddress.ToString()); + WrtLogD("Starting server: %s", socketAddress.ToString().c_str()); // Alloc new socket SocketType *socket = new SocketType(); @@ -133,7 +132,7 @@ class GenericSocketRPCServer : ::RemoveListener(this); // Log debug - LogPedantic("Cannot start server: " << socketAddress.ToString()); + WrtLogD("Cannot start server: %s", socketAddress.ToString().c_str()); // Problem with server startup ReThrowMsg(typename Exception::OpenFailed, socketAddress.ToString()); @@ -143,9 +142,8 @@ class GenericSocketRPCServer : m_internalInterfacesSet.insert(socket); // Debug info - LogPedantic( - "Server started on interface: " << - socket->GetLocalAddress().ToString()); + WrtLogD("Server started on interface: %s", + socket->GetLocalAddress().ToString().c_str()); // Return unique identifier return static_cast(socket); @@ -153,7 +151,7 @@ class GenericSocketRPCServer : void Close(AbstractRPCConnectionID connectionID) { - LogPedantic("Closing server interface..."); + WrtLogD("Closing server interface..."); // Get socket from ID SocketType *socket = static_cast(connectionID); @@ -177,7 +175,7 @@ class GenericSocketRPCServer : m_internalInterfacesSet.erase(iterator); // Done - LogPedantic("Closed"); + WrtLogD("Closed"); } void CloseAll() diff --git a/modules_mobile/rpc/include/dpl/rpc/rpc_function.h b/modules/rpc/include/dpl/rpc/rpc_function.h similarity index 96% rename from modules_mobile/rpc/include/dpl/rpc/rpc_function.h rename to modules/rpc/include/dpl/rpc/rpc_function.h index a01235f..1166406 100644 --- a/modules_mobile/rpc/include/dpl/rpc/rpc_function.h +++ b/modules/rpc/include/dpl/rpc/rpc_function.h @@ -24,10 +24,10 @@ #include #include -#include #include #include #include +#include namespace DPL { namespace RPC { @@ -150,9 +150,9 @@ class RPCFunction : public IStream { std::string::size_type size; m_buffer.FlattenConsume(&size, sizeof(size)); - ScopedArray str(new char[size]); - m_buffer.FlattenConsume(str.Get(), size); - arg = std::string(str.Get(), str.Get() + size); + std::unique_ptr str(new char[size]); + m_buffer.FlattenConsume(str.get(), size); + arg = std::string(str.get(), str.get() + size); } Catch(BinaryQueue::Exception::OutOfData) { diff --git a/modules_wearable/rpc/include/dpl/rpc/unix_socket_rpc_client.h b/modules/rpc/include/dpl/rpc/unix_socket_rpc_client.h similarity index 100% rename from modules_wearable/rpc/include/dpl/rpc/unix_socket_rpc_client.h rename to modules/rpc/include/dpl/rpc/unix_socket_rpc_client.h diff --git a/modules_wearable/rpc/include/dpl/rpc/unix_socket_rpc_connection.h b/modules/rpc/include/dpl/rpc/unix_socket_rpc_connection.h similarity index 100% rename from modules_wearable/rpc/include/dpl/rpc/unix_socket_rpc_connection.h rename to modules/rpc/include/dpl/rpc/unix_socket_rpc_connection.h diff --git a/modules_wearable/rpc/include/dpl/rpc/unix_socket_rpc_server.h b/modules/rpc/include/dpl/rpc/unix_socket_rpc_server.h similarity index 100% rename from modules_wearable/rpc/include/dpl/rpc/unix_socket_rpc_server.h rename to modules/rpc/include/dpl/rpc/unix_socket_rpc_server.h diff --git a/modules_wearable/rpc/src/abstract_rpc_connection.cpp b/modules/rpc/src/abstract_rpc_connection.cpp similarity index 100% rename from modules_wearable/rpc/src/abstract_rpc_connection.cpp rename to modules/rpc/src/abstract_rpc_connection.cpp diff --git a/modules_wearable/rpc/src/abstract_rpc_connector.cpp b/modules/rpc/src/abstract_rpc_connector.cpp similarity index 100% rename from modules_wearable/rpc/src/abstract_rpc_connector.cpp rename to modules/rpc/src/abstract_rpc_connector.cpp diff --git a/modules_wearable/rpc/src/generic_rpc_connection.cpp b/modules/rpc/src/generic_rpc_connection.cpp similarity index 88% rename from modules_wearable/rpc/src/generic_rpc_connection.cpp rename to modules/rpc/src/generic_rpc_connection.cpp index 6b16f28..dbf790c 100644 --- a/modules_wearable/rpc/src/generic_rpc_connection.cpp +++ b/modules/rpc/src/generic_rpc_connection.cpp @@ -21,8 +21,7 @@ */ #include #include -#include -#include +#include #include #include @@ -56,22 +55,22 @@ GenericRPCConnection::GenericRPCConnection( AbstractWaitableInputOutput *inputOutput) : m_inputOutput(inputOutput) { - LogPedantic("Opening generic RPC..."); + WrtLogD("Opening generic RPC..."); WaitableInputOutputExecutionContextSupport::Open(inputOutput); - LogPedantic("Generic RPC opened"); + WrtLogD("Generic RPC opened"); } GenericRPCConnection::~GenericRPCConnection() { // Ensure RPC is closed - LogPedantic("Closing generic RPC..."); + WrtLogD("Closing generic RPC..."); WaitableInputOutputExecutionContextSupport::Close(); - LogPedantic("Generic RPC closed"); + WrtLogD("Generic RPC closed"); } void GenericRPCConnection::AsyncCall(const RPCFunction &function) { - LogPedantic("Executing async call"); + WrtLogD("Executing async call"); // Create binary call BinaryQueue serializedCall = function.Serialize(); @@ -98,7 +97,7 @@ void GenericRPCConnection::AsyncCall(const RPCFunction &function) void GenericRPCConnection::Ping() { - LogPedantic("Executing ping call"); + WrtLogD("Executing ping call"); // Append buffers Protocol::AsyncCall call; @@ -121,7 +120,7 @@ void GenericRPCConnection::Ping() void GenericRPCConnection::OnInputStreamRead() { - LogPedantic("Interpreting " << m_inputStream.Size() << " bytes buffer"); + WrtLogD("Interpreting %i bytes buffer", m_inputStream.Size()); // Enough bytes to read at least one header ? if (m_inputStream.Size() >= sizeof(Protocol::Header)) { @@ -133,7 +132,7 @@ void GenericRPCConnection::OnInputStreamRead() if (m_inputStream.Size() >= sizeof(Protocol::Header) + header.size) { - LogPedantic("Will parse packet of type: " << header.type); + WrtLogD("Will parse packet of type: %i", header.type); // Allocate new packet (header + real packet data) void *binaryPacket = malloc( @@ -164,9 +163,7 @@ void GenericRPCConnection::OnInputStreamRead() // ...but just remove protocol header call.Consume(sizeof(Protocol::Header)); - LogPedantic( - "Async call of size: " << header.size << - " parsed"); + WrtLogD("Async call of size: %i parsed", header.size); // Call async call event listeners DPL::Event::EventSupport -#include -#include -#include #include #include #include #include #include +#include #include #include #include - -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::security_origin; +#include namespace SecurityOriginDB { using namespace WrtDB; @@ -42,38 +39,45 @@ using namespace WrtDB; #define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ + WrtLogE(message); \ ReThrowMsg(SecurityOriginDAO::Exception::DatabaseError, \ message); \ } -// database connection -#define SECURITY_ORIGIN_DB_INTERNAL(tlsCommand, InternalType, interface) \ - InternalType tlsCommand(interface); -#define SECURITY_ORIGIN_DB_SELECT(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Select, interface) -#define SECURITY_ORIGIN_DB_INSERT(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Insert, interface) -#define SECURITY_ORIGIN_DB_UPDATE(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Update, interface) -#define SECURITY_ORIGIN_DB_DELETE(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Delete, interface) - -typedef DPL::DB::ORM::security_origin::SecurityOriginInfo::Row - SecurityOriginInfoRow; -typedef DPL::DB::ORM::security_origin::SecurityOriginInfo::Select::RowList - SecurityOriginInfoRowList; - namespace { DPL::DB::SqlConnection::Flag::Option SECURITY_ORIGIN_DB_OPTION = DPL::DB::SqlConnection::Flag::RW; DPL::DB::SqlConnection::Flag::Type SECURITY_ORIGIN_DB_TYPE = DPL::DB::SqlConnection::Flag::UseLucene; + const char* const SECURITY_ORIGIN_DB_NAME = ".security_origin.db"; const char* const SECURITY_ORIGIN_DB_SQL_PATH = "/usr/share/wrt-engine/security_origin_db.sql"; const char* const SECURITY_DATABASE_JOURNAL_FILENAME = "-journal"; +//query strings +const char* const SELECT_ORIGIN_DATA_LIST = + "select scheme,host,port,feature from SecurityOriginInfo"; +const char* const SELECT_ORIGIN_GET_RESULT = + "select result from SecurityOriginInfo" + " where feature=? and scheme=? and host=? and port=?"; +const char* const SELECT_ORIGIN_GET_READONLY = + "select readonly from SecurityOriginInfo" + " where feature=? and scheme=? and host=? and port=?"; +const char* const DELETE_SECURITY_ORIGIN = + "delete from SecurityOriginInfo" + " where feature=? and scheme=? and host=? and port=?"; +const char* const DELETE_SECURITY_ORIGIN_BY_RESULT = + "delete from SecurityOriginInfo" + " where result=?"; +const char* const INSERT_SECURITY_ORIGIN = + "insert into SecurityOriginInfo (feature, scheme, host, port, result, readonly)" + "values (?, ?, ?, ?, ?, ?)"; +const char* const UPDATE_SECURITY_ORIGIN = + "update SecurityOriginInfo" + " set result=?, readonly=?" + " where feature=? and scheme=? and host=? and port=?"; + const int WEB_APPLICATION_UID = 5000; const int WEB_APPLICATION_GUID = 5000; @@ -99,7 +103,7 @@ void checkDatabase(std::string databasePath) struct stat buffer; if (stat(databasePath.c_str(), &buffer) != 0) { //Create fresh database - LogDebug("Creating database " << databasePath); + WrtLogD("Creating database %s", databasePath.c_str()); std::fstream file; file.open(SECURITY_ORIGIN_DB_SQL_PATH, std::ios_base::in); @@ -138,37 +142,57 @@ void checkDatabase(std::string databasePath) } SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to get database Path") } -} // namespace SecurityOriginDB +} // anonymous namespace -SecurityOriginDAO::SecurityOriginDAO(const WrtDB::TizenPkgId &pkgName) : - m_dbPath(createDatabasePath(pkgName)), - m_dbInterface(m_dbPath, SECURITY_ORIGIN_DB_TYPE) +SecurityOriginDAO::SecurityOriginDAO(const WrtDB::TizenPkgId &pkgName) { - checkDatabase(m_dbPath); - m_dbInterface.AttachToThread(SECURITY_ORIGIN_DB_OPTION); + std::string dbPath = createDatabasePath(pkgName); + checkDatabase(dbPath); + if (DB_UTIL_OK != db_util_open_with_options( + dbPath.c_str(), + &m_databaseInterface, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_NOMUTEX, + NULL)) { + WrtLogE("Cannot open database. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "Cannot open database"); + } } SecurityOriginDAO::~SecurityOriginDAO() { - m_dbInterface.DetachFromThread(); } SecurityOriginDataList SecurityOriginDAO::getSecurityOriginDataList(void) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - SecurityOriginDataList list; - SECURITY_ORIGIN_DB_SELECT(select, SecurityOriginInfo, &m_dbInterface); - typedef std::list RowList; - RowList rowList = select.GetRowList(); + sqlite3_stmt* stmt = sqlPrepare(SELECT_ORIGIN_DATA_LIST); + int rw = sqlite3_step(stmt); - FOREACH(it, rowList) { - Origin origin(it->Get_scheme(), it->Get_host(), it->Get_port()); + SecurityOriginDataList list; + while (SQLITE_ROW == rw) + { + //Read from row + Origin origin((sqlite3_column_string(stmt, 0)), + (sqlite3_column_string(stmt, 1)), + sqlite3_column_int(stmt, 2)); list.push_back( SecurityOriginDataPtr( new SecurityOriginData( - static_cast(it->Get_feature()), origin))); + static_cast(sqlite3_column_int(stmt, 3)), origin))); + //Next row + rw = sqlite3_step(stmt); + } + releaseStatement(stmt); + + if (SQLITE_DONE != rw) + { + //Error occured + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "getSecurityOriginDataList fail"); } + return list; } SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get data list") @@ -176,40 +200,56 @@ SecurityOriginDataList SecurityOriginDAO::getSecurityOriginDataList(void) Result SecurityOriginDAO::getResult(const SecurityOriginData &data) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - SECURITY_ORIGIN_DB_SELECT(select, SecurityOriginInfo, &m_dbInterface); - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - select.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - SecurityOriginInfoRowList rows = select.GetRowList(); - if (rows.empty()) { - return RESULT_UNKNOWN; + Result retval = RESULT_UNKNOWN; + sqlite3_stmt* stmt = sqlPrepare(SELECT_ORIGIN_GET_RESULT); + sqlBind(stmt, 1, data.feature); + sqlBind(stmt, 2, data.origin.scheme); + sqlBind(stmt, 3, data.origin.host); + sqlBind(stmt, 4, data.origin.port); + int rw = sqlite3_step(stmt); + if (SQLITE_ROW == rw) + { + retval = static_cast(sqlite3_column_int(stmt, 0)); + } + + releaseStatement(stmt); + if (SQLITE_DONE != rw && SQLITE_ROW != rw) + { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "getResult fail"); } - SecurityOriginInfoRow row = rows.front(); - return static_cast(row.Get_result()); + return retval; } SQL_CONNECTION_EXCEPTION_HANDLER_END("getResult error") } bool SecurityOriginDAO::isReadOnly(const SecurityOriginData &data) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - SECURITY_ORIGIN_DB_SELECT(select, SecurityOriginInfo, &m_dbInterface); - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - select.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - SecurityOriginInfoRowList rows = select.GetRowList(); - if (rows.empty()) { - return RESULT_UNKNOWN; + int retval = 0; + sqlite3_stmt* stmt = sqlPrepare(SELECT_ORIGIN_GET_READONLY); + sqlBind(stmt, 1, data.feature); + sqlBind(stmt, 2, data.origin.scheme); + sqlBind(stmt, 3, data.origin.host); + sqlBind(stmt, 4, data.origin.port); + int rw = sqlite3_step(stmt); + if (SQLITE_ROW == rw) + { + retval = static_cast(sqlite3_column_int(stmt, 0)); + } + + releaseStatement(stmt); + if (SQLITE_DONE != rw && SQLITE_ROW != rw) + { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "isReadOnly fail"); } - SecurityOriginInfoRow row = rows.front(); - return row.Get_readonly() ? true : false; + return 1==retval; } SQL_CONNECTION_EXCEPTION_HANDLER_END("isReadOnly error") } @@ -240,38 +280,50 @@ void SecurityOriginDAO::setPrivilegeSecurityOriginData( setSecurityOriginData(data, RESULT_ALLOW_ALWAYS, true); } -void SecurityOriginDAO::removeSecurityOriginData( - const SecurityOriginData &data) +void SecurityOriginDAO::removeSecurityOriginData(const SecurityOriginData &data) { if (false == hasResult(data)) { // There is no data return; } + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_DELETE(del, SecurityOriginInfo, &m_dbInterface) - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - del.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - del.Execute(); - transaction.Commit(); + sqlite3_stmt* stmt = sqlPrepare(DELETE_SECURITY_ORIGIN); + sqlBind(stmt, 1, data.feature); + sqlBind(stmt, 2, data.origin.scheme); + sqlBind(stmt, 3, data.origin.host); + sqlBind(stmt, 4, data.origin.port); + + //TODO: Transaction? + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) + { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "removeSecurityOriginData fail"); + } } SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to remove security origin data") } void SecurityOriginDAO::removeSecurityOriginData(const Result result) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_DELETE(del, SecurityOriginInfo, &m_dbInterface) - del.Where(Equals(result)); - del.Execute(); - transaction.Commit(); + sqlite3_stmt* stmt = sqlPrepare(DELETE_SECURITY_ORIGIN_BY_RESULT); + sqlBind(stmt, 1, static_cast(result)); + + //TODO: Transaction? + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) + { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "removeSecurityOriginData fail"); + } } SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to remove data by result") } @@ -286,21 +338,25 @@ void SecurityOriginDAO::insertData(const SecurityOriginData &data, const Result result, const bool readOnly) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - SecurityOriginInfoRow row; - row.Set_feature(data.feature); - row.Set_scheme(data.origin.scheme); - row.Set_host(data.origin.host); - row.Set_port(data.origin.port); - row.Set_result(result); - row.Set_readonly(readOnly ? 1 : 0); - - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_INSERT(insert, SecurityOriginInfo, &m_dbInterface); - insert.Values(row); - insert.Execute(); - transaction.Commit(); + sqlite3_stmt* stmt = sqlPrepare(INSERT_SECURITY_ORIGIN); + sqlBind(stmt, 1, data.feature); + sqlBind(stmt, 2, data.origin.scheme); + sqlBind(stmt, 3, data.origin.host); + sqlBind(stmt, 4, data.origin.port); + sqlBind(stmt, 5, static_cast(result)); + sqlBind(stmt, 6, readOnly ? 1 : 0); + + //TODO: Transaction? + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) + { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "insertData fail"); + } } SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to insert") } @@ -309,29 +365,29 @@ void SecurityOriginDAO::updateData(const SecurityOriginData &data, const Result result, const bool readOnly) { + std::lock_guard lock(m_dbLock); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { - SecurityOriginInfoRow row; - row.Set_feature(data.feature); - row.Set_scheme(data.origin.scheme); - row.Set_host(data.origin.host); - row.Set_port(data.origin.port); - row.Set_result(result); - row.Set_readonly(readOnly ? 1 : 0); - - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_UPDATE(update, SecurityOriginInfo, &m_dbInterface); - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - update.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - update.Values(row); - update.Execute(); - transaction.Commit(); + sqlite3_stmt* stmt = sqlPrepare(UPDATE_SECURITY_ORIGIN); + + sqlBind(stmt, 1, static_cast(result)); + sqlBind(stmt, 2, readOnly ? 1 : 0); + + sqlBind(stmt, 3, data.feature); + sqlBind(stmt, 4, data.origin.scheme); + sqlBind(stmt, 5, data.origin.host); + sqlBind(stmt, 6, data.origin.port); + + //TODO: Transaction? + int rw = sqlite3_step(stmt); + releaseStatement(stmt); + if (SQLITE_DONE != rw) + { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, "updateData fail"); + } } SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to update") } -#undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN -#undef SQL_CONNECTION_EXCEPTION_HANDLER_END + } // namespace SecurityOriginDB diff --git a/modules_wearable/security_origin_dao/dao/security_origin_dao_types.cpp b/modules/security_origin_dao/dao/security_origin_dao_types.cpp similarity index 97% rename from modules_wearable/security_origin_dao/dao/security_origin_dao_types.cpp rename to modules/security_origin_dao/dao/security_origin_dao_types.cpp index 8d2a9f8..84e04e5 100755 --- a/modules_wearable/security_origin_dao/dao/security_origin_dao_types.cpp +++ b/modules/security_origin_dao/dao/security_origin_dao_types.cpp @@ -23,7 +23,6 @@ */ #include -#include namespace SecurityOriginDB { } // namespace SecurityOriginDB diff --git a/modules_mobile/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h b/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h similarity index 93% rename from modules_mobile/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h rename to modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h index d922764..b835055 100644 --- a/modules_mobile/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h +++ b/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h @@ -22,13 +22,12 @@ #ifndef _SECURITY_ORIGIN_DAO_H_ #define _SECURITY_ORIGIN_DAO_H_ -#include #include #include -#include +#include namespace SecurityOriginDB { -class SecurityOriginDAO +class SecurityOriginDAO : public WrtDB::SQLiteDAOBase { public: class Exception @@ -53,8 +52,8 @@ class SecurityOriginDAO void removeSecurityOriginData(const Result result); private: + std::mutex m_dbLock; std::string m_dbPath; - DPL::DB::ThreadDatabaseSupport m_dbInterface; bool hasResult(const SecurityOriginData &data); void insertData(const SecurityOriginData &data, diff --git a/modules_wearable/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h b/modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h similarity index 100% rename from modules_wearable/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h rename to modules/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h diff --git a/modules_wearable/security_origin_dao/orm/orm_generator_security_origin.h b/modules/security_origin_dao/orm/orm_generator_security_origin.h similarity index 100% rename from modules_wearable/security_origin_dao/orm/orm_generator_security_origin.h rename to modules/security_origin_dao/orm/orm_generator_security_origin.h diff --git a/modules_wearable/security_origin_dao/orm/security_origin_db b/modules/security_origin_dao/orm/security_origin_db similarity index 100% rename from modules_wearable/security_origin_dao/orm/security_origin_db rename to modules/security_origin_dao/orm/security_origin_db diff --git a/modules_wearable/security_origin_dao/orm/security_origin_db_definitions b/modules/security_origin_dao/orm/security_origin_db_definitions similarity index 100% rename from modules_wearable/security_origin_dao/orm/security_origin_db_definitions rename to modules/security_origin_dao/orm/security_origin_db_definitions diff --git a/modules_wearable/security_origin_dao/orm/security_origin_db_sql_generator.h b/modules/security_origin_dao/orm/security_origin_db_sql_generator.h similarity index 100% rename from modules_wearable/security_origin_dao/orm/security_origin_db_sql_generator.h rename to modules/security_origin_dao/orm/security_origin_db_sql_generator.h diff --git a/modules_wearable/socket/config.cmake b/modules/socket/config.cmake similarity index 100% rename from modules_wearable/socket/config.cmake rename to modules/socket/config.cmake diff --git a/modules_wearable/socket/include/dpl/socket/abstract_socket.h b/modules/socket/include/dpl/socket/abstract_socket.h similarity index 100% rename from modules_wearable/socket/include/dpl/socket/abstract_socket.h rename to modules/socket/include/dpl/socket/abstract_socket.h diff --git a/modules_mobile/socket/include/dpl/socket/generic_socket.h b/modules/socket/include/dpl/socket/generic_socket.h old mode 100644 new mode 100755 similarity index 88% rename from modules_mobile/socket/include/dpl/socket/generic_socket.h rename to modules/socket/include/dpl/socket/generic_socket.h index 3ed9b86..b8aeba0 --- a/modules_mobile/socket/include/dpl/socket/generic_socket.h +++ b/modules/socket/include/dpl/socket/generic_socket.h @@ -27,8 +27,9 @@ #include #include #include -#include -#include +#include +#include +#include #include #include #include @@ -185,58 +186,86 @@ class GenericSocket : void AddAcceptWatch() { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Read); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->AddWaitableHandleWatch( + this, + m_socket, + WaitMode::Read); } void RemoveAcceptWatch() { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Read); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->RemoveWaitableHandleWatch(this, m_socket, WaitMode::Read); } void AddConnectWatch() { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Write); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->AddWaitableHandleWatch( + this, + m_socket, + WaitMode::Write); } void RemoveConnectWatch() { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Write); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->RemoveWaitableHandleWatch(this, m_socket, WaitMode::Write); } void AddReadWatch() { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Read); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->AddWaitableHandleWatch( + this, + m_socket, + WaitMode::Read); } void RemoveReadWatch() { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Read); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->RemoveWaitableHandleWatch(this, m_socket, WaitMode::Read); } void AddWriteWatch() { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Write); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->AddWaitableHandleWatch( + this, + m_socket, + WaitMode::Write); } void RemoveWriteWatch() { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Write); + WaitableHandleWatchSupport * inheritedContext = + WaitableHandleWatchSupport::InheritedContext(); + + if(inheritedContext) + inheritedContext->RemoveWaitableHandleWatch(this, m_socket, WaitMode::Write); } public: @@ -254,7 +283,7 @@ class GenericSocket : } Catch(Exception::CloseFailed) { - LogPedantic("Close failed and ignored"); + WrtLogD("Close failed and ignored"); } // Check consistency @@ -268,7 +297,7 @@ class GenericSocket : "Invalid socket state, should be 'None'"); } - LogPedantic("Opening socket..."); + WrtLogD("Opening socket..."); // Check consistency Assert(m_socket == -1); @@ -282,7 +311,7 @@ class GenericSocket : // State is prepared m_internalState = InternalState_Prepare; - LogPedantic("Socket opened"); + WrtLogD("Socket opened"); } virtual void Connect(const Address &address) @@ -292,7 +321,7 @@ class GenericSocket : "Invalid socket state, should be 'Prepare'"); } - LogPedantic("Connecting to: " << address.ToString()); + WrtLogD("Connecting to: %s", address.ToString().c_str()); // Try to convert address std::pair socketAddress; @@ -316,7 +345,7 @@ class GenericSocket : if (result == 0) { // Immediate connect - LogPedantic("Immediate connected to: " << address.ToString()); + WrtLogD("Immediate connected to: %s", address.ToString().c_str()); // Add read watch AddReadWatch(); @@ -328,8 +357,8 @@ class GenericSocket : EventSender(this)), DPL::Event::EmitMode::Queued); } else { if (errno == EINTR || errno == EINPROGRESS) { - LogPedantic( - "Asynchronous connect in progress: " << address.ToString()); + WrtLogD( + "Asynchronous connect in progress: %s", address.ToString().c_str()); // Connecting in progress AddConnectWatch(); @@ -358,17 +387,17 @@ class GenericSocket : if (m_internalState == InternalState_Listening) { // Remove watch in listening state - LogPedantic("Removing accept watch"); + WrtLogD("Removing accept watch"); RemoveAcceptWatch(); m_internalState = InternalState_None; } else if (m_internalState == InternalState_Connecting) { // Remove watch in connecting state - LogPedantic("Removing connect watch"); + WrtLogD("Removing connect watch"); RemoveConnectWatch(); m_internalState = InternalState_None; } else if (m_internalState == InternalState_Connected) { // Remove watch in connected state - LogPedantic("Removing read watch"); + WrtLogD("Removing read watch"); RemoveReadWatch(); m_internalState = InternalState_None; } else { @@ -386,7 +415,7 @@ class GenericSocket : // Reset socket state m_internalState = InternalState_None; - LogPedantic("Socket closed"); + WrtLogD("Socket closed"); } virtual void Bind(const Address &address) @@ -396,8 +425,8 @@ class GenericSocket : "Invalid socket state, should be 'Prepare'"); } - LogPedantic( - "Binding to: " << address.GetAddress() << ":" << address.GetPort()); + WrtLogD("Binding to: %s : %i", + address.GetAddress().c_str(), address.GetPort()); // Translate address to specific socket address struct std::pairSetNonBlocking(); // Show info - LogPedantic("Accepted client set up"); + WrtLogD("Accepted client set up"); // return new conneced client socket return acceptedSocket; @@ -496,18 +524,18 @@ class GenericSocket : // FIXME: Additional internal state check socklen_t length = GetSpecificAddressSize(); - ScopedFree address(static_cast(calloc( + std::unique_ptr address(static_cast(calloc( static_cast< size_t>( length), 1))); - if (getsockname(m_socket, address.Get(), &length) == -1) { + if (getsockname(m_socket, address.get(), &length) == -1) { ThrowMsg(AbstractSocket::Exception::GetPeerNameFailed, "Failed to get local address"); } - return TranslateAddressSpecificToGeneric(address.Get(), length); + return TranslateAddressSpecificToGeneric(address.get(), length); } virtual Address GetRemoteAddress() const @@ -515,18 +543,18 @@ class GenericSocket : // FIXME: Additional internal state check socklen_t length = GetSpecificAddressSize(); - ScopedFree address(static_cast(calloc( + std::unique_ptr address(static_cast(calloc( static_cast< size_t>( length), 1))); - if (getpeername(m_socket, address.Get(), &length) == -1) { + if (getpeername(m_socket, address.get(), &length) == -1) { ThrowMsg(AbstractSocket::Exception::GetPeerNameFailed, "Failed to get remote address"); } - return TranslateAddressSpecificToGeneric(address.Get(), length); + return TranslateAddressSpecificToGeneric(address.get(), length); } virtual BinaryQueueAutoPtr Read(size_t size) @@ -731,15 +759,15 @@ class GenericSocket : // FIXME: User write visitor to write ! // WriteVisitor visitor - ScopedFree flattened(malloc(bufferSize)); - buffer.Flatten(flattened.Get(), bufferSize); + std::unique_ptr flattened(malloc(bufferSize)); + buffer.Flatten(flattened.get(), bufferSize); // Linux: MSG_NOSIGNAL is supported, but it is not an ideal solution // FIXME: Should we setup signal PIPE ignoring for whole process ? // In BSD, there is: setsockopt(c, SOL_SOCKET, SO_NOSIGPIPE, (void // *)&on, sizeof(on)) ssize_t result = - TEMP_FAILURE_RETRY(send(m_socket, flattened.Get(), bufferSize, + TEMP_FAILURE_RETRY(send(m_socket, flattened.get(), bufferSize, MSG_NOSIGNAL)); if (result > 0) { diff --git a/modules_wearable/socket/include/dpl/socket/unix_socket.h b/modules/socket/include/dpl/socket/unix_socket.h similarity index 100% rename from modules_wearable/socket/include/dpl/socket/unix_socket.h rename to modules/socket/include/dpl/socket/unix_socket.h diff --git a/modules_wearable/socket/include/dpl/socket/waitable_input_output_execution_context_support.h b/modules/socket/include/dpl/socket/waitable_input_output_execution_context_support.h similarity index 100% rename from modules_wearable/socket/include/dpl/socket/waitable_input_output_execution_context_support.h rename to modules/socket/include/dpl/socket/waitable_input_output_execution_context_support.h diff --git a/modules_wearable/socket/src/generic_socket.cpp b/modules/socket/src/generic_socket.cpp similarity index 100% rename from modules_wearable/socket/src/generic_socket.cpp rename to modules/socket/src/generic_socket.cpp diff --git a/modules_wearable/socket/src/unix_socket.cpp b/modules/socket/src/unix_socket.cpp old mode 100644 new mode 100755 similarity index 90% rename from modules_wearable/socket/src/unix_socket.cpp rename to modules/socket/src/unix_socket.cpp index 36bff51..ae577f7 --- a/modules_wearable/socket/src/unix_socket.cpp +++ b/modules/socket/src/unix_socket.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include #include #include @@ -39,7 +39,7 @@ UnixSocket::UnixSocket() int UnixSocket::AllocSpecificDescriptor() const { - LogPedantic("Creating UNIX socket..."); + WrtLogD("Creating UNIX socket..."); // Create new descriptor int newSocket = socket(AF_UNIX, SOCK_STREAM, 0); @@ -48,7 +48,7 @@ int UnixSocket::AllocSpecificDescriptor() const Throw(Exception::CreateFailed); } - LogPedantic("UNIX socket created"); + WrtLogD("UNIX socket created"); // Return new descriptor return newSocket; @@ -102,6 +102,8 @@ UnixSocket *UnixSocket::AllocAcceptedSpecificSocket() const void UnixSocket::Bind(const Address &address) { + char *errstr = NULL; + char errbuf[512] = {0,}; // Always remove socket file if any unlink(address.GetAddress().c_str()); @@ -110,9 +112,14 @@ void UnixSocket::Bind(const Address &address) // Always set proper permissions to the socket file if (chmod(address.GetAddress().c_str(), 0777) < 0) { - LogError( - "Error setting permissions to the socket file. Errno " << - strerror(errno)); +#ifdef _GNU_SOURCE + errstr = strerror_r(errno, errbuf, sizeof(errbuf)); +#else + strerror_r(errno, errbuf, sizeof(errbuf)); + errstr = errbuf; +#endif + WrtLogE( + "Error setting permissions to the socket file. Errno %s", errstr); } } } diff --git a/modules_mobile/socket/src/waitable_input_output_execution_context_support.cpp b/modules/socket/src/waitable_input_output_execution_context_support.cpp old mode 100644 new mode 100755 similarity index 78% rename from modules_mobile/socket/src/waitable_input_output_execution_context_support.cpp rename to modules/socket/src/waitable_input_output_execution_context_support.cpp index 35635b5..fa96222 --- a/modules_mobile/socket/src/waitable_input_output_execution_context_support.cpp +++ b/modules/socket/src/waitable_input_output_execution_context_support.cpp @@ -22,9 +22,8 @@ */ #include #include -#include #include // FIXME: Remove !!! -#include +#include #include namespace DPL { @@ -56,7 +55,7 @@ void WaitableInputOutputExecutionContextSupport::Open( Throw(Exception::AlreadyOpened); } - LogPedantic("Opening waitable input-output execution context support..."); + WrtLogD("Opening waitable input-output execution context support..."); // Save IO handle m_waitableInputOutput = inputOutput; @@ -70,7 +69,7 @@ void WaitableInputOutputExecutionContextSupport::Open( // Done m_opened = true; - LogPedantic("Waitable input-output execution context support opened"); + WrtLogD("Waitable input-output execution context support opened"); } void WaitableInputOutputExecutionContextSupport::Close() @@ -79,7 +78,7 @@ void WaitableInputOutputExecutionContextSupport::Close() return; } - LogPedantic("Closing waitable input-output execution context support..."); + WrtLogD("Closing waitable input-output execution context support..."); // Remove read and write watches CheckedRemoveReadWriteWatch(); @@ -87,43 +86,51 @@ void WaitableInputOutputExecutionContextSupport::Close() // Set proper state m_opened = false; - LogPedantic("Waitable input-output execution context support closed"); + WrtLogD("Waitable input-output execution context support closed"); } void WaitableInputOutputExecutionContextSupport::AddReadWatch() { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_waitableInputOutput - ->WaitableReadHandle(), - WaitMode - ::Read); + WaitableHandleWatchSupport* ctx = + WaitableHandleWatchSupport::InheritedContext(); + if(ctx) + ctx->AddWaitableHandleWatch( + this, + m_waitableInputOutput->WaitableReadHandle(), + WaitMode::Read); } void WaitableInputOutputExecutionContextSupport::RemoveReadWatch() { - WaitableHandleWatchSupport::InheritedContext()->RemoveWaitableHandleWatch( - this, - m_waitableInputOutput->WaitableReadHandle(), - WaitMode::Read); + WaitableHandleWatchSupport* ctx = + WaitableHandleWatchSupport::InheritedContext(); + if(ctx) + ctx->RemoveWaitableHandleWatch( + this, + m_waitableInputOutput->WaitableReadHandle(), + WaitMode::Read); } void WaitableInputOutputExecutionContextSupport::AddWriteWatch() { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_waitableInputOutput - ->WaitableWriteHandle(), - WaitMode - ::Write); + WaitableHandleWatchSupport* ctx = + WaitableHandleWatchSupport::InheritedContext(); + if(ctx) + ctx->AddWaitableHandleWatch( + this, + m_waitableInputOutput->WaitableWriteHandle(), + WaitMode::Write); } void WaitableInputOutputExecutionContextSupport::RemoveWriteWatch() { - WaitableHandleWatchSupport::InheritedContext()->RemoveWaitableHandleWatch( - this, - m_waitableInputOutput->WaitableWriteHandle(), - WaitMode::Write); + WaitableHandleWatchSupport* ctx = + WaitableHandleWatchSupport::InheritedContext(); + if(ctx) + ctx->RemoveWaitableHandleWatch( + this, + m_waitableInputOutput->WaitableWriteHandle(), + WaitMode::Write); } void WaitableInputOutputExecutionContextSupport::CheckedRemoveReadWatch() @@ -163,7 +170,7 @@ void WaitableInputOutputExecutionContextSupport::OnWaitableHandleEvent( switch (mode) { case WaitMode::Read: - LogPedantic("Read event occurred"); + WrtLogD("Read event occurred"); // Read and parse bytes ReadInput(); @@ -172,7 +179,7 @@ void WaitableInputOutputExecutionContextSupport::OnWaitableHandleEvent( break; case WaitMode::Write: - LogPedantic("Write event occurred"); + WrtLogD("Write event occurred"); // Push bytes and unregister from write event FeedOutput(); @@ -194,7 +201,7 @@ void WaitableInputOutputExecutionContextSupport::OnWaitableHandleEvent( void WaitableInputOutputExecutionContextSupport::ReadInput() { - LogPedantic("Reading input bytes"); + WrtLogD("Reading input bytes"); Try { @@ -203,7 +210,7 @@ void WaitableInputOutputExecutionContextSupport::ReadInput() if (inputBuffer.get() == NULL) { // No data, should not occur - LogPedantic("WARNING: Spontaneous ReadSocket occurred"); + WrtLogD("WARNING: Spontaneous ReadSocket occurred"); return; } @@ -222,7 +229,7 @@ void WaitableInputOutputExecutionContextSupport::ReadInput() return; } - LogPedantic("Read " << inputBuffer->Size() << " input bytes"); + WrtLogD("Read %i input bytes", inputBuffer->Size()); // Append all read data m_inputStream.AppendMoveFrom(*inputBuffer); @@ -232,7 +239,7 @@ void WaitableInputOutputExecutionContextSupport::ReadInput() //FIXME: Inproper exception abstraction!!! // Some errors occurred while feeding abstract IO // Interpret connection broken errors, and pass futher other ones - LogPedantic("Abstract IO connection was broken during read"); + WrtLogD("Abstract IO connection was broken during read"); // Signal broken connection OnInputStreamBroken(); @@ -264,7 +271,7 @@ void WaitableInputOutputExecutionContextSupport::FeedOutput() } // OK to feed output - LogPedantic("Feeding output"); + WrtLogD("Feeding output"); Try { @@ -279,7 +286,7 @@ void WaitableInputOutputExecutionContextSupport::FeedOutput() AddWriteWatch(); m_hasWriteWatch = true; - LogPedantic("Started exhaustive output feeding"); + WrtLogD("Started exhaustive output feeding"); } } @@ -292,7 +299,7 @@ void WaitableInputOutputExecutionContextSupport::FeedOutput() { // Some errors occurred while feeding abstract IO // Interpret connection broken errors, and pass futher other ones - LogPedantic("Abstract IO connection was broken during write"); + WrtLogD("Abstract IO connection was broken during write"); // Signal broken connection OnInputStreamBroken(); diff --git a/modules_wearable/support/config.cmake b/modules/support/config.cmake similarity index 100% rename from modules_wearable/support/config.cmake rename to modules/support/config.cmake diff --git a/modules_mobile/support/wrt_plugin_export.h b/modules/support/wrt_plugin_export.h old mode 100644 new mode 100755 similarity index 98% rename from modules_mobile/support/wrt_plugin_export.h rename to modules/support/wrt_plugin_export.h index 0cf4e37..b29c15a --- a/modules_mobile/support/wrt_plugin_export.h +++ b/modules/support/wrt_plugin_export.h @@ -23,6 +23,7 @@ #define WRT_PLUGIN_EXPORT_H #include +#include /** * Widget handle type @@ -274,14 +275,14 @@ typedef const js_entity_definition_t *js_entity_definition_ptr_t; /** * Plugin export typedefs */ -typedef void (*on_widget_start_proc)(int widgetId); +typedef void (*on_widget_start_proc)(WidgetHandle widgetId); typedef void (*on_widget_init_proc)(feature_mapping_interface_t *interface); /** * FIXME: Add documentation */ -typedef void (*on_widget_stop_proc)(int widgetId); +typedef void (*on_widget_stop_proc)(WidgetHandle widgetId); typedef void (*on_frame_load_proc)(java_script_context_t context); diff --git a/modules_wearable/test/config.cmake b/modules/test/config.cmake similarity index 100% rename from modules_wearable/test/config.cmake rename to modules/test/config.cmake diff --git a/modules_wearable/test/include/dpl/test/abstract_input_parser.h b/modules/test/include/dpl/test/abstract_input_parser.h similarity index 100% rename from modules_wearable/test/include/dpl/test/abstract_input_parser.h rename to modules/test/include/dpl/test/abstract_input_parser.h diff --git a/modules_mobile/test/include/dpl/test/abstract_input_reader.h b/modules/test/include/dpl/test/abstract_input_reader.h similarity index 99% rename from modules_mobile/test/include/dpl/test/abstract_input_reader.h rename to modules/test/include/dpl/test/abstract_input_reader.h index 6b23dd6..aa21ea2 100644 --- a/modules_mobile/test/include/dpl/test/abstract_input_reader.h +++ b/modules/test/include/dpl/test/abstract_input_reader.h @@ -34,7 +34,6 @@ #include -#include #include #include #include diff --git a/modules_mobile/test/include/dpl/test/abstract_input_tokenizer.h b/modules/test/include/dpl/test/abstract_input_tokenizer.h similarity index 98% rename from modules_mobile/test/include/dpl/test/abstract_input_tokenizer.h rename to modules/test/include/dpl/test/abstract_input_tokenizer.h index a376341..781b54f 100644 --- a/modules_mobile/test/include/dpl/test/abstract_input_tokenizer.h +++ b/modules/test/include/dpl/test/abstract_input_tokenizer.h @@ -26,7 +26,6 @@ #include #include -#include #include namespace DPL { diff --git a/modules_wearable/test/include/dpl/test/process_pipe.h b/modules/test/include/dpl/test/process_pipe.h similarity index 100% rename from modules_wearable/test/include/dpl/test/process_pipe.h rename to modules/test/include/dpl/test/process_pipe.h diff --git a/modules_wearable/test/include/dpl/test/test_results_collector.h b/modules/test/include/dpl/test/test_results_collector.h similarity index 100% rename from modules_wearable/test/include/dpl/test/test_results_collector.h rename to modules/test/include/dpl/test/test_results_collector.h diff --git a/modules_wearable/test/include/dpl/test/test_runner.h b/modules/test/include/dpl/test/test_runner.h similarity index 86% rename from modules_wearable/test/include/dpl/test/test_runner.h rename to modules/test/include/dpl/test/test_runner.h index 6cd948f..a84077d 100644 --- a/modules_wearable/test/include/dpl/test/test_runner.h +++ b/modules/test/include/dpl/test/test_runner.h @@ -25,8 +25,9 @@ #include #include -#include #include + +#include #include #include #include @@ -46,9 +47,11 @@ class TestRunner bool m_runIgnored; public: - TestRunner() : - m_terminate(false) - , m_allowChildLogs(false) + TestRunner() + : m_runIgnored(false) + , m_allowChildLogs(false) + , m_terminate(false) + , m_totalAssertions(0) {} typedef void (*TestCase)(); @@ -85,13 +88,13 @@ class TestRunner SelectedTestGroupSet m_selectedTestGroupSet; std::string m_currentGroup; - DPL::Atomic m_totalAssertions; - // Terminate without any logs. // Some test requires to call fork function. // Child process must not produce any logs and should die quietly. - bool m_terminate; bool m_allowChildLogs; + bool m_terminate; + + std::atomic m_totalAssertions; void Banner(); void InvalidArgs(const std::string& message = "Invalid arguments!"); @@ -182,10 +185,10 @@ typedef DPL::Singleton TestRunnerSingleton; #define RUNNER_TEST_GROUP_INIT(GroupName) \ static int Static##GroupName##Init() \ { \ - DPL::Test::TestRunnerSingleton::Instance().InitGroup(#GroupName); \ + DPL::Test::TestRunnerSingleton::Instance().InitGroup(#GroupName);\ return 0; \ } \ - const int DPL_UNUSED Static##GroupName##InitVar = \ + const int DPL_UNUSED Static##GroupName##InitVar = \ Static##GroupName##Init(); #define RUNNER_TEST(Proc) \ @@ -195,35 +198,34 @@ typedef DPL::Singleton TestRunnerSingleton; DPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc); \ return 0; \ } \ - const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init(); \ + const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init(); \ void Proc() -//! \brief Returns base name for path - -#define RUNNER_ASSERT_MSG(test, message) \ - do \ - { \ - DPL::Test::TestRunnerSingleton::Instance().MarkAssertion(); \ - \ - if (!(test)) \ - { \ - std::ostringstream assertMsg; \ - assertMsg << message; \ - throw DPL::Test::TestRunner::TestFailed(#test, \ - __FILE__, \ - __LINE__, \ - assertMsg.str()); \ - } \ +#define RUNNER_ASSERT_MSG(test, message) \ + do \ + { \ + DPL::Test::TestRunnerSingleton::Instance().MarkAssertion(); \ + \ + if (!(test)) \ + { \ + std::ostringstream assertMsg; \ + assertMsg << message; \ + throw DPL::Test::TestRunner::TestFailed(#test, \ + __FILE__, \ + __LINE__, \ + assertMsg.str()); \ + } \ } while (0) #define RUNNER_ASSERT(test) RUNNER_ASSERT_MSG(test, "") #define RUNNER_FAIL RUNNER_ASSERT(false) -#define RUNNER_IGNORED_MSG(message) do { std::ostringstream assertMsg; \ - assertMsg << message; \ - throw DPL::Test::TestRunner::Ignored( \ - assertMsg.str()); \ +#define RUNNER_IGNORED_MSG(message) \ + do { \ + std::ostringstream assertMsg; \ + assertMsg << message; \ + throw DPL::Test::TestRunner::Ignored( assertMsg.str() ); \ } while (0) #endif // DPL_TEST_RUNNER_H diff --git a/modules_wearable/test/include/dpl/test/test_runner_child.h b/modules/test/include/dpl/test/test_runner_child.h similarity index 100% rename from modules_wearable/test/include/dpl/test/test_runner_child.h rename to modules/test/include/dpl/test/test_runner_child.h diff --git a/modules_wearable/test/include/dpl/test/test_runner_multiprocess.h b/modules/test/include/dpl/test/test_runner_multiprocess.h similarity index 100% rename from modules_wearable/test/include/dpl/test/test_runner_multiprocess.h rename to modules/test/include/dpl/test/test_runner_multiprocess.h diff --git a/modules_wearable/test/include/dpl/test/value_separated_parser.h b/modules/test/include/dpl/test/value_separated_parser.h similarity index 100% rename from modules_wearable/test/include/dpl/test/value_separated_parser.h rename to modules/test/include/dpl/test/value_separated_parser.h diff --git a/modules_wearable/test/include/dpl/test/value_separated_policies.h b/modules/test/include/dpl/test/value_separated_policies.h similarity index 100% rename from modules_wearable/test/include/dpl/test/value_separated_policies.h rename to modules/test/include/dpl/test/value_separated_policies.h diff --git a/modules_wearable/test/include/dpl/test/value_separated_reader.h b/modules/test/include/dpl/test/value_separated_reader.h similarity index 100% rename from modules_wearable/test/include/dpl/test/value_separated_reader.h rename to modules/test/include/dpl/test/value_separated_reader.h diff --git a/modules_wearable/test/include/dpl/test/value_separated_tokenizer.h b/modules/test/include/dpl/test/value_separated_tokenizer.h similarity index 100% rename from modules_wearable/test/include/dpl/test/value_separated_tokenizer.h rename to modules/test/include/dpl/test/value_separated_tokenizer.h diff --git a/modules_wearable/test/include/dpl/test/value_separated_tokens.h b/modules/test/include/dpl/test/value_separated_tokens.h similarity index 100% rename from modules_wearable/test/include/dpl/test/value_separated_tokens.h rename to modules/test/include/dpl/test/value_separated_tokens.h diff --git a/modules_wearable/test/src/process_pipe.cpp b/modules/test/src/process_pipe.cpp similarity index 95% rename from modules_wearable/test/src/process_pipe.cpp rename to modules/test/src/process_pipe.cpp index 68c910f..aa84f9a 100644 --- a/modules_wearable/test/src/process_pipe.cpp +++ b/modules/test/src/process_pipe.cpp @@ -21,7 +21,7 @@ */ #include -#include +#include namespace DPL { @@ -61,7 +61,7 @@ void ProcessPipe::Open(const std::string & command) m_file = file; m_fd = fileno(m_file); - LogPedantic("Opened pipe: " << fcommand); + WrtLogD("Opened pipe: %s", fcommand.c_str()); } void ProcessPipe::Close() @@ -77,7 +77,7 @@ void ProcessPipe::Close() m_fd = -1; m_file = NULL; - LogPedantic("Closed pipe"); + WrtLogD("Closed pipe"); } } diff --git a/modules_wearable/test/src/test_results_collector.cpp b/modules/test/src/test_results_collector.cpp similarity index 99% rename from modules_wearable/test/src/test_results_collector.cpp rename to modules/test/src/test_results_collector.cpp index 665ca7d..03f4e42 100644 --- a/modules_wearable/test/src/test_results_collector.cpp +++ b/modules/test/src/test_results_collector.cpp @@ -272,7 +272,7 @@ class HtmlCollector : { m_fp.Reset(fopen(m_filename.c_str(), "w")); if (!m_fp) { - LogPedantic("Could not open file " << m_filename << " for writing"); + WrtLogD("Could not open file %s for writing", m_filename.c_str()); return false; } return true; @@ -476,7 +476,7 @@ class XmlCollector : { m_fp.Reset(fopen(m_filename.c_str(), "w")); if (!m_fp) { - LogPedantic("Could not open file " << m_filename << " for writing"); + WrtLogD("Could not open file %s for writing", m_filename.c_str()); return false; } return true; @@ -831,7 +831,7 @@ class TAPCollector : { m_output.open(m_filename.c_str(), std::ios_base::trunc); if (m_output.fail()) { - LogError("Can't open output file: " << m_filename); + WrtLogE("Can't open output file: %s", m_filename.c_str()); return false; } return true; diff --git a/modules_wearable/test/src/test_runner.cpp b/modules/test/src/test_runner.cpp similarity index 97% rename from modules_wearable/test/src/test_runner.cpp rename to modules/test/src/test_runner.cpp index aaac7af..483720f 100644 --- a/modules_wearable/test/src/test_runner.cpp +++ b/modules/test/src/test_runner.cpp @@ -24,9 +24,10 @@ #include #include #include -#include +#include +#include #include -#include +#include #include #include #include @@ -65,11 +66,11 @@ namespace // anonymous { std::string BaseName(std::string aPath) { - ScopedFree path(strdup(aPath.c_str())); - if (NULL == path.Get()) { + std::unique_ptr path(strdup(aPath.c_str())); + if (NULL == path.get()) { throw std::bad_alloc(); } - char* baseName = basename(path.Get()); + char* baseName = basename(path.get()); std::string retValue = baseName; return retValue; } @@ -188,14 +189,14 @@ bool TestRunner::filterGroupsByXmls(const std::vector & files) } xmlNodeSetPtr nodes = xpathObject->nodesetval; unsigned size = (nodes) ? nodes->nodeNr : 0; - LogDebug("Found " << size << " nodes matching xpath"); + WrtLogD("Found %i nodes matching xpath", size); for(unsigned i = 0; i < size; ++i) { - LogPedantic("Type: " << nodes->nodeTab[i]->type); + WrtLogD("Type: %i", nodes->nodeTab[i]->type); if (nodes->nodeTab[i]->type == XML_ATTRIBUTE_NODE) { xmlNodePtr curNode = nodes->nodeTab[i]; result = getXMLNode(curNode); - LogPedantic("Result: " << result); + WrtLogD("Result: %s", result.c_str()); normalizeXMLTag(result, testsuite); casesMap.insert(make_pair(result, false)); } @@ -208,7 +209,7 @@ bool TestRunner::filterGroupsByXmls(const std::vector & files) } Catch(XMLError) { - LogError("Libxml error: " << _rethrown_exception.DumpToString()); + WrtLogE("Libxml error: %s", _rethrown_exception.DumpToString().c_str()); success = false; } xmlCleanupParser(); @@ -238,7 +239,7 @@ bool TestRunner::filterByXML(std::map & casesMap) { if(cs->second == false) { - LogError("Cannot find testcase from XML file: " << cs->first); + WrtLogE("Cannot find testcase from XML file: %s", cs->first.c_str()); return false; } } diff --git a/modules_wearable/test/src/test_runner_child.cpp b/modules/test/src/test_runner_child.cpp similarity index 100% rename from modules_wearable/test/src/test_runner_child.cpp rename to modules/test/src/test_runner_child.cpp diff --git a/modules_mobile/test/src/test_runner_multiprocess.cpp b/modules/test/src/test_runner_multiprocess.cpp similarity index 100% rename from modules_mobile/test/src/test_runner_multiprocess.cpp rename to modules/test/src/test_runner_multiprocess.cpp diff --git a/modules_wearable/test/src/value_separated_policies.cpp b/modules/test/src/value_separated_policies.cpp similarity index 95% rename from modules_wearable/test/src/value_separated_policies.cpp rename to modules/test/src/value_separated_policies.cpp index 0ecf599..1a35a3d 100644 --- a/modules_wearable/test/src/value_separated_policies.cpp +++ b/modules/test/src/value_separated_policies.cpp @@ -21,7 +21,7 @@ #include #include -#include +#include namespace DPL { @@ -57,7 +57,7 @@ bool CSVParserPolicy::Validate(std::shared_ptrsize(); if(num != -1 && num != size) { - LogError("Columns not matches"); + WrtLogE("Columns not matches"); return false; } num = size; diff --git a/modules_wearable/test/src/value_separated_tokens.cpp b/modules/test/src/value_separated_tokens.cpp similarity index 100% rename from modules_wearable/test/src/value_separated_tokens.cpp rename to modules/test/src/value_separated_tokens.cpp diff --git a/modules_mobile/support/config.cmake b/modules/ttrace/config.cmake similarity index 63% rename from modules_mobile/support/config.cmake rename to modules/ttrace/config.cmake index e2865f6..037e53a 100644 --- a/modules_mobile/support/config.cmake +++ b/modules/ttrace/config.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved +# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,14 +13,19 @@ # limitations under the License. # # -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief # +SET(WRT_TRACE_SOURCES + ${PROJECT_SOURCE_DIR}/modules/ttrace/src/WrtTrace.cpp + PARENT_SCOPE +) + +SET(WRT_TRACE_HEADERS + ${PROJECT_SOURCE_DIR}/modules/ttrace/include/WrtTrace.h + PARENT_SCOPE +) -SET(DPL_WRT_ENGINE_HEADERS - ${PROJECT_SOURCE_DIR}/modules/support/wrt_plugin_export.h +SET(WRT_TRACE_INCLUDE_DIR + ${PROJECT_SOURCE_DIR}/modules/ttrace/include/ PARENT_SCOPE ) diff --git a/modules/ttrace/include/WrtTrace.h b/modules/ttrace/include/WrtTrace.h new file mode 100644 index 0000000..f9a63a3 --- /dev/null +++ b/modules/ttrace/include/WrtTrace.h @@ -0,0 +1,14 @@ +#ifndef __WRT_TRACE_H_ +#define __WRT_TRACE_H_ + +namespace WRT{ +class WrtTrace{ +public: + WrtTrace(const char* tag); + ~WrtTrace(); +}; +} + +#define TTrace(tag) WRT::WrtTrace _trace(tag) + +#endif //__WRT_TRACE_H_ diff --git a/modules/ttrace/src/WrtTrace.cpp b/modules/ttrace/src/WrtTrace.cpp new file mode 100644 index 0000000..79d24ee --- /dev/null +++ b/modules/ttrace/src/WrtTrace.cpp @@ -0,0 +1,14 @@ +#include "WrtTrace.h" +#include + +namespace WRT{ + +WrtTrace::WrtTrace(const char* tag){ + traceBegin(TTRACE_TAG_WEB, tag); +} + +WrtTrace::~WrtTrace(){ + traceEnd(TTRACE_TAG_WEB); +} + +} diff --git a/modules_wearable/utils/config.cmake b/modules/utils/config.cmake similarity index 100% rename from modules_wearable/utils/config.cmake rename to modules/utils/config.cmake diff --git a/modules_wearable/utils/include/dpl/utils/bash_utils.h b/modules/utils/include/dpl/utils/bash_utils.h similarity index 100% rename from modules_wearable/utils/include/dpl/utils/bash_utils.h rename to modules/utils/include/dpl/utils/bash_utils.h diff --git a/modules_wearable/utils/include/dpl/utils/folder_size.h b/modules/utils/include/dpl/utils/folder_size.h similarity index 100% rename from modules_wearable/utils/include/dpl/utils/folder_size.h rename to modules/utils/include/dpl/utils/folder_size.h diff --git a/modules_wearable/utils/include/dpl/utils/mime_type_utils.h b/modules/utils/include/dpl/utils/mime_type_utils.h similarity index 100% rename from modules_wearable/utils/include/dpl/utils/mime_type_utils.h rename to modules/utils/include/dpl/utils/mime_type_utils.h diff --git a/modules_mobile/utils/include/dpl/utils/path.h b/modules/utils/include/dpl/utils/path.h similarity index 97% rename from modules_mobile/utils/include/dpl/utils/path.h rename to modules/utils/include/dpl/utils/path.h index 83290d0..e115c1c 100644 --- a/modules_mobile/utils/include/dpl/utils/path.h +++ b/modules/utils/include/dpl/utils/path.h @@ -24,12 +24,14 @@ #include #include +#include #include #include #include #include #include +#include #include #include @@ -129,6 +131,8 @@ public: bool ExistsAndIsDir() const; bool IsSymlink() const; std::size_t Size() const; + std::size_t LastWriteTime() const; + /** * @brief isSubPath Returns relative path to given base * @param prefix base path @@ -166,7 +170,7 @@ private: std::vector m_parts; friend std::ostream & ::operator<<(std::ostream & str, const DPL::Utils::Path & path); -}; +} DPL_DEPRECATED_WITH_MESSAGE("Use boost::filesystem::path instead"); /** * @brief MkDir creates 'current path' as directory diff --git a/modules_wearable/utils/include/dpl/utils/warp_iri.h b/modules/utils/include/dpl/utils/warp_iri.h similarity index 98% rename from modules_wearable/utils/include/dpl/utils/warp_iri.h rename to modules/utils/include/dpl/utils/warp_iri.h index 71773cb..fac28a7 100644 --- a/modules_wearable/utils/include/dpl/utils/warp_iri.h +++ b/modules/utils/include/dpl/utils/warp_iri.h @@ -19,7 +19,7 @@ #include #include -#include +#include class WarpIRI { diff --git a/modules_wearable/utils/include/dpl/utils/widget_version.h b/modules/utils/include/dpl/utils/widget_version.h similarity index 90% rename from modules_wearable/utils/include/dpl/utils/widget_version.h rename to modules/utils/include/dpl/utils/widget_version.h index de3d3aa..7ded2d5 100644 --- a/modules_wearable/utils/include/dpl/utils/widget_version.h +++ b/modules/utils/include/dpl/utils/widget_version.h @@ -23,7 +23,7 @@ #define WIDGET_VERSION_H #include -#include +#include #include /* @@ -89,28 +89,28 @@ class WidgetVersion DPL::String m_major; DPL::String m_minor; - DPL::Optional m_micro; - DPL::Optional m_optional; + DPL::OptionalString m_micro; + DPL::OptionalString m_optional; void WacCertify(const DPL::String &major, const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional); + const DPL::OptionalString µ, + const DPL::OptionalString &optional); public: explicit WidgetVersion(const DPL::String &str = DPL::String()); WidgetVersion(const DPL::String &major, const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional); + const DPL::OptionalString µ, + const DPL::OptionalString &optional); bool IsWac() const; const DPL::String &Raw() const; const DPL::String &Major() const; const DPL::String &Minor() const; - const DPL::Optional &Micro() const; - const DPL::Optional &Optional() const; + const DPL::OptionalString &Micro() const; + const DPL::OptionalString &Optional() const; }; bool operator<(const WidgetVersion &left, diff --git a/modules_wearable/utils/include/dpl/utils/wrt_global_settings.h b/modules/utils/include/dpl/utils/wrt_global_settings.h similarity index 100% rename from modules_wearable/utils/include/dpl/utils/wrt_global_settings.h rename to modules/utils/include/dpl/utils/wrt_global_settings.h diff --git a/modules_mobile/utils/include/dpl/utils/wrt_utility.h b/modules/utils/include/dpl/utils/wrt_utility.h similarity index 78% rename from modules_mobile/utils/include/dpl/utils/wrt_utility.h rename to modules/utils/include/dpl/utils/wrt_utility.h index 165e167..57c9a0f 100644 --- a/modules_mobile/utils/include/dpl/utils/wrt_utility.h +++ b/modules/utils/include/dpl/utils/wrt_utility.h @@ -24,6 +24,7 @@ #define _WRT_UTILITY_H_ #include +#include /** * Joins two paths into one @@ -37,7 +38,8 @@ */ void WrtUtilJoinPaths(std::string &joined, const std::string &parent, - const std::string &child); + const std::string &child) + DPL_DEPRECATED_WITH_MESSAGE("Use boost::filesystem::path concatenation method instead"); /** * Creates directories specified by path @@ -51,7 +53,8 @@ void WrtUtilJoinPaths(std::string &joined, * several nested directories, you must make sure that the mode flag allows you * to write and search the direcotries you create. */ -bool WrtUtilMakeDir(const std::string &newpath, mode_t mode = 0755); +bool WrtUtilMakeDir(const std::string &newpath, mode_t mode = 0755) +DPL_DEPRECATED_WITH_MESSAGE("Use boost::filesystem::create_directories with boost::filesystem::permissions() instead"); /** * This function removes the directory or file pointed to by path @@ -60,7 +63,7 @@ bool WrtUtilMakeDir(const std::string &newpath, mode_t mode = 0755); * * @return true on success, false otherwise */ -bool WrtUtilRemove(const std::string &path); +bool WrtUtilRemove(const std::string &path) DPL_DEPRECATED_WITH_MESSAGE("Use boost::filesystem::remove_all instead"); /** * Checks if path exists and is a regular file @@ -69,7 +72,7 @@ bool WrtUtilRemove(const std::string &path); * * @return true if regular file is accessible under path, false otherwise */ -bool WrtUtilFileExists(const std::string &path); +bool WrtUtilFileExists(const std::string &path) DPL_DEPRECATED_WITH_MESSAGE("Use boost::filesystem::exists() instead"); /** * Checks if path exists and is a directory @@ -78,7 +81,7 @@ bool WrtUtilFileExists(const std::string &path); * * @return true if directory is accessible under path, false otherwise */ -bool WrtUtilDirExists(const std::string &path); +bool WrtUtilDirExists(const std::string &path) DPL_DEPRECATED_WITH_MESSAGE("Use boost::filesystem::exists() instead"); #endif //_WRT_UTILITY_H_ diff --git a/modules_mobile/utils/src/bash_utils.cpp b/modules/utils/src/bash_utils.cpp similarity index 98% rename from modules_mobile/utils/src/bash_utils.cpp rename to modules/utils/src/bash_utils.cpp index 1222eda..4386fbd 100644 --- a/modules_mobile/utils/src/bash_utils.cpp +++ b/modules/utils/src/bash_utils.cpp @@ -20,7 +20,6 @@ */ #include #include -#include #include diff --git a/modules_mobile/utils/src/folder_size.cpp b/modules/utils/src/folder_size.cpp old mode 100644 new mode 100755 similarity index 80% rename from modules_mobile/utils/src/folder_size.cpp rename to modules/utils/src/folder_size.cpp index 522216a..facbf56 --- a/modules_mobile/utils/src/folder_size.cpp +++ b/modules/utils/src/folder_size.cpp @@ -29,13 +29,15 @@ #include #include -#include +#include #include #include namespace Utils { size_t getFolderSize(const std::string& path) { + char *errstr = NULL; + char errbuf[512] = {0,}; size_t size = 0; FTS *fts; FTSENT *ftsent; @@ -44,8 +46,15 @@ size_t getFolderSize(const std::string& path) if ((fts = fts_open(paths, FTS_PHYSICAL | FTS_NOCHDIR, NULL)) == NULL) { //ERROR int error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_open failed with error: " - << strerror(error)); + +#ifdef _GNU_SOURCE + errstr = strerror_r(error, errbuf, sizeof(errbuf)); +#else + strerror_r(error, errbuf, sizeof(errbuf)); + errstr = errbuf; +#endif + WrtLogW("%s: fts_open failed with error: %s", + __PRETTY_FUNCTION__, errstr); return 0; } @@ -69,19 +78,29 @@ size_t getFolderSize(const std::string& path) case FTS_DNR: case FTS_ERR: default: - LogWarning(__PRETTY_FUNCTION__ - << ": traversal failed on file: " - << ftsent->fts_path - << " with error: " - << strerror(ftsent->fts_errno)); +#ifdef _GNU_SOURCE + errstr = strerror_r(ftsent->fts_errno, errbuf, sizeof(errbuf)); +#else + strerror_r(ftsent->fts_errno, errbuf, sizeof(errbuf)); + errstr = errbuf; +#endif + WrtLogW("%s: traversal failed on file: %s with error: %s", + __PRETTY_FUNCTION__, ftsent->fts_path, + errstr); return 0; } } if (fts_close(fts) == -1) { int error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_close failed with error: " - << strerror(error)); +#ifdef _GNU_SOURCE + errstr = strerror_r(error, errbuf, sizeof(errbuf)); +#else + strerror_r(error, errbuf, sizeof(errbuf)); + errstr = errbuf; +#endif + WrtLogW("%s: fts_close failed with error: %s", + __PRETTY_FUNCTION__, errstr); return 0; } diff --git a/modules_wearable/utils/src/mime_type_utils.cpp b/modules/utils/src/mime_type_utils.cpp similarity index 95% rename from modules_wearable/utils/src/mime_type_utils.cpp rename to modules/utils/src/mime_type_utils.cpp index a51df5e..18a72fe 100644 --- a/modules_wearable/utils/src/mime_type_utils.cpp +++ b/modules/utils/src/mime_type_utils.cpp @@ -19,6 +19,7 @@ #include #include +#include #include @@ -149,6 +150,13 @@ DPL::String MimeTypeUtils::identifyFileMimeType(const DPL::String& path) } } } - //TODO step 10 - sniff + + // step 10 - sniff + std::string filePath = DPL::ToUTF8String(path); + + std::string mime = xdg_mime_get_mime_type_for_file(filePath.c_str(), 0); + if (!mime.empty()) { + return DPL::FromASCIIString(mime); + } return DPL::FromASCIIString("application/sniff"); } diff --git a/modules_wearable/utils/src/path.cpp b/modules/utils/src/path.cpp similarity index 93% rename from modules_wearable/utils/src/path.cpp rename to modules/utils/src/path.cpp index 0a41837..4e831b8 100644 --- a/modules_wearable/utils/src/path.cpp +++ b/modules/utils/src/path.cpp @@ -21,18 +21,19 @@ #include "dpl/utils/path.h" #include -#include #include #include #include #include -#include +#include #include #include #include #include #include +#include +#include namespace DPL { @@ -140,8 +141,8 @@ void Path::Construct(const std::string & src) if(src.empty()) ThrowMsg(EmptyPath, "Path cannot be empty"); if(src[0] != '/') { - DPL::ScopedFree root(getcwd(NULL,0)); - Tokenize(std::string(root.Get()), "\\/", std::inserter(m_parts, m_parts.begin()), true); + std::unique_ptr root(getcwd(NULL,0)); + Tokenize(std::string(root.get()), "\\/", std::inserter(m_parts, m_parts.begin()), true); } Tokenize(src, "\\/", std::inserter(m_parts, m_parts.end()), true); } @@ -245,7 +246,7 @@ bool Path::ExistsAndIsFile() const { flag = this->IsFile(); } Catch (Path::NotExists) { - LogPedantic(*this << "is not a file."); + WrtLogD("%s is not a file.", Fullpath().c_str()); } return flag; } @@ -257,7 +258,7 @@ bool Path::ExistsAndIsDir() const { flag = this->IsDir(); } Catch (Path::NotExists) { - LogPedantic(*this << "is not a directory."); + WrtLogD("%s is not a directory.", Fullpath().c_str()); } return flag; } @@ -273,6 +274,16 @@ bool Path::IsSymlink() const return S_ISLNK(tmp.st_mode); } +std::size_t Path::LastWriteTime() const +{ + struct stat st; + memset(&st, 0, sizeof(struct stat)); + if (-1 == stat(Fullpath().c_str(), &st)) { + ThrowMsg(NotExists, DPL::GetErrnoString()); + } + return st.st_mtime; +} + bool Path::operator==(const Path & other) const { return m_parts == other.m_parts; @@ -363,7 +374,7 @@ bool Path::isSubPath(const Path & other) const bool Path::hasExtension(const std::string& extension) const { - LogPedantic("Looking for extension " << extension); + WrtLogD("Looking for extension %s", extension.c_str()); if(Extension() == extension) { @@ -458,17 +469,17 @@ void CopyFile(const Path & from, const Path & to) } Catch(DPL::FileInput::Exception::Base) { - LogError("File input error"); + WrtLogE("File input error"); ReThrowMsg(DPL::CopyFailed, std::string("File input error") + from.Fullpath()); } Catch(DPL::FileOutput::Exception::Base) { - LogError("File output error"); + WrtLogE("File output error"); ReThrowMsg(DPL::CopyFailed, std::string("File output error") + to.Fullpath()); } Catch(DPL::CopyFailed) { - LogError("File copy error"); + WrtLogE("File copy error"); ReThrowMsg(DPL::CopyFailed, std::string("File copy error") + from.Fullpath()); } } @@ -501,7 +512,7 @@ void CopyDir(const Path & from, const Path & to) Path CreateTempPath(const Path & basePath) { - LogDebug("Step: Creating temporary path"); + WrtLogD("Step: Creating temporary path"); // Temporary path Path tempPath = basePath; diff --git a/modules_mobile/utils/src/warp_iri.cpp b/modules/utils/src/warp_iri.cpp similarity index 97% rename from modules_mobile/utils/src/warp_iri.cpp rename to modules/utils/src/warp_iri.cpp index bd8650a..4b914fb 100644 --- a/modules_mobile/utils/src/warp_iri.cpp +++ b/modules/utils/src/warp_iri.cpp @@ -75,7 +75,7 @@ void WarpIRI::set(const char *p_iri, std::unique_ptr iri(iri_parse(p_iri), iri_destroy); if (!iri.get()) { - LogError("Error in iri_parse!"); + WrtLogE("Error in iri_parse!"); m_isIRIValid = false; m_isAccessDefinition = false; return; @@ -115,8 +115,7 @@ void WarpIRI::set(const char *p_iri, IDNA_USE_STD3_ASCII_RULES); if (IDNA_SUCCESS != rc) { - LogWarning("libidn error: " << rc << " " << - idna_strerror((Idna_rc)rc)); + WrtLogW("libidn error: %i %s", rc, idna_strerror((Idna_rc)rc)); m_isIRIValid = false; m_isAccessDefinition = false; } else { diff --git a/modules_wearable/utils/src/widget_version.cpp b/modules/utils/src/widget_version.cpp similarity index 87% rename from modules_wearable/utils/src/widget_version.cpp rename to modules/utils/src/widget_version.cpp index 6ba7933..6e2ed4a 100644 --- a/modules_wearable/utils/src/widget_version.cpp +++ b/modules/utils/src/widget_version.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include @@ -136,14 +136,14 @@ WidgetVersion::WidgetVersion(const DPL::String &str) : m_isWac(false), m_raw(str) { - LogDebug("Parsing version string: " << str); + WrtLogD("Parsing version string: %ls", str.c_str()); // Split optional an mandatory parts size_t optionalPartPosition = str.find( WAC_CERTIFY_MANDATORY_VS_OPTIONAL_SPLIT_CHAR); DPL::String mandatoryPart; - DPL::Optional optionalPart; + DPL::OptionalString optionalPart; if (optionalPartPosition == DPL::String::npos) { mandatoryPart = str; @@ -152,8 +152,9 @@ WidgetVersion::WidgetVersion(const DPL::String &str) : optionalPart = str.substr(optionalPartPosition + 1, DPL::String::npos); } - LogDebug("Mandatory part is: " << mandatoryPart); - LogDebug("Optional part is: " << optionalPart); + WrtLogD("Mandatory part is: %ls", mandatoryPart.c_str()); + WrtLogD("Optional part is: %ls", + optionalPart.get_value_or(DPL::String()).c_str()); // Split string and construct version std::vector parts; @@ -162,7 +163,7 @@ WidgetVersion::WidgetVersion(const DPL::String &str) : std::back_inserter(parts), false); - LogDebug("Tokenized mandatory parts: " << parts.size()); + WrtLogD("Tokenized mandatory parts: %i", parts.size()); if (parts.size() != WAC_CERTIFY_MANDATORY_PART_LOW_COUNT && parts.size() != WAC_CERTIFY_MANDATORY_PART_HIGH_COUNT) @@ -172,7 +173,7 @@ WidgetVersion::WidgetVersion(const DPL::String &str) : DPL::String major; DPL::String minor; - DPL::Optional micro; + DPL::OptionalString micro; // Certify for Wac major = parts[WAC_CERTIFY_MANDATORY_PART_MAJOR_INDEX]; @@ -187,8 +188,8 @@ WidgetVersion::WidgetVersion(const DPL::String &str) : WidgetVersion::WidgetVersion(const DPL::String &major, const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional) : + const DPL::OptionalString µ, + const DPL::OptionalString &optional) : m_isWac(false) { // Create Raw version @@ -212,36 +213,37 @@ WidgetVersion::WidgetVersion(const DPL::String &major, void WidgetVersion::WacCertify(const DPL::String &major, const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional) + const DPL::OptionalString µ, + const DPL::OptionalString &optional) { - LogDebug("Certyfing..."); + WrtLogD("Certyfing..."); - LogDebug("Major candidate: " << major); - LogDebug("Minor candidate: " << minor); - LogDebug("Micro candidate: " << micro); - LogDebug("Optional candidate: " << optional); + WrtLogD("Major candidate: %ls", major.c_str()); + WrtLogD("Minor candidate: %ls", minor.c_str()); + WrtLogD("Micro candidate: %ls", micro.get_value_or(DPL::String()).c_str()); + WrtLogD("Optional candidate: %ls", + optional.get_value_or(DPL::String()).c_str()); // Check strings if (major.empty() || !WacCertifyNumberString(major)) { - LogDebug("Major version not certified!"); + WrtLogD("Major version not certified!"); return; } if (minor.empty() || !WacCertifyNumberString(minor)) { - LogDebug("Minor version not certified!"); + WrtLogD("Minor version not certified!"); return; } if (!!micro && (micro->empty() || !WacCertifyNumberString(*micro))) { - LogDebug("Microversion not certified!"); + WrtLogD("Microversion not certified!"); return; } if (!!optional && (optional->empty() || !WacCertifyAlphaNumberStringSpace(*optional))) { - LogDebug("Optional version not certified!"); + WrtLogD("Optional version not certified!"); return; } @@ -253,7 +255,7 @@ void WidgetVersion::WacCertify(const DPL::String &major, m_isWac = true; - LogDebug("Certified."); + WrtLogD("Certified."); } bool WidgetVersion::IsWac() const @@ -276,12 +278,12 @@ const DPL::String &WidgetVersion::Minor() const return m_minor; } -const DPL::Optional &WidgetVersion::Micro() const +const DPL::OptionalString &WidgetVersion::Micro() const { return m_micro; } -const DPL::Optional &WidgetVersion::Optional() const +const DPL::OptionalString &WidgetVersion::Optional() const { return m_optional; } diff --git a/modules_wearable/utils/src/wrt_global_settings.cpp b/modules/utils/src/wrt_global_settings.cpp similarity index 100% rename from modules_wearable/utils/src/wrt_global_settings.cpp rename to modules/utils/src/wrt_global_settings.cpp diff --git a/modules_mobile/utils/src/wrt_utility.cpp b/modules/utils/src/wrt_utility.cpp old mode 100644 new mode 100755 similarity index 64% rename from modules_mobile/utils/src/wrt_utility.cpp rename to modules/utils/src/wrt_utility.cpp index 44044f2..d189d6b --- a/modules_mobile/utils/src/wrt_utility.cpp +++ b/modules/utils/src/wrt_utility.cpp @@ -22,12 +22,13 @@ #include #include #include +#include #include #include #include #include #include -#include +#include #include void WrtUtilJoinPaths(std::string &joined, @@ -55,6 +56,8 @@ bool WrtUtilMakeDir(const std::string &newpath, mode_t mode) { size_t pos = 0; int error; + char *errstr = NULL; + char errbuf[512] = {0,}; if (newpath.length() == 0) { return false; @@ -72,10 +75,14 @@ bool WrtUtilMakeDir(const std::string &newpath, mode_t mode) if (error == EEXIST) { continue; } - LogWarning(__PRETTY_FUNCTION__ << ": failed to create directory " - << path.substr(0, pos) - << ". Error: " - << strerror(error)); +#ifdef _GNU_SOURCE + errstr = strerror_r(error, errbuf, sizeof(errbuf)); +#else + strerror_r(error, errbuf, sizeof(errbuf)); + errstr = errbuf; +#endif + WrtLogW("%s: failed to create directory %s. Error: %s", + __PRETTY_FUNCTION__, path.substr(0, pos).c_str(),errstr); return false; } } @@ -84,6 +91,8 @@ bool WrtUtilMakeDir(const std::string &newpath, mode_t mode) bool WrtUtilRemove(const std::string &path) { + char *errstr = NULL; + char errbuf[512] = {0,}; FTS *fts; FTSENT *ftsent; bool rv = true; @@ -93,8 +102,14 @@ bool WrtUtilRemove(const std::string &path) if ((fts = fts_open(paths, FTS_PHYSICAL | FTS_NOCHDIR, NULL)) == NULL) { //ERROR error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_open failed with error: " - << strerror(error)); +#ifdef _GNU_SOURCE + errstr = strerror_r(error, errbuf, 512); +#else + strerror_r(error, errbuf, 512); + errstr = errbuf; +#endif + WrtLogW("%s : fts_open failed with error: %s", + __PRETTY_FUNCTION__, errstr); return false; } @@ -107,9 +122,14 @@ bool WrtUtilRemove(const std::string &path) //directory in postorder - remove if (rmdir(ftsent->fts_accpath) != 0) { error = errno; - LogWarning(__PRETTY_FUNCTION__ - << ": rmdir failed with error: " - << strerror(error)); +#ifdef _GNU_SOURCE + errstr = strerror_r(error, errbuf, 512); +#else + strerror_r(error, errbuf, 512); + errstr = errbuf; +#endif + WrtLogW("%s: rmdir failed with error: %s", + __PRETTY_FUNCTION__, errstr); rv = false; } break; @@ -122,27 +142,40 @@ bool WrtUtilRemove(const std::string &path) //regular files and other objects that can safely be removed if (unlink(ftsent->fts_accpath) != 0) { error = errno; - LogWarning(__PRETTY_FUNCTION__ - << ": unlink failed with error: " - << strerror(error)); +#ifdef _GNU_SOURCE + errstr = strerror_r(error, errbuf, 512); +#else + strerror_r(error, errbuf, 512); + errstr = errbuf; +#endif + WrtLogW("%s: unlink failed with error: %s", + __PRETTY_FUNCTION__, errstr); rv = false; } break; case FTS_NS: - LogWarning(__PRETTY_FUNCTION__ - << ": couldn't get stat info for file: " - << ftsent->fts_path - << ". The error was: " - << strerror(ftsent->fts_errno)); +#ifdef _GNU_SOURCE + errstr = strerror_r(ftsent->fts_errno, errbuf, 512); +#else + strerror_r(ftsent->fts_errno, errbuf, 512); + errstr = errbuf; +#endif + WrtLogW("%s: couldn't get stat info for file: %s. The error was: %s", + __PRETTY_FUNCTION__, ftsent->fts_path, errstr); rv = false; break; case FTS_DOT: case FTS_DNR: case FTS_ERR: default: - LogWarning(__PRETTY_FUNCTION__ - << ": traversal failed with error: " - << strerror(ftsent->fts_errno)); +#ifdef _GNU_SOURCE + errstr = strerror_r(ftsent->fts_errno, errbuf, 512); +#else + strerror_r(ftsent->fts_errno, errbuf, 512); + errstr = errbuf; +#endif + WrtLogW("%s: traversal failed with error: %s", + __PRETTY_FUNCTION__, errstr); rv = false; break; } @@ -150,8 +183,14 @@ bool WrtUtilRemove(const std::string &path) if (fts_close(fts) == -1) { error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_close failed with error: " - << strerror(error)); +#ifdef _GNU_SOURCE + errstr = strerror_r(error, errbuf, 512); +#else + strerror_r(error, errbuf, 512); + errstr = errbuf; +#endif + WrtLogW("%s: fts_close failed with error: %s", + __PRETTY_FUNCTION__, errstr); rv = false; } return rv; diff --git a/modules_wearable/widget_dao/CMakeLists.txt b/modules/widget_dao/CMakeLists.txt old mode 100755 new mode 100644 similarity index 93% rename from modules_wearable/widget_dao/CMakeLists.txt rename to modules/widget_dao/CMakeLists.txt index f2668eb..7f74a44 --- a/modules_wearable/widget_dao/CMakeLists.txt +++ b/modules/widget_dao/CMakeLists.txt @@ -16,12 +16,12 @@ ADD_CUSTOM_COMMAND( OUTPUT .wrt.db COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.wrt.db ".read ${CMAKE_CURRENT_BINARY_DIR}/wrt_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt.db DEPENDS ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h ${PROJECT_SOURCE_DIR}/modules/widget_dao/orm/wrt_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/widget_dao/orm/wrt_db ) - + ADD_CUSTOM_COMMAND( OUTPUT .wrt.db-journal COMMAND touch ARGS ${CMAKE_CURRENT_BINARY_DIR}/.wrt.db-journal ) - + ADD_CUSTOM_TARGET(${TARGET_WRT_DAO_DB} ALL DEPENDS .wrt.db .wrt.db-journal) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wrt_db.sql @@ -33,13 +33,15 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wrt_db.sql INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(WRT_DAO_DEPS - ecore appcore-efl + db-util + dlog + ecore libxml-2.0 openssl REQUIRED) -set(WRT_DAO_RO_SOURCES +SET(WRT_DAO_RO_SOURCES dao/config_parser_data.cpp dao/common_dao_types.cpp dao/feature_dao_read_only.cpp @@ -50,9 +52,10 @@ set(WRT_DAO_RO_SOURCES dao/webruntime_database.cpp dao/WrtDatabase.cpp dao/widget_dao_types.cpp + dao/widget_register_types.cpp ) -set(WRT_DAO_RW_SOURCES +SET(WRT_DAO_RW_SOURCES dao/feature_dao.cpp dao/plugin_dao.cpp dao/property_dao.cpp @@ -76,7 +79,7 @@ ADD_LIBRARY(${TARGET_WRT_DAO_RO_LIB} SHARED ${WRT_DAO_RO_SOURCES} ) SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RO_LIB} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION}) SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RO_LIB} PROPERTIES @@ -85,7 +88,7 @@ SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RO_LIB} PROPERTIES SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RO_LIB} PROPERTIES COMPILE_FLAGS "-include ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h") -target_link_libraries(${TARGET_WRT_DAO_RO_LIB} +TARGET_LINK_LIBRARIES(${TARGET_WRT_DAO_RO_LIB} ${TARGET_DPL_EFL} ${TARGET_DPL_DB_EFL} ${WRT_DAO_DEPS_LIBRARIES}) @@ -94,7 +97,7 @@ ADD_DEPENDENCIES(${TARGET_WRT_DAO_RO_LIB} ${TARGET_WRT_DAO_DB}) ADD_LIBRARY(${TARGET_WRT_DAO_RW_LIB} SHARED ${WRT_DAO_RW_SOURCES}) SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RW_LIB} PROPERTIES - SOVERSION ${API_VERSION} + SOVERSION ${API_VERSION} VERSION ${VERSION}) SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RW_LIB} PROPERTIES COMPILE_FLAGS -fPIC) @@ -102,7 +105,7 @@ SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RW_LIB} PROPERTIES COMPILE_FLAGS -fPIC) SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RW_LIB} PROPERTIES COMPILE_FLAGS "-include ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h") -target_link_libraries(${TARGET_WRT_DAO_RW_LIB} +TARGET_LINK_LIBRARIES(${TARGET_WRT_DAO_RW_LIB} ${TARGET_WRT_DAO_RO_LIB}) ADD_DEPENDENCIES(${TARGET_WRT_DAO_RW_LIB} ${TARGET_WRT_DAO_DB}) @@ -126,6 +129,7 @@ INSTALL(FILES include/dpl/wrt-dao-ro/wrt_db_types.h include/dpl/wrt-dao-ro/WrtDatabase.h include/dpl/wrt-dao-ro/widget_dao_types.h + include/dpl/wrt-dao-ro/widget_register_types.h DESTINATION include/dpl-efl/dpl/wrt-dao-ro ) diff --git a/modules_mobile/widget_dao/dao/WrtDatabase.cpp b/modules/widget_dao/dao/WrtDatabase.cpp similarity index 98% rename from modules_mobile/widget_dao/dao/WrtDatabase.cpp rename to modules/widget_dao/dao/WrtDatabase.cpp index 1cf6773..5530813 100644 --- a/modules_mobile/widget_dao/dao/WrtDatabase.cpp +++ b/modules/widget_dao/dao/WrtDatabase.cpp @@ -18,7 +18,6 @@ #include #include -#include #include #include diff --git a/modules/widget_dao/dao/common_dao_types.cpp b/modules/widget_dao/dao/common_dao_types.cpp new file mode 100644 index 0000000..1d38f33 --- /dev/null +++ b/modules/widget_dao/dao/common_dao_types.cpp @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * @file common_dao_types.h + * @author Michal Ciepielski (m.ciepielski@samsung.com) + * @version 1.0 + * @brief This file contains the implementation of common data types for wrtdb + */ +#include + +#include +#include +#include +#include + +namespace WrtDB { + +SQLiteDAOBase::SQLiteDAOBase() : m_databaseInterface(NULL) +{ + +} + +SQLiteDAOBase::~SQLiteDAOBase() +{ +#if ENABLE(WIDGET_INTERFACE_DAO_PERFORMANCE) + clearStatementsMap(); +#endif + if (NULL != m_databaseInterface) { + if (DB_UTIL_OK != db_util_close(m_databaseInterface)) { + WrtLogE("Fail to close database"); + } + } +} + +void SQLiteDAOBase::sqlBind(sqlite3_stmt* stmt, int index, const char* parameter) const +{ + Assert(m_databaseInterface); + Assert(stmt); + + // In case of parameter is NULL pointer, + // then the fourth parameter is ignored and the end result is the same as + // sqlite3_bind_null(). + if (SQLITE_OK != sqlite3_bind_text(stmt, index, parameter, -1, SQLITE_TRANSIENT)) + { + WrtLogE("error msg : %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SQLiteDAOBase::Exception::DatabaseError, "Fail to bind text"); + } +} + +void SQLiteDAOBase::sqlBind(sqlite3_stmt* stmt, int index, const std::string& value) const +{ + sqlBind(stmt, index, value.c_str()); +} + +void SQLiteDAOBase::sqlBind(sqlite3_stmt *stmt, int index, const DPL::String &value) const +{ + sqlBind(stmt, index, DPL::ToUTF8String(value).c_str()); +} + +void SQLiteDAOBase::sqlBind(sqlite3_stmt* stmt, int index, int parameter) const +{ + Assert(m_databaseInterface); + Assert(stmt); + + if (SQLITE_OK != sqlite3_bind_int(stmt, index, parameter)) + { + WrtLogE("error msg : %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SQLiteDAOBase::Exception::DatabaseError, "Fail to bind int"); + } +} + +#if ENABLE(WIDGET_INTERFACE_DAO_PERFORMANCE) +sqlite3_stmt* SQLiteDAOBase::sqlPrepare(const char* const query) +{ + Assert(query); + Assert(m_databaseInterface); + + auto it = m_statements.find(query); + if (m_statements.end() != it) + { + // statement already precompiled, just needs resetting + auto stmt = it->second; + if (SQLITE_OK != sqlite3_reset(stmt)) + { + WrtLogE("error msg : %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SQLiteDAOBase::Exception::DatabaseError, "Fail to reset query"); + } + return stmt; + } + // statement not ready, needs precompiling + sqlite3_stmt *stmt = NULL; + if (SQLITE_OK != sqlite3_prepare_v2(m_databaseInterface, query, -1, &stmt, NULL)) + { + WrtLogE("error msg : %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SQLiteDAOBase::Exception::DatabaseError, "Fail to prepare query"); + } + // inserting precompiled statement into map + m_statements[query] = stmt; + return stmt; +} + + +void SQLiteDAOBase::clearStatementsMap() +{ + for (auto it = m_statements.begin(); it != m_statements.end(); ++it) + { + sqlite3_finalize(it->second); + } + m_statements.clear(); +} +#else +sqlite3_stmt* SQLiteDAOBase::sqlPrepare(const char* const query) +{ + Assert(query); + Assert(m_databaseInterface); + + //Compile statement + + sqlite3_stmt* stmt = NULL; + if (SQLITE_OK != sqlite3_prepare_v2(m_databaseInterface, query, -1, &stmt, NULL)) + { + WrtLogE("error msg : %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(SQLiteDAOBase::Exception::DatabaseError, "Fail to prepare query"); + } + + return stmt; +} +#endif + +} // namespace WrtDB diff --git a/modules_wearable/widget_dao/dao/config_parser_data.cpp b/modules/widget_dao/dao/config_parser_data.cpp old mode 100755 new mode 100644 similarity index 79% rename from modules_wearable/widget_dao/dao/config_parser_data.cpp rename to modules/widget_dao/dao/config_parser_data.cpp index 029d051..4ea1600 --- a/modules_wearable/widget_dao/dao/config_parser_data.cpp +++ b/modules/widget_dao/dao/config_parser_data.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include #include #include @@ -49,16 +49,16 @@ bool IsSpace(const xmlChar* str) } case 2: - switch (*(str + 1)) { - // Temporary block to fix issue 0xD985 is converted to space. - //case 0x85: - case 0xa0: - return true; - - default: + if( *(str) == 0xc2 ){ + switch (*(str + 1)) { + case 0x85: + case 0xa0: + return true; + default: + return false; + } + }else return false; - } - case 3: switch (*str) { case 0xe1: @@ -147,18 +147,18 @@ bool CopyChar(xmlChar* out, //TODO temporary fix until commits the rewrite of this functionality. void NormalizeString(DPL::String& str) { - DPL::Optional opt = str; + boost::optional opt = str; NormalizeString(opt); str = *opt; } -void NormalizeString (DPL::Optional& txt, bool isTrimSpace) +void NormalizeString(boost::optional& txt, bool isTrimSpace) { if (!!txt) { std::string tmp = DPL::ToUTF8String(*txt); const xmlChar* str = reinterpret_cast(tmp.c_str()); if (!xmlCheckUTF8(str)) { - LogError("Not valid UTF8"); + WrtLogE("Not valid UTF8"); return; } @@ -172,6 +172,11 @@ void NormalizeString (DPL::Optional& txt, bool isTrimSpace) } xmlChar* tmpnew = xmlUTF8Strndup(c, xmlUTF8Strlen(c) + 1); + if (tmpnew == NULL) { + WrtLogE("can't do xmlUTF*Strndup();"); + return; + } + bool first = false; xmlChar* s = tmpnew; while ((c = const_cast(xmlUTF8Strpos(str, i))) != NULL) { @@ -204,6 +209,79 @@ void NormalizeAndTrimSpaceString(DPL::OptionalString& txt) NormalizeString(txt, true); } +#if ENABLE(ELEMENT_ATTR_MAX_LENGTH) +void NormalizeString(DPL::String& str, const unsigned int length, +#if ENABLE(ADD_ELLIPSIS) + bool showEllipsis +#else + bool /*showEllipsis*/ +#endif + ) +{ +#if ENABLE(ADD_ELLIPSIS) + bool hasExceededMaxLength = false; + if (str.size() > length) { + hasExceededMaxLength = true; + str.resize(length); + } +#else + if (str.size() > length) { + str.resize(length); + } +#endif + + boost::optional opt = str; + NormalizeString(opt); + str = *opt; +#if ENABLE(ADD_ELLIPSIS) + if (showEllipsis && hasExceededMaxLength && (str.size() == length)) { + str = DPL::FromUTF8String(DPL::ToUTF8String(str).append("...")); + } +#endif +} + +void NormalizeString(boost::optional& str, const unsigned int length, +#if ENABLE(ADD_ELLIPSIS) + bool showEllipsis +#else + bool /*showEllipsis*/ +#endif + ) +{ +#if ENABLE(ADD_ELLIPSIS) + bool hasExceededMaxLength = false; + if (!!str) { + if ((*str).size() > length) { + hasExceededMaxLength = true; + (*str).resize(length); + } +#else + if (!!str) { + if ((*str).size() > length) { + (*str).resize(length); + } +#endif + + NormalizeString(str); +#if ENABLE(ADD_ELLIPSIS) + if (showEllipsis && hasExceededMaxLength && ((*str).size() == length)) { + str = DPL::FromUTF8String(DPL::ToUTF8String(*str).append("...")); + } +#endif + } +} + +void NormalizeAndTrimSpaceString(DPL::OptionalString& str, const unsigned int length) +{ + if (!!str) { + if ((*str).size() > length) { + (*str).resize(length); + } + NormalizeString(str, true); + } +} +#endif //ELEMENT_ATTR_MAX_LENGTH + bool ConfigParserData::Feature::operator==(const Feature& other) const { return name == other.name; @@ -281,7 +359,7 @@ bool ConfigParserData::Icon::operator >(const Icon& other) const bool ConfigParserData::Icon::operator>=(const Icon& other) const { - return operator > (other) || operator == (other); + return operator >(other) || operator==(other); } bool ConfigParserData::Icon::operator <(const Icon& other) const @@ -291,7 +369,7 @@ bool ConfigParserData::Icon::operator <(const Icon& other) const bool ConfigParserData::Icon::operator<=(const Icon& other) const { - return operator < (other) || operator == (other); + return operator<(other) || operator==(other); } bool ConfigParserData::Preference::operator==(const Preference& other) const @@ -381,7 +459,7 @@ bool ConfigParserData::AppControlInfo::operator== (const AppControlInfo& info) c m_operation == info.m_operation && m_uriList == info.m_uriList && m_mimeList == info.m_mimeList && - m_disposition == info.m_disposition; + m_reload == info.m_reload; } bool ConfigParserData::AppControlInfo::operator!= (const AppControlInfo& info) const @@ -389,6 +467,7 @@ bool ConfigParserData::AppControlInfo::operator!= (const AppControlInfo& info) c return !(*this == info); } +#if USE(WEB_PROVIDER) bool ConfigParserData::LiveboxInfo::operator==(const LiveboxInfo& other) const { return m_liveboxId == other.m_liveboxId && @@ -403,6 +482,7 @@ bool ConfigParserData::LiveboxInfo::operator!=(const LiveboxInfo& other) const { return !(*this == other); } +#endif bool ConfigParserData::Metadata::operator== (const Metadata& other) const { diff --git a/modules_wearable/widget_dao/dao/feature_dao.cpp b/modules/widget_dao/dao/feature_dao.cpp similarity index 90% rename from modules_wearable/widget_dao/dao/feature_dao.cpp rename to modules/widget_dao/dao/feature_dao.cpp index 15cd23f..12a526d 100644 --- a/modules_wearable/widget_dao/dao/feature_dao.cpp +++ b/modules/widget_dao/dao/feature_dao.cpp @@ -36,13 +36,13 @@ FeatureHandle RegisterFeature(const PluginMetafileData::Feature &feature, { Try { - LogDebug("Registering Feature " << feature.m_name); + WrtLogD("Registering Feature %s", feature.m_name.c_str()); DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); if (FeatureDAOReadOnly::isFeatureInstalled(feature.m_name)) { - LogError(" >> Feature " << feature.m_name << - " is already registered."); + WrtLogE(" >> Feature %s is already registered.", + feature.m_name.c_str()); transaction.Commit(); return -1; } @@ -52,7 +52,7 @@ FeatureHandle RegisterFeature(const PluginMetafileData::Feature &feature, //register feature { - LogDebug(" |-- Registering feature " << feature.m_name); + WrtLogD(" |-- Registering feature %s", feature.m_name.c_str()); FeaturesList::Row row; row.Set_FeatureName(DPL::FromUTF8String(feature.m_name)); @@ -73,8 +73,8 @@ FeatureHandle RegisterFeature(const PluginMetafileData::Feature &feature, int deviceCapID; if (FeatureDAOReadOnly::isDeviceCapabilityInstalled(*itdev)) { - LogDebug(" | |--DeviceCap " << *itdev << - " already installed!"); + WrtLogD(" | |--DeviceCap %s already installed!", + itdev->c_str()); WRT_DB_SELECT(select, DeviceCapabilities, @@ -86,7 +86,7 @@ FeatureHandle RegisterFeature(const PluginMetafileData::Feature &feature, deviceCapID = select->GetSingleValue(); } else { - LogDebug(" | |--Register DeviceCap: " << *itdev); + WrtLogD(" | |--Register DeviceCap: %s", itdev->c_str()); DeviceCapabilities::Row row; row.Set_DeviceCapName(DPL::FromUTF8String(*itdev)); @@ -123,12 +123,12 @@ void UnregisterFeature(FeatureHandle featureHandle) { Try { - LogDebug("Unregistering Feature " << featureHandle); + WrtLogD("Unregistering Feature %i", featureHandle); DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); if (!FeatureDAOReadOnly::isFeatureInstalled(featureHandle)) { - LogError("Feature handle is invalid"); + WrtLogE("Feature handle is invalid"); return; } diff --git a/modules_mobile/widget_dao/dao/feature_dao_read_only.cpp b/modules/widget_dao/dao/feature_dao_read_only.cpp similarity index 91% rename from modules_mobile/widget_dao/dao/feature_dao_read_only.cpp rename to modules/widget_dao/dao/feature_dao_read_only.cpp index ee188bd..23f00c4 100644 --- a/modules_mobile/widget_dao/dao/feature_dao_read_only.cpp +++ b/modules/widget_dao/dao/feature_dao_read_only.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -36,14 +36,14 @@ FeatureDAOReadOnly::FeatureDAOReadOnly(FeatureHandle featureHandle) : if (!isFeatureInstalled(m_featureHandle)) { std::ostringstream exc; exc << "Feature " << m_featureHandle << " not installed."; - LogError(exc.str()); + WrtLogE("%s", exc.str().c_str()); ThrowMsg(FeatureDAOReadOnly::Exception::FeatureNotExist, exc.str()); } } FeatureDAOReadOnly::FeatureDAOReadOnly(const std::string &featureName) { - LogDebug("FeatureDAOReadOnly ( " << featureName << " )"); + WrtLogD("FeatureDAOReadOnly ( %s )", featureName.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -52,7 +52,7 @@ FeatureDAOReadOnly::FeatureDAOReadOnly(const std::string &featureName) DPL::FromUTF8String(featureName))); m_featureHandle = select->GetSingleValue(); - LogDebug(" >> FeatureHandle retrieved: " << m_featureHandle); + WrtLogD(" >> FeatureHandle retrieved: %i", m_featureHandle); } Catch(DPL::DB::SqlConnection::Exception::Base){ ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, @@ -64,7 +64,7 @@ FeatureDAOReadOnly::FeatureDAOReadOnly(const std::string &featureName) Try { \ DPL::DB::ORM::wrt::ScopedTransaction transaction( \ &WrtDatabase::interface()); \ - LogDebug(#func << ". FeatureHandle: " << m_featureHandle); \ + WrtLogD(#func ". FeatureHandle: %i", m_featureHandle); \ std::string ret = PluginDAOReadOnly(GetPluginHandle()).func(); \ transaction.Commit(); \ return ret; \ @@ -95,7 +95,7 @@ FeatureHandle FeatureDAOReadOnly::GetFeatureHandle() const std::string FeatureDAOReadOnly::GetName() const { - LogDebug("Getting Feature Name. Handle: " << m_featureHandle); + WrtLogD("Getting Feature Name. Handle: %i", m_featureHandle); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -105,7 +105,7 @@ std::string FeatureDAOReadOnly::GetName() const std::string ret = DPL::ToUTF8String( select->GetSingleValue< FeaturesList::FeatureName>()); - LogDebug(" >> Feature name: " << ret); + WrtLogD(" >> Feature name: %s", ret.c_str()); return ret; } Catch(DPL::DB::SqlConnection::Exception::Base){ @@ -116,7 +116,7 @@ std::string FeatureDAOReadOnly::GetName() const DbPluginHandle FeatureDAOReadOnly::GetPluginHandle() const { - LogDebug("Getting Plugin handle. FHandle: " << m_featureHandle); + WrtLogD("Getting Plugin handle. FHandle: %i", m_featureHandle); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -126,7 +126,7 @@ DbPluginHandle FeatureDAOReadOnly::GetPluginHandle() const DbPluginHandle pluginHandle = select->GetSingleValue< FeaturesList::PluginPropertiesId>(); - LogDebug(" >> Plugin Handle: " << pluginHandle); + WrtLogD(" >> Plugin Handle: %i", pluginHandle); return pluginHandle; } Catch(DPL::DB::SqlConnection::Exception::Base){ @@ -137,7 +137,7 @@ DbPluginHandle FeatureDAOReadOnly::GetPluginHandle() const FeatureHandleList FeatureDAOReadOnly::GetHandleList() { - LogDebug("Getting FeatureHandle list."); + WrtLogD("Getting FeatureHandle list."); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -149,7 +149,8 @@ FeatureHandleList FeatureDAOReadOnly::GetHandleList() std::ostringstream handles; FOREACH(it, ret) handles << *it << " "; - LogDebug(" >> FeatureHandle list retrieved: (" << handles << ")"); + WrtLogD(" >> FeatureHandle list retrieved: (%s)", + handles.str().c_str()); return ret; } @@ -161,7 +162,7 @@ FeatureHandleList FeatureDAOReadOnly::GetHandleList() bool FeatureDAOReadOnly::isFeatureInstalled(const std::string &featureName) { - LogDebug("Check if Feature is installed. Name: " << featureName); + WrtLogD("Check if Feature is installed. Name: %s", featureName.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -172,7 +173,7 @@ bool FeatureDAOReadOnly::isFeatureInstalled(const std::string &featureName) FeaturesList::Select::RowList rows = select->GetRowList(); bool flag = !rows.empty(); - LogDebug(" >> Feature " << featureName << + WrtLogD(" >> Feature %s %s", featureName.c_str(), (flag ? " found." : " not found.")); return flag; @@ -185,7 +186,7 @@ bool FeatureDAOReadOnly::isFeatureInstalled(const std::string &featureName) bool FeatureDAOReadOnly::isFeatureInstalled(FeatureHandle handle) { - LogDebug("Check if Feature is installed. Handle: " << handle); + WrtLogD("Check if Feature is installed. Handle: %i", handle); Try { using namespace DPL::DB::ORM; @@ -196,8 +197,8 @@ bool FeatureDAOReadOnly::isFeatureInstalled(FeatureHandle handle) FeaturesList::Select::RowList rows = select->GetRowList(); bool flag = !rows.empty(); - LogDebug(" >> Feature " << handle << - (flag ? " found." : " not found.")); + WrtLogD(" >> Feature %i %s", + handle, (flag ? " found." : " not found.")); return flag; } @@ -210,7 +211,7 @@ bool FeatureDAOReadOnly::isFeatureInstalled(FeatureHandle handle) bool FeatureDAOReadOnly::isDeviceCapabilityInstalled( const std::string &deviceCapName) { - LogDebug("Check if DeviceCap is installed. Name: " << deviceCapName); + WrtLogD("Check if DeviceCap is installed. Name: %s", deviceCapName.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -221,7 +222,7 @@ bool FeatureDAOReadOnly::isDeviceCapabilityInstalled( DeviceCapabilities::Select::RowList rows = select->GetRowList(); bool flag = !rows.empty(); - LogDebug(" >> Device Cap " << deviceCapName << + WrtLogD(" >> Device Cap %s %s", deviceCapName.c_str(), (flag ? "found." : "not found.")); return flag; @@ -236,7 +237,7 @@ FeatureDAOReadOnly::DeviceCapabilitiesList FeatureDAOReadOnly::GetDeviceCapabilities() const { Try { - LogDebug("Get DeviceCap. FeatureHandle: " << m_featureHandle); + WrtLogD("Get DeviceCap. FeatureHandle: %i", m_featureHandle); DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); @@ -277,7 +278,7 @@ FeatureDAOReadOnly::GetDeviceCapabilities() const FeatureHandleListPtr FeatureDAOReadOnly::GetFeatureHandleListForPlugin( DbPluginHandle pluginHandle) { - LogDebug("Getting FeatureHandle list for pluginHandle: " << pluginHandle); + WrtLogD("Getting FeatureHandle list for pluginHandle: %i", pluginHandle); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -291,7 +292,7 @@ FeatureHandleListPtr FeatureDAOReadOnly::GetFeatureHandleListForPlugin( FOREACH(it, ret) { - LogDebug("feature handle: " << *it); + WrtLogD("feature handle: %i", *it); handles->push_back(*it); } @@ -425,12 +426,12 @@ FeatureDAOReadOnly::GetFeatures(const std::list& featureNames) nameList.insert(DPL::FromUTF8String(*nm)); } - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(In(nameList)); + FeaturesList::Select select{ &WrtDatabase::interface() }; + select.Where(In(nameList)); FeatureMap featureMap; FeatureData featureData; - FeaturesList::Select::RowList rows = select->GetRowList(); + FeaturesList::Select::RowList rows = select.GetRowList(); FOREACH(rowIt, rows) { featureData.featureName = DPL::ToUTF8String( rowIt->Get_FeatureName()); diff --git a/modules_wearable/widget_dao/dao/path_builder.cpp b/modules/widget_dao/dao/path_builder.cpp similarity index 100% rename from modules_wearable/widget_dao/dao/path_builder.cpp rename to modules/widget_dao/dao/path_builder.cpp diff --git a/modules_mobile/widget_dao/dao/plugin_dao.cpp b/modules/widget_dao/dao/plugin_dao.cpp similarity index 76% rename from modules_mobile/widget_dao/dao/plugin_dao.cpp rename to modules/widget_dao/dao/plugin_dao.cpp index 5b899c3..eccd04f 100644 --- a/modules_mobile/widget_dao/dao/plugin_dao.cpp +++ b/modules/widget_dao/dao/plugin_dao.cpp @@ -20,9 +20,13 @@ * @version 1.0 * @brief This file contains the definition of plugin dao class. */ + +#include + +#include #include #include -#include +#include #include #include #include @@ -40,7 +44,7 @@ PluginDAO::PluginDAO(const std::string &libraryName) : DbPluginHandle PluginDAO::registerPlugin(const PluginMetafileData& metafile, const std::string& pluginPath) { - LogDebug("Registering plugin. Path: " << pluginPath); + WrtLogD("Registering plugin. Path: %s", pluginPath.c_str()); Try { DPL::DB::ORM::wrt::ScopedTransaction transaction( @@ -49,10 +53,10 @@ DbPluginHandle PluginDAO::registerPlugin(const PluginMetafileData& metafile, if (isPluginInstalled(metafile.m_libraryName)) { handle = PluginDAO(metafile.m_libraryName).getPluginHandle(); - LogDebug(" >> Library " << metafile.m_libraryName << - " is already registered. Handle: " << handle); + WrtLogD(" >> Library %s is already registered. Handle: %i", + metafile.m_libraryName.c_str(), handle); } else { - LogDebug("Register Plugin: " << metafile.m_libraryName); + WrtLogD("Register Plugin: %s", metafile.m_libraryName.c_str()); using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -66,10 +70,18 @@ DbPluginHandle PluginDAO::registerPlugin(const PluginMetafileData& metafile, row.Set_PluginLibraryPath( DPL::FromUTF8String(pluginPath)); - WRT_DB_INSERT(insert, PluginProperties, &WrtDatabase::interface()) + struct stat st; + memset(&st, 0, sizeof(struct stat)); + if (-1 == stat(pluginPath.c_str(), &st)) { + ThrowMsg(PluginDAO::Exception::DatabaseError, + "Failed in RegisterPlugin"); + } + row.Set_LibraryTimestamp(st.st_mtime); + + WRT_DB_INSERT(insert, PluginProperties, &WrtDatabase::interface()); insert->Values(row); handle = static_cast(insert->Execute()); - LogDebug(" >> Plugin Registered. Handle: " << handle); + WrtLogD(" >> Plugin Registered. Handle: %i", handle); } transaction.Commit(); return handle; @@ -84,13 +96,13 @@ DbPluginHandle PluginDAO::registerPlugin(const PluginMetafileData& metafile, void PluginDAO::registerPluginImplementedObject(const std::string& objectName, DbPluginHandle pluginHandle) { - LogDebug("Registering plugin object: " << objectName); + WrtLogD("Registering plugin object: %s", objectName.c_str()); Try { DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); - LogDebug("Register Object: " << objectName); + WrtLogD("Register Object: %s", objectName.c_str()); using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -116,13 +128,13 @@ void PluginDAO::registerPluginImplementedObject(const std::string& objectName, void PluginDAO::registerPluginRequiredObject(const std::string& objectName, DbPluginHandle pluginHandle) { - LogDebug("Registering plugin object: " << objectName); + WrtLogD("Registering plugin object: %s", objectName.c_str()); Try { DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); - LogDebug("Register Object: " << objectName); + WrtLogD("Register Object: %s", objectName.c_str()); using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -149,7 +161,7 @@ void PluginDAO::registerPluginLibrariesDependencies( DbPluginHandle pluginHandle, const PluginHandleSetPtr& dependencies) { - LogDebug("Registering plugin library dependencies: " << pluginHandle); + WrtLogD("Registering plugin library dependencies: %i", pluginHandle); Try { DPL::DB::ORM::wrt::ScopedTransaction transaction( @@ -179,12 +191,34 @@ void PluginDAO::registerPluginLibrariesDependencies( } } +void PluginDAO::unregisterPluginLibrariesDependencies(DbPluginHandle plugin) +{ + WrtLogD("Unregistering plugin dependencies: %i", plugin); + + Try { + DPL::DB::ORM::wrt::ScopedTransaction transaction( + &WrtDatabase::interface()); + + using namespace DPL::DB::ORM; + using namespace DPL::DB::ORM::wrt; + + WRT_DB_DELETE(deleteStmt, PluginDependencies, &WrtDatabase::interface()); + deleteStmt->Where(Equals(plugin)); + deleteStmt->Execute(); + transaction.Commit(); + } + Catch(DPL::DB::SqlConnection::Exception::Base) + { + ReThrowMsg(PluginDAO::Exception::DatabaseError, + "Failed in unregisterPluginLibrariesDependencies"); + } +} + void PluginDAO::setPluginInstallationStatus(DbPluginHandle pluginHandle, PluginInstallationState state) { Try { - LogDebug( - "Set installation state: " << state << " handle " << pluginHandle); + WrtLogD("Set installation state: %i handle %i", state, pluginHandle); using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -212,14 +246,14 @@ void PluginDAO::setPluginInstallationStatus(DbPluginHandle pluginHandle, void PluginDAO::unregisterPlugin(DbPluginHandle pluginHandle) { - LogDebug("unregisterPlugin plugin. Handle: " << pluginHandle); + WrtLogD("unregisterPlugin plugin. Handle: %i", pluginHandle); Try { DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); if (!isPluginInstalled(pluginHandle)) { - LogDebug("PluginHandle is invalid. Handle: " << pluginHandle); + WrtLogD("PluginHandle is invalid. Handle: %i", pluginHandle); return; } else { using namespace DPL::DB::ORM; @@ -231,7 +265,7 @@ void PluginDAO::unregisterPlugin(DbPluginHandle pluginHandle) del->Execute(); transaction.Commit(); - LogDebug(" >> Plugin Unregistered. Handle: " << pluginHandle); + WrtLogD(" >> Plugin Unregistered. Handle: %i", pluginHandle); } } Catch(DPL::DB::SqlConnection::Exception::Base) diff --git a/modules_wearable/widget_dao/dao/plugin_dao_read_only.cpp b/modules/widget_dao/dao/plugin_dao_read_only.cpp similarity index 84% rename from modules_wearable/widget_dao/dao/plugin_dao_read_only.cpp rename to modules/widget_dao/dao/plugin_dao_read_only.cpp index a90e013..40c8b3d 100644 --- a/modules_wearable/widget_dao/dao/plugin_dao_read_only.cpp +++ b/modules/widget_dao/dao/plugin_dao_read_only.cpp @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include #include @@ -36,7 +36,7 @@ typedef DPL::DB::ORM::wrt::PluginProperties::Row PluginRow; PluginRow getPluginRow(DbPluginHandle pluginHandle) { - LogDebug("Getting plugin row. Handle: " << pluginHandle); + WrtLogD("Getting plugin row. Handle: %i", pluginHandle); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -62,16 +62,14 @@ PluginDAOReadOnly::PluginDAOReadOnly(DbPluginHandle pluginHandle) : m_pluginHandle(pluginHandle) { if (!isPluginInstalled(m_pluginHandle)) { - LogError("Plugin " << m_pluginHandle << " not installed."); + WrtLogE("Plugin %i not installed.", m_pluginHandle); Throw(PluginDAOReadOnly::Exception::PluginNotExist); } - - checkInstallationCompleted(); } PluginDAOReadOnly::PluginDAOReadOnly(const std::string &libraryName) { - LogDebug("PluginDAOReadOnly ( " << libraryName << " )"); + WrtLogD("PluginDAOReadOnly ( %s )", libraryName.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -86,9 +84,7 @@ PluginDAOReadOnly::PluginDAOReadOnly(const std::string &libraryName) ThrowMsg(PluginDAOReadOnly::Exception::PluginNotExist, "Cannot find plugin: [" + libraryName + "]"); } - LogDebug(" >> Handle for this plugin: " << m_pluginHandle); - - checkInstallationCompleted(); + WrtLogD(" >> Handle for this plugin: %i", m_pluginHandle); } Catch(DPL::DB::SqlConnection::Exception::Base) { ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, @@ -96,19 +92,10 @@ PluginDAOReadOnly::PluginDAOReadOnly(const std::string &libraryName) } } -void PluginDAOReadOnly::checkInstallationCompleted() -{ - if (getInstallationStateForHandle(m_pluginHandle) - != PluginDAOReadOnly::INSTALLATION_COMPLETED) - { - LogError("Plugin " << m_pluginHandle << " installation not completed"); - Throw(PluginDAOReadOnly::Exception::PluginInstallationNotCompleted); - } -} - bool PluginDAOReadOnly::isPluginInstalled(const std::string &libraryName) { - LogDebug("Check if Library is installed. LibraryName: " << libraryName); + WrtLogD("Check if Library is installed. LibraryName: %s", + libraryName.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -119,7 +106,7 @@ bool PluginDAOReadOnly::isPluginInstalled(const std::string &libraryName) PluginProperties::Select::RowList rows = select->GetRowList(); bool flag = !rows.empty(); - LogDebug(" >> Plugin " << libraryName << + WrtLogD(" >> Plugin %s %s", libraryName.c_str(), (flag ? " found." : " not found.")); return flag; @@ -132,7 +119,7 @@ bool PluginDAOReadOnly::isPluginInstalled(const std::string &libraryName) PluginHandleList PluginDAOReadOnly::getPluginHandleList() { - LogDebug("Getting plugin handle list."); + WrtLogD("Getting plugin handle list."); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -144,7 +131,7 @@ PluginHandleList PluginDAOReadOnly::getPluginHandleList() std::ostringstream handles; FOREACH(it, ret) handles << *it << " "; - LogDebug(" >> PluginHandle list retrieved: (" << handles << ")"); + WrtLogD(" >> PluginHandle list retrieved: (%s)", handles.str().c_str()); return ret; } @@ -156,7 +143,7 @@ PluginHandleList PluginDAOReadOnly::getPluginHandleList() PluginHandleList PluginDAOReadOnly::getRootPluginHandleList() { - LogDebug("Getting root plugin handle list."); + WrtLogD("Getting root plugin handle list."); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -191,24 +178,24 @@ DbPluginHandle PluginDAOReadOnly::getPluginHandle() const //"value" cannot be null, as in registerPlugin it is always set #define RETURN_STD_STRING(in, what) \ std::string ret = ""; \ - if (!in.IsNull()) { \ + if (!!in) { \ ret = DPL::ToUTF8String(*in); } \ - LogDebug(" >> Plugin " << what << ": " << ret); \ + WrtLogD(" >> Plugin %s: %s", what, ret.c_str()); \ return ret; std::string PluginDAOReadOnly::getLibraryPath() const { - LogDebug("Getting plugin library path. Handle: " << m_pluginHandle); + WrtLogD("Getting plugin library path. Handle: %i", m_pluginHandle); PluginRow row = getPluginRow(m_pluginHandle); RETURN_STD_STRING(row.Get_PluginLibraryPath(), "library path") } std::string PluginDAOReadOnly::getLibraryName() const { - LogDebug("Getting plugin library name. Handle: " << m_pluginHandle); + WrtLogD("Getting plugin library name. Handle: %i", m_pluginHandle); PluginRow row = getPluginRow(m_pluginHandle); std::string ret = DPL::ToUTF8String(row.Get_PluginLibraryName()); - LogDebug(" >> Plugin library name: " << ret); + WrtLogD(" >> Plugin library name: %s", ret.c_str()); return ret; } @@ -243,10 +230,39 @@ PluginHandleSetPtr PluginDAOReadOnly::getLibraryDependencies() const } } +PluginHandleSetPtr PluginDAOReadOnly::getLibraryDependentPlugins() const +{ + Try + { + using namespace DPL::DB::ORM; + using namespace DPL::DB::ORM::wrt; + PluginHandleSetPtr dependencies(new PluginHandleSet); + + WRT_DB_SELECT(select, PluginDependencies, &WrtDatabase::interface()) + select->Where( + Equals(m_pluginHandle)); + + PluginDependencies::Select::RowList rows = select->GetRowList(); + + if (!rows.empty()) { + FOREACH(it, rows) + { + dependencies->insert(it->Get_PluginPropertiesId()); + } + } + + return dependencies; + } + Catch(DPL::DB::SqlConnection::Exception::Base) { + ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, + "Failed in GetLibraryDependencies"); + } +} + DbPluginHandle PluginDAOReadOnly::getPluginHandleForImplementedObject( const std::string& objectName) { - LogDebug("GetPluginHandle for object: " << objectName); + WrtLogD("GetPluginHandle for object: %s", objectName.c_str()); Try { @@ -265,7 +281,7 @@ DbPluginHandle PluginDAOReadOnly::getPluginHandleForImplementedObject( if (!rows.empty()) { pluginHandle = rows.front().Get_PluginPropertiesId(); } else { - LogWarning("PluginHandle for object not found"); + WrtLogW("PluginHandle for object not found"); } return pluginHandle; } @@ -277,7 +293,7 @@ DbPluginHandle PluginDAOReadOnly::getPluginHandleForImplementedObject( ImplementedObjectsList PluginDAOReadOnly::getImplementedObjects() { - LogDebug("getImplementedObjects"); + WrtLogD("getImplementedObjects"); Try { @@ -294,7 +310,7 @@ ImplementedObjectsList PluginDAOReadOnly::getImplementedObjects() objectList.push_back(DPL::ToUTF8String(*it)); } } else { - LogWarning("PluginHandle for object not found"); + WrtLogW("PluginHandle for object not found"); } return objectList; } @@ -307,7 +323,7 @@ ImplementedObjectsList PluginDAOReadOnly::getImplementedObjects() ImplementedObjectsList PluginDAOReadOnly::getImplementedObjectsForPluginHandle( DbPluginHandle handle) { - LogDebug("getImplementedObjects for pluginHandle: " << handle); + WrtLogD("getImplementedObjects for pluginHandle: %i", handle); Try { @@ -327,7 +343,7 @@ ImplementedObjectsList PluginDAOReadOnly::getImplementedObjectsForPluginHandle( objectList.push_back(DPL::ToUTF8String(it->Get_PluginObject())); } } else { - LogWarning("PluginHandle for object not found"); + WrtLogW("PluginHandle for object not found"); } return objectList; } @@ -426,7 +442,7 @@ PluginDAOReadOnly::PluginInstallationState PluginDAOReadOnly:: if (!rows.empty()) { return ToState(rows.front().Get_InstallationState()); } - LogError("Data in DB are invalid. Missing field"); + WrtLogE("Data in DB are invalid. Missing field"); return UNKNOWN_ERROR; } Catch(DPL::DB::SqlConnection::Exception::Base) { @@ -435,6 +451,15 @@ PluginDAOReadOnly::PluginInstallationState PluginDAOReadOnly:: } } +std::time_t PluginDAOReadOnly::getLibraryTimestamp() const +{ + WrtLogD("Getting plugin library timestamp. Handle: %i", m_pluginHandle); + PluginRow row = getPluginRow(m_pluginHandle); + std::time_t ret = row.Get_LibraryTimestamp(); + WrtLogD(" >> Plugin library timestamp: %li", ret); + return ret; +} + bool PluginDAOReadOnly::isPluginInstalled(DbPluginHandle pluginHandle) { Try { diff --git a/modules_wearable/widget_dao/dao/property_dao.cpp b/modules/widget_dao/dao/property_dao.cpp similarity index 89% rename from modules_wearable/widget_dao/dao/property_dao.cpp rename to modules/widget_dao/dao/property_dao.cpp index fa6412a..ca8269f 100644 --- a/modules_wearable/widget_dao/dao/property_dao.cpp +++ b/modules/widget_dao/dao/property_dao.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -37,7 +37,8 @@ void RemoveProperty(TizenAppId tzAppid, // First query asks if given property can be removed, // Second removes it. Maybe it should be combined two one. - LogDebug("Removing Property. appid: " << tzAppid << ", key: " << key); + WrtLogD("Removing Property. appid: %ls, key: %ls", + tzAppid.c_str(), key.c_str()); Try { DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); @@ -45,9 +46,9 @@ void RemoveProperty(TizenAppId tzAppid, DPL::OptionalInt readonly = PropertyDAOReadOnly::CheckPropertyReadFlag( tzAppid, key); - if (!readonly.IsNull() && *readonly == 1) { - LogError("'" << key << - "' key is readonly. Cannot remove property !"); + if (!!readonly && *readonly == 1) { + WrtLogE("'%ls' key is readonly. Cannot remove property !", + key.c_str()); ThrowMsg(PropertyDAOReadOnly::Exception::ReadOnlyProperty, "Property is readonly"); } @@ -85,8 +86,8 @@ void SetProperty(TizenAppId tzAppid, const PropertyDAOReadOnly::WidgetPropertyValue &value, bool readOnly) { - LogDebug("Setting/updating Property. appid: " << tzAppid << - ", key: " << key); + WrtLogD("Setting/updating Property. appid: %ls, key: %ls", + tzAppid.c_str(), key.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -96,15 +97,15 @@ void SetProperty(TizenAppId tzAppid, DPL::OptionalInt readonly = PropertyDAOReadOnly::CheckPropertyReadFlag( tzAppid, key); - if (!readonly.IsNull() && *readonly == 1) { - LogError("'" << key << - "' key is readonly. Cannot remove property !"); + if (!!readonly && *readonly == 1) { + WrtLogE("'%ls' key is readonly. Cannot remove property !", + key.c_str()); ThrowMsg(PropertyDAOReadOnly::Exception::ReadOnlyProperty, "Property is readonly"); } DbWidgetHandle widgetHandle(WidgetDAOReadOnly::getHandle(tzAppid)); - if (readonly.IsNull()) { + if (!readonly) { WidgetPreference::Row row; row.Set_app_id(widgetHandle); row.Set_tizen_appid(tzAppid); @@ -138,7 +139,7 @@ void SetProperty(TizenAppId tzAppid, void RegisterProperties(DbWidgetHandle widgetHandle, TizenAppId tzAppid, const WidgetRegisterInfo ®Info) { - LogDebug("Registering proferences for widget. appid: " << tzAppid); + WrtLogD("Registering proferences for widget. appid: %ls", tzAppid.c_str()); // Try-Catch in WidgetDAO diff --git a/modules_wearable/widget_dao/dao/property_dao_read_only.cpp b/modules/widget_dao/dao/property_dao_read_only.cpp similarity index 94% rename from modules_wearable/widget_dao/dao/property_dao_read_only.cpp rename to modules/widget_dao/dao/property_dao_read_only.cpp index 4916ebc..7fae555 100644 --- a/modules_wearable/widget_dao/dao/property_dao_read_only.cpp +++ b/modules/widget_dao/dao/property_dao_read_only.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include @@ -104,8 +104,8 @@ DPL::OptionalInt CheckPropertyReadFlag(DbWidgetHandle widgetHandle, DPL::OptionalInt CheckPropertyReadFlag(TizenAppId tzAppid, const WidgetPropertyKey &key) { - LogDebug("Checking Property flag. appid: " << tzAppid << - ", key: " << key); + WrtLogD("Checking Property flag. appid: %ls, key: %ls", + tzAppid.c_str(), key.c_str()); Try { using namespace DPL::DB::ORM; @@ -127,7 +127,7 @@ DPL::OptionalInt CheckPropertyReadFlag(TizenAppId tzAppid, WidgetPropertyKeyList GetPropertyKeyList(TizenAppId tzAppid) { - LogDebug("Get PropertyKey list. appid: " << tzAppid); + WrtLogD("Get PropertyKey list. appid: %ls", tzAppid.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -160,7 +160,7 @@ WidgetPreferenceList GetPropertyList(DbWidgetHandle widgetHandle) WidgetPreferenceList GetPropertyList(TizenAppId tzAppId) { - LogDebug("Get Property list. tizenAppId: " << tzAppId); + WrtLogD("Get Property list. tizenAppId: %ls", tzAppId.c_str()); DbWidgetHandle widgetHandle(WidgetDAOReadOnly::getHandle(tzAppId)); return GetPropertyListRows(widgetHandle); } @@ -169,8 +169,8 @@ WidgetPreferenceList GetPropertyList(TizenAppId tzAppId) WidgetPropertyValue GetPropertyValue(TizenAppId tzAppid, const WidgetPropertyKey &key) { - LogDebug("Get Property value. appid: " << tzAppid << - ", key: " << key); + WrtLogD("Get Property value. appid: %ls, key: %ls", + tzAppid.c_str(), key.c_str()); Try { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; diff --git a/modules_wearable/widget_dao/dao/webruntime_database.cpp b/modules/widget_dao/dao/webruntime_database.cpp similarity index 96% rename from modules_wearable/widget_dao/dao/webruntime_database.cpp rename to modules/widget_dao/dao/webruntime_database.cpp index 5fbb7d7..50e8efa 100644 --- a/modules_wearable/widget_dao/dao/webruntime_database.cpp +++ b/modules/widget_dao/dao/webruntime_database.cpp @@ -22,5 +22,5 @@ #include #include -DPL::Mutex g_wrtDbQueriesMutex; +std::mutex g_wrtDbQueriesMutex; diff --git a/modules_wearable/widget_dao/dao/widget_dao.cpp b/modules/widget_dao/dao/widget_dao.cpp similarity index 93% rename from modules_wearable/widget_dao/dao/widget_dao.cpp rename to modules/widget_dao/dao/widget_dao.cpp index f70782a..c61346a 100755 --- a/modules_wearable/widget_dao/dao/widget_dao.cpp +++ b/modules/widget_dao/dao/widget_dao.cpp @@ -29,7 +29,7 @@ #include #include -#include +#include #include #include #include @@ -45,7 +45,7 @@ namespace WrtDB { #define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ + WrtLogE(message); \ ReThrowMsg(WidgetDAO::Exception::DatabaseError, \ message); \ } @@ -92,7 +92,7 @@ void WidgetDAO::registerWidget( const WidgetRegisterInfo &widgetRegInfo, const IWidgetSecurity &widgetSecurity) { - LogDebug("Registering widget"); + WrtLogD("Registering widget"); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { DPL::DB::ORM::wrt::ScopedTransaction transaction( @@ -108,13 +108,13 @@ void WidgetDAO::registerService( const WidgetRegisterInfo &widgetRegInfo, const IWidgetSecurity &widgetSecurity) { - LogDebug("Registering service"); + WrtLogD("Registering service"); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); - registerServiceInternal(serviceAppInfo, widgetRegInfo, widgetSecurity); + registerServiceInternal(serviceAppInfo, widgetRegInfo, widgetSecurity); transaction.Commit(); } SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to register service") @@ -166,7 +166,7 @@ void WidgetDAO::registerWidgetInternal( const TizenAppId & tzAppId, const WidgetRegisterInfo &widgetRegInfo, const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle) + const boost::optional handle) { //Register into WidgetInfo has to be first //as all other tables depend upon that @@ -217,6 +217,9 @@ void WidgetDAO::registerWidgetInternal( registerEncryptedResouceInfo(widgetHandle, widgetRegInfo.encryptedFiles); registerExternalLocations(widgetHandle, widgetRegInfo.externalLocations); +#if USE(WEB_PROVIDER) + registerLiveBoxInfo(widgetHandle, widgetRegInfo); +#endif } #define DO_INSERT(row, table) \ @@ -228,7 +231,8 @@ void WidgetDAO::registerWidgetInternal( void WidgetDAO::registerWidgetExtendedInfo(DbWidgetHandle widgetHandle, time_t installedTime, - const DPL::OptionalString & splashImgSrc, const DPL::OptionalString & backgroundPage, + const DPL::OptionalString & splashImgSrc, + const DPL::OptionalString & backgroundPage, const DPL::OptionalString & widgetInstalledPath) { //Try and transaction not needed @@ -252,8 +256,8 @@ DbWidgetHandle WidgetDAO::registerWidgetInfo( AppType appType, PkgType pkgType, const ConfigParserData &widgetConfigurationInfo, - const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle) + const IWidgetSecurity & /*widgetSecurity*/, + const boost::optional handle) { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -276,8 +280,6 @@ DbWidgetHandle WidgetDAO::registerWidgetInfo( row.Set_author_href(widgetConfigurationInfo.authorHref); row.Set_csp_policy(widgetConfigurationInfo.cspPolicy); row.Set_csp_policy_report_only(widgetConfigurationInfo.cspPolicyReportOnly); - row.Set_base_folder(DPL::FromUTF8String(baseFolder)); - row.Set_webkit_plugins_required(widgetConfigurationInfo.flashNeeded); row.Set_tizen_appid(tzAppId); row.Set_tizen_pkgid(tzPkgId); { @@ -288,7 +290,6 @@ DbWidgetHandle WidgetDAO::registerWidgetInfo( } } row.Set_back_supported(widgetConfigurationInfo.backSupported); - row.Set_access_network(widgetConfigurationInfo.accessNetwork); row.Set_pkg_type(pkgType); row.Set_security_model_version( static_cast(widgetConfigurationInfo.securityModelVersion)); @@ -568,8 +569,7 @@ void WidgetDAO::insertAppControlInfo(DbWidgetHandle handle, DPL::String operation, DPL::String uri, DPL::String mime, - unsigned index, - unsigned disposition) + bool reload) { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; @@ -577,12 +577,12 @@ void WidgetDAO::insertAppControlInfo(DbWidgetHandle handle, AppControlInfo::Row row; row.Set_app_id(handle); - row.Set_execute_index(index); row.Set_src(src); row.Set_operation(operation); row.Set_uri(uri); row.Set_mime(mime); - row.Set_disposition(disposition); + // reuse execute_index field to store reset value to remove db migration task. + row.Set_execute_index(reload); DO_INSERT(row, AppControlInfo); } @@ -598,9 +598,12 @@ void WidgetDAO::registerAppControl(DbWidgetHandle widgetHandle, { DPL::String src = appControl_it->m_src; DPL::String operation = appControl_it->m_operation; - unsigned index = appControl_it->m_index; - unsigned disposition = - static_cast(appControl_it->m_disposition); + bool reload = true; + if (appControl_it->m_reload == L"false") { + reload = false; + } else if (appControl_it->m_reload == L"true") { + reload = true; + } if (!appControl_it->m_uriList.empty()) { @@ -614,14 +617,14 @@ void WidgetDAO::registerAppControl(DbWidgetHandle widgetHandle, { DPL::String mime = *mime_it; - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); + insertAppControlInfo(widgetHandle, src, operation, uri, mime, reload); } } else { DPL::String mime = L""; - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); + insertAppControlInfo(widgetHandle, src, operation, uri, mime, reload); } } } @@ -635,14 +638,14 @@ void WidgetDAO::registerAppControl(DbWidgetHandle widgetHandle, { DPL::String mime = *mime_it; - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); + insertAppControlInfo(widgetHandle, src, operation, uri, mime, reload); } } else { DPL::String mime = L""; - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); + insertAppControlInfo(widgetHandle, src, operation, uri, mime, reload); } } } @@ -742,7 +745,7 @@ void WidgetDAO::registerExternalLocations( using namespace DPL::DB::ORM::wrt; DPL::DB::ORM::wrt::ScopedTransaction transaction( &WrtDatabase::interface()); - LogDebug("Inserting external files for widgetHandle: " << widgetHandle); + WrtLogD("Inserting external files for widgetHandle: %i", widgetHandle); FOREACH(it, externals) { WidgetExternalLocations::Row row; @@ -755,20 +758,42 @@ void WidgetDAO::registerExternalLocations( } SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to register external files"); } +#if USE(WEB_PROVIDER) +void WidgetDAO::registerLiveBoxInfo(DbWidgetHandle widgetHandle, + const WidgetRegisterInfo ®Info) +{ + using namespace DPL::DB::ORM; + using namespace DPL::DB::ORM::wrt; + + ConfigParserData::LiveboxList liveBoxList = regInfo.configInfo.m_livebox; + + FOREACH(it, liveBoxList) + { + LiveBoxInfo::Row row; + row.Set_app_id(widgetHandle); + row.Set_livebox_id((**it).m_liveboxId); + DO_INSERT(row, LiveBoxInfo) + } +} +#endif void WidgetDAO::unregisterAllExternalLocations() { + SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN + { using namespace DPL::DB::ORM; using namespace DPL::DB::ORM::wrt; - LogDebug("Deleting external files for widgetHandle: " << m_widgetHandle); + WrtLogD("Deleting external files for widgetHandle: %i", m_widgetHandle); WRT_DB_DELETE(del, WidgetExternalLocations, &WrtDatabase::interface()); del->Where(Equals(m_widgetHandle)); del->Execute(); } + SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to unregister external locations") +} void WidgetDAO::unregisterWidget(const TizenAppId & tzAppId) { - LogDebug("Unregistering widget from DB. tzAppId: " << tzAppId); + WrtLogD("Unregistering widget from DB. tzAppId: %ls", tzAppId.c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { DPL::DB::ORM::wrt::ScopedTransaction transaction( diff --git a/modules_wearable/widget_dao/dao/widget_dao_read_only.cpp b/modules/widget_dao/dao/widget_dao_read_only.cpp old mode 100755 new mode 100644 similarity index 89% rename from modules_wearable/widget_dao/dao/widget_dao_read_only.cpp rename to modules/widget_dao/dao/widget_dao_read_only.cpp index 5151dfa..78690ff --- a/modules_wearable/widget_dao/dao/widget_dao_read_only.cpp +++ b/modules/widget_dao/dao/widget_dao_read_only.cpp @@ -48,18 +48,18 @@ namespace WrtDB { #define SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN Try -#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ - ReThrowMsg(WidgetDAOReadOnly::Exception::DatabaseError, \ - message); \ +#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ + Catch(DPL::DB::SqlConnection::Exception::Base) { \ + WrtLogE(message); \ + ReThrowMsg(WidgetDAOReadOnly::Exception::DatabaseError, \ + message); \ } #define CHECK_WIDGET_EXISTENCE(macro_transaction, macro_handle) \ if (!WidgetDAOReadOnly::isWidgetInstalled(macro_handle)) \ { \ macro_transaction.Commit(); \ - LogWarning("Cannot find widget. Handle: " << macro_handle); \ + WrtLogW("Cannot find widget. Handle: %i", macro_handle); \ ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, \ "Cannot find widget. Handle: " << macro_handle); \ } @@ -74,7 +74,7 @@ using namespace DPL::DB::ORM::wrt; WidgetInfoRow getWidgetInfoRow(int widgetHandle) { - LogDebug("Getting WidgetInfo row. Handle: " << widgetHandle); + WrtLogD("Getting WidgetInfo row. Handle: %i", widgetHandle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) @@ -94,7 +94,7 @@ const int MAX_TIZENID_LENGTH = 10; TizenAppId getTizenAppIdByHandle(const DbWidgetHandle handle) { - LogDebug("Getting TizenAppId by DbWidgetHandle: " << handle); + WrtLogD("Getting TizenAppId by DbWidgetHandle: %i", handle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { @@ -115,7 +115,7 @@ TizenAppId getTizenAppIdByHandle(const DbWidgetHandle handle) TizenAppId getTizenAppIdByPkgId(const TizenPkgId tzPkgid) { - LogDebug("Getting TizenAppId by pkgid : " << tzPkgid); + WrtLogD("Getting TizenAppId by pkgid : %ls", tzPkgid.c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) @@ -135,7 +135,7 @@ TizenAppId getTizenAppIdByPkgId(const TizenPkgId tzPkgid) void getTizenAppIdListByPkgId(const TizenPkgId tzPkgid, std::list& idList) { - LogDebug("Getting TizenAppId by pkgid : " << tzPkgid); + WrtLogD("Getting TizenAppId by pkgid : %ls", tzPkgid.c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) @@ -152,7 +152,7 @@ void getTizenAppIdListByPkgId(const TizenPkgId tzPkgid, std::list& i TizenPkgId getTizenPkgIdByHandle(const DbWidgetHandle handle) { - LogDebug("Getting TizenPkgId by DbWidgetHandle: " << handle); + WrtLogD("Getting TizenPkgId by DbWidgetHandle: %i", handle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { @@ -173,7 +173,7 @@ TizenPkgId getTizenPkgIdByHandle(const DbWidgetHandle handle) TizenPkgId getTizenPkgIdByAppId(const TizenAppId tzAppid) { - LogDebug("Getting TizenPkgId by TizenAppId: " << tzAppid); + WrtLogD("Getting TizenPkgId by TizenAppId: %ls", tzAppid.c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { @@ -193,9 +193,6 @@ TizenPkgId getTizenPkgIdByAppId(const TizenAppId tzAppid) } } // namespace -IWidgetSecurity::~IWidgetSecurity() -{} - WidgetDAOReadOnly::WidgetDAOReadOnly(DbWidgetHandle widgetHandle) : m_widgetHandle(widgetHandle) {} @@ -218,7 +215,7 @@ DbWidgetHandle WidgetDAOReadOnly::getHandle() const DbWidgetHandle WidgetDAOReadOnly::getHandle(const WidgetGUID GUID) { - LogDebug("Getting WidgetHandle by GUID [" << GUID << "]"); + WrtLogD("Getting WidgetHandle by GUID [%ls]", GUID.get_value_or(DPL::String()).c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { @@ -237,7 +234,7 @@ DbWidgetHandle WidgetDAOReadOnly::getHandle(const WidgetGUID GUID) DbWidgetHandle WidgetDAOReadOnly::getHandle(const DPL::String tzAppId) { - LogDebug("Getting WidgetHandle by tizen app id [" << tzAppId << "]"); + WrtLogD("Getting WidgetHandle by tizen app id [%ls]", tzAppId.c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { @@ -256,7 +253,7 @@ DbWidgetHandle WidgetDAOReadOnly::getHandle(const DPL::String tzAppId) DbWidgetHandle WidgetDAOReadOnly::getHandleByPkgId(const DPL::String pkgId) { - LogDebug("Getting WidgetHandle by tizen package id [" << pkgId << "]"); + WrtLogD("Getting WidgetHandle by tizen package id [%ls]", pkgId.c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { @@ -273,6 +270,7 @@ DbWidgetHandle WidgetDAOReadOnly::getHandleByPkgId(const DPL::String pkgId) SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle") } + TizenAppId WidgetDAOReadOnly::getTzAppId() const { return getTizenAppIdByHandle(m_widgetHandle); @@ -333,28 +331,12 @@ TizenAppIdList WidgetDAOReadOnly::getTizenAppIdList() SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get TizenAppIdList") } -std::list WidgetDAOReadOnly::getTzAppIdList(const TizenPkgId tzPkgid) -{ +std::list WidgetDAOReadOnly::getTzAppIdList(const TizenPkgId tzPkgid){ std::list result; getTizenAppIdListByPkgId(tzPkgid, result); return result; } -TizenPkgId WidgetDAOReadOnly::getTzPkgId() const -{ - return getTizenPkgIdByHandle(m_widgetHandle); -} - -TizenPkgId WidgetDAOReadOnly::getTzPkgId(const DbWidgetHandle handle) -{ - return getTizenPkgIdByHandle(handle); -} - -TizenPkgId WidgetDAOReadOnly::getTzPkgId(const TizenAppId tzAppid) -{ - return getTizenPkgIdByAppId(tzAppid); -} - TizenPkgId WidgetDAOReadOnly::getTizenPkgId() const { return getTizenPkgIdByHandle(m_widgetHandle); @@ -370,20 +352,9 @@ TizenPkgId WidgetDAOReadOnly::getTizenPkgId(const TizenAppId tzAppid) return getTizenPkgIdByAppId(tzAppid); } -TizenPkgIdList WidgetDAOReadOnly::getTizenPkgidList() -{ - LogDebug("Getting Pkgid List "); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - return select->GetValueList(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get Pkgid list") -} - TizenPkgIdList WidgetDAOReadOnly::getTizenPkgIdList() { - LogDebug("Getting TizenPkgId List "); + WrtLogD("Getting TizenPkgId List "); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) @@ -435,7 +406,7 @@ WidgetLocalizedInfo WidgetDAOReadOnly::getLocalizedInfo(const DPL::String& languageTag) const { - LogDebug("Getting Localized Info. Handle: " << m_widgetHandle); + WrtLogD("Getting Localized Info. Handle: %i", m_widgetHandle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { ScopedTransaction transaction(&WrtDatabase::interface()); @@ -462,7 +433,7 @@ const DbWidgetFeatureSet WidgetDAOReadOnly::getFeaturesList() const { - LogDebug("Getting FeaturesList. Handle: " << m_widgetHandle); + WrtLogD("Getting FeaturesList. Handle: %i", m_widgetHandle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { ScopedTransaction transaction(&WrtDatabase::interface()); @@ -491,9 +462,8 @@ DbWidgetFeatureSet WidgetDAOReadOnly::getFeaturesList() const bool WidgetDAOReadOnly::hasFeature(const std::string& featureName) const { - LogDebug( - "Checking if widget has feature: " << featureName << ". Handle: " << - m_widgetHandle); + WrtLogD("Checking if widget has feature: %s. Handle: %i", + featureName.c_str(), m_widgetHandle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { ScopedTransaction transaction(&WrtDatabase::interface()); @@ -513,9 +483,9 @@ bool WidgetDAOReadOnly::hasFeature(const std::string& featureName) const DbWidgetDAOReadOnlyList WidgetDAOReadOnly::getWidgetList() { - LogDebug("Getting DbWidget List"); + WrtLogD("Getting DbWidget List"); DbWidgetDAOReadOnlyList list; - FOREACH(iterator, getTizenAppidList()) { + FOREACH(iterator, getTizenAppIdList()) { list.push_back(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(*iterator))); } return list; @@ -523,7 +493,7 @@ DbWidgetDAOReadOnlyList WidgetDAOReadOnly::getWidgetList() bool WidgetDAOReadOnly::isWidgetInstalled(DbWidgetHandle handle) { - LogDebug("Checking if widget exist. Handle: " << handle); + WrtLogD("Checking if widget exist. Handle: %i", handle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) @@ -538,7 +508,7 @@ bool WidgetDAOReadOnly::isWidgetInstalled(DbWidgetHandle handle) bool WidgetDAOReadOnly::isWidgetInstalled(const TizenAppId &tzAppId) { - LogDebug("Checking if widget exist. tizen app id" << tzAppId); + WrtLogD("Checking if widget exist. tizen app id %ls", tzAppId.c_str()); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) @@ -553,7 +523,7 @@ bool WidgetDAOReadOnly::isWidgetInstalled(const TizenAppId &tzAppId) ExternalLocationList WidgetDAOReadOnly::getWidgetExternalLocations() const { - LogDebug("Getting WidgetExtranalFiles List"); + WrtLogD("Getting WidgetExtranalFiles List"); ExternalLocationList result; SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { @@ -595,8 +565,8 @@ DbWidgetSize WidgetDAOReadOnly::getPreferredSize() const size.width = row.Get_widget_width(); size.height = row.Get_widget_height(); - LogDebug("Return size wxh = " << - (!!size.width ? *size.width : -1) << " x " << + WrtLogD("Return size wxh = %i x %i", + (!!size.width ? *size.width : -1), (!!size.height ? *size.height : -1)); return size; @@ -621,31 +591,31 @@ DPL::OptionalString WidgetDAOReadOnly::getDefaultlocale() const return row.Get_defaultlocale(); } -DPL::Optional WidgetDAOReadOnly::getVersion() const +DPL::OptionalString WidgetDAOReadOnly::getVersion() const { WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); return row.Get_widget_version(); } -DPL::Optional WidgetDAOReadOnly::getAuthorName() const +DPL::OptionalString WidgetDAOReadOnly::getAuthorName() const { WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); return row.Get_author_name(); } -DPL::Optional WidgetDAOReadOnly::getAuthorEmail() const +DPL::OptionalString WidgetDAOReadOnly::getAuthorEmail() const { WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); return row.Get_author_email(); } -DPL::Optional WidgetDAOReadOnly::getAuthorHref() const +DPL::OptionalString WidgetDAOReadOnly::getAuthorHref() const { WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); return row.Get_author_href(); } -DPL::Optional WidgetDAOReadOnly::getMinimumWacVersion() const +DPL::OptionalString WidgetDAOReadOnly::getMinimumWacVersion() const { WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); return row.Get_min_version(); @@ -669,17 +639,6 @@ DPL::OptionalString WidgetDAOReadOnly::getCspPolicyReportOnly() const return row.Get_csp_policy_report_only(); } -bool WidgetDAOReadOnly::getWebkitPluginsRequired() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::OptionalInt ret = row.Get_webkit_plugins_required(); - - if (ret.IsNull() || *ret == 0) { - return false; - } else { return true; - } -} - time_t WidgetDAOReadOnly::getInstallTime() const { SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN @@ -712,8 +671,8 @@ DPL::OptionalString WidgetDAOReadOnly::getSplashImgSrc() const } DPL::OptionalString value = rows.front().Get_splash_img_src(); - if (value.IsNull()) { - return DPL::OptionalString::Null; + if (!value) { + return DPL::OptionalString(); } return DPL::OptionalString(getPath() + *value); @@ -838,22 +797,6 @@ WindowModeList WidgetDAOReadOnly::getWindowModes() const SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get window modes") } -std::string WidgetDAOReadOnly::getBaseFolder() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::Optional ret = row.Get_base_folder(); - std::string baseFolder; - if (!ret.IsNull()) { - baseFolder = DPL::ToUTF8String(*ret); - } - - if (!baseFolder.empty()) { - baseFolder += "/"; - } - - return baseFolder; -} - WidgetCertificateDataList WidgetDAOReadOnly::getCertificateDataList() const { //TODO check widget existance @@ -878,15 +821,15 @@ WidgetCertificateDataList WidgetDAOReadOnly::getCertificateDataList() const data.type = static_cast (it->Get_type()); data.chainId = it->Get_chainid(); - DPL::Optional md5 = it->Get_md5_fingerprint(); + DPL::OptionalString md5 = it->Get_md5_fingerprint(); data.strMD5Fingerprint = - md5.IsNull() ? "" : DPL::ToUTF8String(*md5); - DPL::Optional sha1 = it->Get_sha1_fingerprint(); + (!md5) ? "" : DPL::ToUTF8String(*md5); + DPL::OptionalString sha1 = it->Get_sha1_fingerprint(); data.strSHA1Fingerprint = - sha1.IsNull() ? "" : DPL::ToUTF8String(*sha1); - DPL::Optional cname = it->Get_common_name(); + (!sha1) ? "" : DPL::ToUTF8String(*sha1); + DPL::OptionalString cname = it->Get_common_name(); data.strCommonName = - cname.IsNull() ? DPL::FromUTF8String("") : *cname; + (!cname) ? DPL::FromUTF8String("") : *cname; outlCertificateData.push_back(data); } @@ -917,12 +860,12 @@ FingerPrintList WidgetDAOReadOnly::getKeyFingerprints( FingerPrintList keys; FOREACH(it, rows) { - DPL::Optional sha1 = it->Get_sha1_fingerprint(); - if (!sha1.IsNull()) { + DPL::OptionalString sha1 = it->Get_sha1_fingerprint(); + if (!!sha1) { keys.push_back(DPL::ToUTF8String(*sha1)); } - DPL::Optional md5 = it->Get_md5_fingerprint(); - if (!md5.IsNull()) { + DPL::OptionalString md5 = it->Get_md5_fingerprint(); + if (!!md5) { keys.push_back(DPL::ToUTF8String(*md5)); } } @@ -953,8 +896,8 @@ WidgetCertificateCNList WidgetDAOReadOnly::getKeyCommonNameList( WidgetCertificateCNList out; FOREACH(it, rows) { - DPL::Optional cname = it->Get_common_name(); - out.push_back(cname.IsNull() ? "" : DPL::ToUTF8String(*cname)); + DPL::OptionalString cname = it->Get_common_name(); + out.push_back((!cname) ? "" : DPL::ToUTF8String(*cname)); } return out; } @@ -978,7 +921,7 @@ void WidgetDAOReadOnly::getWidgetAccessInfo( info.strIRI = it->Get_iri(); DPL::OptionalInt access = it->Get_subdomain_access(); - if (access.IsNull() || 0 == *access) { + if (!access || 0 == *access) { info.bSubDomains = false; } else if (1 == *access) { info.bSubDomains = true; @@ -1056,7 +999,7 @@ void WidgetDAOReadOnly::getWidgetSettings( void WidgetDAOReadOnly::getAppControlList( WidgetAppControlList& outAppControlList) const { - LogDebug("Getting getAppControlList. Handle: " << m_widgetHandle); + WrtLogD("Getting getAppControlList. Handle: %i", m_widgetHandle); SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN { ScopedTransaction transaction(&WrtDatabase::interface()); @@ -1068,8 +1011,7 @@ void WidgetDAOReadOnly::getAppControlList( AppControlInfo::Select::RowList rows = select->GetRowList(); if (rows.empty()) { - LogDebug("AppControl list is empty. Handle: " << - m_widgetHandle); + WrtLogD("AppControl list is empty. Handle: %i", m_widgetHandle); } FOREACH(it, rows) { @@ -1078,8 +1020,7 @@ void WidgetDAOReadOnly::getAppControlList( ret.operation = it->Get_operation(); ret.uri = it->Get_uri(); ret.mime = it->Get_mime(); - ret.disposition = static_cast(it->Get_disposition()); - ret.index = it->Get_execute_index(); + ret.reset = it->Get_execute_index(); outAppControlList.push_back(ret); } @@ -1186,6 +1127,23 @@ WidgetSecurityModelVersion WidgetDAOReadOnly::getSecurityModelVersion() const return static_cast(*result); } +#if USE(WEB_PROVIDER) +void WidgetDAOReadOnly::getLiveBoxInfoList(LiveBoxIdList& outLiveBoxIdList) const +{ + SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN + { + WRT_DB_SELECT(select, LiveBoxInfo, &WrtDatabase::interface()) + select->Where(Equals(m_widgetHandle)); + LiveBoxInfo::Select::RowList rowList = select->GetRowList(); + FOREACH(it, rowList){ + WrtLogD("liveBoxID: %ls", (*(it->Get_livebox_id())).c_str() ); + outLiveBoxIdList.push_back(it->Get_livebox_id()); + } + } + SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get liveBox info") +} +#endif + #undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN #undef SQL_CONNECTION_EXCEPTION_HANDLER_END #undef CHECK_WIDGET_EXISTENCE diff --git a/modules_wearable/widget_dao/dao/widget_dao_types.cpp b/modules/widget_dao/dao/widget_dao_types.cpp old mode 100755 new mode 100644 similarity index 97% rename from modules_wearable/widget_dao/dao/widget_dao_types.cpp rename to modules/widget_dao/dao/widget_dao_types.cpp index 875fa7f..116ea9a --- a/modules_wearable/widget_dao/dao/widget_dao_types.cpp +++ b/modules/widget_dao/dao/widget_dao_types.cpp @@ -23,7 +23,6 @@ */ #include -#include namespace WrtDB { @@ -34,6 +33,6 @@ const std::map g_W3CPrivilegeTextMap = { {"http://tizen.org/privilege/fullscreen", FEATURE_FULLSCREEN_MODE}, {"http://tizen.org/privilege/unlimitedstorage", FEATURE_WEB_DATABASE}, {"http://tizen.org/privilege/camera", FEATURE_CAMERA}, - {"http://tizen.org/privilege/audiorecorder", FEATURE_AUDIO_RECORDER}, + {"http://tizen.org/privilege/audiorecorder", FEATURE_AUDIO_RECORDER} }; } // namespace SecurityOriginDB diff --git a/modules_mobile/widget_dao/dao/common_dao_types.cpp b/modules/widget_dao/dao/widget_register_types.cpp old mode 100644 new mode 100755 similarity index 67% rename from modules_mobile/widget_dao/dao/common_dao_types.cpp rename to modules/widget_dao/dao/widget_register_types.cpp index 7c0b8c3..19fca12 --- a/modules_mobile/widget_dao/dao/common_dao_types.cpp +++ b/modules/widget_dao/dao/widget_register_types.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,11 +14,16 @@ * limitations under the License. */ /** - * - * @file common_dao_types.h - * @author Michal Ciepielski (m.ciepielski@samsung.com) + * @file widget_register_types.cpp + * @author Tomasz Iwanek (t.iwanek@samsung.com) * @version 1.0 - * @brief This file contains the implementation of common data types for wrtdb */ -#include -namespace WrtDB {} // namespace WrtDB + +#include + +namespace WrtDB { + +IWidgetSecurity::~IWidgetSecurity() +{} + +} diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h b/modules/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h b/modules/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h similarity index 84% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h index d9d9b93..168808f 100755 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h +++ b/modules/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h @@ -31,6 +31,8 @@ #include #include #include +#include +#include namespace WrtDB { class PluginMetafileData @@ -97,8 +99,8 @@ struct DbWidgetSize DPL::OptionalInt width; DPL::OptionalInt height; - DbWidgetSize(DPL::OptionalInt w = DPL::OptionalInt::Null, - DPL::OptionalInt h = DPL::OptionalInt::Null) : + DbWidgetSize(DPL::OptionalInt w = DPL::OptionalInt(), + DPL::OptionalInt h = DPL::OptionalInt()) : width(w), height(h) {} @@ -238,9 +240,6 @@ enum AppType APP_TYPE_UNKNOWN = 0, // unknown APP_TYPE_TIZENWEBAPP, // Tizen webapp APP_TYPE_TIZENWEBSERVICE // Tizen web service -#ifdef CARD_VIEWER_SUPPORT - ,APP_TYPE_TIZENCARDAPP // Tizen card webapp -#endif }; class WidgetType @@ -267,9 +266,6 @@ class WidgetType X(APP_TYPE_UNKNOWN) X(APP_TYPE_TIZENWEBAPP) X(APP_TYPE_TIZENWEBSERVICE) -#ifdef CARD_VIEWER_SUPPORT - X(APP_TYPE_TIZENCARDAPP) -#endif #undef X default: @@ -359,18 +355,11 @@ namespace AppControlPrefix { } struct WidgetAppControl { - enum class Disposition { - UNDEFINE = 0, - WINDOW = 1, - INLINE = 2 - }; - DPL::String src; /* start uri */ DPL::String operation; /* service name */ - DPL::String uri; /* scheme type*/ + DPL::String uri; /* scheme type*/ DPL::String mime; /* mime type */ - Disposition disposition; - unsigned index; + bool reset; /* src reset */ bool operator== (const WidgetAppControl& other) const { @@ -378,7 +367,7 @@ struct WidgetAppControl operation == other.operation && uri == other.uri && mime == other.mime && - disposition == other.disposition; + reset == other.reset; } }; @@ -389,5 +378,51 @@ enum class WidgetSecurityModelVersion WIDGET_SECURITY_MODEL_V1 = 0, // WARP WIDGET_SECURITY_MODEL_V2 // CSP, allow-navigation }; + +class SQLiteDAOBase +{ +private: +#if ENABLE(WIDGET_INTERFACE_DAO_PERFORMANCE) + void clearStatementsMap(); + std::map m_statements; +#endif //ENABLE(WIDGET_INTERFACE_DAO_PERFORMANCE) +protected: + class Exception + { + public: + DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) + DECLARE_EXCEPTION_TYPE(Base, DatabaseError) + }; + + SQLiteDAOBase(); + virtual ~SQLiteDAOBase(); + + inline DPL::String sqlite3_column_string(sqlite3_stmt* stmt, int iCol) + { + const char* str = reinterpret_cast(sqlite3_column_text(stmt, iCol)); + if (str == NULL) { + str = ""; + } + return DPL::FromUTF8String(std::string(str)); + } + + void sqlBind(sqlite3_stmt* stmt, int index, const char* value) const; + void sqlBind(sqlite3_stmt* stmt, int index, const std::string& value) const; + void sqlBind(sqlite3_stmt* stmt, int index, const DPL::String& value) const; + void sqlBind(sqlite3_stmt* stmt, int index, int value) const; + + sqlite3* m_databaseInterface; + sqlite3_stmt* sqlPrepare(const char* const query); +#if ENABLE(WIDGET_INTERFACE_DAO_PERFORMANCE) + inline void releaseStatement(sqlite3_stmt *) + { } +#else + inline void releaseStatement(sqlite3_stmt *statement) + { + sqlite3_finalize(statement); + } +#endif //ENABLE(WIDGET_INTERFACE_DAO_PERFORMANCE) +}; + } // namespace WrtDB #endif /* WRT_WIDGET_DAO_COMMON_DAO_TYPES_H_ */ diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h b/modules/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h similarity index 92% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h index 1c42558..bf11045 100755 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h +++ b/modules/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h @@ -26,8 +26,10 @@ #include #include #include +#include #include #include +#include #include namespace WrtDB { @@ -35,6 +37,11 @@ void NormalizeString(DPL::OptionalString& txt, bool isTrimSpace = false); void NormalizeString(DPL::String& str); DPL::String GetSingleAttributeValue(const DPL::String value); void NormalizeAndTrimSpaceString(DPL::OptionalString& txt); +#if ENABLE(ELEMENT_ATTR_MAX_LENGTH) +void NormalizeString(DPL::String& str, const unsigned int length, bool showEllipsis = false); +void NormalizeString(DPL::OptionalString& str, const unsigned int length, bool showEllipsis = false); +void NormalizeAndTrimSpaceString(DPL::OptionalString& str, const unsigned int length); +#endif // ELEMENT_ATTR_MAX_LENGTH class WidgetConfigurationManager; @@ -160,22 +167,14 @@ class ConfigParserData struct AppControlInfo { - enum class Disposition { - UNDEFINE = 0, - WINDOW = 1, - INLINE = 2 - }; AppControlInfo(const DPL::String& operation) : - m_operation(operation), - m_disposition(Disposition::UNDEFINE), - m_index(0) + m_operation(operation) {} DPL::String m_src; DPL::String m_operation; std::set m_uriList; std::set m_mimeList; - Disposition m_disposition; - unsigned m_index; + DPL::String m_reload; bool operator==(const AppControlInfo&) const; bool operator!=(const AppControlInfo&) const; @@ -183,6 +182,7 @@ class ConfigParserData typedef std::list AppControlInfoList; +#if USE(WEB_PROVIDER) struct LiveboxInfo { LiveboxInfo() { } @@ -227,8 +227,9 @@ class ConfigParserData bool operator <(const LiveboxInfo&) const; bool operator<=(const LiveboxInfo&) const; }; - typedef DPL::Optional OptionalLiveboxInfo; + typedef boost::optional OptionalLiveboxInfo; typedef std::list LiveboxList; +#endif enum IconSectionType { @@ -254,6 +255,7 @@ class ConfigParserData typedef std::list DependsPkgList; typedef std::set CategoryList; + typedef std::set BackgroundCategoryList; struct AllowNavigationInfo { @@ -300,6 +302,8 @@ class ConfigParserData LocalizedDataSet m_localizedDataSet; DPL::String serviceContent; IconsList m_iconsList; + MetadataList m_metadataList; + CategoryList m_categoryList; }; typedef std::list ServiceAppInfoList; @@ -307,8 +311,9 @@ class ConfigParserData SECURITY_MODEL_V1 = 0, // WARP SECURITY_MODEL_V2 // CSP, allow-navigation }; - +#if USE(WEB_PROVIDER) LiveboxList m_livebox; +#endif StringsList nameSpaces; LocalizedDataSet localizedDataSet; @@ -342,10 +347,6 @@ class ConfigParserData bool backSupported; bool accessNetwork; -#ifdef CARD_VIEWER_SUPPORT - bool isCardApp; -#endif - // Unlocalized data, to be processed by WidgetConfigurationManager bool startFileEncountered; DPL::OptionalString startFile; @@ -360,6 +361,12 @@ class ConfigParserData DPL::OptionalString tizenAppId; bool didFoundTizenApplicationElement; + // LaunchMode(caller, single) + DPL::OptionalString launchMode; + + // Ambient Support(true, false) + DPL::OptionalString ambient; + // allow-navigation bool allowNavigationEncountered; AllowNavigationInfoList allowNavigationInfoList; @@ -381,6 +388,8 @@ class ConfigParserData DPL::OptionalString backgroundPage; // For category CategoryList categoryList; + // For background category + BackgroundCategoryList backgroundCategoryList; // For Account AccountProvider accountProvider; // security model version @@ -397,9 +406,6 @@ class ConfigParserData minVersionRequired(), backSupported(false), accessNetwork(false), -#ifdef CARD_VIEWER_SUPPORT - isCardApp(false), -#endif startFileEncountered(false), didFoundTizenApplicationElement(false), allowNavigationEncountered(false), diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h b/modules/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/feature_model.h b/modules/widget_dao/include/dpl/wrt-dao-ro/feature_model.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/feature_model.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/feature_model.h diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/global_config.h b/modules/widget_dao/include/dpl/wrt-dao-ro/global_config.h similarity index 97% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/global_config.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/global_config.h index 6ad0b4b..8d02bb8 100755 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/global_config.h +++ b/modules/widget_dao/include/dpl/wrt-dao-ro/global_config.h @@ -149,6 +149,14 @@ inline const char* GetWrtServiceExec() } /** + * WebProcess exec path + */ +inline const char* GetWebProcessExec() +{ + return "/usr/bin/WebProcess"; +} + +/** * widgets desktop icon path */ inline const char* GetUserWidgetDesktopIconPath() @@ -254,7 +262,7 @@ inline const char* GetTmpDirPath() inline const char* GetTizenVersion() { - return "2.2"; + return "2.4"; } inline const char* GetShareDirectoryPath() diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/path_builder.h b/modules/widget_dao/include/dpl/wrt-dao-ro/path_builder.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/path_builder.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/path_builder.h diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h b/modules/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h similarity index 96% rename from modules_mobile/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h index 3be2441..17816ad 100644 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h +++ b/modules/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h @@ -23,6 +23,7 @@ #ifndef WRT_SRC_CONFIGURATION_PLUGIN_DAO_READ_ONLY_H_ #define WRT_SRC_CONFIGURATION_PLUGIN_DAO_READ_ONLY_H_ +#include #include #include #include @@ -71,7 +72,6 @@ class PluginDAOReadOnly DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) DECLARE_EXCEPTION_TYPE(Base, DatabaseError) DECLARE_EXCEPTION_TYPE(Base, PluginNotExist) - DECLARE_EXCEPTION_TYPE(Base, PluginInstallationNotCompleted) }; public: @@ -104,7 +104,9 @@ class PluginDAOReadOnly PluginInstallationState getInstallationStatus() const; std::string getLibraryPath() const; std::string getLibraryName() const; + std::time_t getLibraryTimestamp() const; PluginHandleSetPtr getLibraryDependencies() const; + PluginHandleSetPtr getLibraryDependentPlugins() const; private: DbPluginHandle m_pluginHandle; diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h b/modules/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h b/modules/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h similarity index 83% rename from modules_mobile/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h index 67c88a9..cc46442 100644 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h +++ b/modules/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h @@ -23,36 +23,36 @@ #define WRT_ENGINE_SRC_CONFIGURATION_WEBRUNTIME_DATABASE_H #include -#include - -extern DPL::Mutex g_wrtDbQueriesMutex; - -#define WRT_DB_INTERNAL(tlsCommand, InternalType, interface) \ - static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ - { \ - DPL::Mutex::ScopedLock lock(&g_wrtDbQueriesMutex); \ - if (!tlsCommand##Ptr) { \ - static DPL::ThreadLocalVariable tmp; \ - tlsCommand##Ptr = &tmp; \ - } \ - } \ - DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ - if (tlsCommand.IsNull()) { tlsCommand = InternalType(interface); } - -#define WRT_DB_SELECT(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Select, \ +#include + +extern std::mutex g_wrtDbQueriesMutex; + +#define WRT_DB_INTERNAL(tlsCommand, InternalType, interface) \ + static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ + { \ + std::lock_guard lock(g_wrtDbQueriesMutex); \ + if (!tlsCommand##Ptr) { \ + static DPL::ThreadLocalVariable tmp; \ + tlsCommand##Ptr = &tmp; \ + } \ + } \ + DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ + if (!tlsCommand) { tlsCommand = InternalType(interface); } + +#define WRT_DB_SELECT(name, type, interface) WRT_DB_INTERNAL(name, \ + type::Select, \ interface) -#define WRT_DB_INSERT(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Insert, \ +#define WRT_DB_INSERT(name, type, interface) WRT_DB_INTERNAL(name, \ + type::Insert, \ interface) -#define WRT_DB_UPDATE(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Update, \ +#define WRT_DB_UPDATE(name, type, interface) WRT_DB_INTERNAL(name, \ + type::Update, \ interface) -#define WRT_DB_DELETE(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Delete, \ +#define WRT_DB_DELETE(name, type, interface) WRT_DB_INTERNAL(name, \ + type::Delete, \ interface) #endif // WRT_ENGINE_SRC_CONFIGURATION_WEBRUNTIME_DATABASE_H diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/widget_config.h b/modules/widget_dao/include/dpl/wrt-dao-ro/widget_config.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/widget_config.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/widget_config.h diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h b/modules/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h similarity index 75% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h index c82995d..db2b789 100755 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h +++ b/modules/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h @@ -33,165 +33,13 @@ #include #include #include -#include #include -#include +#include #include #include +#include namespace WrtDB { -enum CertificateSource { - SIGNATURE_AUTHOR = 0, - SIGNATURE_DISTRIBUTOR = 1, - SIGNATURE_DISTRIBUTOR2 = 2, - SIGNATURE_UNKNOWN = 3 -}; - -struct WidgetLocalizedInfo -{ - DPL::OptionalString name; - DPL::OptionalString shortName; - DPL::OptionalString description; - DPL::OptionalString license; - DPL::OptionalString licenseHref; -}; - -/** - * CertificateData - * A structure to hold certificate fingerprints. - */ -struct WidgetCertificateData -{ - enum Owner { AUTHOR, DISTRIBUTOR, DISTRIBUTOR2, UNKNOWN }; - enum Type { ROOT, ENDENTITY }; - - // type of signature: author/distributor - Owner owner; - // indicates whether this is ca certificate - Type type; - - // chain id number: relative BASE, where BASE is signatureBASE.xml - int chainId; - // certificate fingerprint digested by md5 - std::string strMD5Fingerprint; - // certificate fingerprint digestef by sha1 - std::string strSHA1Fingerprint; - // Common name field in certificate - DPL::String strCommonName; - - bool operator== (const WidgetCertificateData& certData) const - { - return certData.chainId == chainId && - certData.owner == owner && - certData.strCommonName == strCommonName && - certData.strMD5Fingerprint == strMD5Fingerprint && - certData.strSHA1Fingerprint == strSHA1Fingerprint; - } -}; - -typedef std::list WidgetCertificateDataList; - -typedef DPL::String Locale; -typedef std::set LocaleSet; -typedef std::list ExternalLocationList; - -/** - * WidgetRegisterInfo - * A structure to hold widget's information needed to be registered. - * @see WidgetConfigurationInfo - */ -struct WidgetRegisterInfo -{ - struct LocalizedIcon : public ConfigParserData::Icon - { - LocalizedIcon(const ConfigParserData::Icon& icon, - const LocaleSet& _availableLocales) : - ConfigParserData::Icon(icon), - availableLocales(_availableLocales) - {} - - LocaleSet availableLocales; - }; - - struct StartFileProperties - { - DPL::String encoding; - DPL::String type; - }; - - typedef std::map StartFilePropertiesForLocalesMap; - struct LocalizedStartFile - { - DPL::String path; - StartFilePropertiesForLocalesMap propertiesForLocales; - }; - - typedef std::list LocalizedIconList; - typedef std::list LocalizedStartFileList; - struct LocalizationData - { - LocalizedIconList icons; - LocalizedStartFileList startFiles; - }; - - //Constructor - WidgetRegisterInfo() : - webAppType(APP_TYPE_UNKNOWN), - configInfo(), - packagingType(PKG_TYPE_UNKNOWN) - {} - - WidgetType webAppType; - DPL::OptionalString guid; - DPL::OptionalString version; - DPL::OptionalString minVersion; - std::string baseFolder; - ConfigParserData configInfo; - LocalizationData localizationData; - - TizenPkgId tzPkgid; - TizenAppId tzAppid; - TizenAppId tzBackupAppid; - - time_t installedTime; - PackagingType packagingType; - EncryptedFileList encryptedFiles; - ExternalLocationList externalLocations; - DPL::OptionalString widgetInstalledPath; -}; - -typedef std::list CertificateChainList; -class IWidgetSecurity -{ - public: - virtual ~IWidgetSecurity(); - - virtual const WidgetCertificateDataList& getCertificateList() const = 0; - - virtual bool isRecognized() const = 0; - - virtual bool isDistributorSigned() const = 0; - - virtual void getCertificateChainList(CertificateChainList& list, - CertificateSource source) const = 0; -}; - -/** - * WidgetAuthorInfo. - * Structure to hold the information of widget's author. - */ -struct WidgetAuthorInfo -{ - DPL::OptionalString name; - DPL::OptionalString email; - DPL::OptionalString href; -}; - -typedef std::list WidgetCertificateCNList; -typedef std::list LanguageTagList; -typedef std::list HostList; -typedef std::list FingerPrintList; class WidgetDAOReadOnly { @@ -251,6 +99,14 @@ class WidgetDAOReadOnly }; typedef std::list LocalizedStartFileList; +#if USE(WEB_PROVIDER) + /* + * This List is to retrive liveBox(es)ID from wrt.db. List is required as + * there might be multiple app-widget tag in config.xml for one widget. + */ + typedef std::list LiveBoxIdList; +#endif + /** * This is a constructor. * @@ -300,26 +156,17 @@ class WidgetDAOReadOnly static std::list getTzAppIdList(const TizenPkgId tzPkgid); /** - * Returns TizenPkgId for the specified widget - * - * @return TizenPkgId; - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. + * Returns tizen package id for the specified web application + * @return TizenPkgId */ - - TizenPkgId getTzPkgId() const DPL_DEPRECATED_WITH_MESSAGE("Use getTizenPkgId"); - static TizenPkgId getTzPkgId(const DbWidgetHandle handle) DPL_DEPRECATED_WITH_MESSAGE("Use getTizenPkgId"); - static TizenPkgId getTzPkgId(const TizenAppId tzAppid) DPL_DEPRECATED_WITH_MESSAGE("Use getTizenPkgId"); TizenPkgId getTizenPkgId() const; static TizenPkgId getTizenPkgId(const DbWidgetHandle handle); static TizenPkgId getTizenPkgId(const TizenAppId tzAppid); /** - * This method returns list of tizen package list of installed packages - * @return list of TizenPkgIdList of installed packages + * This method returns list of tizen package list of installed web applications + * @return TizenPkgIdList */ - static TizenPkgIdList getTizenPkgidList() DPL_DEPRECATED_WITH_MESSAGE("Use getTizenPkgIdList"); static TizenPkgIdList getTizenPkgIdList(); /** @@ -501,16 +348,6 @@ class WidgetDAOReadOnly bool hasFeature(const std::string& featureName) const; /** - * This method gets if widget needs webkit plugins enabled - * - * @return true: widget needs webkit plugins enabled - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - bool getWebkitPluginsRequired() const; - - /** * This method returns a list of all the installed widgets. * * @return list of installed widgets. @@ -584,16 +421,6 @@ class WidgetDAOReadOnly */ time_t getInstallTime() const; - /** - * This method gets widget base folder. - * - * @return widget base folder. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - std::string getBaseFolder() const; - /* This method checks read only flag for given property */ DPL::OptionalInt checkPropertyReadFlag( @@ -691,6 +518,13 @@ class WidgetDAOReadOnly PrivilegeList getWidgetPrivilege() const; WidgetSecurityModelVersion getSecurityModelVersion() const; +#if USE(WEB_PROVIDER) + /** + * @brief Gets list of liveBox(es) ID(s) for a particular widget. + * @param[out] out param to retrive livebox(es) ID(s) as a list of String + */ + void getLiveBoxInfoList(LiveBoxIdList& outLiveBoxIdList) const; +#endif }; } // namespace WrtDB diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h b/modules/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h old mode 100755 new mode 100644 similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h diff --git a/modules/widget_dao/include/dpl/wrt-dao-ro/widget_register_types.h b/modules/widget_dao/include/dpl/wrt-dao-ro/widget_register_types.h new file mode 100644 index 0000000..ffccb7c --- /dev/null +++ b/modules/widget_dao/include/dpl/wrt-dao-ro/widget_register_types.h @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @file widget_register_types.h + * @author Tomasz Iwanek (t.iwanek@samsung.com) + * @version 1.0 + */ + +#ifndef WIDGET_REGISTER_TYPES_H +#define WIDGET_REGISTER_TYPES_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace WrtDB { +enum CertificateSource { + SIGNATURE_AUTHOR = 0, + SIGNATURE_DISTRIBUTOR = 1, + SIGNATURE_DISTRIBUTOR2 = 2, + SIGNATURE_UNKNOWN = 3 +}; + +struct WidgetLocalizedInfo +{ + DPL::OptionalString name; + DPL::OptionalString shortName; + DPL::OptionalString description; + DPL::OptionalString license; + DPL::OptionalString licenseHref; +}; + +/** + * CertificateData + * A structure to hold certificate fingerprints. + */ +struct WidgetCertificateData +{ + enum Owner { AUTHOR, DISTRIBUTOR, DISTRIBUTOR2, UNKNOWN }; + enum Type { ROOT, ENDENTITY }; + + // type of signature: author/distributor + Owner owner; + // indicates whether this is ca certificate + Type type; + + // chain id number: relative BASE, where BASE is signatureBASE.xml + int chainId; + // certificate fingerprint digested by md5 + std::string strMD5Fingerprint; + // certificate fingerprint digestef by sha1 + std::string strSHA1Fingerprint; + // Common name field in certificate + DPL::String strCommonName; + + bool operator== (const WidgetCertificateData& certData) const + { + return certData.chainId == chainId && + certData.owner == owner && + certData.strCommonName == strCommonName && + certData.strMD5Fingerprint == strMD5Fingerprint && + certData.strSHA1Fingerprint == strSHA1Fingerprint; + } +}; + +typedef std::list WidgetCertificateDataList; + +typedef DPL::String Locale; +typedef std::set LocaleSet; +typedef std::list ExternalLocationList; + +/** + * WidgetRegisterInfo + * A structure to hold widget's information needed to be registered. + * @see WidgetConfigurationInfo + */ +struct WidgetRegisterInfo +{ + struct LocalizedIcon : public ConfigParserData::Icon + { + LocalizedIcon(const ConfigParserData::Icon& icon, + const LocaleSet& _availableLocales) : + ConfigParserData::Icon(icon), + availableLocales(_availableLocales) + {} + + LocaleSet availableLocales; + }; + + struct StartFileProperties + { + DPL::String encoding; + DPL::String type; + }; + + typedef std::map StartFilePropertiesForLocalesMap; + struct LocalizedStartFile + { + DPL::String path; + StartFilePropertiesForLocalesMap propertiesForLocales; + }; + + typedef std::list LocalizedIconList; + typedef std::list LocalizedStartFileList; + struct LocalizationData + { + LocalizedIconList icons; + LocalizedStartFileList startFiles; + }; + + //Constructor + WidgetRegisterInfo() : + webAppType(APP_TYPE_UNKNOWN), + configInfo(), + packagingType(PKG_TYPE_UNKNOWN) + {} + + WidgetType webAppType; + DPL::OptionalString guid; + DPL::OptionalString version; + DPL::OptionalString minVersion; + std::string baseFolder; + ConfigParserData configInfo; + LocalizationData localizationData; + + TizenPkgId tzPkgid; + TizenAppId tzAppid; + + time_t installedTime; + PackagingType packagingType; + EncryptedFileList encryptedFiles; + ExternalLocationList externalLocations; + DPL::OptionalString widgetInstalledPath; +}; + +typedef std::list CertificateChainList; +class IWidgetSecurity +{ + public: + virtual ~IWidgetSecurity(); + + virtual const WidgetCertificateDataList& getCertificateList() const = 0; + + virtual bool isRecognized() const = 0; + + virtual bool isDistributorSigned() const = 0; + + virtual void getCertificateChainList(CertificateChainList& list, + CertificateSource source) const = 0; +}; + +/** + * WidgetAuthorInfo. + * Structure to hold the information of widget's author. + */ +struct WidgetAuthorInfo +{ + DPL::OptionalString name; + DPL::OptionalString email; + DPL::OptionalString href; +}; + +typedef std::list WidgetCertificateCNList; +typedef std::list LanguageTagList; +typedef std::list HostList; +typedef std::list FingerPrintList; + +} + +#endif // WIDGET_REGISTER_TYPES_H diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h b/modules/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h rename to modules/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h b/modules/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h rename to modules/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h b/modules/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h similarity index 96% rename from modules_mobile/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h rename to modules/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h index 0b53eef..deab248 100644 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h +++ b/modules/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h @@ -55,6 +55,7 @@ class PluginDAO : public PluginDAOReadOnly PluginInstallationState); static void unregisterPlugin(DbPluginHandle pluginHandle); + static void unregisterPluginLibrariesDependencies(DbPluginHandle plugin); }; } // namespace WrtDB diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-rw/property_dao.h b/modules/widget_dao/include/dpl/wrt-dao-rw/property_dao.h similarity index 100% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-rw/property_dao.h rename to modules/widget_dao/include/dpl/wrt-dao-rw/property_dao.h diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h b/modules/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h similarity index 88% rename from modules_wearable/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h rename to modules/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h index d205ccf..9cac075 100755 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h +++ b/modules/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -134,11 +135,13 @@ class WidgetDAO : public WidgetDAOReadOnly PkgType pkgType, const ConfigParserData &widgetConfigurationInfo, const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle = - DPL::Optional()); - static void registerWidgetExtendedInfo(DbWidgetHandle widgetHandle, + const boost::optional handle = + boost::optional()); + static void registerWidgetExtendedInfo( + DbWidgetHandle widgetHandle, time_t installedTime, - const DPL::OptionalString & splashImgSrc, const DPL::OptionalString & backgroundPage, + const DPL::OptionalString & splashImgSrc, + const DPL::OptionalString & backgroundPage, const DPL::OptionalString & widgetInstalledPath); static void registerWidgetLocalizedInfo( DbWidgetHandle widgetHandle, @@ -149,6 +152,9 @@ class WidgetDAO : public WidgetDAOReadOnly static void registerWidgetStartFile( DbWidgetHandle widgetHandle, const WidgetRegisterInfo::LocalizedStartFileList &startFiles); + static void registerWidgetPreferences( + DbWidgetHandle widgetHandle, + const WidgetRegisterInfo ®Info); static void registerWidgetFeatures( DbWidgetHandle widgetHandle, const ConfigParserData::FeaturesList &featuresList); @@ -191,23 +197,29 @@ class WidgetDAO : public WidgetDAOReadOnly const ExternalLocationList & externals); - static void registerServiceInternal(const ConfigParserData::ServiceAppInfo &serviceAppInfo, - const WidgetRegisterInfo &widgetRegInfo, const IWidgetSecurity &widgetSecurity); + static void registerServiceInternal( + const ConfigParserData::ServiceAppInfo &serviceAppInfo, + const WidgetRegisterInfo &widgetRegInfo, + const IWidgetSecurity &widgetSecurity); +#if USE(WEB_PROVIDER) + static void registerLiveBoxInfo( + DbWidgetHandle widgetHandle, + const WidgetRegisterInfo ®Info); +#endif static void registerWidgetInternal( const TizenAppId & tzAppId, const WidgetRegisterInfo &widgetRegInfo, const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle = - DPL::Optional()); + const boost::optional handle = + boost::optional()); static void unregisterWidgetInternal(const TizenAppId & tzAppId); static void insertAppControlInfo(DbWidgetHandle handle, DPL::String src, DPL::String operation, DPL::String uri, DPL::String mime, - unsigned index, - unsigned disposition); + bool reload); }; } // namespace WrtDB diff --git a/modules_wearable/widget_dao/orm/gen_db_md5.sh b/modules/widget_dao/orm/gen_db_md5.sh similarity index 100% rename from modules_wearable/widget_dao/orm/gen_db_md5.sh rename to modules/widget_dao/orm/gen_db_md5.sh diff --git a/modules_wearable/widget_dao/orm/orm_generator_wrt.h b/modules/widget_dao/orm/orm_generator_wrt.h similarity index 100% rename from modules_wearable/widget_dao/orm/orm_generator_wrt.h rename to modules/widget_dao/orm/orm_generator_wrt.h diff --git a/modules_wearable/custom_handler_dao/orm/version_db b/modules/widget_dao/orm/version_db similarity index 100% rename from modules_wearable/custom_handler_dao/orm/version_db rename to modules/widget_dao/orm/version_db diff --git a/modules_wearable/widget_dao/orm/wrt_db b/modules/widget_dao/orm/wrt_db old mode 100755 new mode 100644 similarity index 95% rename from modules_wearable/widget_dao/orm/wrt_db rename to modules/widget_dao/orm/wrt_db index 168302a..eb4527d --- a/modules_wearable/widget_dao/orm/wrt_db +++ b/modules/widget_dao/orm/wrt_db @@ -13,14 +13,10 @@ CREATE_TABLE(WidgetInfo) COLUMN(author_name, TEXT, DEFAULT '') COLUMN(author_email, TEXT, DEFAULT '') COLUMN(author_href, TEXT, DEFAULT '') - COLUMN(base_folder, TEXT, DEFAULT '') - COLUMN(webkit_plugins_required, TINYINT, DEFAULT 0) COLUMN(csp_policy, TEXT, DEFAULT '') COLUMN(csp_policy_report_only, TEXT, DEFAULT '') - COLUMN(wac_signed, INT, DEFAULT 0) COLUMN(min_version, TEXT, DEFAULT '1.0') COLUMN_NOT_NULL(back_supported, TINYINT, DEFAULT 0) - COLUMN(access_network, TINYINT, DEFAULT 0) COLUMN(defaultlocale, TEXT, DEFAULT 0) COLUMN_NOT_NULL(tizen_pkgid, TEXT, DEFAULT '') COLUMN_NOT_NULL(tizen_appid, TEXT, DEFAULT 0 UNIQUE) @@ -67,12 +63,8 @@ CREATE_TABLE_END() CREATE_TABLE(WidgetExtendedInfo) COLUMN_NOT_NULL(app_id, INTEGER, PRIMARY KEY) - COLUMN(last_update_time, BIGINT, DEFAULT 0) COLUMN(install_time, BIGINT, DEFAULT 0) - COLUMN(option_state, INT, DEFAULT 0) COLUMN(updated, INT, DEFAULT 0) - COLUMN(update_policy, INT, DEFAULT 0) - COLUMN_NOT_NULL(test_widget, INT, CHECK(test_widget between 0 and 1) DEFAULT 0) COLUMN(splash_img_src, TEXT, DEFAULT '') COLUMN(background_page, TEXT, DEFAULT '') COLUMN(installed_path, TEXT, DEFAULT '') @@ -215,6 +207,7 @@ CREATE_TABLE(PluginProperties) COLUMN_NOT_NULL(PluginPropertiesId, INTEGER, primary key autoincrement) COLUMN_NOT_NULL(InstallationState, INTEGER, DEFAULT 0) COLUMN_NOT_NULL(PluginLibraryName, TEXT, unique) + COLUMN_NOT_NULL(LibraryTimestamp, INT,) COLUMN(PluginLibraryPath, TEXT,) CREATE_TABLE_END() @@ -224,6 +217,7 @@ CREATE_TABLE(PluginDependencies) TABLE_CONSTRAINTS( FOREIGN KEY (PluginPropertiesId) REFERENCES PluginProperties (PluginPropertiesId) ON DELETE CASCADE + FOREIGN KEY (RequiredPluginPropertiesId) REFERENCES PluginProperties (PluginPropertiesId) ON DELETE CASCADE ) CREATE_TABLE_END() @@ -296,6 +290,14 @@ CREATE_TABLE(EncryptedResourceList) ) CREATE_TABLE_END() +CREATE_TABLE(LiveBoxInfo) + COLUMN_NOT_NULL(app_id, INT,) + COLUMN(livebox_id, TEXT, DEFAULT '') + TABLE_CONSTRAINTS( + FOREIGN KEY(app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE + ) +CREATE_TABLE_END() + SQL( COMMIT; ) diff --git a/modules_wearable/widget_dao/orm/wrt_db_definitions b/modules/widget_dao/orm/wrt_db_definitions similarity index 100% rename from modules_wearable/widget_dao/orm/wrt_db_definitions rename to modules/widget_dao/orm/wrt_db_definitions diff --git a/modules_wearable/widget_dao/orm/wrt_db_sql_generator.h b/modules/widget_dao/orm/wrt_db_sql_generator.h similarity index 100% rename from modules_wearable/widget_dao/orm/wrt_db_sql_generator.h rename to modules/widget_dao/orm/wrt_db_sql_generator.h diff --git a/modules/widget_interface_dao/CMakeLists.txt b/modules/widget_interface_dao/CMakeLists.txt new file mode 100644 index 0000000..9220e11 --- /dev/null +++ b/modules/widget_interface_dao/CMakeLists.txt @@ -0,0 +1,33 @@ +INCLUDE(FindPkgConfig) + +PKG_CHECK_MODULES(WIDGET_INTERFACE_DAO_DEPS + glib-2.0 + dlog + db-util + REQUIRED) + +SET(WIDGET_INTERFACE_DAO_INCLUDE_DIRS + ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/include + ${PROJECT_SOURCE_DIR}/modules/widget_dao/include + ${PROJECT_SOURCE_DIR}/modules/core/include + ${PROJECT_SOURCE_DIR}/modules/db/include + ${PROJECT_SOURCE_DIR}/modules/log/include +) + +SET(WIDGET_INTERFACE_DAO_SOURCES + dao/widget_interface_dao.cpp +) + +INCLUDE_DIRECTORIES(SYSTEM ${WIDGET_INTERFACE_DAO_DEPS_INCLUDE_DIRS} ) +INCLUDE_DIRECTORIES(${WIDGET_INTERFACE_DAO_INCLUDE_DIRS}) + +ADD_LIBRARY(${TARGET_WIDGET_INTERFACE_DAO_LIB} SHARED ${WIDGET_INTERFACE_DAO_SOURCES}) +SET_TARGET_PROPERTIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) +TARGET_LINK_LIBRARIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} ${TARGET_DPL_EFL} ${TARGET_DPL_DB_EFL} ${TARGET_WRT_DAO_RO_LIB} ${WIDGET_INTERFACE_DAO_DEPS_LIBRARIES}) + +INSTALL(TARGETS ${TARGET_WIDGET_INTERFACE_DAO_LIB} DESTINATION lib) + +INSTALL(FILES + include/wrt-commons/widget-interface-dao/widget_interface_dao.h + DESTINATION include/dpl-efl/wrt-commons/widget-interface-dao +) diff --git a/modules/widget_interface_dao/dao/widget_interface_dao.cpp b/modules/widget_interface_dao/dao/widget_interface_dao.cpp new file mode 100644 index 0000000..4854aa4 --- /dev/null +++ b/modules/widget_interface_dao/dao/widget_interface_dao.cpp @@ -0,0 +1,278 @@ +/* + * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * @author Lukasz Marek (l.marek@samsung.com) + * @author Jihoon Chung (jihoon.chung@samsung.com) + * @author Janusz Majnert (j.majnert@samsung.com) + * @author Kamil Lysik (k.lysik@samsung.com) + * @version 0.2 + * @brief + */ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace { +const char* const DATABASE_NAME = ".widget_interface.db"; + +//query strings +const char* const UPDATE_PROPERTIES = "update Properties set value=?, readonly=?, configxml=? where key=?"; +const char* const INSERT_INTO_PROPERTIES = "insert into Properties (value, readonly, configxml, key) values (?, ?, ?, ?)"; +const char* const DELETE_FROM_PROPERTIES_WHERE_KEY = "delete from Properties where key=?"; +const char* const SELECT_VALUE = "select value from Properties where key=?"; +const char* const DELETE_FROM_PROPERTIES = "delete from Properties"; +const char* const DELETE_FROM_PROPERTIES_WHERE_READONLY = "delete from Properties where readonly=0"; +const char* const SELECT_COUNT = "select count(*) from Properties"; +const char* const SELECT_KEY = "select key from Properties order by key"; +const char* const SELECT_READONLY = "select readonly from Properties where key=?"; + +} // anonymous namespace + +#define CATCH_DATABASE_ERROR \ + Catch(SQLiteDAOBase::Exception::DatabaseError) { \ + ReThrow(WidgetInterfaceDAO::Exception::DatabaseError); \ + } + +namespace WidgetInterfaceDB { + +WidgetInterfaceDAO::WidgetInterfaceDAO(WrtDB::DbWidgetHandle widgetHandle) +{ + if (DB_UTIL_OK != db_util_open_with_options( + databaseFileName(widgetHandle).c_str(), + &m_databaseInterface, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_NOMUTEX, + NULL)) { + WrtLogE("Cannot open database. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, "Cannot open database"); + } +} + +WidgetInterfaceDAO::~WidgetInterfaceDAO() +{ +} + +void WidgetInterfaceDAO::setItem(const std::string& key, + const std::string& value, + bool readOnly) +{ + setItem(key, value, readOnly, false); +} + +void WidgetInterfaceDAO::setItem(const std::string& key, + const std::string& value, + bool readOnly, + bool fromConfigXml) +{ + bool keyExists = true; + bool rowReadOnly = false; + Try { + rowReadOnly = isReadOnly(key); + } Catch(Exception::InvalidArgumentException){ + keyExists = false; + } + if (rowReadOnly) { + ThrowMsg(Exception::LocalStorageValueNoModifableException, "setItem fail"); + } + + const char* const query = keyExists ? UPDATE_PROPERTIES : INSERT_INTO_PROPERTIES; + sqlite3_stmt* stmt; + Try { + stmt = sqlPrepare(query); + + sqlBind(stmt, 1, value.c_str()); + sqlBind(stmt, 2, readOnly ? 1 : 0); + sqlBind(stmt, 3, fromConfigXml ? 1 : 0); + sqlBind(stmt, 4, key.c_str()); + } CATCH_DATABASE_ERROR + + int rv = sqlite3_step(stmt); + releaseStatement(stmt); + + if (SQLITE_DONE != rv) { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, "setItem fail"); + } +} + +void WidgetInterfaceDAO::removeItem(const std::string& key) +{ + bool readOnly = false; + Try { + readOnly = isReadOnly(key); + } Catch(Exception::InvalidArgumentException){ + //nothing to do + return; + } + + if (readOnly) { + ThrowMsg(Exception::LocalStorageValueNoModifableException, "removeItem fail"); + } + + sqlite3_stmt* stmt; + Try { + stmt = sqlPrepare(DELETE_FROM_PROPERTIES_WHERE_KEY); + sqlBind(stmt, 1, key.c_str()); + } CATCH_DATABASE_ERROR + + int rv = sqlite3_step(stmt); + releaseStatement(stmt); + + if (SQLITE_DONE != rv) { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, "removeItem fail"); + } +} + +boost::optional WidgetInterfaceDAO::getValue( + const std::string& key) +{ + sqlite3_stmt* stmt; + Try { + stmt = sqlPrepare(SELECT_VALUE); + sqlBind(stmt, 1, key.c_str()); + } CATCH_DATABASE_ERROR + + boost::optional value; + if (SQLITE_ROW == sqlite3_step(stmt)) { + const char* val = + reinterpret_cast(sqlite3_column_text(stmt, 0)); + if (val != NULL) { + value = val; + } + } + releaseStatement(stmt); + + return value; +} + +void WidgetInterfaceDAO::clear(bool removeReadOnly) +{ + sqlite3_stmt* stmt = NULL; + Try { + if (removeReadOnly) { + stmt = sqlPrepare(DELETE_FROM_PROPERTIES); + } else { + stmt = sqlPrepare(DELETE_FROM_PROPERTIES_WHERE_READONLY); + } + } CATCH_DATABASE_ERROR + + int rv = sqlite3_step(stmt); + releaseStatement(stmt); + + if (SQLITE_DONE != rv) { + WrtLogE("sqlite3_step error. %s", sqlite3_errmsg(m_databaseInterface)); + ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, "clear fail"); + } +} + +size_t WidgetInterfaceDAO::getStorageSize() +{ + sqlite3_stmt* stmt; + Try { + stmt = sqlPrepare(SELECT_COUNT); + } CATCH_DATABASE_ERROR + + int size = 0; + if (SQLITE_ROW == sqlite3_step(stmt)) { + size = sqlite3_column_int(stmt, 0); + } + + releaseStatement(stmt); + + return size; +} + +std::string WidgetInterfaceDAO::getKeyByIndex(size_t index) +{ + if (index >= getStorageSize()) { + Throw(Exception::InvalidArgumentException); + } + + sqlite3_stmt* stmt; + Try { + stmt = sqlPrepare(SELECT_KEY); + } CATCH_DATABASE_ERROR + for (unsigned int loop = 0; loop <= index; ++loop) { + if (sqlite3_step(stmt) != SQLITE_ROW) { + releaseStatement(stmt); + ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, + "getKeyByIndex fail"); + } + } + + const char* key = reinterpret_cast(sqlite3_column_text(stmt, 0)); + + if (key == NULL) { + releaseStatement(stmt); + ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, + "Invalid key is returned"); + } + std::string retval = key; + releaseStatement(stmt); + return retval; +} + +std::string WidgetInterfaceDAO::databaseFileName(WrtDB::DbWidgetHandle widgetHandle) +{ + using namespace WrtDB::WidgetConfig; + + WrtDB::WrtDatabase::attachToThreadRO(); + std::string filename; + Try { + WrtDB::WidgetDAOReadOnly widgetDAO(widgetHandle); + WrtDB::TizenPkgId pkgid = widgetDAO.getTizenPkgId(); + filename = GetWidgetPersistentStoragePath(pkgid) + "/" + DATABASE_NAME; + } Catch(WrtDB::WidgetDAOReadOnly::Exception::DatabaseError) { + ReThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, + "databaseFileName"); + } + WrtDB::WrtDatabase::detachFromThread(); + return filename; +} + +bool WidgetInterfaceDAO::isReadOnly(const std::string& key) +{ + sqlite3_stmt* stmt; + Try { + stmt = sqlPrepare(SELECT_READONLY); + sqlBind(stmt, 1, key.c_str()); + } CATCH_DATABASE_ERROR + + bool ret = false; + if (SQLITE_ROW == sqlite3_step(stmt)) { + ret = sqlite3_column_int(stmt, 0) ? true : false; + } else { + // If key doesn't exist, throw + releaseStatement(stmt); + Throw(Exception::InvalidArgumentException); + } + releaseStatement(stmt); + return ret; +} + +} // namespace WidgetInterfaceDB diff --git a/modules_wearable/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h b/modules/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h similarity index 76% rename from modules_wearable/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h rename to modules/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h index 8b35344..e0be0f9 100644 --- a/modules_wearable/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h +++ b/modules/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h @@ -23,11 +23,14 @@ #define _WIDGET_INTERFACE_DAO_H_ #include -#include -#include +#include +#include +#include +#include namespace WidgetInterfaceDB { -class WidgetInterfaceDAO + +class WidgetInterfaceDAO : public WrtDB::SQLiteDAOBase { public: @@ -42,10 +45,10 @@ class WidgetInterfaceDAO DECLARE_EXCEPTION_TYPE(Base, LocalStorageValueNoModifableException) DECLARE_EXCEPTION_TYPE(Base, InvalidArgumentException) }; - WidgetInterfaceDAO(int widgetHandle); + WidgetInterfaceDAO(WrtDB::DbWidgetHandle widgetHandle); virtual ~WidgetInterfaceDAO(); - static std::string databaseFileName(int widgetHandle); + static std::string databaseFileName(WrtDB::DbWidgetHandle widgetHandle); void setItem(const std::string& key, const std::string& value, bool readOnly, @@ -54,18 +57,13 @@ class WidgetInterfaceDAO const std::string& value, bool readOnly); void removeItem(const std::string& key); - DPL::Optional getValue(const std::string& key) const; + boost::optional getValue(const std::string& key); void clear(bool removeReadOnly); - size_t getStorageSize() const; - std::string getKeyByIndex(size_t index) const; - - protected: - int m_widgetHandle; - mutable DPL::DB::ThreadDatabaseSupport m_databaseInterface; + size_t getStorageSize(); + std::string getKeyByIndex(size_t index); private: - void checkDatabase(); - void copyPropertiesFromWrtDatabase(); + bool isReadOnly(const std::string& key); }; typedef std::unique_ptr WidgetInterfaceDAOPtr; } diff --git a/modules_mobile/certificate_dao/dao/certificate_dao.cpp b/modules_mobile/certificate_dao/dao/certificate_dao.cpp deleted file mode 100755 index 877d5a8..0000000 --- a/modules_mobile/certificate_dao/dao/certificate_dao.cpp +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file certificate_dao.cpp - * @author Leerang Song (leerang.song@samsung.com) - * @version 1.0 - * @brief This file contains the definition of certificate dao class. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -/* GCC versions 4.7 had changes to the C++ standard. It - * no longer includes to remove namespace pollution. - */ -#include - -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::certificate; - -namespace CertificateDB { -#define SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN Try - -#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ - ReThrowMsg(CertificateDAO::Exception::DatabaseError, \ - message); \ - } - -namespace { -DPL::DB::SqlConnection::Flag::Option CERTIFICATE_DB_OPTION = - DPL::DB::SqlConnection::Flag::RW; -DPL::DB::SqlConnection::Flag::Type CERTIFICATE_DB_TYPE = - DPL::DB::SqlConnection::Flag::UseLucene; -const char* const CERTIFICATE_DB_NAME = ".certificate.db"; -const char* const CERTIFICATE_DB_SQL_PATH = - "/usr/share/wrt-engine/certificate_db.sql"; -const char* const CERTIFICATE_DATABASE_JOURNAL_FILENAME = "-journal"; - -const int WEB_APPLICATION_UID = 5000; -const int WEB_APPLICATION_GUID = 5000; - -std::string createDatabasePath(const WrtDB::TizenPkgId &pkgName) -{ - std::stringstream filename; - - filename << WrtDB::WidgetConfig::GetWidgetPersistentStoragePath(pkgName) - << "/" - << CERTIFICATE_DB_NAME; - return filename.str(); -} - -void checkDatabase(std::string databasePath) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - if (databasePath.empty()) { - ThrowMsg(CertificateDAO::Exception::DatabaseError, - "Wrong database Path is passed"); - } - - struct stat buffer; - if (stat(databasePath.c_str(), &buffer) != 0) { - //Create fresh database - LogDebug("Creating database " << databasePath); - - std::fstream file; - file.open(CERTIFICATE_DB_SQL_PATH, std::ios_base::in); - if (!file) { - ThrowMsg(CertificateDAO::Exception::DatabaseError, - "Fail to get database Path"); - } - - std::stringstream ssBuffer; - ssBuffer << file.rdbuf(); - - file.close(); - - DPL::DB::SqlConnection con(databasePath, - CERTIFICATE_DB_TYPE, - CERTIFICATE_DB_OPTION); - con.ExecCommand(ssBuffer.str().c_str()); - } - - if(chown(databasePath.c_str(), - WEB_APPLICATION_UID, - WEB_APPLICATION_GUID) != 0) - { - ThrowMsg(CertificateDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - std::string databaseJournal = - databasePath + CERTIFICATE_DATABASE_JOURNAL_FILENAME; - if(chown(databaseJournal.c_str(), - WEB_APPLICATION_UID, - WEB_APPLICATION_GUID) != 0) - { - ThrowMsg(CertificateDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to get database Path") -} -} - -CertificateDAO::CertificateDAO(const WrtDB::TizenPkgId &pkgName) : - m_certificateDBPath(createDatabasePath(pkgName)), - m_certificateDBInterface(m_certificateDBPath, CERTIFICATE_DB_TYPE) -{ - checkDatabase(m_certificateDBPath); - m_certificateDBInterface.AttachToThread(CERTIFICATE_DB_OPTION); -} - -CertificateDAO::~CertificateDAO() -{ - m_certificateDBInterface.DetachFromThread(); -} - -CertificateDataList CertificateDAO::getCertificateDataList(void) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - CertificateDataList list; - CERTIFICATE_DB_SELECT(select, - CertificateInfo, - &m_certificateDBInterface); - typedef std::list RowList; - RowList rowList = select->GetRowList(); - - FOREACH(it, rowList) { - list.push_back( - CertificateDataPtr( - new CertificateData(it->Get_certificate()))); - } - return list; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get data list") -} - -Result CertificateDAO::getResult( - const CertificateData &certificateData) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - CERTIFICATE_DB_SELECT(select, - CertificateInfo, - &m_certificateDBInterface); - select->Where( - Equals(certificateData.certificate)); - CertificateInfo::Select::RowList rows = select->GetRowList(); - - if (rows.empty()) { - return RESULT_UNKNOWN; - } - CertificateInfo::Row row = rows.front(); - return static_cast(row.Get_result()); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END( - "Failed to get result for security certiInfo") -} - -void CertificateDAO::setCertificateData(const CertificateData &certificateData, - const Result result) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&m_certificateDBInterface); - CertificateInfo::Row row; - row.Set_certificate(certificateData.certificate); - row.Set_result(result); - - if (true == hasResult(certificateData)) { - CERTIFICATE_DB_UPDATE(update, - CertificateInfo, - &m_certificateDBInterface); - update->Values(row); - update->Execute(); - } else { - CERTIFICATE_DB_INSERT(insert, - CertificateInfo, - &m_certificateDBInterface); - insert->Values(row); - insert->Execute(); - } - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to set security certiInfo data") -} - -void CertificateDAO::removeCertificateData( - const CertificateData &certificateData) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&m_certificateDBInterface); - - if (true == hasResult(certificateData)) { - CERTIFICATE_DB_DELETE(del, - CertificateInfo, - &m_certificateDBInterface) - del->Where( - Equals(certificateData.certificate)); - del->Execute(); - transaction.Commit(); - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to set certiInfo data") -} - -void CertificateDAO::removeCertificateData(const Result result) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&m_certificateDBInterface); - CERTIFICATE_DB_DELETE(del, - CertificateInfo, - &m_certificateDBInterface) - del->Where(Equals(result)); - del->Execute(); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to remove data by result") -} - -bool CertificateDAO::hasResult(const CertificateData &certificateData) -{ - Result res = getResult(certificateData); - return (res != RESULT_UNKNOWN); -} - -#undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN -#undef SQL_CONNECTION_EXCEPTION_HANDLER_END -} // namespace CertificateDB diff --git a/modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h b/modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h deleted file mode 100755 index 89f5836..0000000 --- a/modules_mobile/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao_types.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file certificate_dao_types.h - * @author Leerang Song (leerang.song@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of - * common data types for certificate database. - */ -#ifndef _CERTIFICATE_DAO_TYPES_H_ -#define _CERTIFICATE_DAO_TYPES_H_ - -#include -#include -#include - -namespace CertificateDB { - -enum Result -{ - RESULT_UNKNOWN = 0, - RESULT_ALLOW_ONCE, - RESULT_DENY_ONCE, - RESULT_ALLOW_ALWAYS, - RESULT_DENY_ALWAYS -}; - -struct CertificateData -{ - DPL::String certificate; - - CertificateData(const DPL::String& certi) : - certificate(certi) - {} - - bool operator== (const CertificateData& other) const - { - return !(certificate == other.certificate); - } - - bool operator!= (const CertificateData& other) const - { - return !(*this == other); - } -}; - -typedef std::shared_ptr CertificateDataPtr; -typedef std::list CertificateDataList; -} // namespace CertificateDB - -#endif // _CERTIFICATE_DAO_TYPES_H_ \ No newline at end of file diff --git a/modules_mobile/certificate_dao/orm/certificate_db b/modules_mobile/certificate_dao/orm/certificate_db deleted file mode 100755 index 2dbe366..0000000 --- a/modules_mobile/certificate_dao/orm/certificate_db +++ /dev/null @@ -1,9 +0,0 @@ -SQL(BEGIN TRANSACTION;) - -CREATE_TABLE(CertificateInfo) - COLUMN_NOT_NULL(certificate, TEXT,DEFAULT '') - COLUMN_NOT_NULL(result, INT, DEFAULT 0) - TABLE_CONSTRAINTS(PRIMARY KEY(certificate)) -CREATE_TABLE_END() - -SQL(COMMIT;) diff --git a/modules_mobile/certificate_dao/orm/certificate_db_definitions b/modules_mobile/certificate_dao/orm/certificate_db_definitions deleted file mode 100644 index 6cfdc11..0000000 --- a/modules_mobile/certificate_dao/orm/certificate_db_definitions +++ /dev/null @@ -1,5 +0,0 @@ -DATABASE_START(certificate) - -#include "certificate_db" - -DATABASE_END() diff --git a/modules_mobile/certificate_dao/orm/certificate_db_sql_generator.h b/modules_mobile/certificate_dao/orm/certificate_db_sql_generator.h deleted file mode 100755 index 07c1816..0000000 --- a/modules_mobile/certificate_dao/orm/certificate_db_sql_generator.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file certificate_db_sql_generator.h - * @author Leerang Song (leerang.song@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL - * input file from database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. -#include - -#include "certificate_db_definitions" diff --git a/modules_mobile/certificate_dao/orm/orm_generator_certificate.h b/modules_mobile/certificate_dao/orm/orm_generator_certificate.h deleted file mode 100755 index 6822708..0000000 --- a/modules_mobile/certificate_dao/orm/orm_generator_certificate.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _ORM_GENERATOR_CERTIFICATE_H_ -#define _ORM_GENERATOR_CERTIFICATE_H_ - -#define ORM_GENERATOR_DATABASE_NAME certificate_db_definitions -#include -#undef ORM_GENERATOR_DATABASE_NAME - -#endif // _ORM_GENERATOR_CERTIFICATE_H_ \ No newline at end of file diff --git a/modules_mobile/core/DESCRIPTION b/modules_mobile/core/DESCRIPTION deleted file mode 100644 index 1369c40..0000000 --- a/modules_mobile/core/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -Main library code diff --git a/modules_mobile/core/config.cmake b/modules_mobile/core/config.cmake deleted file mode 100644 index 1a8625e..0000000 --- a/modules_mobile/core/config.cmake +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -# Set DPL core sources -SET(DPL_CORE_SOURCES - ${PROJECT_SOURCE_DIR}/modules/core/src/abstract_waitable_input_adapter.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/abstract_waitable_input_output_adapter.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/abstract_waitable_output_adapter.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/address.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/apply.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/assert.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/atomic.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/binary_queue.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/char_traits.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/colors.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/copy.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/errno_string.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/exception.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/fast_delegate.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/file_input.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/file_output.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/lexical_cast.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/mutable_task_list.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/mutex.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/named_base_pipe.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/named_output_pipe.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/noncopyable.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/once.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/read_write_mutex.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/recursive_mutex.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/scoped_dir.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/serialization.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/single_instance.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/singleton.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/semaphore.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/string.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/task.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/task_list.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/thread.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/type_list.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/union_cast.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/zip_input.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/application.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/main.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/waitable_event.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/waitable_handle.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/waitable_handle_watch_support.cpp - ${PROJECT_SOURCE_DIR}/modules/core/src/generic_event.cpp - PARENT_SCOPE -) - - -# Set DPL core headers -SET(DPL_CORE_HEADERS - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_input.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_input_output.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_output.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_waitable_input_adapter.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_waitable_input.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_waitable_input_output_adapter.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_waitable_input_output.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_waitable_output_adapter.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/abstract_waitable_output.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/address.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/aligned.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/apply.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/assert.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/atomic.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/availability.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/binary_queue.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/bool_operator.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/char_traits.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/colors.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/copy.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/enable_shared_from_this.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/errno_string.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/exception.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/fast_delegate.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/file_input.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/file_output.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/foreach.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/generic_event.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/lexical_cast.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/mutable_task_list.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/mutex.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/named_base_pipe.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/named_input_pipe.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/named_output_pipe.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/noreturn.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/noncopyable.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/once.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/optional.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/optional_typedefs.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/preprocessor.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/read_write_mutex.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/recursive_mutex.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scope_guard.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_resource.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_array.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_close.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_dir.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_fclose.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_free.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_ptr.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/scoped_gpointer.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/serialization.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/semaphore.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/shared_ptr.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/single_instance.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/singleton.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/singleton_impl.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/singleton_safe_impl.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/static_block.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/string.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/sstream.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/task.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/task_list.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/thread.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/type_list.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/union_cast.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/workaround.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/zip_input.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/application.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/framework_appcore.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/framework_efl.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/framework_vconf.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/main.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/waitable_event.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/waitable_handle.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/waitable_handle_watch_support.h - PARENT_SCOPE -) - -SET(DPL_CORE_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/core/include - PARENT_SCOPE -) - -SET(DPL_3RDPARTY_HEADERS - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/3rdparty/fastdelegate/FastDelegate.h - ${PROJECT_SOURCE_DIR}/modules/core/include/dpl/3rdparty/fastdelegate/FastDelegateBind.h - PARENT_SCOPE -) - diff --git a/modules_mobile/core/include/DESCRIPTION b/modules_mobile/core/include/DESCRIPTION deleted file mode 100644 index 6dfd446..0000000 --- a/modules_mobile/core/include/DESCRIPTION +++ /dev/null @@ -1,2 +0,0 @@ -!!!options!!! stop -Header files, including template implementations diff --git a/modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegate.h b/modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegate.h deleted file mode 100644 index c69fccc..0000000 --- a/modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegate.h +++ /dev/null @@ -1,2108 +0,0 @@ -// FastDelegate.h -// Efficient delegates in C++ that generate only two lines of asm code! -// Documentation is found at http://www.codeproject.com/cpp/FastDelegate.asp -// -// - Don Clugston, Mar 2004. -// Major contributions were made by Jody Hagins. -// History: -// 24-Apr-04 1.0 * Submitted to CodeProject. -// 28-Apr-04 1.1 * Prevent most unsafe uses of evil static function hack. -// * Improved syntax for horrible_cast (thanks Paul Bludov). -// * Tested on Metrowerks MWCC and Intel ICL (IA32) -// * Compiled, but not run, on Comeau C++ and Intel Itanium ICL. -// 27-Jun-04 1.2 * Now works on Borland C++ Builder 5.5 -// * Now works on /clr "managed C++" code on VC7, VC7.1 -// * Comeau C++ now compiles without warnings. -// * Prevent the virtual inheritance case from being used on -// VC6 and earlier, which generate incorrect code. -// * Improved warning and error messages. Non-standard hacks -// now have compile-time checks to make them safer. -// * implicit_cast used instead of static_cast in many cases. -// * If calling a const member function, a const class pointer can be used. -// * MakeDelegate() global helper function added to simplify pass-by-value. -// * Added fastdelegate.clear() -// 16-Jul-04 1.2.1* Workaround for gcc bug (const member function pointers in templates) -// 30-Oct-04 1.3 * Support for (non-void) return values. -// * No more workarounds in client code! -// MSVC and Intel now use a clever hack invented by John Dlugosz: -// - The FASTDELEGATEDECLARE workaround is no longer necessary. -// - No more warning messages for VC6 -// * Less use of macros. Error messages should be more comprehensible. -// * Added include guards -// * Added FastDelegate::empty() to test if invocation is safe (Thanks Neville Franks). -// * Now tested on VS 2005 Express Beta, PGI C++ -// 24-Dec-04 1.4 * Added DelegateMemento, to allow collections of disparate delegates. -// * <,>,<=,>= comparison operators to allow storage in ordered containers. -// * Substantial reduction of code size, especially the 'Closure' class. -// * Standardised all the compiler-specific workarounds. -// * MFP conversion now works for CodePlay (but not yet supported in the full code). -// * Now compiles without warnings on _any_ supported compiler, including BCC 5.5.1 -// * New syntax: FastDelegate< int (char *, double) >. -// 14-Feb-05 1.4.1* Now treats =0 as equivalent to .clear(), ==0 as equivalent to .empty(). (Thanks elfric). -// * Now tested on Intel ICL for AMD64, VS2005 Beta for AMD64 and Itanium. -// 30-Mar-05 1.5 * Safebool idiom: "if (dg)" is now equivalent to "if (!dg.empty())" -// * Fully supported by CodePlay VectorC -// * Bugfix for Metrowerks: empty() was buggy because a valid MFP can be 0 on MWCC! -// * More optimal assignment,== and != operators for static function pointers. - -#ifndef FASTDELEGATE_H -#define FASTDELEGATE_H -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include // to allow <,> comparisons - -//////////////////////////////////////////////////////////////////////////////// -// Configuration options -// -//////////////////////////////////////////////////////////////////////////////// - -// Uncomment the following #define for optimally-sized delegates. -// In this case, the generated asm code is almost identical to the code you'd get -// if the compiler had native support for delegates. -// It will not work on systems where sizeof(dataptr) < sizeof(codeptr). -// Thus, it will not work for DOS compilers using the medium model. -// It will also probably fail on some DSP systems. -#define FASTDELEGATE_USESTATICFUNCTIONHACK - -// Uncomment the next line to allow function declarator syntax. -// It is automatically enabled for those compilers where it is known to work. -//#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX - -//////////////////////////////////////////////////////////////////////////////// -// Compiler identification for workarounds -// -//////////////////////////////////////////////////////////////////////////////// - -// Compiler identification. It's not easy to identify Visual C++ because -// many vendors fraudulently define Microsoft's identifiers. -#if defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__VECTOR_C) && !defined(__ICL) && !defined(__BORLANDC__) -#define FASTDLGT_ISMSVC - -#if (_MSC_VER <1300) // Many workarounds are required for VC6. -#define FASTDLGT_VC6 -#pragma warning(disable:4786) // disable this ridiculous warning -#endif - -#endif - -// Does the compiler uses Microsoft's member function pointer structure? -// If so, it needs special treatment. -// Metrowerks CodeWarrior, Intel, and CodePlay fraudulently define Microsoft's -// identifier, _MSC_VER. We need to filter Metrowerks out. -#if defined(_MSC_VER) && !defined(__MWERKS__) -#define FASTDLGT_MICROSOFT_MFP - -#if !defined(__VECTOR_C) -// CodePlay doesn't have the __single/multi/virtual_inheritance keywords -#define FASTDLGT_HASINHERITANCE_KEYWORDS -#endif -#endif - -// Does it allow function declarator syntax? The following compilers are known to work: -#if defined(FASTDLGT_ISMSVC) && (_MSC_VER >=1310) // VC 7.1 -#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX -#endif - -// Gcc(2.95+), and versions of Digital Mars, Intel and Comeau in common use. -#if defined (__DMC__) || defined(__GNUC__) || defined(__ICL) || defined(__COMO__) -#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX -#endif - -// It works on Metrowerks MWCC 3.2.2. From boost.Config it should work on earlier ones too. -#if defined (__MWERKS__) -#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX -#endif - -#ifdef __GNUC__ // Workaround GCC bug #8271 - // At present, GCC doesn't recognize constness of MFPs in templates -#define FASTDELEGATE_GCC_BUG_8271 -#endif - - - -//////////////////////////////////////////////////////////////////////////////// -// General tricks used in this code -// -// (a) Error messages are generated by typdefing an array of negative size to -// generate compile-time errors. -// (b) Warning messages on MSVC are generated by declaring unused variables, and -// enabling the "variable XXX is never used" warning. -// (c) Unions are used in a few compiler-specific cases to perform illegal casts. -// (d) For Microsoft and Intel, when adjusting the 'this' pointer, it's cast to -// (char *) first to ensure that the correct number of *bytes* are added. -// -//////////////////////////////////////////////////////////////////////////////// -// Helper templates -// -//////////////////////////////////////////////////////////////////////////////// - - -namespace fastdelegate { -namespace detail { // we'll hide the implementation details in a nested namespace. - -// implicit_cast< > -// I believe this was originally going to be in the C++ standard but -// was left out by accident. It's even milder than static_cast. -// I use it instead of static_cast<> to emphasize that I'm not doing -// anything nasty. -// Usage is identical to static_cast<> -template -inline OutputClass implicit_cast(InputClass input){ - return input; -} - -// horrible_cast< > -// This is truly evil. It completely subverts C++'s type system, allowing you -// to cast from any class to any other class. Technically, using a union -// to perform the cast is undefined behaviour (even in C). But we can see if -// it is OK by checking that the union is the same size as each of its members. -// horrible_cast<> should only be used for compiler-specific workarounds. -// Usage is identical to reinterpret_cast<>. - -// This union is declared outside the horrible_cast because BCC 5.5.1 -// can't inline a function with a nested class, and gives a warning. -template -union horrible_union{ - OutputClass out; - InputClass in; -}; - -template -inline OutputClass horrible_cast(const InputClass input){ - horrible_union u; - // Cause a compile-time error if in, out and u are not the same size. - // If the compile fails here, it means the compiler has peculiar - // unions which would prevent the cast from working. - typedef int ERROR_CantUseHorrible_cast[sizeof(InputClass)==sizeof(u) - && sizeof(InputClass)==sizeof(OutputClass) ? 1 : -1]; - u.in = input; - return u.out; -} - -//////////////////////////////////////////////////////////////////////////////// -// Workarounds -// -//////////////////////////////////////////////////////////////////////////////// - -// Backwards compatibility: This macro used to be necessary in the virtual inheritance -// case for Intel and Microsoft. Now it just forward-declares the class. -#define FASTDELEGATEDECLARE(CLASSNAME) class CLASSNAME; - -// Prevent use of the static function hack with the DOS medium model. -#ifdef __MEDIUM__ -#undef FASTDELEGATE_USESTATICFUNCTIONHACK -#endif - -// DefaultVoid - a workaround for 'void' templates in VC6. -// -// (1) VC6 and earlier do not allow 'void' as a default template argument. -// (2) They also doesn't allow you to return 'void' from a function. -// -// Workaround for (1): Declare a dummy type 'DefaultVoid' which we use -// when we'd like to use 'void'. We convert it into 'void' and back -// using the templates DefaultVoidToVoid<> and VoidToDefaultVoid<>. -// Workaround for (2): On VC6, the code for calling a void function is -// identical to the code for calling a non-void function in which the -// return value is never used, provided the return value is returned -// in the EAX register, rather than on the stack. -// This is true for most fundamental types such as int, enum, void *. -// Const void * is the safest option since it doesn't participate -// in any automatic conversions. But on a 16-bit compiler it might -// cause extra code to be generated, so we disable it for all compilers -// except for VC6 (and VC5). -#ifdef FASTDLGT_VC6 -// VC6 workaround -typedef const void * DefaultVoid; -#else -// On any other compiler, just use a normal void. -typedef void DefaultVoid; -#endif - -// Translate from 'DefaultVoid' to 'void'. -// Everything else is unchanged -template -struct DefaultVoidToVoid { typedef T type; }; - -template <> -struct DefaultVoidToVoid { typedef void type; }; - -// Translate from 'void' into 'DefaultVoid' -// Everything else is unchanged -template -struct VoidToDefaultVoid { typedef T type; }; - -template <> -struct VoidToDefaultVoid { typedef DefaultVoid type; }; - - - -//////////////////////////////////////////////////////////////////////////////// -// Fast Delegates, part 1: -// -// Conversion of member function pointer to a standard form -// -//////////////////////////////////////////////////////////////////////////////// - -// GenericClass is a fake class, ONLY used to provide a type. -// It is vitally important that it is never defined, so that the compiler doesn't -// think it can optimize the invocation. For example, Borland generates simpler -// code if it knows the class only uses single inheritance. - -// Compilers using Microsoft's structure need to be treated as a special case. -#ifdef FASTDLGT_MICROSOFT_MFP - -#ifdef FASTDLGT_HASINHERITANCE_KEYWORDS - // For Microsoft and Intel, we want to ensure that it's the most efficient type of MFP - // (4 bytes), even when the /vmg option is used. Declaring an empty class - // would give 16 byte pointers in this case.... - class __single_inheritance GenericClass; -#endif - // ...but for Codeplay, an empty class *always* gives 4 byte pointers. - // If compiled with the /clr option ("managed C++"), the JIT compiler thinks - // it needs to load GenericClass before it can call any of its functions, - // (compiles OK but crashes at runtime!), so we need to declare an - // empty class to make it happy. - // Codeplay and VC4 can't cope with the unknown_inheritance case either. - class GenericClass {}; -#else - class GenericClass; -#endif - -// The size of a single inheritance member function pointer. -const int SINGLE_MEMFUNCPTR_SIZE = sizeof(void (GenericClass::*)()); - -// SimplifyMemFunc< >::Convert() -// -// A template function that converts an arbitrary member function pointer into the -// simplest possible form of member function pointer, using a supplied 'this' pointer. -// According to the standard, this can be done legally with reinterpret_cast<>. -// For (non-standard) compilers which use member function pointers which vary in size -// depending on the class, we need to use knowledge of the internal structure of a -// member function pointer, as used by the compiler. Template specialization is used -// to distinguish between the sizes. Because some compilers don't support partial -// template specialisation, I use full specialisation of a wrapper struct. - -// general case -- don't know how to convert it. Force a compile failure -template -struct SimplifyMemFunc { - template - inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, - GenericMemFuncType &bound_func) { - // Unsupported member function type -- force a compile failure. - // (it's illegal to have a array with negative size). - typedef char ERROR_Unsupported_member_function_pointer_on_this_compiler[N-100]; - return 0; - } -}; - -// For compilers where all member func ptrs are the same size, everything goes here. -// For non-standard compilers, only single_inheritance classes go here. -template <> -struct SimplifyMemFunc { - template - inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, - GenericMemFuncType &bound_func) { -#if defined __DMC__ - // Digital Mars doesn't allow you to cast between abitrary PMF's, - // even though the standard says you can. The 32-bit compiler lets you - // static_cast through an int, but the DOS compiler doesn't. - bound_func = horrible_cast(function_to_bind); -#else - bound_func = reinterpret_cast(function_to_bind); -#endif - return reinterpret_cast(pthis); - } -}; - -//////////////////////////////////////////////////////////////////////////////// -// Fast Delegates, part 1b: -// -// Workarounds for Microsoft and Intel -// -//////////////////////////////////////////////////////////////////////////////// - - -// Compilers with member function pointers which violate the standard (MSVC, Intel, Codeplay), -// need to be treated as a special case. -#ifdef FASTDLGT_MICROSOFT_MFP - -// We use unions to perform horrible_casts. I would like to use #pragma pack(push, 1) -// at the start of each function for extra safety, but VC6 seems to ICE -// intermittently if you do this inside a template. - -// __multiple_inheritance classes go here -// Nasty hack for Microsoft and Intel (IA32 and Itanium) -template<> -struct SimplifyMemFunc< SINGLE_MEMFUNCPTR_SIZE + sizeof(int) > { - template - inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, - GenericMemFuncType &bound_func) { - // We need to use a horrible_cast to do this conversion. - // In MSVC, a multiple inheritance member pointer is internally defined as: - union { - XFuncType func; - struct { - GenericMemFuncType funcaddress; // points to the actual member function - int delta; // #BYTES to be added to the 'this' pointer - }s; - } u; - // Check that the horrible_cast will work - typedef int ERROR_CantUsehorrible_cast[sizeof(function_to_bind)==sizeof(u.s)? 1 : -1]; - u.func = function_to_bind; - bound_func = u.s.funcaddress; - return reinterpret_cast(reinterpret_cast(pthis) + u.s.delta); - } -}; - -// virtual inheritance is a real nuisance. It's inefficient and complicated. -// On MSVC and Intel, there isn't enough information in the pointer itself to -// enable conversion to a closure pointer. Earlier versions of this code didn't -// work for all cases, and generated a compile-time error instead. -// But a very clever hack invented by John M. Dlugosz solves this problem. -// My code is somewhat different to his: I have no asm code, and I make no -// assumptions about the calling convention that is used. - -// In VC++ and ICL, a virtual_inheritance member pointer -// is internally defined as: -struct MicrosoftVirtualMFP { - void (GenericClass::*codeptr)(); // points to the actual member function - int delta; // #bytes to be added to the 'this' pointer - int vtable_index; // or 0 if no virtual inheritance -}; -// The CRUCIAL feature of Microsoft/Intel MFPs which we exploit is that the -// m_codeptr member is *always* called, regardless of the values of the other -// members. (This is *not* true for other compilers, eg GCC, which obtain the -// function address from the vtable if a virtual function is being called). -// Dlugosz's trick is to make the codeptr point to a probe function which -// returns the 'this' pointer that was used. - -// Define a generic class that uses virtual inheritance. -// It has a trival member function that returns the value of the 'this' pointer. -struct GenericVirtualClass : virtual public GenericClass -{ - typedef GenericVirtualClass * (GenericVirtualClass::*ProbePtrType)(); - GenericVirtualClass * GetThis() { return this; } -}; - -// __virtual_inheritance classes go here -template <> -struct SimplifyMemFunc -{ - - template - inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, - GenericMemFuncType &bound_func) { - union { - XFuncType func; - GenericClass* (X::*ProbeFunc)(); - MicrosoftVirtualMFP s; - } u; - u.func = function_to_bind; - bound_func = reinterpret_cast(u.s.codeptr); - union { - GenericVirtualClass::ProbePtrType virtfunc; - MicrosoftVirtualMFP s; - } u2; - // Check that the horrible_cast<>s will work - typedef int ERROR_CantUsehorrible_cast[sizeof(function_to_bind)==sizeof(u.s) - && sizeof(function_to_bind)==sizeof(u.ProbeFunc) - && sizeof(u2.virtfunc)==sizeof(u2.s) ? 1 : -1]; - // Unfortunately, taking the address of a MF prevents it from being inlined, so - // this next line can't be completely optimised away by the compiler. - u2.virtfunc = &GenericVirtualClass::GetThis; - u.s.codeptr = u2.s.codeptr; - return (pthis->*u.ProbeFunc)(); - } -}; - -#if (_MSC_VER <1300) - -// Nasty hack for Microsoft Visual C++ 6.0 -// unknown_inheritance classes go here -// There is a compiler bug in MSVC6 which generates incorrect code in this case!! -template <> -struct SimplifyMemFunc -{ - template - inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, - GenericMemFuncType &bound_func) { - // There is an apalling but obscure compiler bug in MSVC6 and earlier: - // vtable_index and 'vtordisp' are always set to 0 in the - // unknown_inheritance case! - // This means that an incorrect function could be called!!! - // Compiling with the /vmg option leads to potentially incorrect code. - // This is probably the reason that the IDE has a user interface for specifying - // the /vmg option, but it is disabled - you can only specify /vmg on - // the command line. In VC1.5 and earlier, the compiler would ICE if it ever - // encountered this situation. - // It is OK to use the /vmg option if /vmm or /vms is specified. - - // Fortunately, the wrong function is only called in very obscure cases. - // It only occurs when a derived class overrides a virtual function declared - // in a virtual base class, and the member function - // points to the *Derived* version of that function. The problem can be - // completely averted in 100% of cases by using the *Base class* for the - // member fpointer. Ie, if you use the base class as an interface, you'll - // stay out of trouble. - // Occasionally, you might want to point directly to a derived class function - // that isn't an override of a base class. In this case, both vtable_index - // and 'vtordisp' are zero, but a virtual_inheritance pointer will be generated. - // We can generate correct code in this case. To prevent an incorrect call from - // ever being made, on MSVC6 we generate a warning, and call a function to - // make the program crash instantly. - typedef char ERROR_VC6CompilerBug[-100]; - return 0; - } -}; - - -#else - -// Nasty hack for Microsoft and Intel (IA32 and Itanium) -// unknown_inheritance classes go here -// This is probably the ugliest bit of code I've ever written. Look at the casts! -// There is a compiler bug in MSVC6 which prevents it from using this code. -template <> -struct SimplifyMemFunc -{ - template - inline static GenericClass *Convert(X *pthis, XFuncType function_to_bind, - GenericMemFuncType &bound_func) { - // The member function pointer is 16 bytes long. We can't use a normal cast, but - // we can use a union to do the conversion. - union { - XFuncType func; - // In VC++ and ICL, an unknown_inheritance member pointer - // is internally defined as: - struct { - GenericMemFuncType m_funcaddress; // points to the actual member function - int delta; // #bytes to be added to the 'this' pointer - int vtordisp; // #bytes to add to 'this' to find the vtable - int vtable_index; // or 0 if no virtual inheritance - } s; - } u; - // Check that the horrible_cast will work - typedef int ERROR_CantUsehorrible_cast[sizeof(XFuncType)==sizeof(u.s)? 1 : -1]; - u.func = function_to_bind; - bound_func = u.s.funcaddress; - int virtual_delta = 0; - if (u.s.vtable_index) { // Virtual inheritance is used - // First, get to the vtable. - // It is 'vtordisp' bytes from the start of the class. - const int * vtable = *reinterpret_cast( - reinterpret_cast(pthis) + u.s.vtordisp ); - - // 'vtable_index' tells us where in the table we should be looking. - virtual_delta = u.s.vtordisp + *reinterpret_cast( - reinterpret_cast(vtable) + u.s.vtable_index); - } - // The int at 'virtual_delta' gives us the amount to add to 'this'. - // Finally we can add the three components together. Phew! - return reinterpret_cast( - reinterpret_cast(pthis) + u.s.delta + virtual_delta); - }; -}; -#endif // MSVC 7 and greater - -#endif // MS/Intel hacks - -} // namespace detail - -//////////////////////////////////////////////////////////////////////////////// -// Fast Delegates, part 2: -// -// Define the delegate storage, and cope with static functions -// -//////////////////////////////////////////////////////////////////////////////// - -// DelegateMemento -- an opaque structure which can hold an arbitary delegate. -// It knows nothing about the calling convention or number of arguments used by -// the function pointed to. -// It supplies comparison operators so that it can be stored in STL collections. -// It cannot be set to anything other than null, nor invoked directly: -// it must be converted to a specific delegate. - -// Implementation: -// There are two possible implementations: the Safe method and the Evil method. -// DelegateMemento - Safe version -// -// This implementation is standard-compliant, but a bit tricky. -// A static function pointer is stored inside the class. -// Here are the valid values: -// +-- Static pointer --+--pThis --+-- pMemFunc-+-- Meaning------+ -// | 0 | 0 | 0 | Empty | -// | !=0 |(dontcare)| Invoker | Static function| -// | 0 | !=0 | !=0* | Method call | -// +--------------------+----------+------------+----------------+ -// * For Metrowerks, this can be 0. (first virtual function in a -// single_inheritance class). -// When stored stored inside a specific delegate, the 'dontcare' entries are replaced -// with a reference to the delegate itself. This complicates the = and == operators -// for the delegate class. - -// DelegateMemento - Evil version -// -// For compilers where data pointers are at least as big as code pointers, it is -// possible to store the function pointer in the this pointer, using another -// horrible_cast. In this case the DelegateMemento implementation is simple: -// +--pThis --+-- pMemFunc-+-- Meaning---------------------+ -// | 0 | 0 | Empty | -// | !=0 | !=0* | Static function or method call| -// +----------+------------+-------------------------------+ -// * For Metrowerks, this can be 0. (first virtual function in a -// single_inheritance class). -// Note that the Sun C++ and MSVC documentation explicitly state that they -// support static_cast between void * and function pointers. - -class DelegateMemento { -protected: - // the data is protected, not private, because many - // compilers have problems with template friends. - typedef void (detail::GenericClass::*GenericMemFuncType)(); // arbitrary MFP. - detail::GenericClass *m_pthis; - GenericMemFuncType m_pFunction; - -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - typedef void (*GenericFuncPtr)(); // arbitrary code pointer - GenericFuncPtr m_pStaticFunction; -#endif - -public: -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - DelegateMemento() : m_pthis(0), m_pFunction(0), m_pStaticFunction(0) {}; - void clear() { - m_pthis=0; m_pFunction=0; m_pStaticFunction=0; - } -#else - DelegateMemento() : m_pthis(0), m_pFunction(0) {}; - void clear() { m_pthis=0; m_pFunction=0; } -#endif -public: -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - inline bool IsEqual (const DelegateMemento &x) const{ - // We have to cope with the static function pointers as a special case - if (m_pFunction!=x.m_pFunction) return false; - // the static function ptrs must either both be equal, or both be 0. - if (m_pStaticFunction!=x.m_pStaticFunction) return false; - if (m_pStaticFunction!=0) return m_pthis==x.m_pthis; - else return true; - } -#else // Evil Method - inline bool IsEqual (const DelegateMemento &x) const{ - return m_pthis==x.m_pthis && m_pFunction==x.m_pFunction; - } -#endif - // Provide a strict weak ordering for DelegateMementos. - inline bool IsLess(const DelegateMemento &right) const { - // deal with static function pointers first -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - if (m_pStaticFunction !=0 || right.m_pStaticFunction!=0) - return m_pStaticFunction < right.m_pStaticFunction; -#endif - if (m_pthis !=right.m_pthis) return m_pthis < right.m_pthis; - // There are no ordering operators for member function pointers, - // but we can fake one by comparing each byte. The resulting ordering is - // arbitrary (and compiler-dependent), but it permits storage in ordered STL containers. - return memcmp(&m_pFunction, &right.m_pFunction, sizeof(m_pFunction)) < 0; - - } - // BUGFIX (Mar 2005): - // We can't just compare m_pFunction because on Metrowerks, - // m_pFunction can be zero even if the delegate is not empty! - inline bool operator ! () const // Is it bound to anything? - { return m_pthis==0 && m_pFunction==0; } - inline bool empty() const // Is it bound to anything? - { return m_pthis==0 && m_pFunction==0; } -public: - DelegateMemento & operator = (const DelegateMemento &right) { - SetMementoFrom(right); - return *this; - } - inline bool operator <(const DelegateMemento &right) { - return IsLess(right); - } - inline bool operator >(const DelegateMemento &right) { - return right.IsLess(*this); - } - DelegateMemento (const DelegateMemento &right) : - m_pFunction(right.m_pFunction), m_pthis(right.m_pthis) -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - , m_pStaticFunction (right.m_pStaticFunction) -#endif - {} -protected: - void SetMementoFrom(const DelegateMemento &right) { - m_pFunction = right.m_pFunction; - m_pthis = right.m_pthis; -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - m_pStaticFunction = right.m_pStaticFunction; -#endif - } -}; - - -// ClosurePtr<> -// -// A private wrapper class that adds function signatures to DelegateMemento. -// It's the class that does most of the actual work. -// The signatures are specified by: -// GenericMemFunc: must be a type of GenericClass member function pointer. -// StaticFuncPtr: must be a type of function pointer with the same signature -// as GenericMemFunc. -// UnvoidStaticFuncPtr: is the same as StaticFuncPtr, except on VC6 -// where it never returns void (returns DefaultVoid instead). - -// An outer class, FastDelegateN<>, handles the invoking and creates the -// necessary typedefs. -// This class does everything else. - -namespace detail { - -template < class GenericMemFunc, class StaticFuncPtr, class UnvoidStaticFuncPtr> -class ClosurePtr : public DelegateMemento { -public: - // These functions are for setting the delegate to a member function. - - // Here's the clever bit: we convert an arbitrary member function into a - // standard form. XMemFunc should be a member function of class X, but I can't - // enforce that here. It needs to be enforced by the wrapper class. - template < class X, class XMemFunc > - inline void bindmemfunc(X *pthis, XMemFunc function_to_bind ) { - m_pthis = SimplifyMemFunc< sizeof(function_to_bind) > - ::Convert(pthis, function_to_bind, m_pFunction); -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - m_pStaticFunction = 0; -#endif - } - // For const member functions, we only need a const class pointer. - // Since we know that the member function is const, it's safe to - // remove the const qualifier from the 'this' pointer with a const_cast. - // VC6 has problems if we just overload 'bindmemfunc', so we give it a different name. - template < class X, class XMemFunc> - inline void bindconstmemfunc(const X *pthis, XMemFunc function_to_bind) { - m_pthis= SimplifyMemFunc< sizeof(function_to_bind) > - ::Convert(const_cast(pthis), function_to_bind, m_pFunction); -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - m_pStaticFunction = 0; -#endif - } -#ifdef FASTDELEGATE_GCC_BUG_8271 // At present, GCC doesn't recognize constness of MFPs in templates - template < class X, class XMemFunc> - inline void bindmemfunc(const X *pthis, XMemFunc function_to_bind) { - bindconstmemfunc(pthis, function_to_bind); -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - m_pStaticFunction = 0; -#endif - } -#endif - // These functions are required for invoking the stored function - inline GenericClass *GetClosureThis() const { return m_pthis; } - inline GenericMemFunc GetClosureMemPtr() const { return reinterpret_cast(m_pFunction); } - -// There are a few ways of dealing with static function pointers. -// There's a standard-compliant, but tricky method. -// There's also a straightforward hack, that won't work on DOS compilers using the -// medium memory model. It's so evil that I can't recommend it, but I've -// implemented it anyway because it produces very nice asm code. - -#if !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - -// ClosurePtr<> - Safe version -// -// This implementation is standard-compliant, but a bit tricky. -// I store the function pointer inside the class, and the delegate then -// points to itself. Whenever the delegate is copied, these self-references -// must be transformed, and this complicates the = and == operators. -public: - // The next two functions are for operator ==, =, and the copy constructor. - // We may need to convert the m_pthis pointers, so that - // they remain as self-references. - template< class DerivedClass > - inline void CopyFrom (DerivedClass *pParent, const DelegateMemento &x) { - SetMementoFrom(x); - if (m_pStaticFunction!=0) { - // transform self references... - m_pthis=reinterpret_cast(pParent); - } - } - // For static functions, the 'static_function_invoker' class in the parent - // will be called. The parent then needs to call GetStaticFunction() to find out - // the actual function to invoke. - template < class DerivedClass, class ParentInvokerSig > - inline void bindstaticfunc(DerivedClass *pParent, ParentInvokerSig static_function_invoker, - StaticFuncPtr function_to_bind ) { - if (function_to_bind==0) { // cope with assignment to 0 - m_pFunction=0; - } else { - bindmemfunc(pParent, static_function_invoker); - } - m_pStaticFunction=reinterpret_cast(function_to_bind); - } - inline UnvoidStaticFuncPtr GetStaticFunction() const { - return reinterpret_cast(m_pStaticFunction); - } -#else - -// ClosurePtr<> - Evil version -// -// For compilers where data pointers are at least as big as code pointers, it is -// possible to store the function pointer in the this pointer, using another -// horrible_cast. Invocation isn't any faster, but it saves 4 bytes, and -// speeds up comparison and assignment. If C++ provided direct language support -// for delegates, they would produce asm code that was almost identical to this. -// Note that the Sun C++ and MSVC documentation explicitly state that they -// support static_cast between void * and function pointers. - - template< class DerivedClass > - inline void CopyFrom (DerivedClass *pParent, const DelegateMemento &right) { - SetMementoFrom(right); - } - // For static functions, the 'static_function_invoker' class in the parent - // will be called. The parent then needs to call GetStaticFunction() to find out - // the actual function to invoke. - // ******** EVIL, EVIL CODE! ******* - template < class DerivedClass, class ParentInvokerSig> - inline void bindstaticfunc(DerivedClass *pParent, ParentInvokerSig static_function_invoker, - StaticFuncPtr function_to_bind) { - if (function_to_bind==0) { // cope with assignment to 0 - m_pFunction=0; - } else { - // We'll be ignoring the 'this' pointer, but we need to make sure we pass - // a valid value to bindmemfunc(). - bindmemfunc(pParent, static_function_invoker); - } - - // WARNING! Evil hack. We store the function in the 'this' pointer! - // Ensure that there's a compilation failure if function pointers - // and data pointers have different sizes. - // If you get this error, you need to #undef FASTDELEGATE_USESTATICFUNCTIONHACK. - typedef int ERROR_CantUseEvilMethod[sizeof(GenericClass *)==sizeof(function_to_bind) ? 1 : -1]; - m_pthis = horrible_cast(function_to_bind); - // MSVC, SunC++ and DMC accept the following (non-standard) code: -// m_pthis = static_cast(static_cast(function_to_bind)); - // BCC32, Comeau and DMC accept this method. MSVC7.1 needs __int64 instead of long -// m_pthis = reinterpret_cast(reinterpret_cast(function_to_bind)); - } - // ******** EVIL, EVIL CODE! ******* - // This function will be called with an invalid 'this' pointer!! - // We're just returning the 'this' pointer, converted into - // a function pointer! - inline UnvoidStaticFuncPtr GetStaticFunction() const { - // Ensure that there's a compilation failure if function pointers - // and data pointers have different sizes. - // If you get this error, you need to #undef FASTDELEGATE_USESTATICFUNCTIONHACK. - typedef int ERROR_CantUseEvilMethod[sizeof(UnvoidStaticFuncPtr)==sizeof(this) ? 1 : -1]; - return horrible_cast(this); - } -#endif // !defined(FASTDELEGATE_USESTATICFUNCTIONHACK) - - // Does the closure contain this static function? - inline bool IsEqualToStaticFuncPtr(StaticFuncPtr funcptr){ - if (funcptr==0) return empty(); - // For the Evil method, if it doesn't actually contain a static function, this will return an arbitrary - // value that is not equal to any valid function pointer. - else return funcptr==reinterpret_cast(GetStaticFunction()); - } -}; - - -} // namespace detail - -//////////////////////////////////////////////////////////////////////////////// -// Fast Delegates, part 3: -// -// Wrapper classes to ensure type safety -// -//////////////////////////////////////////////////////////////////////////////// - - -// Once we have the member function conversion templates, it's easy to make the -// wrapper classes. So that they will work with as many compilers as possible, -// the classes are of the form -// FastDelegate3 -// They can cope with any combination of parameters. The max number of parameters -// allowed is 8, but it is trivial to increase this limit. -// Note that we need to treat const member functions seperately. -// All this class does is to enforce type safety, and invoke the delegate with -// the correct list of parameters. - -// Because of the weird rule about the class of derived member function pointers, -// you sometimes need to apply a downcast to the 'this' pointer. -// This is the reason for the use of "implicit_cast(pthis)" in the code below. -// If CDerivedClass is derived from CBaseClass, but doesn't override SimpleVirtualFunction, -// without this trick you'd need to write: -// MyDelegate(static_cast(&d), &CDerivedClass::SimpleVirtualFunction); -// but with the trick you can write -// MyDelegate(&d, &CDerivedClass::SimpleVirtualFunction); - -// RetType is the type the compiler uses in compiling the template. For VC6, -// it cannot be void. DesiredRetType is the real type which is returned from -// all of the functions. It can be void. - -// Implicit conversion to "bool" is achieved using the safe_bool idiom, -// using member data pointers (MDP). This allows "if (dg)..." syntax -// Because some compilers (eg codeplay) don't have a unique value for a zero -// MDP, an extra padding member is added to the SafeBool struct. -// Some compilers (eg VC6) won't implicitly convert from 0 to an MDP, so -// in that case the static function constructor is not made explicit; this -// allows "if (dg==0) ..." to compile. - -//N=0 -template -class FastDelegate0 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(); - typedef RetType (*UnvoidStaticFunctionPtr)(); - typedef RetType (detail::GenericClass::*GenericMemFn)(); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate0 type; - - // Construction and comparison functions - FastDelegate0() { clear(); } - FastDelegate0(const FastDelegate0 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate0 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate0 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate0 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate0 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate0 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate0(Y *pthis, DesiredRetType (X::* function_to_bind)() ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)()) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate0(const Y *pthis, DesiredRetType (X::* function_to_bind)() const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)() const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate0(DesiredRetType (*function_to_bind)() ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)() ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)()) { - m_Closure.bindstaticfunc(this, &FastDelegate0::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() () const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction() const { - return (*(m_Closure.GetStaticFunction()))(); } -}; - -//N=1 -template -class FastDelegate1 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate1 type; - - // Construction and comparison functions - FastDelegate1() { clear(); } - FastDelegate1(const FastDelegate1 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate1 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate1 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate1 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate1 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate1 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate1(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate1(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate1(DesiredRetType (*function_to_bind)(Param1 p1) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1)) { - m_Closure.bindstaticfunc(this, &FastDelegate1::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1) const { - return (*(m_Closure.GetStaticFunction()))(p1); } -}; - -//N=2 -template -class FastDelegate2 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate2 type; - - // Construction and comparison functions - FastDelegate2() { clear(); } - FastDelegate2(const FastDelegate2 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate2 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate2 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate2 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate2 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate2 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate2(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate2(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate2(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2)) { - m_Closure.bindstaticfunc(this, &FastDelegate2::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1, Param2 p2) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1, Param2 p2) const { - return (*(m_Closure.GetStaticFunction()))(p1, p2); } -}; - -//N=3 -template -class FastDelegate3 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate3 type; - - // Construction and comparison functions - FastDelegate3() { clear(); } - FastDelegate3(const FastDelegate3 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate3 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate3 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate3 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate3 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate3 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate3(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate3(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate3(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3)) { - m_Closure.bindstaticfunc(this, &FastDelegate3::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1, Param2 p2, Param3 p3) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3) const { - return (*(m_Closure.GetStaticFunction()))(p1, p2, p3); } -}; - -//N=4 -template -class FastDelegate4 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate4 type; - - // Construction and comparison functions - FastDelegate4() { clear(); } - FastDelegate4(const FastDelegate4 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate4 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate4 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate4 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate4 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate4 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate4(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate4(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate4(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) { - m_Closure.bindstaticfunc(this, &FastDelegate4::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const { - return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4); } -}; - -//N=5 -template -class FastDelegate5 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate5 type; - - // Construction and comparison functions - FastDelegate5() { clear(); } - FastDelegate5(const FastDelegate5 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate5 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate5 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate5 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate5 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate5 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate5(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate5(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate5(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) { - m_Closure.bindstaticfunc(this, &FastDelegate5::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const { - return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5); } -}; - -//N=6 -template -class FastDelegate6 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate6 type; - - // Construction and comparison functions - FastDelegate6() { clear(); } - FastDelegate6(const FastDelegate6 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate6 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate6 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate6 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate6 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate6 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate6(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate6(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate6(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) { - m_Closure.bindstaticfunc(this, &FastDelegate6::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5, p6); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const { - return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5, p6); } -}; - -//N=7 -template -class FastDelegate7 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate7 type; - - // Construction and comparison functions - FastDelegate7() { clear(); } - FastDelegate7(const FastDelegate7 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate7 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate7 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate7 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate7 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate7 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate7(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate7(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate7(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) { - m_Closure.bindstaticfunc(this, &FastDelegate7::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5, p6, p7); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const { - return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5, p6, p7); } -}; - -//N=8 -template -class FastDelegate8 { -private: - typedef typename detail::DefaultVoidToVoid::type DesiredRetType; - typedef DesiredRetType (*StaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8); - typedef RetType (*UnvoidStaticFunctionPtr)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8); - typedef RetType (detail::GenericClass::*GenericMemFn)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8); - typedef detail::ClosurePtr ClosureType; - ClosureType m_Closure; -public: - // Typedefs to aid generic programming - typedef FastDelegate8 type; - - // Construction and comparison functions - FastDelegate8() { clear(); } - FastDelegate8(const FastDelegate8 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - void operator = (const FastDelegate8 &x) { - m_Closure.CopyFrom(this, x.m_Closure); } - bool operator ==(const FastDelegate8 &x) const { - return m_Closure.IsEqual(x.m_Closure); } - bool operator !=(const FastDelegate8 &x) const { - return !m_Closure.IsEqual(x.m_Closure); } - bool operator <(const FastDelegate8 &x) const { - return m_Closure.IsLess(x.m_Closure); } - bool operator >(const FastDelegate8 &x) const { - return x.m_Closure.IsLess(m_Closure); } - // Binding to non-const member functions - template < class X, class Y > - FastDelegate8(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8)) { - m_Closure.bindmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Binding to const member functions. - template < class X, class Y > - FastDelegate8(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - template < class X, class Y > - inline void bind(const Y *pthis, DesiredRetType (X::* function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const) { - m_Closure.bindconstmemfunc(detail::implicit_cast(pthis), function_to_bind); } - // Static functions. We convert them into a member function call. - // This constructor also provides implicit conversion - FastDelegate8(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) { - bind(function_to_bind); } - // for efficiency, prevent creation of a temporary - void operator = (DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) ) { - bind(function_to_bind); } - inline void bind(DesiredRetType (*function_to_bind)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8)) { - m_Closure.bindstaticfunc(this, &FastDelegate8::InvokeStaticFunction, - function_to_bind); } - // Invoke the delegate - RetType operator() (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const { - return (m_Closure.GetClosureThis()->*(m_Closure.GetClosureMemPtr()))(p1, p2, p3, p4, p5, p6, p7, p8); } - // Implicit conversion to "bool" using the safe_bool idiom -private: - typedef struct SafeBoolStruct { - int a_data_pointer_to_this_is_0_on_buggy_compilers; - StaticFunctionPtr m_nonzero; - } UselessTypedef; - typedef StaticFunctionPtr SafeBoolStruct::*unspecified_bool_type; -public: - operator unspecified_bool_type() const { - return empty()? 0: &SafeBoolStruct::m_nonzero; - } - // necessary to allow ==0 to work despite the safe_bool idiom - inline bool operator==(StaticFunctionPtr funcptr) { - return m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator!=(StaticFunctionPtr funcptr) { - return !m_Closure.IsEqualToStaticFuncPtr(funcptr); } - inline bool operator ! () const { // Is it bound to anything? - return !m_Closure; } - inline bool empty() const { - return !m_Closure; } - void clear() { m_Closure.clear();} - // Conversion to and from the DelegateMemento storage class - const DelegateMemento & GetMemento() { return m_Closure; } - void SetMemento(const DelegateMemento &any) { m_Closure.CopyFrom(this, any); } - -private: // Invoker for static functions - RetType InvokeStaticFunction(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const { - return (*(m_Closure.GetStaticFunction()))(p1, p2, p3, p4, p5, p6, p7, p8); } -}; - - -//////////////////////////////////////////////////////////////////////////////// -// Fast Delegates, part 4: -// -// FastDelegate<> class (Original author: Jody Hagins) -// Allows boost::function style syntax like: -// FastDelegate< double (int, long) > -// instead of: -// FastDelegate2< int, long, double > -// -//////////////////////////////////////////////////////////////////////////////// - -#ifdef FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX - -// Declare FastDelegate as a class template. It will be specialized -// later for all number of arguments. -template -class FastDelegate; - -//N=0 -// Specialization to allow use of -// FastDelegate< R ( ) > -// instead of -// FastDelegate0 < R > -template -class FastDelegate< R ( ) > - // Inherit from FastDelegate0 so that it can be treated just like a FastDelegate0 - : public FastDelegate0 < R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate0 < R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=1 -// Specialization to allow use of -// FastDelegate< R ( Param1 ) > -// instead of -// FastDelegate1 < Param1, R > -template -class FastDelegate< R ( Param1 ) > - // Inherit from FastDelegate1 so that it can be treated just like a FastDelegate1 - : public FastDelegate1 < Param1, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate1 < Param1, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=2 -// Specialization to allow use of -// FastDelegate< R ( Param1, Param2 ) > -// instead of -// FastDelegate2 < Param1, Param2, R > -template -class FastDelegate< R ( Param1, Param2 ) > - // Inherit from FastDelegate2 so that it can be treated just like a FastDelegate2 - : public FastDelegate2 < Param1, Param2, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate2 < Param1, Param2, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=3 -// Specialization to allow use of -// FastDelegate< R ( Param1, Param2, Param3 ) > -// instead of -// FastDelegate3 < Param1, Param2, Param3, R > -template -class FastDelegate< R ( Param1, Param2, Param3 ) > - // Inherit from FastDelegate3 so that it can be treated just like a FastDelegate3 - : public FastDelegate3 < Param1, Param2, Param3, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate3 < Param1, Param2, Param3, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=4 -// Specialization to allow use of -// FastDelegate< R ( Param1, Param2, Param3, Param4 ) > -// instead of -// FastDelegate4 < Param1, Param2, Param3, Param4, R > -template -class FastDelegate< R ( Param1, Param2, Param3, Param4 ) > - // Inherit from FastDelegate4 so that it can be treated just like a FastDelegate4 - : public FastDelegate4 < Param1, Param2, Param3, Param4, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate4 < Param1, Param2, Param3, Param4, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=5 -// Specialization to allow use of -// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5 ) > -// instead of -// FastDelegate5 < Param1, Param2, Param3, Param4, Param5, R > -template -class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5 ) > - // Inherit from FastDelegate5 so that it can be treated just like a FastDelegate5 - : public FastDelegate5 < Param1, Param2, Param3, Param4, Param5, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate5 < Param1, Param2, Param3, Param4, Param5, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=6 -// Specialization to allow use of -// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6 ) > -// instead of -// FastDelegate6 < Param1, Param2, Param3, Param4, Param5, Param6, R > -template -class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6 ) > - // Inherit from FastDelegate6 so that it can be treated just like a FastDelegate6 - : public FastDelegate6 < Param1, Param2, Param3, Param4, Param5, Param6, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate6 < Param1, Param2, Param3, Param4, Param5, Param6, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=7 -// Specialization to allow use of -// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7 ) > -// instead of -// FastDelegate7 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, R > -template -class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7 ) > - // Inherit from FastDelegate7 so that it can be treated just like a FastDelegate7 - : public FastDelegate7 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate7 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - -//N=8 -// Specialization to allow use of -// FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8 ) > -// instead of -// FastDelegate8 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, R > -template -class FastDelegate< R ( Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8 ) > - // Inherit from FastDelegate8 so that it can be treated just like a FastDelegate8 - : public FastDelegate8 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, R > -{ -public: - // Make using the base type a bit easier via typedef. - typedef FastDelegate8 < Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, R > BaseType; - - // Allow users access to the specific type of this delegate. - typedef FastDelegate SelfType; - - // Mimic the base class constructors. - FastDelegate() : BaseType() { } - - template < class X, class Y > - FastDelegate(Y * pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 )) - : BaseType(pthis, function_to_bind) { } - - template < class X, class Y > - FastDelegate(const Y *pthis, - R (X::* function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) const) - : BaseType(pthis, function_to_bind) - { } - - FastDelegate(R (*function_to_bind)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 )) - : BaseType(function_to_bind) { } - void operator = (const BaseType &x) { - *static_cast(this) = x; } -}; - - -#endif //FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX - -//////////////////////////////////////////////////////////////////////////////// -// Fast Delegates, part 5: -// -// MakeDelegate() helper function -// -// MakeDelegate(&x, &X::func) returns a fastdelegate of the type -// necessary for calling x.func() with the correct number of arguments. -// This makes it possible to eliminate many typedefs from user code. -// -//////////////////////////////////////////////////////////////////////////////// - -// Also declare overloads of a MakeDelegate() global function to -// reduce the need for typedefs. -// We need seperate overloads for const and non-const member functions. -// Also, because of the weird rule about the class of derived member function pointers, -// implicit downcasts may need to be applied later to the 'this' pointer. -// That's why two classes (X and Y) appear in the definitions. Y must be implicitly -// castable to X. - -// Workaround for VC6. VC6 needs void return types converted into DefaultVoid. -// GCC 3.2 and later won't compile this unless it's preceded by 'typename', -// but VC6 doesn't allow 'typename' in this context. -// So, I have to use a macro. - -#ifdef FASTDLGT_VC6 -#define FASTDLGT_RETTYPE detail::VoidToDefaultVoid::type -#else -#define FASTDLGT_RETTYPE RetType -#endif - -//N=0 -template -FastDelegate0 MakeDelegate(Y* x, RetType (X::*func)()) { - return FastDelegate0(x, func); -} - -template -FastDelegate0 MakeDelegate(Y* x, RetType (X::*func)() const) { - return FastDelegate0(x, func); -} - -//N=1 -template -FastDelegate1 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1)) { - return FastDelegate1(x, func); -} - -template -FastDelegate1 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1) const) { - return FastDelegate1(x, func); -} - -//N=2 -template -FastDelegate2 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2)) { - return FastDelegate2(x, func); -} - -template -FastDelegate2 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2) const) { - return FastDelegate2(x, func); -} - -//N=3 -template -FastDelegate3 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3)) { - return FastDelegate3(x, func); -} - -template -FastDelegate3 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3) const) { - return FastDelegate3(x, func); -} - -//N=4 -template -FastDelegate4 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4)) { - return FastDelegate4(x, func); -} - -template -FastDelegate4 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4) const) { - return FastDelegate4(x, func); -} - -//N=5 -template -FastDelegate5 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5)) { - return FastDelegate5(x, func); -} - -template -FastDelegate5 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) const) { - return FastDelegate5(x, func); -} - -//N=6 -template -FastDelegate6 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6)) { - return FastDelegate6(x, func); -} - -template -FastDelegate6 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) const) { - return FastDelegate6(x, func); -} - -//N=7 -template -FastDelegate7 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7)) { - return FastDelegate7(x, func); -} - -template -FastDelegate7 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) const) { - return FastDelegate7(x, func); -} - -//N=8 -template -FastDelegate8 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8)) { - return FastDelegate8(x, func); -} - -template -FastDelegate8 MakeDelegate(Y* x, RetType (X::*func)(Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) const) { - return FastDelegate8(x, func); -} - - - // clean up after ourselves... -#undef FASTDLGT_RETTYPE - -} // namespace fastdelegate - -#endif // !defined(FASTDELEGATE_H) - diff --git a/modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegateBind.h b/modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegateBind.h deleted file mode 100644 index 083a807..0000000 --- a/modules_mobile/core/include/dpl/3rdparty/fastdelegate/FastDelegateBind.h +++ /dev/null @@ -1,243 +0,0 @@ -// FastDelegateBind.h -// Helper file for FastDelegates. Provides bind() function, enabling -// FastDelegates to be rapidly compared to programs using boost::function and boost::bind. -// -// Documentation is found at http://www.codeproject.com/cpp/FastDelegate.asp -// -// Original author: Jody Hagins. -// Minor changes by Don Clugston. -// -// Warning: The arguments to 'bind' are ignored! No actual binding is performed. -// The behaviour is equivalent to boost::bind only when the basic placeholder -// arguments _1, _2, _3, etc are used in order. -// -// HISTORY: -// 1.4 Dec 2004. Initial release as part of FastDelegate 1.4. - - -#ifndef FASTDELEGATEBIND_H -#define FASTDELEGATEBIND_H -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -//////////////////////////////////////////////////////////////////////////////// -// FastDelegate bind() -// -// bind() helper function for boost compatibility. -// (Original author: Jody Hagins). -// -// Add another helper, so FastDelegate can be a dropin replacement -// for boost::bind (in a fair number of cases). -// Note the elipses, because boost::bind() takes place holders -// but FastDelegate does not care about them. Getting the place holder -// mechanism to work, and play well with boost is a bit tricky, so -// we do the "easy" thing... -// Assume we have the following code... -// using boost::bind; -// bind(&Foo:func, &foo, _1, _2); -// we should be able to replace the "using" with... -// using fastdelegate::bind; -// and everything should work fine... -//////////////////////////////////////////////////////////////////////////////// - -#ifdef FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX - -namespace fastdelegate { - -//N=0 -template -FastDelegate< RetType ( ) > -bind( - RetType (X::*func)( ), - Y * y, - ...) -{ - return FastDelegate< RetType ( ) >(y, func); -} - -template -FastDelegate< RetType ( ) > -bind( - RetType (X::*func)( ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( ) >(y, func); -} - -//N=1 -template -FastDelegate< RetType ( Param1 p1 ) > -bind( - RetType (X::*func)( Param1 p1 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1 ) > -bind( - RetType (X::*func)( Param1 p1 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1 ) >(y, func); -} - -//N=2 -template -FastDelegate< RetType ( Param1 p1, Param2 p2 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1, Param2 p2 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2 ) >(y, func); -} - -//N=3 -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3 ) >(y, func); -} - -//N=4 -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4 ) >(y, func); -} - -//N=5 -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5 ) >(y, func); -} - -//N=6 -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6 ) >(y, func); -} - -//N=7 -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7 ) >(y, func); -} - -//N=8 -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ), - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) >(y, func); -} - -template -FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) > -bind( - RetType (X::*func)( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) const, - Y * y, - ...) -{ - return FastDelegate< RetType ( Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8 ) >(y, func); -} - - -#endif //FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX - -} // namespace fastdelegate - -#endif // !defined(FASTDELEGATEBIND_H) - diff --git a/modules_mobile/core/include/dpl/abstract_input.h b/modules_mobile/core/include/dpl/abstract_input.h deleted file mode 100644 index 8c0e16a..0000000 --- a/modules_mobile/core/include/dpl/abstract_input.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_input.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract input - */ -#ifndef DPL_ABSTRACT_INPUT_H -#define DPL_ABSTRACT_INPUT_H - -#include -#include - -namespace DPL { -class BinaryQueue; -typedef std::auto_ptr BinaryQueueAutoPtr; - -class AbstractInput -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, ReadFailed) - }; - - public: - virtual ~AbstractInput() {} - - /** - * Read binary data from input - * If no data is available method returns NULL buffer. - * In case connection was successfuly close, method returns empty buffer - * - * @param[in] size Maximum number of bytes to read from input - * @return Buffer containing read bytes - * @throw ReadFailed - */ - virtual BinaryQueueAutoPtr Read(size_t size) = 0; -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_INPUT_H diff --git a/modules_mobile/core/include/dpl/abstract_input_output.h b/modules_mobile/core/include/dpl/abstract_input_output.h deleted file mode 100644 index 153d5c4..0000000 --- a/modules_mobile/core/include/dpl/abstract_input_output.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_output.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract output - */ -#ifndef DPL_ABSTRACT_INPUT_OUTPUT_H -#define DPL_ABSTRACT_INPUT_OUTPUT_H - -#include -#include - -namespace DPL { -class AbstractInputOutput : - public AbstractInput, - public AbstractOutput -{ - public: - virtual ~AbstractInputOutput() {} -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_INPUT_OUTPUT_H diff --git a/modules_mobile/core/include/dpl/abstract_output.h b/modules_mobile/core/include/dpl/abstract_output.h deleted file mode 100644 index 56c86fb..0000000 --- a/modules_mobile/core/include/dpl/abstract_output.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_output.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract output - */ -#ifndef DPL_ABSTRACT_OUTPUT_H -#define DPL_ABSTRACT_OUTPUT_H - -#include -#include - -namespace DPL { -class BinaryQueue; -typedef std::auto_ptr BinaryQueueAutoPtr; - -class AbstractOutput -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, WriteFailed) - }; - - public: - virtual ~AbstractOutput() {} - - /** - * Write binary data to output - * If output is blocked, Write returns zero, if instance is a type of - * WaitableAbstractOutput one can wait for writability then - * - * @param[in] buffer Input buffer with data to be written - * @param[in] bufferSize Maximum number of bytes to write from buffer - * @return Number of bytes success successfuly written or zero if output is - * blocked - * @throw WriteFailed - */ - virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize) = 0; -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_OUTPUT_H diff --git a/modules_mobile/core/include/dpl/abstract_waitable_input.h b/modules_mobile/core/include/dpl/abstract_waitable_input.h deleted file mode 100644 index 9d957d6..0000000 --- a/modules_mobile/core/include/dpl/abstract_waitable_input.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_input.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract waitable input - */ -#ifndef DPL_ABSTRACT_WAITABLE_INPUT_H -#define DPL_ABSTRACT_WAITABLE_INPUT_H - -#include -#include - -namespace DPL { -class AbstractWaitableInput : - public AbstractInput -{ - public: - virtual ~AbstractWaitableInput() {} - - virtual WaitableHandle WaitableReadHandle() const = 0; -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_WAITABLE_INPUT_H diff --git a/modules_mobile/core/include/dpl/abstract_waitable_input_adapter.h b/modules_mobile/core/include/dpl/abstract_waitable_input_adapter.h deleted file mode 100644 index 43efaee..0000000 --- a/modules_mobile/core/include/dpl/abstract_waitable_input_adapter.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_input.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract waitable input - */ -#ifndef DPL_ABSTRACT_WAITABLE_INPUT_ADAPTER_H -#define DPL_ABSTRACT_WAITABLE_INPUT_ADAPTER_H - -#include -#include -#include - -namespace DPL { -class AbstractWaitableInputAdapter : - public AbstractWaitableInput -{ - private: - AbstractInput *m_input; - WaitableEvent m_waitableEvent; - - public: - explicit AbstractWaitableInputAdapter(AbstractInput *input); - - virtual BinaryQueueAutoPtr Read(size_t size); - - virtual WaitableHandle WaitableReadHandle() const; -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_WAITABLE_INPUT_ADAPTER_H diff --git a/modules_mobile/core/include/dpl/abstract_waitable_input_output.h b/modules_mobile/core/include/dpl/abstract_waitable_input_output.h deleted file mode 100644 index e858f51..0000000 --- a/modules_mobile/core/include/dpl/abstract_waitable_input_output.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_input_output.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract waitable input output - */ -#ifndef DPL_ABSTRACT_WAITABLE_INPUT_OUTPUT_H -#define DPL_ABSTRACT_WAITABLE_INPUT_OUTPUT_H - -#include -#include - -namespace DPL { -class AbstractWaitableInputOutput : - public AbstractWaitableInput, - public AbstractWaitableOutput -{ - public: - virtual ~AbstractWaitableInputOutput() {} -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_WAITABLE_INPUT_OUTPUT_H diff --git a/modules_mobile/core/include/dpl/abstract_waitable_input_output_adapter.h b/modules_mobile/core/include/dpl/abstract_waitable_input_output_adapter.h deleted file mode 100644 index a0322d0..0000000 --- a/modules_mobile/core/include/dpl/abstract_waitable_input_output_adapter.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_input_output.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract waitable input output - */ -#ifndef DPL_ABSTRACT_WAITABLE_INPUT_OUTPUT_ADAPTER_H -#define DPL_ABSTRACT_WAITABLE_INPUT_OUTPUT_ADAPTER_H - -#include -#include -#include - -namespace DPL { -class AbstractWaitableInputOutputAdapter : - public AbstractWaitableInputAdapter, - public AbstractWaitableOutputAdapter -{ - public: - explicit AbstractWaitableInputOutputAdapter( - AbstractInputOutput *inputOutput); -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_WAITABLE_INPUT_OUTPUT_ADAPTER_H diff --git a/modules_mobile/core/include/dpl/abstract_waitable_output.h b/modules_mobile/core/include/dpl/abstract_waitable_output.h deleted file mode 100644 index abcc3f8..0000000 --- a/modules_mobile/core/include/dpl/abstract_waitable_output.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_output.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract waitable output - */ -#ifndef DPL_ABSTRACT_WAITABLE_OUTPUT_H -#define DPL_ABSTRACT_WAITABLE_OUTPUT_H - -#include -#include - -namespace DPL { -class AbstractWaitableOutput : - public AbstractOutput -{ - public: - virtual ~AbstractWaitableOutput() {} - - virtual WaitableHandle WaitableWriteHandle() const = 0; -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_WAITABLE_OUTPUT_H diff --git a/modules_mobile/core/include/dpl/abstract_waitable_output_adapter.h b/modules_mobile/core/include/dpl/abstract_waitable_output_adapter.h deleted file mode 100644 index 9e40bc4..0000000 --- a/modules_mobile/core/include/dpl/abstract_waitable_output_adapter.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_output.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract waitable output - */ -#ifndef DPL_ABSTRACT_WAITABLE_OUTPUT_ADAPTER_H -#define DPL_ABSTRACT_WAITABLE_OUTPUT_ADAPTER_H - -#include -#include -#include - -namespace DPL { -class AbstractWaitableOutputAdapter : - public AbstractWaitableOutput -{ - private: - AbstractOutput *m_output; - WaitableEvent m_waitableEvent; - - public: - explicit AbstractWaitableOutputAdapter(AbstractOutput *output); - - virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize); - - virtual WaitableHandle WaitableWriteHandle() const; -}; -} // namespace DPL - -#endif // DPL_ABSTRACT_WAITABLE_OUTPUT_ADAPTER_H diff --git a/modules_mobile/core/include/dpl/address.h b/modules_mobile/core/include/dpl/address.h deleted file mode 100644 index 05893f9..0000000 --- a/modules_mobile/core/include/dpl/address.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file address.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of address - */ -#ifndef DPL_ADDRESS_H -#define DPL_ADDRESS_H - -#include -#include - -namespace DPL { -class Address -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, InvalidAddress) - }; - - private: - std::string m_address; - unsigned short m_port; - - public: - Address(); - Address(const std::string &address); - Address(const std::string &address, unsigned short port); - - virtual ~Address(); - - std::string GetAddress() const; - unsigned short GetPort() const; - - std::string ToString() const; - - bool operator<(const Address &addr) const; -}; -} // namespace DPL - -#endif // DPL_ADDRESS_H diff --git a/modules_mobile/core/include/dpl/aligned.h b/modules_mobile/core/include/dpl/aligned.h deleted file mode 100644 index 4400545..0000000 --- a/modules_mobile/core/include/dpl/aligned.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file aligned.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of aligned attribute from - * gcc - */ -#ifndef DPL_ALIGNED_H -#define DPL_ALIGNED_H - -#define DPL_ALIGNED(n) __attribute__((aligned(n))) - -#endif // DPL_ALIGNED_H diff --git a/modules_mobile/core/include/dpl/application.h b/modules_mobile/core/include/dpl/application.h deleted file mode 100644 index d4d9754..0000000 --- a/modules_mobile/core/include/dpl/application.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file application.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC application support - */ -#ifndef DPL_APPLICATION_H -#define DPL_APPLICATION_H - -#include -#include -#include -#include -#include - -namespace DPL { -class Application -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, TooManyInstances) - DECLARE_EXCEPTION_TYPE(Base, FrameworkError) - }; - - private: - static int app_create(void *data); - static int app_terminate(void *data); - static int app_pause(void *data); - static int app_resume(void *data); - static int app_reset(bundle *b, void *data); - - protected: - int m_argc; - char **m_argv; - std::string m_applicationName; - - bool m_mainWindowVisible; - - virtual void OnCreate(); - virtual void OnStart(); - virtual void OnStop(); - virtual void OnResume(); - virtual void OnPause(); - virtual void OnRelaunch(); - virtual void OnReset(bundle *b); - virtual void OnTerminate(); - virtual void OnLowMemory(); - virtual void OnLowBattery(); - virtual void OnLanguageChanged(); - - public: - Application(int argc, - char **argv, - const std::string &applicationName, - bool showMainWindow = true); - virtual ~Application(); - - /** - * @brief Execute application and start message processing - */ - virtual int Exec(); - - /* - * @brief Sends quit message to application message loop - */ - virtual void Quit(); -}; - -class ApplicationExt : public Application -{ - public: - ApplicationExt(int argc, - char **argv, - const std::string &applicationName, - bool showMainWindow = true); - virtual ~ApplicationExt(); - - /** - * @brief Execute application and start message processing - */ - virtual int Exec(); - - /* - * @brief Sends quit message to application message loop - */ - virtual void Quit(); - - private: - static DPL::Atomic m_useCount; -}; -} // namespace DPL - -#endif // DPL_APPLICATION_H diff --git a/modules_mobile/core/include/dpl/apply.h b/modules_mobile/core/include/dpl/apply.h deleted file mode 100644 index fc1be53..0000000 --- a/modules_mobile/core/include/dpl/apply.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apply.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief Implementation file for Apply functionality. - */ -#ifndef DPL_APPLY_H_ -#define DPL_APPLY_H_ - -#ifndef __GXX_EXPERIMENTAL_CXX0X__ // C++11 compatibility check -# include -#else - -#include -#include - -namespace DPL { -enum class ExtraArgsInsertPolicy -{ - /** - * Extra arguments will be add at the end of the argument list - * passed to operation call. - */ - Append, - - /** - * Extra arguments will be add at the begining of the argument list - * passed to operation call. - */ - Prepend -}; - -template -struct _ApplyDispatchByPolicy; - -template -Result Apply(Operation op, - const std::tuple& t, - ArgsE && ... extra) -{ - return _ApplyDispatchByPolicy:: - template Apply(op, t, std::forward(extra) ...); -} - -template -struct _ApplyTuple -{ - template - static Result Apply(Operation op, - const std::tuple& t1, - const std::tuple& t2, - Args && ... args) - { - return _ApplyTuple:: - template Apply(op, - t1, - t2, - std::get(t1), - std::forward(args) ...); - } -}; - -template -struct _ApplyTuple<0, M> -{ - template - static Result Apply(Operation op, - const std::tuple& t1, - const std::tuple& t2, - Args && ... args) - { - return _ApplyTuple<0, M - 1>:: - template Apply(op, - t1, - t2, - std::get(t2), - std::forward(args) ...); - } -}; - -template<> -struct _ApplyTuple<0, 0> -{ - template - static Result Apply(Operation op, - const std::tuple&, - const std::tuple&, - Args && ... args) - { - return op(std::forward(args) ...); - } -}; - -template -struct _ApplyArgs -{ - template - static Result Apply(Operation op, - const std::tuple& t, - Args && ... args) - { - return _ApplyArgs:: - template Apply(op, - t, - std::get(t), - std::forward(args) ...); - } -}; - -template<> -struct _ApplyArgs<0> -{ - template - static Result Apply(Operation op, - const std::tuple&, - Args && ... args) - { - return op(std::forward(args) ...); - } -}; - -template<> -struct _ApplyDispatchByPolicy -{ - template - static Result Apply(Operation op, - const std::tuple& t, - ArgsE && ... extra) - { - return _ApplyArgs:: - template Apply(op, - t, - std::forward(extra) ...); - } -}; - -template<> -struct _ApplyDispatchByPolicy -{ - template - static Result Apply(Operation op, - const std::tuple& t, - ArgsE && ... extra) - { - return _ApplyTuple:: - template Apply(op, - t, - std::make_tuple(std::forward( - extra) ...)); - } -}; -} // namespace DPL - -#endif // __GXX_EXPERIMENTAL_CXX0X__ - -#endif // DPL_APPLY_H_ diff --git a/modules_mobile/core/include/dpl/assert.h b/modules_mobile/core/include/dpl/assert.h deleted file mode 100644 index 59331a0..0000000 --- a/modules_mobile/core/include/dpl/assert.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file assert.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of assert - */ -#ifndef DPL_ASSERT_H -#define DPL_ASSERT_H - -#include - -namespace DPL { -// Assertion handler procedure -// Do not call directly -// Always use Assert macro -DPL_NORETURN void AssertProc(const char *condition, - const char *file, - int line, - const char *function); -} // namespace DPL - -#define Assert(Condition) do { if (!(Condition)) { DPL::AssertProc(#Condition, \ - __FILE__, \ - __LINE__, \ - __FUNCTION__); \ - } } while (0) - -#endif // DPL_ASSERT_H diff --git a/modules_mobile/core/include/dpl/atomic.h b/modules_mobile/core/include/dpl/atomic.h deleted file mode 100644 index 50c4a1a..0000000 --- a/modules_mobile/core/include/dpl/atomic.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file atomic.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of atomic - */ -#ifndef DPL_ATOMIC_H -#define DPL_ATOMIC_H - -#pragma GCC system_header -#include - -namespace DPL { -class Atomic -{ - public: - typedef gint ValueType; - - private: - volatile ValueType m_value; - - public: - Atomic(ValueType value = static_cast(0)); - - ValueType ExchangeAndAdd(ValueType value); - bool CompareAndExchange(ValueType oldValue, ValueType newValue); - bool operator--(); - void operator++(); - - operator ValueType() const; -}; -} // namespace DPL - -#endif // DPL_ATOMIC_H diff --git a/modules_mobile/core/include/dpl/availability.h b/modules_mobile/core/include/dpl/availability.h deleted file mode 100644 index 0813892..0000000 --- a/modules_mobile/core/include/dpl/availability.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file availability.h - * @author Jihoon Chung (jihoon.chung@samsung.com) - * @version 1.0 - */ -#ifndef DPL_AVAILABILITY_H -#define DPL_AVAILABILITY_H - -#define DPL_DEPRECATED __attribute__((deprecated)) -#define DPL_DEPRECATED_WITH_MESSAGE(msg) __attribute__((deprecated(msg))) - -#define DPL_UNUSED __attribute__((unused)) -#define DPL_UNUSED_PARAM(variable) (void)variable - -#endif // DPL_AVAILABILITY_H diff --git a/modules_mobile/core/include/dpl/bool_operator.h b/modules_mobile/core/include/dpl/bool_operator.h deleted file mode 100644 index ccb17f8..0000000 --- a/modules_mobile/core/include/dpl/bool_operator.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file bool_operator.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of bool operator - */ -#ifndef DPL_BOOL_OPERATOR_H -#define DPL_BOOL_OPERATOR_H - -#define DPL_IMPLEMENT_BOOL_OPERATOR(Type, ThisType, CheckPtr, ClassPtr) \ - typedef Type *ThisType::*UnknownBoolType; \ - \ - operator UnknownBoolType() const \ - { \ - return (CheckPtr == NULL) ? NULL : &ThisType::ClassPtr; \ - } \ - \ - bool operator !() const \ - { \ - return CheckPtr == NULL; \ - } - -#endif // DPL_BOOL_OPERATOR_H diff --git a/modules_mobile/core/include/dpl/char_traits.h b/modules_mobile/core/include/dpl/char_traits.h deleted file mode 100644 index eb2988f..0000000 --- a/modules_mobile/core/include/dpl/char_traits.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file char_traits.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief Char traits are used to create basic_string extended with - * additional features - * Current char traits could be extended in feature to boost - * performance - */ -#ifndef DPL_CHAR_TRAITS -#define DPL_CHAR_TRAITS - -#include -#include -#include -#include -#include - -namespace DPL { -typedef std::char_traits CharTraits; -} // namespace DPL - -#endif // DPL_CHAR_TRAITS diff --git a/modules_mobile/core/include/dpl/colors.h b/modules_mobile/core/include/dpl/colors.h deleted file mode 100644 index c7cfd53..0000000 --- a/modules_mobile/core/include/dpl/colors.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file colors.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Some constants with definition of colors for Console - * and html output - */ - -#ifndef DPL_COLORS_H -#define DPL_COLORS_H - -namespace DPL { -namespace Colors { -namespace Text { -extern const char* BOLD_GREEN_BEGIN; -extern const char* BOLD_GREEN_END; -extern const char* PURPLE_BEGIN; -extern const char* PURPLE_END; -extern const char* RED_BEGIN; -extern const char* RED_END; -extern const char* GREEN_BEGIN; -extern const char* GREEN_END; -extern const char* CYAN_BEGIN; -extern const char* CYAN_END; -extern const char* BOLD_RED_BEGIN; -extern const char* BOLD_RED_END; -extern const char* BOLD_YELLOW_BEGIN; -extern const char* BOLD_YELLOW_END; -extern const char* BOLD_GOLD_BEGIN; -extern const char* BOLD_GOLD_END; -extern const char* BOLD_WHITE_BEGIN; -extern const char* BOLD_WHITE_END; -} //namespace Text - -namespace Html { -extern const char* BOLD_GREEN_BEGIN; -extern const char* BOLD_GREEN_END; -extern const char* PURPLE_BEGIN; -extern const char* PURPLE_END; -extern const char* RED_BEGIN; -extern const char* RED_END; -extern const char* GREEN_BEGIN; -extern const char* GREEN_END; -extern const char* CYAN_BEGIN; -extern const char* CYAN_END; -extern const char* BOLD_RED_BEGIN; -extern const char* BOLD_RED_END; -extern const char* BOLD_YELLOW_BEGIN; -extern const char* BOLD_YELLOW_END; -extern const char* BOLD_GOLD_BEGIN; -extern const char* BOLD_GOLD_END; -extern const char* BOLD_WHITE_BEGIN; -extern const char* BOLD_WHITE_END; -} //namespace Html -} //namespace Colors -} //namespace DPL - -#endif /* DPL_COLORS_H */ diff --git a/modules_mobile/core/include/dpl/copy.h b/modules_mobile/core/include/dpl/copy.h deleted file mode 100644 index e796a61..0000000 --- a/modules_mobile/core/include/dpl/copy.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file copy.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of copy - */ -#ifndef DPL_COPY_H -#define DPL_COPY_H - -#include -#include -#include - -namespace DPL { -/** - * Copy failed exception - */ -DECLARE_EXCEPTION_TYPE(Exception, CopyFailed) - -/** - * Copy all bytes abstract waitable input to abstract waitable output - * - * @param[in] input Abstract waitable input to copy from - * @param[in] output Abstract waitable output to copy to - * @throw CopyFailed An error occurred while copying. Look into exception trace - * for details. - */ -void Copy(AbstractWaitableInput *input, AbstractWaitableOutput *output); - -/** - * Copy exactly totalBytes bytes abstract waitable input to abstract waitable - * output - * - * @param[in] input Abstract waitable input to copy from - * @param[in] output Abstract waitable output to copy to - * @throw CopyFailed An error occurred while copying. Look into exception trace - * for details. - */ -void Copy(AbstractWaitableInput *input, - AbstractWaitableOutput *output, - size_t totalBytes); -} // namespace DPL - -#endif // DPL_COPY_H diff --git a/modules_mobile/core/include/dpl/enable_shared_from_this.h b/modules_mobile/core/include/dpl/enable_shared_from_this.h deleted file mode 100644 index 0a0fb3a..0000000 --- a/modules_mobile/core/include/dpl/enable_shared_from_this.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file enable_shared_from_this.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of shared pointer RAII - */ -#ifndef DPL_ENABLE_SHARED_FROM_THIS_H -#define DPL_ENABLE_SHARED_FROM_THIS_H - -#include -#include -#include - -namespace DPL { -template -class EnableSharedFromThis : private Noncopyable -{ - private: - // A weak pointer to shared counter - SharedCounter *m_counter; - Class *m_ptr; - - public: - DPL::SharedPtr SharedFromThis() - { - Assert(m_counter != NULL && "Pointer is not shared!"); - return SharedPtr(m_counter, m_ptr); - } - - DPL::SharedPtr SharedFromThis() const - { - Assert(m_counter != NULL && "Pointer is not shared!"); - return SharedPtr(m_counter, m_ptr); - } - - // For internal SharedPtr usage only. Do not call directly. - void _Internal_AcceptSharedPtr(SharedCounter *counter, Class *ptr) - { - m_counter = counter; - m_ptr = ptr; - } - - EnableSharedFromThis() : - m_counter(NULL), - m_ptr(NULL) - {} - - virtual ~EnableSharedFromThis() - {} -}; -} // namespace DPL - -#endif // DPL_ENABLE_SHARED_FROM_THIS_H diff --git a/modules_mobile/core/include/dpl/errno_string.h b/modules_mobile/core/include/dpl/errno_string.h deleted file mode 100644 index 446dbc9..0000000 --- a/modules_mobile/core/include/dpl/errno_string.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file errno_string.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of errno string - */ -#ifndef DPL_ERRNO_STRING_H -#define DPL_ERRNO_STRING_H - -#include -#include -#include - -namespace DPL { -DECLARE_EXCEPTION_TYPE(DPL::Exception, InvalidErrnoValue) - -std::string GetErrnoString(int error = errno); -} // namespace DPL - -#endif // DPL_ERRNO_STRING_H diff --git a/modules_mobile/core/include/dpl/fast_delegate.h b/modules_mobile/core/include/dpl/fast_delegate.h deleted file mode 100644 index 8bc1a4b..0000000 --- a/modules_mobile/core/include/dpl/fast_delegate.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file fast_delegate.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of fast delegate - */ -#ifndef DPL_FAST_DELEGATE_H -#define DPL_FAST_DELEGATE_H - -#pragma GCC system_header - -#define FASTDELEGATE_USESTATICFUNCTIONHACK -#define FASTDELEGATE_ALLOW_FUNCTION_TYPE_SYNTAX - -#include -#include - -namespace DPL { -using namespace fastdelegate; -} // namespace DPL - -#endif // DPL_FAST_DELEGATE_H diff --git a/modules_mobile/core/include/dpl/file_input.h b/modules_mobile/core/include/dpl/file_input.h deleted file mode 100644 index 3adcf21..0000000 --- a/modules_mobile/core/include/dpl/file_input.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file file_input.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of file input - */ -#ifndef DPL_FILE_INPUT_H -#define DPL_FILE_INPUT_H - -#include -#include -#include - -namespace DPL { -class FileInput : - private Noncopyable, - public AbstractWaitableInput -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) - DECLARE_EXCEPTION_TYPE(Base, CloseFailed) - }; - - protected: - int m_fd; - - public: - FileInput(); - FileInput(const std::string &fileName); - virtual ~FileInput(); - - void Open(const std::string &fileName); - void Close(); - - // AbstractInput - virtual BinaryQueueAutoPtr Read(size_t size); - - // AbstractWaitableInput - virtual WaitableHandle WaitableReadHandle() const; -}; -} // namespace DPL - -#endif // DPL_FILE_INPUT_H diff --git a/modules_mobile/core/include/dpl/file_output.h b/modules_mobile/core/include/dpl/file_output.h deleted file mode 100644 index 90be8cd..0000000 --- a/modules_mobile/core/include/dpl/file_output.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file file_output.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of file output - */ -#ifndef DPL_FILE_OUTPUT_H -#define DPL_FILE_OUTPUT_H - -#include -#include -#include - -namespace DPL { -class FileOutput : - private Noncopyable, - public AbstractWaitableOutput -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) - DECLARE_EXCEPTION_TYPE(Base, CloseFailed) - }; - - protected: - int m_fd; - - public: - FileOutput(); - FileOutput(const std::string &fileName); - virtual ~FileOutput(); - - void Open(const std::string &fileName); - void Close(); - - // AbstractOutput - virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize); - - // AbstracWaitableOutput - virtual WaitableHandle WaitableWriteHandle() const; -}; -} // namespace DPL - -#endif // DPL_FILE_OUTPUT_H diff --git a/modules_mobile/core/include/dpl/foreach.h b/modules_mobile/core/include/dpl/foreach.h deleted file mode 100644 index bbe477a..0000000 --- a/modules_mobile/core/include/dpl/foreach.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file foreach.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of foreach macro for stl - * containers - */ -#ifndef DPL_FOREACH_H -#define DPL_FOREACH_H - -#include - -namespace DPL { -namespace Private { -/* - * Used to detect type of valid reference to value object. - */ -template -T& ValueReference(T& t) -{ - return(t); -} - -template -const T& ValueReference(const T& t) -{ - return(t); -} -} //Private -} //DPL - -#define DPL_FOREACH_IMPL(temporaryName, iterator, container) \ - __typeof__ (DPL::Private::ValueReference((container))) & \ - temporaryName = (container); \ - for (__typeof__ (temporaryName.begin())iterator = \ - temporaryName.begin(); \ - (iterator) != temporaryName.end(); ++iterator) - -#define FOREACH(iterator, container) \ - DPL_FOREACH_IMPL( \ - DPL_MACRO_CONCAT(foreachContainerReference, __COUNTER__), \ - iterator, \ - container) - -#endif // DPL_FOREACH_H diff --git a/modules_mobile/core/include/dpl/framework_efl.h b/modules_mobile/core/include/dpl/framework_efl.h deleted file mode 100644 index 6246587..0000000 --- a/modules_mobile/core/include/dpl/framework_efl.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file framework_efl.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the forward header file for EFL framework - */ -#pragma GCC system_header -#include -#include -#include diff --git a/modules_mobile/core/include/dpl/framework_vconf.h b/modules_mobile/core/include/dpl/framework_vconf.h deleted file mode 100644 index 8de9b31..0000000 --- a/modules_mobile/core/include/dpl/framework_vconf.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file framework_vconf.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the forward header file for VCONF - */ -#pragma GCC system_header -#include -#include diff --git a/modules_mobile/core/include/dpl/lexical_cast.h b/modules_mobile/core/include/dpl/lexical_cast.h deleted file mode 100644 index 1b54026..0000000 --- a/modules_mobile/core/include/dpl/lexical_cast.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file lexical_cast.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for lexical cast - */ -#ifndef DPL_LEXICAL_CAST_H -#define DPL_LEXICAL_CAST_H - -#include - -namespace DPL { -template -TargetType lexical_cast(const SourceType &data) -{ - TargetType result; - - std::ostringstream out; - out << data; - - std::istringstream in(out.str()); - in >> result; - - return result; -} -} // namespace DPL - -#endif // DPL_LEXICAL_CAST_H diff --git a/modules_mobile/core/include/dpl/main.h b/modules_mobile/core/include/dpl/main.h deleted file mode 100644 index cb088cf..0000000 --- a/modules_mobile/core/include/dpl/main.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file main.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of main for EFL - */ -#ifndef DPL_MAIN_H -#define DPL_MAIN_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -class Main : - public WaitableHandleWatchSupport -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - }; - - protected: - Ecore_Fd_Handler *m_invokerHandler; - - static Eina_Bool StaticDispatchInvoker(void *data, - Ecore_Fd_Handler *fd_handler); - static Eina_Bool StaticDispatchReadWatcher(void *data, - Ecore_Fd_Handler *fd_handler); - static Eina_Bool StaticDispatchWriteWatcher(void *data, - Ecore_Fd_Handler *fd_handler); - - typedef std::list EcoreFdHandlerList; - - EcoreFdHandlerList m_readWatchersList; - EcoreFdHandlerList m_writeWatchersList; - - void DispatchInvoker(); - void DispatchReadWatcher(WaitableHandle waitableHandle); - void DispatchWriteWatcher(WaitableHandle waitableHandle); - - void ReloadWatchList(); - - // WaitableHandleWatchSupport - virtual Thread *GetInvokerThread(); - virtual void HandleDirectInvoker(); - -#ifdef DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND - // GLIB loop intergration workaround - typedef int (*EcoreSelectType)(int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, struct timeval *timeout); - EcoreSelectType m_oldEcoreSelect; - - static int EcoreSelectInterceptor(int nfds, - fd_set *readfds, - fd_set *writefds, - fd_set *exceptfds, - struct timeval *timeout); -#endif // DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND - - public: - explicit Main(); - virtual ~Main(); -}; - -/** - * Main singleton - */ -typedef Singleton
MainSingleton; -} // namespace DPL - -#endif // DPL_MAIN_H diff --git a/modules_mobile/core/include/dpl/mutable_task_list.h b/modules_mobile/core/include/dpl/mutable_task_list.h deleted file mode 100644 index 9facbd3..0000000 --- a/modules_mobile/core/include/dpl/mutable_task_list.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file mutable_task_list.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @version 1.0 - * @brief Header file for task list - */ -#ifndef DPL_MUTABLE_TASK_LIST_H -#define DPL_MUTABLE_TASK_LIST_H - -#include -#include - -namespace DPL { -class MutableTaskList : - public Task -{ - private: - typedef std::list Tasks; - - Tasks m_tasks; - Tasks::iterator m_currentTask; - - bool m_running; - - protected: - void AddTask(Task *task); - - public: - MutableTaskList(); - virtual ~MutableTaskList(); - - bool NextStep(); - bool Abort(); - size_t GetStepCount() const; -}; -} // namespace DPL - -#endif // DPL_MUTABLE_TASK_LIST_H diff --git a/modules_mobile/core/include/dpl/named_base_pipe.h b/modules_mobile/core/include/dpl/named_base_pipe.h deleted file mode 100644 index 45714ef..0000000 --- a/modules_mobile/core/include/dpl/named_base_pipe.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file named_base_pipe.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of named base pipe - */ -#ifndef DPL_NAMED_BASE_PIPE_H -#define DPL_NAMED_BASE_PIPE_H - -#include - -namespace DPL { -class NamedBasePipe -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, AlreadyExist) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, DestroyFailed) - }; - - public: - virtual ~NamedBasePipe(); - - static void Create(const std::string &fileName); - static void Destroy(const std::string &fileName); -}; -} // namespace DPL - -#endif // DPL_NAMED_BASE_PIPE_H diff --git a/modules_mobile/core/include/dpl/named_input_pipe.h b/modules_mobile/core/include/dpl/named_input_pipe.h deleted file mode 100644 index cf7b4b7..0000000 --- a/modules_mobile/core/include/dpl/named_input_pipe.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file named_input_pipe.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of named input pipe - */ -#ifndef DPL_NAMED_PIPE_H -#define DPL_NAMED_PIPE_H - -#include -#include -#include - -namespace DPL { -class NamedInputPipe : - public NamedBasePipe, - public FileInput -{}; -} // namespace DPL - -#endif // DPL_NAMED_PIPE_H diff --git a/modules_mobile/core/include/dpl/named_output_pipe.h b/modules_mobile/core/include/dpl/named_output_pipe.h deleted file mode 100644 index 573d1d2..0000000 --- a/modules_mobile/core/include/dpl/named_output_pipe.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file named_output_pipe.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of named output pipe - */ -#ifndef DPL_NAMED_OUTPUT_PIPE_H -#define DPL_NAMED_OUTPUT_PIPE_H - -#include -#include -#include -#include - -namespace DPL { -class NamedOutputPipe : - private Noncopyable, - public NamedBasePipe, - public AbstractWaitableOutput -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) - DECLARE_EXCEPTION_TYPE(Base, CloseFailed) - }; - - protected: - int m_fifo; - - public: - NamedOutputPipe(); - virtual ~NamedOutputPipe(); - - void Open(const std::string &fileName); - void Close(); - - // AbstractOutput - virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize); - - // AbstracWaitableOutput - virtual WaitableHandle WaitableWriteHandle() const; -}; -} // namespace DPL - -#endif // DPL_NAMED_OUTPUT_PIPE_H diff --git a/modules_mobile/core/include/dpl/noncopyable.h b/modules_mobile/core/include/dpl/noncopyable.h deleted file mode 100644 index 98d57dd..0000000 --- a/modules_mobile/core/include/dpl/noncopyable.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file noncopyable - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of noncopyable - */ -#ifndef DPL_NONCOPYABLE_H -#define DPL_NONCOPYABLE_H - -namespace DPL { -class Noncopyable -{ - private: - Noncopyable(const Noncopyable &); - const Noncopyable &operator=(const Noncopyable &); - - public: - Noncopyable(); - virtual ~Noncopyable(); -}; -} // namespace DPL - -#endif // DPL_NONCOPYABLE_H diff --git a/modules_mobile/core/include/dpl/once.h b/modules_mobile/core/include/dpl/once.h deleted file mode 100644 index ab3710f..0000000 --- a/modules_mobile/core/include/dpl/once.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file once.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of once - */ -#ifndef DPL_ONCE_H -#define DPL_ONCE_H - -#include -#include -#include -#include - -namespace DPL { -class Once : - private Noncopyable -{ - public: - typedef std::function Delegate; - - void Call(Delegate delegate); - - private: - Atomic m_atomic; - Mutex m_mutex; -}; -} // namespace DPL - -#endif // DPL_ONCE_H diff --git a/modules_mobile/core/include/dpl/optional.h b/modules_mobile/core/include/dpl/optional.h deleted file mode 100644 index f1fb9ba..0000000 --- a/modules_mobile/core/include/dpl/optional.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file optional_value.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - */ - -#ifndef DPL_OPTIONAL_H -#define DPL_OPTIONAL_H - -#include - -namespace DPL { -template -class Optional -{ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, NullReference) - }; - - public: - Optional() : - m_null(true), - m_value() - {} - - Optional(const Type& t) : - m_null(false), - m_value(t) - {} - - bool IsNull() const - { - return m_null; - } - - Type& operator*() - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return m_value; - } - - const Type& operator*() const - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return m_value; - } - - const Type* operator->() const - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return &m_value; - } - - Type* operator->() - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return &m_value; - } - - bool operator!() const - { - return m_null; - } - - Optional& operator=(const Type& other) - { - m_null = false; - m_value = other; - return *this; - } - - bool operator==(const Optional& aSecond) const - { - return LogicalOperator(*this, aSecond, - std::equal_to(), std::equal_to()); - } - - bool operator==(const Type& aSecond) const - { - return Optional(aSecond) == *this; - } - - bool operator!=(const Optional& aSecond) const - { - return !(*this == aSecond); - } - - bool operator<(const Optional& aSecond) const - { - return LogicalOperator(*this, aSecond, - std::less(), std::less()); - } - - bool operator>(const Optional& aSecond) const - { - return LogicalOperator(*this, aSecond, - std::greater(), std::greater()); - } - - bool operator<=(const Optional& aSecond) const - { - return *this == aSecond || *this < aSecond; - } - - bool operator>=(const Optional& aSecond) const - { - return *this == aSecond || *this > aSecond; - } - - static Optional Null; - - private: - bool m_null; - Type m_value; - - template - static bool LogicalOperator(const Optional& aFirst, - const Optional& aSecond, - taComparator aComparator, - taNullComparator aNullComparator) - { - if (aFirst.m_null == aSecond.m_null) { - if (aFirst.m_null) { - return taEquality; - } else { - return aComparator(aFirst.m_value, aSecond.m_value); - } - } else { - return aNullComparator(aFirst.m_null, aSecond.m_null); - } - } -}; - -template -Optional Optional::Null = Optional(); -} //namespace DPL - -template -std::ostream& operator<<(std::ostream& aStream, - const DPL::Optional& aOptional) -{ - if (aOptional.IsNull()) { - return aStream << "null optional"; - } else { - return aStream << *aOptional; - } -} - -#endif // DPL_OPTIONAL_VALUE_H diff --git a/modules_mobile/core/include/dpl/optional_typedefs.h b/modules_mobile/core/include/dpl/optional_typedefs.h deleted file mode 100644 index 2a3e716..0000000 --- a/modules_mobile/core/include/dpl/optional_typedefs.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef DPL_OPTIONAL_TYPEDEFS_H -#define DPL_OPTIONAL_TYPEDEFS_H - -#include -#include - -namespace DPL { -typedef Optional OptionalString; -typedef Optional OptionalInt; -typedef Optional OptionalUInt; -typedef Optional OptionalBool; -typedef Optional OptionalFloat; -} //namespace DPL - -#endif /* DPL_OPTIONAL_TYPEDEFS_H */ - diff --git a/modules_mobile/core/include/dpl/preprocessor.h b/modules_mobile/core/include/dpl/preprocessor.h deleted file mode 100644 index 6fca34c..0000000 --- a/modules_mobile/core/include/dpl/preprocessor.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file preprocessor.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file contains some usefull macros. - */ - -#ifndef DPL_PREPROCESSOR_H -#define DPL_PREPROCESSOR_H - -#define DPL_MACRO_CONCAT_IMPL(x, y) x##y -#define DPL_MACRO_CONCAT(x, y) DPL_MACRO_CONCAT_IMPL(x, y) - -#ifdef __COUNTER__ -#define DPL_ANONYMOUS_VARIABLE(name) DPL_MACRO_CONCAT(name, __COUNTER__) -#else -#define DPL_ANONYMOUS_VARIABLE(name) DPL_MACRO_CONCAT(name, __LINE__) -#endif - -#endif //DPL_PREPROCESSOR_H diff --git a/modules_mobile/core/include/dpl/read_write_mutex.h b/modules_mobile/core/include/dpl/read_write_mutex.h deleted file mode 100644 index 75d9f06..0000000 --- a/modules_mobile/core/include/dpl/read_write_mutex.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file read_write_mutex.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of read write mutex - */ -#ifndef DPL_READ_WRITE_MUTEX_H -#define DPL_READ_WRITE_MUTEX_H - -#include -#include -#include - -namespace DPL { -class ReadWriteMutex : - private Noncopyable -{ - public: - class ScopedReadLock : - private Noncopyable - { - private: - ReadWriteMutex *m_mutex; - - public: - ScopedReadLock(ReadWriteMutex *mutex); - virtual ~ScopedReadLock(); - }; - - class ScopedWriteLock : - private Noncopyable - { - private: - ReadWriteMutex *m_mutex; - - public: - ScopedWriteLock(ReadWriteMutex *mutex); - virtual ~ScopedWriteLock(); - }; - - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, DestroyFailed) - DECLARE_EXCEPTION_TYPE(Base, ReadLockFailed) - DECLARE_EXCEPTION_TYPE(Base, WriteLockFailed) - DECLARE_EXCEPTION_TYPE(Base, UnlockFailed) - }; - - private: - mutable pthread_rwlock_t m_rwlock; - - void ReadLock() const; - void WriteLock() const; - void Unlock() const; - - public: - explicit ReadWriteMutex(); - virtual ~ReadWriteMutex(); -}; -} // namespace DPL - -#endif // DPL_READ_WRITE_MUTEX_H diff --git a/modules_mobile/core/include/dpl/recursive_mutex.h b/modules_mobile/core/include/dpl/recursive_mutex.h deleted file mode 100644 index e4744cc..0000000 --- a/modules_mobile/core/include/dpl/recursive_mutex.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file recursive_mutex.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of recursive mutex - */ -#ifndef DPL_RECURSIVE_MUTEX_H -#define DPL_RECURSIVE_MUTEX_H - -#include -#include -#include - -namespace DPL { -class RecursiveMutex : - private Noncopyable -{ - public: - class ScopedLock : - private Noncopyable - { - private: - RecursiveMutex *m_mutex; - - public: - ScopedLock(RecursiveMutex *mutex); - virtual ~ScopedLock(); - }; - - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, DestroyFailed) - DECLARE_EXCEPTION_TYPE(Base, LockFailed) - DECLARE_EXCEPTION_TYPE(Base, UnlockFailed) - }; - - private: - mutable pthread_mutex_t m_mutex; - - void Lock() const; - void Unlock() const; - - public: - explicit RecursiveMutex(); - virtual ~RecursiveMutex(); -}; -} // namespace DPL - -#endif // DPL_RECURSIVE_MUTEX_H diff --git a/modules_mobile/core/include/dpl/scoped_array.h b/modules_mobile/core/include/dpl/scoped_array.h deleted file mode 100644 index 48d970f..0000000 --- a/modules_mobile/core/include/dpl/scoped_array.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_ptr.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped array RAII - */ -#ifndef DPL_SCOPED_ARRAY_H -#define DPL_SCOPED_ARRAY_H - -#include - -#include -#include - -namespace DPL { -template -struct ScopedArrayPolicy -{ - typedef Class* Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type ptr) - { - delete[] ptr; - } -}; - -template -class ScopedArray : public ScopedResource > -{ - typedef ScopedArrayPolicy Policy; - typedef ScopedResource BaseType; - - public: - explicit ScopedArray(Class *ptr = Policy::NullValue()) : BaseType(ptr) { } - - Class &operator [](std::ptrdiff_t k) const - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL array!"); - Assert(k >= 0 && "Negative array index"); - - return this->m_value[k]; - } -}; -} // namespace DPL - -#endif // DPL_SCOPED_PTR_H diff --git a/modules_mobile/core/include/dpl/scoped_dir.h b/modules_mobile/core/include/dpl/scoped_dir.h deleted file mode 100644 index b10b4cc..0000000 --- a/modules_mobile/core/include/dpl/scoped_dir.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_dir.h - * @author Iwanek Tomasz (t.iwanek@smasung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped directory existence - */ - -#ifndef DPL_SCOPED_DIR_H -#define DPL_SCOPED_DIR_H - -#include -#include -#include -#include - -namespace DPL { - -struct ScopedDirPolicy -{ - typedef std::string Type; - static Type NullValue(); - static void Destroy(Type ptr); -}; - -class ScopedDir : public ScopedResource -{ - typedef ScopedDirPolicy Policy; - typedef ScopedResource BaseType; - - public: - explicit ScopedDir(const std::string & str = Policy::NullValue(), mode_t mode = S_IRWXU|S_IRGRP|S_IXGRP); -}; -} // namespace DPL - -#endif // DPL_SCOPED_DIR_H diff --git a/modules_mobile/core/include/dpl/scoped_free.h b/modules_mobile/core/include/dpl/scoped_free.h deleted file mode 100644 index 7bebe39..0000000 --- a/modules_mobile/core/include/dpl/scoped_free.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_free.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped free RAII - */ - -#ifndef DPL_SCOPED_FREE_H -#define DPL_SCOPED_FREE_H - -#include -#include - -#include - -namespace DPL { -template -struct ScopedFreePolicy -{ - typedef Class* Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type ptr) - { - free(ptr); - } -}; - -template -class ScopedFree : public ScopedResource > -{ - typedef ScopedFreePolicy Policy; - typedef ScopedResource BaseType; - - public: - explicit ScopedFree(Memory *ptr = Policy::NullValue()) : BaseType(ptr) { } -}; -} // namespace DPL - -#endif // DPL_SCOPED_FREE_H diff --git a/modules_mobile/core/include/dpl/scoped_gpointer.h b/modules_mobile/core/include/dpl/scoped_gpointer.h deleted file mode 100644 index 289d469..0000000 --- a/modules_mobile/core/include/dpl/scoped_gpointer.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_gpointer.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped_gpointer - */ - -#ifndef DPL_SCOPED_GPOINTER_H -#define DPL_SCOPED_GPOINTER_H - -#include -#include -#include -#include - -namespace DPL { -struct ScopedGPointerPolicy -{ - typedef gpointer Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type pointer) - { - if (pointer != NULL) { - g_object_unref(pointer); - } - } -}; - -template -class ScopedGPointer : public DPL::ScopedResource -{ - typedef ScopedGPointerPolicy Policy; - typedef DPL::ScopedResource BaseType; - - public: - explicit ScopedGPointer(typename Policy::Type pointer = - Policy::NullValue()) : - BaseType(pointer) - {} - - Class *operator->() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return static_cast(this->m_value); - } - - Class & operator *() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return *static_cast(this->m_value); - } -}; -} // namespace DPL - -#endif // DPL_SCOPED_GPOINTER_H diff --git a/modules_mobile/core/include/dpl/scoped_ptr.h b/modules_mobile/core/include/dpl/scoped_ptr.h deleted file mode 100644 index 27ab3bf..0000000 --- a/modules_mobile/core/include/dpl/scoped_ptr.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file scoped_ptr.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped pointer RAII - */ -#ifndef DPL_SCOPED_PTR_H -#define DPL_SCOPED_PTR_H - -#include - -#include -#include - -namespace DPL { -template -struct ScopedPtrPolicy -{ - typedef Class* Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type ptr) - { - delete ptr; - } -}; - -template > -class ScopedPtr : public ScopedResource -{ - typedef ClassPolicy Policy; - typedef ScopedResource BaseType; - - public: - explicit ScopedPtr(Class *ptr = Policy::NullValue()) : BaseType(ptr) { } - - Class *operator->() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return this->m_value; - } - - Class &operator *() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return *this->m_value; - } -}; -} // namespace DPL - -#endif // DPL_SCOPED_PTR_H diff --git a/modules_mobile/core/include/dpl/scoped_resource.h b/modules_mobile/core/include/dpl/scoped_resource.h deleted file mode 100644 index 63287da..0000000 --- a/modules_mobile/core/include/dpl/scoped_resource.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file scoped_resource.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped resource pattern - */ -#ifndef DPL_SCOPED_RESOURCE_H -#define DPL_SCOPED_RESOURCE_H - -#include - -namespace DPL { -template -class ScopedResource : - private Noncopyable -{ - public: - typedef typename ClassPolicy::Type ValueType; - typedef ScopedResource ThisType; - - protected: - ValueType m_value; - - public: - explicit ScopedResource(ValueType value) : m_value(value) { } - - ~ScopedResource() - { - ClassPolicy::Destroy(m_value); - } - - ValueType Get() const - { - return m_value; - } - - void Reset(ValueType value = ClassPolicy::NullValue()) - { - ClassPolicy::Destroy(m_value); - m_value = value; - } - - ValueType Release() - { - ValueType value = m_value; - m_value = ClassPolicy::NullValue(); - return value; - } - typedef ValueType ThisType::*UnknownBoolType; - - operator UnknownBoolType() const - { - return m_value == ClassPolicy::NullValue() ? - 0 : //0 is valid here because it converts to false - &ThisType::m_value; //it converts to true - } - - bool operator !() const - { - return m_value == ClassPolicy::NullValue(); - } -}; -} // namespace DPL - -#endif // DPL_SCOPED_RESOURCE_H diff --git a/modules_mobile/core/include/dpl/semaphore.h b/modules_mobile/core/include/dpl/semaphore.h deleted file mode 100644 index 0505621..0000000 --- a/modules_mobile/core/include/dpl/semaphore.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file semaphore.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of semaphore - */ -#ifndef DPL_SEMAPHORE_H -#define DPL_SEMAPHORE_H - -#include -#include -#include -#include - -namespace DPL { -class Semaphore : - private Noncopyable -{ - public: - class ScopedLock : - private Noncopyable - { - private: - Semaphore *m_semaphore; - - public: - explicit ScopedLock(Semaphore *semaphore); - ~ScopedLock(); - }; - - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, LockFailed) - DECLARE_EXCEPTION_TYPE(Base, UnlockFailed) - DECLARE_EXCEPTION_TYPE(Base, RemoveFailed) - }; - - private: - enum Type - { - Type_Unnamed, - Type_Named - }; - - Type m_type; - - mutable union - { - struct - { - sem_t handle; - } unnamed; - - struct - { - sem_t *handle; - char *name; - bool unlinkOnDestroy; - } named; - } m_semaphore; - - sem_t *InternalGet() const; - void InternalDestroy(); - - public: - /** - * decrement the semaphore counter - */ - void Lock() const; - - /** - * increment the semaphore counter - */ - void Unlock() const; - - /** - * Remove a named semaphore - * - * @param fileName Name of the semaphore - */ - static void Remove(const std::string &fileName); - - /** - * Open an unnamed semaphore - * - * @param maxLockCount Maximum number of threads allowed to enter semaphore - */ - explicit Semaphore(size_t maxLockCount); - - /** - * Open a named semaphore - * - * @param fileName Semaphore filename - * @param allowCreate Should non-existing semaphore be created - * @param maxLockCount Maximum number of threads allowed to enter semaphore - * @param permissions Semaphore file permissions - * @param unlinkOnDestroy Should semaphore file be deleted on destruction - */ - explicit Semaphore(const std::string &fileName, - bool allowCreate = true, - bool exclusiveCreate = false, - size_t maxLockCount = 1, - int permissions = 0600, - bool unlinkOnDestroy = false); - - /** - * Destroy a semaphore - */ - ~Semaphore(); -}; -} // namespace DPL - -#endif // DPL_SEMAPHORE_H diff --git a/modules_mobile/core/include/dpl/serialization.h b/modules_mobile/core/include/dpl/serialization.h deleted file mode 100644 index d72c488..0000000 --- a/modules_mobile/core/include/dpl/serialization.h +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file serialization.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Interfaces and templates used for data serialization. - */ -#ifndef SERIALIZATION_H -#define SERIALIZATION_H - -#include -#include -#include -#include - -namespace DPL { -// Abstract data stream buffer -class IStream -{ - public: - virtual void Read(size_t num, void * bytes) = 0; - virtual void Write(size_t num, const void * bytes) = 0; - virtual ~IStream(){} -}; - -// Serializable interface -class ISerializable -{ - public: - /* ISerializable(){}; - * ISerializable(IStream&){}; */ - virtual void Serialize(IStream &) const = 0; - virtual ~ISerializable(){} -}; - -struct Serialization { - // serialization - // normal functions - - // ISerializable objects - static void Serialize(IStream& stream, const ISerializable& object) - { - object.Serialize(stream); - } - static void Serialize(IStream& stream, const ISerializable* const object) - { - object->Serialize(stream); - } - - // unsigned int - static void Serialize(IStream& stream, const unsigned value) - { - stream.Write(sizeof(value), &value); - } - static void Serialize(IStream& stream, const unsigned* const value) - { - stream.Write(sizeof(*value), value); - } - - // int - static void Serialize(IStream& stream, const int value) - { - stream.Write(sizeof(value), &value); - } - static void Serialize(IStream& stream, const int* const value) - { - stream.Write(sizeof(*value), value); - } - - // bool - static void Serialize(IStream& stream, const bool value) - { - stream.Write(sizeof(value), &value); - } - static void Serialize(IStream& stream, const bool* const value) - { - stream.Write(sizeof(*value), value); - } - - // std::string - static void Serialize(IStream& stream, const std::string& str) - { - int length = str.size(); - stream.Write(sizeof(length), &length); - stream.Write(length, str.c_str()); - } - static void Serialize(IStream& stream, const std::string* const str) - { - int length = str->size(); - stream.Write(sizeof(length), &length); - stream.Write(length, str->c_str()); - } - - // STL templates - - // std::list - template - static void Serialize(IStream& stream, const std::list& list) - { - int length = list.size(); - stream.Write(sizeof(length), &length); - for (typename std::list::const_iterator list_iter = list.begin(); - list_iter != list.end(); list_iter++) - { - Serialize(stream, *list_iter); - } - } - template - static void Serialize(IStream& stream, const std::list* const list) - { - Serialize(stream, *list); - } - - // std::vector - template - static void Serialize(IStream& stream, const std::vector& vec) - { - int length = vec.size(); - stream.Write(sizeof(length), &length); - for (typename std::vector::const_iterator vec_iter = vec.begin(); - vec_iter != vec.end(); vec_iter++) - { - Serialize(stream, *vec_iter); - } - } - template - static void Serialize(IStream& stream, const std::vector* const vec) - { - Serialize(stream, *vec); - } - - // std::pair - template - static void Serialize(IStream& stream, const std::pair& p) - { - Serialize(stream, p.first); - Serialize(stream, p.second); - } - template - static void Serialize(IStream& stream, const std::pair* const p) - { - Serialize(stream, *p); - } - - // std::map - template - static void Serialize(IStream& stream, const std::map& map) - { - int length = map.size(); - stream.Write(sizeof(length), &length); - typename std::map::const_iterator it; - for (it = map.begin(); it != map.end(); ++it) { - Serialize(stream, (*it).first); - Serialize(stream, (*it).second); - } - } - template - static void Serialize(IStream& stream, const std::map* const map) - { - Serialize(stream, *map); - } -}; // struct Serialization - -struct Deserialization { - // deserialization - // normal functions - - // ISerializable objects - // T instead of ISerializable is needed to call proper constructor - template - static void Deserialize(IStream& stream, T& object) - { - object = T(stream); - } - template - static void Deserialize(IStream& stream, T*& object) - { - object = new T(stream); - } - - // unsigned int - static void Deserialize(IStream& stream, unsigned& value) - { - stream.Read(sizeof(value), &value); - } - static void Deserialize(IStream& stream, unsigned*& value) - { - value = new unsigned; - stream.Read(sizeof(*value), value); - } - - // int - static void Deserialize(IStream& stream, int& value) - { - stream.Read(sizeof(value), &value); - } - static void Deserialize(IStream& stream, int*& value) - { - value = new int; - stream.Read(sizeof(*value), value); - } - - // bool - static void Deserialize(IStream& stream, bool& value) - { - stream.Read(sizeof(value), &value); - } - static void Deserialize(IStream& stream, bool*& value) - { - value = new bool; - stream.Read(sizeof(*value), value); - } - - // std::string - static void Deserialize(IStream& stream, std::string& str) - { - int length; - stream.Read(sizeof(length), &length); - char * buf = new char[length + 1]; - stream.Read(length, buf); - buf[length] = 0; - str = std::string(buf); - delete[] buf; - } - static void Deserialize(IStream& stream, std::string*& str) - { - int length; - stream.Read(sizeof(length), &length); - char * buf = new char[length + 1]; - stream.Read(length, buf); - buf[length] = 0; - str = new std::string(buf); - delete[] buf; - } - - // STL templates - - // std::list - template - static void Deserialize(IStream& stream, std::list& list) - { - int length; - stream.Read(sizeof(length), &length); - for (int i = 0; i < length; ++i) { - T obj; - Deserialize(stream, obj); - list.push_back(obj); - } - } - template - static void Deserialize(IStream& stream, std::list*& list) - { - list = new std::list; - Deserialize(stream, *list); - } - - // std::vector - template - static void Deserialize(IStream& stream, std::vector& vec) - { - int length; - stream.Read(sizeof(length), &length); - for (int i = 0; i < length; ++i) { - T obj; - Deserialize(stream, obj); - vec.push_back(obj); - } - } - template - static void Deserialize(IStream& stream, std::vector*& vec) - { - vec = new std::vector; - Deserialize(stream, *vec); - } - - // std::pair - template - static void Deserialize(IStream& stream, std::pair& p) - { - Deserialize(stream, p.first); - Deserialize(stream, p.second); - } - template - static void Deserialize(IStream& stream, std::pair*& p) - { - p = new std::pair; - Deserialize(stream, *p); - } - - // std::map - template - static void Deserialize(IStream& stream, std::map& map) - { - int length; - stream.Read(sizeof(length), &length); - for (int i = 0; i < length; ++i) { - K key; - T obj; - Deserialize(stream, key); - Deserialize(stream, obj); - map[key] = obj; - } - } - template - static void Deserialize(IStream& stream, std::map*& map) - { - map = new std::map; - Deserialize(stream, *map); - } -}; // struct Deserialization -} // namespace DPL - -#endif // SERIALIZATION_H diff --git a/modules_mobile/core/include/dpl/shared_ptr.h b/modules_mobile/core/include/dpl/shared_ptr.h deleted file mode 100644 index 0ae6245..0000000 --- a/modules_mobile/core/include/dpl/shared_ptr.h +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file shared_ptr.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of shared pointer RAII - */ -#ifndef DPL_SHARED_PTR_H -#define DPL_SHARED_PTR_H - -#include -#include -#include -#include -#include - -namespace DPL { -struct StaticPointerCastTag {}; -struct ConstPointerCastTag {}; -struct DynamicPointerCastTag {}; - -struct SharedCounter -{ - SharedCounter() : - ref(1) - {} - - Atomic ref; -}; - -template -class EnableSharedFromThis; - -template -inline void _Internal_AcceptSharedPtr(SharedCounter *counter, - Other *other, - EnableSharedFromThis *otherBase) -{ - otherBase->_Internal_AcceptSharedPtr(counter, other); -} - -struct AnyPointer -{ - template - AnyPointer(Other *) - {} -}; - -inline void _Internal_AcceptSharedPtr(SharedCounter *, AnyPointer, AnyPointer) -{} - -template -class SharedPtr -{ - public: - typedef Class ValueType; - typedef SharedPtr ThisType; - - private: - SharedCounter *m_counter; - Class *m_ptr; - - void AttachCounter(const SharedCounter *counter) - { - // Attention: R-Value const cast - m_counter = const_cast(counter); - - if (m_counter != NULL) { - ++m_counter->ref; - } - } - - void DetachCounter() - { - if (m_counter) { - if (!--m_counter->ref) { - delete m_ptr; - delete m_counter; - } - - m_counter = NULL; - m_ptr = NULL; - } - } - - public: - SharedPtr() : - m_counter(NULL), - m_ptr(NULL) - {} - - explicit SharedPtr(Class *ptr) : - m_counter(NULL), - m_ptr(ptr) - { - if (m_ptr != NULL) { - m_counter = new SharedCounter(); - _Internal_AcceptSharedPtr(m_counter, m_ptr, m_ptr); - } - } - - SharedPtr(const SharedPtr &other) : - m_counter(NULL), - m_ptr(other.m_ptr) - { - AttachCounter(other.m_counter); - } - - SharedPtr(SharedCounter *counter, Class *ptr) : - m_counter(NULL), - m_ptr(ptr) - { - AttachCounter(counter); - } - - template - friend class SharedPtr; - - template - SharedPtr(const SharedPtr &other, const StaticPointerCastTag &) : - m_counter(NULL), - m_ptr(NULL) - { - m_ptr = static_cast(other.m_ptr); - AttachCounter(other.m_counter); - } - - template - SharedPtr(const SharedPtr &other, const ConstPointerCastTag &) : - m_counter(NULL), - m_ptr(NULL) - { - m_ptr = const_cast(other.m_ptr); - AttachCounter(other.m_counter); - } - - template - SharedPtr(const SharedPtr &other, const DynamicPointerCastTag &) : - m_counter(NULL), - m_ptr(NULL) - { - Class *ptr = dynamic_cast(other.Get()); - - if (ptr == NULL) { - return; - } - - m_ptr = ptr; - AttachCounter(other.m_counter); - } - - virtual ~SharedPtr() - { - DetachCounter(); - } - - Class *Get() const - { - return m_counter == NULL ? NULL : m_ptr; - } - - Class *operator->() const - { - Assert(m_counter != NULL && "Dereference of shared NULL pointer!"); - return m_ptr; - } - - Class &operator *() const - { - Assert(m_counter != NULL && "Dereference of shared NULL pointer!"); - return *m_ptr; - } - - void Reset(Class *ptr = NULL) - { - DetachCounter(); - - if (ptr != NULL) { - m_ptr = ptr; - m_counter = new SharedCounter(); - _Internal_AcceptSharedPtr(m_counter, m_ptr, m_ptr); - } - } - - SharedPtr &operator=(const SharedPtr &other) - { - if (this != &other) { - DetachCounter(); - m_ptr = other.m_ptr; - AttachCounter(other.m_counter); - } - - return *this; - } - - Atomic::ValueType GetUseCount() const - { - if (m_counter == NULL) { - return Atomic::ValueType(0); - } - - return m_counter->ref; - } - - DPL_IMPLEMENT_BOOL_OPERATOR(ValueType, ThisType, m_counter, m_ptr) -}; - -template -SharedPtr StaticPointerCast(const SharedPtr &ptr) -{ - return SharedPtr(ptr, StaticPointerCastTag()); -} - -template -SharedPtr ConstPointerCast(const SharedPtr &ptr) -{ - return SharedPtr(ptr, ConstPointerCastTag()); -} - -template -SharedPtr DynamicPointerCast(const SharedPtr &ptr) -{ - return SharedPtr(ptr, DynamicPointerCastTag()); -} - -template -inline bool operator ==(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() == second.Get(); -} - -template -inline bool operator !=(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() != second.Get(); -} - -template -inline bool operator <(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() < second.Get(); -} -template -inline bool operator >(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() > second.Get(); -} - -template -inline bool operator <=(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() <= second.Get(); -} - -template -inline bool operator >=(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() >= second.Get(); -} -} // namespace DPL - -#endif // DPL_SHARED_PTR_H diff --git a/modules_mobile/core/include/dpl/single_instance.h b/modules_mobile/core/include/dpl/single_instance.h deleted file mode 100644 index afcaf52..0000000 --- a/modules_mobile/core/include/dpl/single_instance.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file single_instance.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of single instance - */ -#ifndef DPL_SINGLE_INSTANCE_H -#define DPL_SINGLE_INSTANCE_H - -#include -#include -#include - -namespace DPL { -class SingleInstance : - private Noncopyable -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, LockError) - DECLARE_EXCEPTION_TYPE(Base, ReleaseError) - }; - - private: - bool m_locked; - int m_fdLock; - - public: - SingleInstance(); - virtual ~SingleInstance(); - - bool TryLock(const std::string &lockName); - void Release(); -}; -} // namespace DPL - -#endif // DPL_SINGLE_INSTANCE_H diff --git a/modules_mobile/core/include/dpl/singleton.h b/modules_mobile/core/include/dpl/singleton.h deleted file mode 100644 index 530f5c1..0000000 --- a/modules_mobile/core/include/dpl/singleton.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file singleton.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of singleton - */ -#ifndef DPL_SINGLETON_H -#define DPL_SINGLETON_H - -#include -#include -#include - -namespace DPL { -template -class Singleton : - private Class -{ - // - // Note: - // - // To remove posibility of instantiating directly Class, - // make Class' default constructor protected - // - - private: - Singleton() - {} - - typedef Optional OptionalThreadPtr; - - static Singleton &InternalInstance(); - - public: - virtual ~Singleton() - {} - - static Class &Instance(); -}; -} // namespace DPL - -#endif // DPL_SINGLETON_H diff --git a/modules_mobile/core/include/dpl/singleton_impl.h b/modules_mobile/core/include/dpl/singleton_impl.h deleted file mode 100644 index 12dbf32..0000000 --- a/modules_mobile/core/include/dpl/singleton_impl.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file singleton_impl.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of singleton - */ -#ifndef DPL_SINGLETON_IMPL_H -#define DPL_SINGLETON_IMPL_H - -/* - * WARNING! - * - * If some singleton's implementation uses another singletons implementation, - * those templates make the second singleton a dubleton. Be warned. Try to use - * singleton_safe_impl.h if possible. - */ - -namespace DPL { -template -Singleton& Singleton::InternalInstance() -{ - static Singleton instance; - return instance; -} - -template -Class &Singleton::Instance() -{ - Singleton& instance = Singleton::InternalInstance(); - return instance; -} -} // namespace DPL - -#define IMPLEMENT_SINGLETON(Type) \ - template DPL::Singleton&DPL::Singleton::InternalInstance(); \ - template Type & DPL::Singleton::Instance(); \ - -#endif // DPL_SINGLETON_IMPL_H diff --git a/modules_mobile/core/include/dpl/singleton_safe_impl.h b/modules_mobile/core/include/dpl/singleton_safe_impl.h deleted file mode 100644 index c8923b7..0000000 --- a/modules_mobile/core/include/dpl/singleton_safe_impl.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file singleton_safe_impl.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of singleton - */ -#ifndef DPL_SINGLETON_SAFE_IMPL_H -#define DPL_SINGLETON_SAFE_IMPL_H - -#define IMPLEMENT_SAFE_SINGLETON(Class) \ - namespace DPL { \ - template<> \ - Singleton&Singleton::InternalInstance() \ - { \ - static Singleton instance; \ - return instance; \ - } \ - \ - template<> \ - Class & Singleton::Instance() \ - { \ - Singleton& instance = Singleton::InternalInstance(); \ - return instance; \ - } \ - \ - template Singleton&Singleton::InternalInstance(); \ - template Class & Singleton::Instance(); \ - } // namespace DPL - -#endif // DPL_SINGLETON_SAFE_IMPL_H diff --git a/modules_mobile/core/include/dpl/sstream.h b/modules_mobile/core/include/dpl/sstream.h deleted file mode 100644 index aba4e0f..0000000 --- a/modules_mobile/core/include/dpl/sstream.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file sstream.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief String stream typedefs - */ -#ifndef DPL_CORE_INCLUDE_SSTREAM_H_ -#define DPL_CORE_INCLUDE_SSTREAM_H_ - -#include -#include - -namespace DPL { -// @brief DPL IStringStream -typedef std::basic_istringstream IStringStream; - -// @brief DPL OStringStream -typedef std::basic_ostringstream OStringStream; -} //namespace DPL - -#endif // DPL_CORE_INCLUDE_SSTREAM_H_ diff --git a/modules_mobile/core/include/dpl/static_block.h b/modules_mobile/core/include/dpl/static_block.h deleted file mode 100644 index 62fae46..0000000 --- a/modules_mobile/core/include/dpl/static_block.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file static_block.h - * @author Iwanek Tomasz (t.iwanek@samsung.com) - * @version 1.0 - */ -#ifndef STATIC_BLOCK_H -#define STATIC_BLOCK_H - -#include - -//NOTE: order of static initialization of blocks is not specified - -// to be used only outside class of function scopes -#define STATIC_BLOCK_IMPL( UNIQUE ) \ - static void DPL_MACRO_CONCAT( _staticBlock , UNIQUE() ); \ - static int DPL_MACRO_CONCAT( _staticBlockInitAssurence , UNIQUE ) = []() -> int \ - { \ - (void) DPL_MACRO_CONCAT( _staticBlockInitAssurence , UNIQUE ); \ - DPL_MACRO_CONCAT( _staticBlock , UNIQUE() ); \ - return 0; \ - }(); \ - void DPL_MACRO_CONCAT( _staticBlock , UNIQUE() ) \ - -#define STATIC_BLOCK \ - STATIC_BLOCK_IMPL( __COUNTER__ ) \ - -//for class implementation -#define STATIC_BLOCK_CLASS( classname, methodname ) STATIC_BLOCK { classname::methodname(); } - -#endif // STATIC_BLOCK_H diff --git a/modules_mobile/core/include/dpl/string.h b/modules_mobile/core/include/dpl/string.h deleted file mode 100644 index e4dc923..0000000 --- a/modules_mobile/core/include/dpl/string.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file string.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - */ -#ifndef DPL_STRING -#define DPL_STRING - -#include -#include -#include -#include -#include - -namespace DPL { -// @brief DPL string -typedef std::basic_string String; - -// @brief String exception class -class StringException -{ - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - - // @brief Invalid init for UTF8 to UTF32 converter - DECLARE_EXCEPTION_TYPE(Base, IconvInitErrorUTF8ToUTF32) - - // @brief Invalid taStdContainerinit for UTF32 to UTF32 converter - DECLARE_EXCEPTION_TYPE(Base, IconvInitErrorUTF32ToUTF8) - - // @brief Invalid conversion for UTF8 to UTF32 converter - DECLARE_EXCEPTION_TYPE(Base, IconvConvertErrorUTF8ToUTF32) - - // @brief Invalid conversion for UTF8 to UTF32 converter - DECLARE_EXCEPTION_TYPE(Base, IconvConvertErrorUTF32ToUTF8) - - // @brief Invalid ASCII character detected in FromASCII - DECLARE_EXCEPTION_TYPE(Base, InvalidASCIICharacter) - - // @brief Invalid ASCII character detected in FromASCII - DECLARE_EXCEPTION_TYPE(Base, ICUInvalidCharacterFound) -}; - -//!\brief convert ASCII string to DPL::String -String FromASCIIString(const std::string& aString); - -//!\brief convert UTF32 string to DPL::String -String FromUTF32String(const std::wstring& aString); - -//@brief Returns String object created from UTF8 string -//@param[in] aString input UTF-8 string -String FromUTF8String(const std::string& aString); - -//@brief Returns String content as std::string -std::string ToUTF8String(const String& aString); - -//@brief Compare two unicode strings -int StringCompare(const String &left, - const String &right, - bool caseInsensitive = false); - -//@brief Splits the string into substrings. -//@param[in] str Input string -//@param[in] delimiters array or string containing a sequence of substring -// delimiters. Can be also a single delimiter character. -//@param[in] it InserterIterator that is used to save the generated substrings. -template -void Tokenize(const StringType& str, - const Delimiters& delimiters, - InserterIterator it, - bool ignoreEmpty = false) -{ - typename StringType::size_type nextSearchStart = 0; - typename StringType::size_type pos; - typename StringType::size_type length; - - while (true) { - pos = str.find_first_of(delimiters, nextSearchStart); - length = - ((pos == StringType::npos) ? str.length() : pos) - nextSearchStart; - - if (!ignoreEmpty || length > 0) { - *it = str.substr(nextSearchStart, length); - it++; - } - - if (pos == StringType::npos) { - return; - } - - nextSearchStart = pos + 1; - } -} - -namespace Utils { - -template class ConcatFunc : public std::binary_function -{ -public: - explicit ConcatFunc(const T & val) : m_delim(val) {} - T operator()(const T & arg1, const T & arg2) const - { - return arg1 + m_delim + arg2; - } -private: - T m_delim; -}; - -} - -template -typename ForwardIterator::value_type Join(ForwardIterator begin, ForwardIterator end, typename ForwardIterator::value_type delim) -{ - typedef typename ForwardIterator::value_type value; - if(begin == end) return value(); - Utils::ConcatFunc func(delim); - ForwardIterator init = begin; - return std::accumulate(++begin, end, *init, func); -} - -template void TrimLeft(StringType & obj, typename StringType::const_pointer separators) -{ - obj.erase(0, obj.find_first_not_of(separators)); -} - -template void TrimRight(StringType & obj, typename StringType::const_pointer separators) -{ - obj.erase(obj.find_last_not_of(separators)+1); -} - -template void Trim(StringType & obj, typename StringType::const_pointer separators) -{ - TrimLeft(obj, separators); - TrimRight(obj, separators); -} - - -} //namespace DPL - -std::ostream& operator<<(std::ostream& aStream, const DPL::String& aString); - -#endif // DPL_STRING diff --git a/modules_mobile/core/include/dpl/task.h b/modules_mobile/core/include/dpl/task.h deleted file mode 100644 index 393ab4d..0000000 --- a/modules_mobile/core/include/dpl/task.h +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file task.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Radoslaw Wicik (r.wicik@samsung.com) - * @version 1.0 - * @brief Header file for abstaract task definition - */ -#ifndef DPL_TASK_H -#define DPL_TASK_H - -#include -#include -#include -#include -#include - -namespace DPL { -class TaskList; - -class Task : - private Noncopyable -{ - public: - virtual ~Task() {} - - virtual bool NextStep() = 0; - virtual bool Abort() = 0; - virtual size_t GetStepCount() const = 0; -}; - -template -class TaskDecl : - public Task -{ - protected: - typedef void (Impl::*Step)(); - - private: - typedef std::list StepList; - - StepList m_steps; - StepList m_abortSteps; - typename StepList::iterator m_currentStep; - typename StepList::iterator m_nextStep; - bool m_switched; - - Impl *m_impl; - bool m_running; - - protected: - void AddStep(Step step) - { - Assert(!m_running && "AddStep is not allowed after calling NextStep!"); - Assert(m_steps.end() == std::find(m_steps.begin(), - m_steps.end(), - step) && - "The same step started twice is not supported"); - m_steps.push_back(step); - m_nextStep = m_steps.begin(); - } - - void AddAbortStep(Step step) - { - Assert( - !m_running && "AddAbortStep is not allowed after calling NextStep!"); - Assert(m_abortSteps.end() == - std::find(m_abortSteps.begin(), - m_abortSteps.end(), - step) && - "The same step started twice is not supported"); - m_abortSteps.push_front(step); - } - - void SwitchToStep(Step step) - { - /// @TODO There can be problem here if user sets the same method two - // times in task list. - typename StepList::iterator i = std::find(m_steps.begin(), - m_steps.end(), step); - Assert(i != m_steps.end()); - m_nextStep = i; - m_switched = true; - } - - Step GetCurrentStep() const - { - if (m_currentStep == m_steps.end()) { - return NULL; - } - - return *m_currentStep; - } - - public: - TaskDecl(Impl *impl) : - m_switched(false), - m_impl(impl), - m_running(false) - { - Assert(this == m_impl); - m_currentStep = m_steps.end(); - m_nextStep = m_steps.end(); - } - - bool NextStep() - { - m_running = true; - - Assert( - m_nextStep != m_steps.end() && - "Step list is empty or all steps done"); - - m_switched = false; - - Step call = *m_nextStep; - (*m_impl.*call)(); - - m_currentStep = m_nextStep; - - if (m_switched) { - return true; - } else { - return ++m_nextStep != m_steps.end(); - } - } - - bool Abort() - { - m_running = true; - - m_steps.clear(); - - if (m_abortSteps.empty()) { - return false; - } - - FOREACH(it, m_abortSteps) - m_steps.push_back(*it); - - m_nextStep = m_steps.begin(); - - m_abortSteps.clear(); - - return true; - } - - size_t GetStepCount() const - { - return static_cast(m_steps.size()); - } -}; -} // namespace DPL - -#endif // DPL_TASK_H diff --git a/modules_mobile/core/include/dpl/task_list.h b/modules_mobile/core/include/dpl/task_list.h deleted file mode 100644 index 2b3d34a..0000000 --- a/modules_mobile/core/include/dpl/task_list.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file task_list.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Radoslaw Wicik (r.wicik@samsung.com) - * @version 1.0 - * @brief Header file for task list - */ -#ifndef DPL_TASK_LIST_H -#define DPL_TASK_LIST_H - -#include -#include - -namespace DPL { -class TaskList : - public Task -{ - private: - typedef std::list Tasks; - - Tasks m_tasks; - Tasks::iterator m_currentTask; - bool m_switched; - - bool m_running; - - protected: - void AddTask(Task *task); - void SwitchToTask(Task *task); - - public: - TaskList(); - virtual ~TaskList(); - - bool NextStep(); - bool Abort(); - size_t GetTaskCount() const; - size_t GetStepCount() const; -}; -} // namespace DPL - -#endif // DPL_TASK_LIST_H diff --git a/modules_mobile/core/include/dpl/thread.h b/modules_mobile/core/include/dpl/thread.h deleted file mode 100644 index a0040eb..0000000 --- a/modules_mobile/core/include/dpl/thread.h +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file thread.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of thread - */ -#ifndef DPL_THREAD_H -#define DPL_THREAD_H - -#include -//#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -class Thread : - private Noncopyable, - public WaitableHandleWatchSupport -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, DestroyFailed) - DECLARE_EXCEPTION_TYPE(Base, RunFailed) - DECLARE_EXCEPTION_TYPE(Base, QuitFailed) - DECLARE_EXCEPTION_TYPE(Base, UnmanagedThread) - }; - - typedef void (*EventDeleteProc)(void *event, void *userParam); - typedef void (*EventDispatchProc)(void *event, void *userParam); - - protected: - /** - * Main thread entry - * The method is intended to be overloaded with custom code. - * Default implementation just executes Exec method to process - * all thread exents - */ - virtual int ThreadEntry(); - - /** - * Start processing of thread events - */ - int Exec(); - - private: - struct InternalEvent - { - void *event; - void *userParam; - EventDispatchProc eventDispatchProc; - EventDeleteProc eventDeleteProc; - - InternalEvent(void *eventArg, - void *userParamArg, - EventDispatchProc eventDispatchProcArg, - EventDeleteProc eventDeleteProcArg) : - event(eventArg), - userParam(userParamArg), - eventDispatchProc(eventDispatchProcArg), - eventDeleteProc(eventDeleteProcArg) - {} - }; - - struct InternalTimedEvent : - InternalEvent - { - unsigned long dueTimeMiliseconds; - unsigned long registerTimeMiliseconds; - - InternalTimedEvent(void *eventArg, - void *userParamArg, - unsigned long dueTimeMilisecondsArg, - unsigned long registerTimeMilisecondsArg, - EventDispatchProc eventDispatchProcArg, - EventDeleteProc eventDeleteProcArg) : - InternalEvent(eventArg, - userParamArg, - eventDispatchProcArg, - eventDeleteProcArg), - dueTimeMiliseconds(dueTimeMilisecondsArg), - registerTimeMiliseconds(registerTimeMilisecondsArg) - {} - - bool operator<(const InternalTimedEvent &other) - { - return registerTimeMiliseconds + dueTimeMiliseconds > - other.registerTimeMiliseconds + other.dueTimeMiliseconds; - } - }; - - // Internal event list - typedef std::list InternalEventList; - - // Internal timed event list - typedef std::vector InternalTimedEventVector; - - // State managment - pthread_t m_thread; - volatile bool m_abandon; - volatile bool m_running; - Mutex m_stateMutex; - WaitableEvent m_quitEvent; - - // Event processing - Mutex m_eventMutex; - InternalEventList m_eventList; - WaitableEvent m_eventInvoker; - - // Timed events processing - Mutex m_timedEventMutex; - InternalTimedEventVector m_timedEventVector; - WaitableEvent m_timedEventInvoker; - - // WaitableHandleWatchSupport - virtual Thread *GetInvokerThread(); - virtual void HandleDirectInvoker(); - bool m_directInvoke; - - // Internals - unsigned long GetCurrentTimeMiliseconds() const; - void ProcessEvents(); - void ProcessTimedEvents(); - - static void *StaticThreadEntry(void *param); - - public: - explicit Thread(); - virtual ~Thread(); - - /** - * Run thread. Does nothing if thread is already running - */ - void Run(); - - /** - * Send quit message to thread and wait for its end - * Does nothing is thread is not running - */ - void Quit(); - - /** - * Checks if current thread is main one - * Returns true if it is main program thread, false otherwise - */ - static bool IsMainThread(); - - /** - * Current thread retrieval - * Returns DPL thread handle or NULL if it is main program thread - */ - static Thread *GetCurrentThread(); - - /** - * Low-level event push, usually used only by EventSupport - */ - void PushEvent(void *event, - EventDispatchProc eventDispatchProc, - EventDeleteProc eventDeleteProc, - void *userParam); - - /** - * Low-level timed event push, usually used only by EventSupport - */ - void PushTimedEvent(void *event, - double dueTimeSeconds, - EventDispatchProc eventDispatchProc, - EventDeleteProc eventDeleteProc, - void *userParam); - - /** - * Sleep for a number of seconds - */ - static void Sleep(uint64_t seconds); - - /** - * Sleep for a number of miliseconds - */ - static void MiliSleep(uint64_t miliseconds); - - /** - * Sleep for a number of microseconds - */ - static void MicroSleep(uint64_t microseconds); - - /** - * Sleep for a number of nanoseconds - */ - static void NanoSleep(uint64_t nanoseconds); -}; - -extern bool g_TLSforMainCreated; - -// In case of using TLV in main thread, pthread_exit(NULL) has to be called in -// this thread explicitly. -// On the other hand, possibly, because of the kernel bug, there exist -// a problem, if any other thread than main exist during pthread_exit call -// (process can become non-responsive) -// TODO further investigation is required. -template -class ThreadLocalVariable : - public Noncopyable -{ - public: - typedef Type ValueType; - - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, NullReference) - DECLARE_EXCEPTION_TYPE(Base, KeyCreateFailed) - }; - - private: - pthread_key_t m_key; - - struct ManagedValue - { - ValueType value; - Optional guardKey; - }; - - static void MainThreadExitClean() - { - // There is a possible bug in kernel. If this function is called - // before ALL threads are closed, process will hang! - // Because of that, by default this function has to be called in well - // known "threads state". - - // pthread_exit(NULL); - } - - static void InternalDestroy(void *specific) - { - // Destroy underlying type - ManagedValue *instance = static_cast(specific); - if (instance->guardKey.IsNull()) { - delete instance; - } else { - int result = pthread_setspecific(*(instance->guardKey), instance); - - Assert(result == 0 && - "Failed to set thread local variable"); - } - } - - Type &Reference(bool allowInstantiate = false) - { - ManagedValue *instance = - static_cast(pthread_getspecific(m_key)); - - if (!instance) { - // Check if it is allowed to instantiate - if (!allowInstantiate) { - Throw(typename Exception::NullReference); - } - - // checking, if specific data is created for Main thread - // If yes, pthread_exit(NULL) is required - if (!g_TLSforMainCreated) { - if (Thread::IsMainThread()) { - g_TLSforMainCreated = true; - atexit(&MainThreadExitClean); - } - } - - // Need to instantiate underlying type - instance = new ManagedValue(); - - int result = pthread_setspecific(m_key, instance); - - Assert(result == 0 && - "Failed to set thread local variable"); - } - - return instance->value; - } - - public: - ThreadLocalVariable() - { - int result = pthread_key_create(&m_key, &InternalDestroy); - if (result != 0) { - ThrowMsg(typename Exception::KeyCreateFailed, - "Failed to allocate thread local variable: " << result); - } - } - - ~ThreadLocalVariable() - { - pthread_key_delete(m_key); - } - - Type &operator=(const Type &other) - { - Type &reference = Reference(true); - reference = other; - return reference; - } - - bool IsNull() const - { - return pthread_getspecific(m_key) == NULL; - } - - Type& operator*() - { - return Reference(); - } - - const Type& operator*() const - { - return Reference(); - } - - const Type* operator->() const - { - return &Reference(); - } - - Type* operator->() - { - return &Reference(); - } - - bool operator!() const - { - return IsNull(); - } - - void Reset() - { - ManagedValue *specific = - static_cast(pthread_getspecific(m_key)); - - if (!specific) { - return; - } - - // TODO Should be an assert? is it developers fault to Reset Guarded - // value? - specific->guardKey = Optional::Null; - - InternalDestroy(specific); - - int result = pthread_setspecific(m_key, NULL); - - Assert(result == 0 && - "Failed to reset thread local variable"); - } - - // GuardValue(true) allows to defer destroy (by pthread internal - // functionality) thread specific value until GuardValue(false) will be - // called. - void GuardValue(bool guard) - { - ManagedValue *instance = - static_cast(pthread_getspecific(m_key)); - - Assert(instance && "Failed to get the value"); - - instance->guardKey = guard ? m_key : Optional::Null; - } -}; -} // namespace DPL - -#endif // DPL_THREAD_H diff --git a/modules_mobile/core/include/dpl/type_list.h b/modules_mobile/core/include/dpl/type_list.h deleted file mode 100644 index 88afaf2..0000000 --- a/modules_mobile/core/include/dpl/type_list.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file type_list.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Generic type list template - */ -#ifndef DPL_TYPE_LIST_H -#define DPL_TYPE_LIST_H - -#include - -namespace DPL { -class TypeListGuard -{ - public: - template - struct Element - { - struct ERROR_TypeListElementIndexIsOutOfBounds; - typedef ERROR_TypeListElementIndexIsOutOfBounds Type; - }; - - static const size_t Size = 0; -}; - -template -class TypeList -{ - private: - class DummyClass - {}; - - template - struct TypeCounter : public TypeCounter - {}; - - template - struct TypeCounter - { - static const size_t Size = Enum; - }; - - public: - typedef TailType Tail; - typedef HeadType Head; - typedef TypeList ThisType; - - template - struct Element - { - typedef typename TailType::template Element::Type Type; - }; - - template - struct Element<0, DummyType> - { - typedef HeadType Type; - }; - - template - struct Contains - { - typedef typename TailType::template Contains::Yes Yes; - }; - - template - struct Contains - { - typedef int Yes; - }; - - static const size_t Size = TypeCounter::Size; -}; - -template -struct TypeListDecl -{ - typedef TypeList::Type> Type; -}; - -template<> -struct TypeListDecl -{ - typedef TypeListGuard Type; -}; -} // namespace DPL - -#endif // DPL_TYPE_LIST_H diff --git a/modules_mobile/core/include/dpl/waitable_event.h b/modules_mobile/core/include/dpl/waitable_event.h deleted file mode 100644 index 364bc5c..0000000 --- a/modules_mobile/core/include/dpl/waitable_event.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_event.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of waitable event - */ -#ifndef DPL_WAITABLE_EVENT_H -#define DPL_WAITABLE_EVENT_H - -#include -#include -#include -#include - -namespace DPL { -class WaitableEvent : - private Noncopyable -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, DestroyFailed) - DECLARE_EXCEPTION_TYPE(Base, SignalFailed) - DECLARE_EXCEPTION_TYPE(Base, ResetFailed) - }; - - private: - int m_pipe[2]; - - public: - WaitableEvent(); - virtual ~WaitableEvent(); - - WaitableHandle GetHandle() const; - - void Signal() const; - void Reset() const; -}; -} // namespace DPL - -#endif // DPL_WAITABLE_EVENT_H diff --git a/modules_mobile/core/include/dpl/waitable_handle.h b/modules_mobile/core/include/dpl/waitable_handle.h deleted file mode 100644 index 9864f78..0000000 --- a/modules_mobile/core/include/dpl/waitable_handle.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_handle.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of waitable handle - */ -#ifndef DPL_WAITABLE_HANDLE_H -#define DPL_WAITABLE_HANDLE_H - -#include -#include -#include - -namespace DPL { -/** - * Waitable unix wait handle definition - */ -typedef int WaitableHandle; - -/** - * Waitable handle list - */ -typedef std::vector WaitableHandleList; - -/** - * Wait mode - */ -class WaitMode -{ - public: - enum Type - { - Read, ///< Wait for readability state changes - Write ///< Wait for writability state changes - }; -}; - -/** - * Waitable handle list ex - */ -typedef std::vector > WaitableHandleListEx; - -/** - * Waitable handle index list - */ -typedef std::vector WaitableHandleIndexList; - -/** - * Wait exceptions - */ -DECLARE_EXCEPTION_TYPE(DPL::Exception, WaitFailed) - -/** - * Wait for single handle readability - * Convience function. - * - * @return Signaled waitable handle index list - * @throw WaitFailed Fatal error occurred while waiting for signal - */ -WaitableHandleIndexList WaitForSingleHandle( - WaitableHandle handle, - unsigned long miliseconds = - 0xFFFFFFFF); - -/** - * Wait for single handle - * Convience function. - * - * @return Signaled waitable handle index list - * @throw WaitFailed Fatal error occurred while waiting for signal - */ -WaitableHandleIndexList WaitForSingleHandle( - WaitableHandle handle, - WaitMode::Type mode, - unsigned long miliseconds = - 0xFFFFFFFF); - -/** - * Wait for multiple handles readability - * - * @return Signaled waitable handle index list - * @throw WaitFailed Fatal error occurred while waiting for signal - */ -WaitableHandleIndexList WaitForMultipleHandles( - const WaitableHandleList &handleList, - unsigned long miliseconds = 0xFFFFFFFF); - -/** - * Wait for multiple handles readability - * - * @return Signaled waitable handle index list - * @throw WaitFailed Fatal error occurred while waiting for signal - */ -WaitableHandleIndexList WaitForMultipleHandles( - const WaitableHandleListEx &handleListEx, - unsigned long miliseconds = 0xFFFFFFFF); -} // namespace DPL - -#endif // DPL_WAITABLE_HANDLE_H diff --git a/modules_mobile/core/include/dpl/waitable_handle_watch_support.h b/modules_mobile/core/include/dpl/waitable_handle_watch_support.h deleted file mode 100644 index ac0987f..0000000 --- a/modules_mobile/core/include/dpl/waitable_handle_watch_support.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_handle_watch_support.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of waitable handle watch - * support - */ -#ifndef DPL_WAITABLE_HANDLE_WATCH_SUPPORT_H -#define DPL_WAITABLE_HANDLE_WATCH_SUPPORT_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -class Thread; - -class WaitableHandleWatchSupport -{ - public: - class WaitableHandleListener - { - public: - virtual ~WaitableHandleListener() {} - - virtual void OnWaitableHandleEvent(WaitableHandle waitableHandle, - WaitMode::Type mode) = 0; - }; - - protected: - // Invoker waitable handle - // Signaled by Add/Remove methods - // After being signaled one must call Handle invoke to reset invoker - WaitableHandle WaitableInvokerHandle() const; - - // Waitable handle ex list - WaitableHandleListEx WaitableWatcherHandles() const; - - // Perform actions for signaled waitable handle - // Called in execution context, after - void HandleWatcher(WaitableHandle waitableHandle, WaitMode::Type mode); - - // Perform actions after invoker was signaled - void InvokerFinished(); - - // Get invoker context - virtual Thread *GetInvokerThread() = 0; - - // Invoke direct invoker - virtual void HandleDirectInvoker() = 0; - - private: - // Waitable event watchers - struct WaitableHandleWatcher - { - WaitableHandleListener *listener; - WaitMode::Type mode; - - WaitableHandleWatcher(WaitableHandleListener *l, WaitMode::Type m) : - listener(l), - mode(m) - {} - }; - - typedef std::list WaitableHandleListenerList; - - struct WaitableHandleWatchers - { - WaitableHandleListenerList listeners; - size_t readListenersCount; - size_t writeListenersCount; - - WaitableHandleWatchers() : - readListenersCount(0), - writeListenersCount(0) - {} - }; - - typedef std::map WaitableHandleWatchersMap; - - // Waitable event watch support - mutable RecursiveMutex m_watchersMutex; - WaitableHandleWatchersMap m_watchersMap; - WaitableEvent m_watchersInvoker; - WaitableEvent m_watchersInvokerCommit; - - // Invoke call - void CommitInvoker(); - - public: - /** - * Constructor - */ - explicit WaitableHandleWatchSupport(); - - /** - * Destructor - */ - virtual ~WaitableHandleWatchSupport(); - - /** - * Adds listener for specific waitable event - * - * @param[in] listener Listener to attach - * @param[in] waitableHandle Waitable handle to listen for changes - * @param[in] mode Type of changes to listen to - * @return none - * @see WaitMode::Type - */ - void AddWaitableHandleWatch(WaitableHandleListener *listener, - WaitableHandle waitableHandle, - WaitMode::Type mode); - - /** - * Remove listener for specific waitable event - * - * @param[in] listener Listener to detach - * @param[in] waitableHandle Waitable handle to unlisten for changes - * @param[in] mode Type of changes to unlisten to - * @return none - * @see WaitMode::Type - */ - void RemoveWaitableHandleWatch(WaitableHandleListener *listener, - WaitableHandle waitableHandle, - WaitMode::Type mode); - - /** - * Retrieve inherited context - * - * @return Inherited waitable handle watch support - */ - static WaitableHandleWatchSupport *InheritedContext(); -}; -} // namespace DPL - -#endif // DPL_WAITABLE_HANDLE_WATCH_SUPPORT_H diff --git a/modules_mobile/core/include/dpl/workaround.h b/modules_mobile/core/include/dpl/workaround.h deleted file mode 100644 index 19c26ef..0000000 --- a/modules_mobile/core/include/dpl/workaround.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file workaround.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of workaround - */ -#ifndef DPL_WORKAROUND_H -#define DPL_WORKAROUND_H - -/** - * Define following macro to track invalid waitable handles - * in WaitForSingle/WaitForMultiple functions - */ -#define DPL_ENABLE_WAITABLE_HANDLE_BADF_CHECK - -/** - * Define following macro to enable workaround for problem - * with GLIB loop integration and EBADF error handling - */ -#define DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND - -/** - * Define following macro to enable workaround for problem - * with invalid conversions in htons/ntohs macros - */ -#define DPL_ENABLE_HTONS_NTOHS_I386_WORKAROUND - -#endif // DPL_WORKAROUND_H diff --git a/modules_mobile/core/include/dpl/zip_input.h b/modules_mobile/core/include/dpl/zip_input.h deleted file mode 100644 index b364fe4..0000000 --- a/modules_mobile/core/include/dpl/zip_input.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file zip_input.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of zip input - */ -#ifndef DPL_ZIP_INPUT_H -#define DPL_ZIP_INPUT_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -class ZipInput : - private Noncopyable -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) - DECLARE_EXCEPTION_TYPE(Base, ReadGlobalInfoFailed) - DECLARE_EXCEPTION_TYPE(Base, ReadGlobalCommentFailed) - DECLARE_EXCEPTION_TYPE(Base, SeekFileFailed) - DECLARE_EXCEPTION_TYPE(Base, FileInfoFailed) - DECLARE_EXCEPTION_TYPE(Base, OpenFileFailed) - DECLARE_EXCEPTION_TYPE(Base, ReadFileFailed) - }; - - typedef std::pair FileHandle; - - struct FileInfo - { - // File handle - FileHandle handle; - - // File name and comment - std::string name; - std::string comment; - - // File information - off64_t compressedSize; //< compressed size - off64_t uncompressedSize; //< uncompressed size - - FileInfo() : - handle(), - name(), - comment(), - compressedSize(0), - uncompressedSize(0) - {} - - FileInfo(const FileHandle &handleArg, - const std::string &nameArg, - const std::string &commentArg, - const off64_t &compressedSizeArg, - const off64_t &uncompressedSizeArg) : - handle(handleArg), - name(nameArg), - comment(commentArg), - compressedSize(compressedSizeArg), - uncompressedSize(uncompressedSizeArg) - {} - }; - - class File : - public DPL::AbstractInput - { - private: - void *m_file; - - friend class ZipInput; - File(class Device *device, FileHandle handle); - - public: - ~File(); - - virtual DPL::BinaryQueueAutoPtr Read(size_t size); - }; - - private: - class Device * m_device; - void *m_masterFile; - - size_t m_numberOfFiles; - size_t m_globalCommentSize; - std::string m_globalComment; - size_t m_totalUncompressedSize; - - // At least cache handles - typedef std::vector FileInfoList; - FileInfoList m_fileInfos; - - void ReadGlobalInfo(void *masterFile); - void ReadGlobalComment(void *masterFile); - void ReadInfos(void *masterFile); - - public: - typedef FileInfoList::const_iterator const_iterator; - typedef FileInfoList::const_reverse_iterator const_reverse_iterator; - typedef FileInfoList::size_type size_type; - - public: - /** - * Open zip file from file - */ - explicit ZipInput(const std::string &fileName); - - /** - * Destructor - */ - ~ZipInput(); - - // Iterators - const_iterator begin() const; - const_iterator end() const; - - const_reverse_iterator rbegin() const; - const_reverse_iterator rend() const; - - // Size, empty - size_type size() const; - bool empty() const; - - /** - * Open a binary file for given file name - * - * @return file object - * @param[in] fileName Zip file name to open - * @exception std::bad_alloc Cannot allocate memory to hold additional data - * @exception SteamOpenFailed Cannot find file with given handle - * @see BinaryQueue::BufferDeleterFree - */ - File *OpenFile(const std::string &fileName); - - /** - * Get archive global comment - * - * @return Global archive comment - */ - const std::string &GetGlobalComment() const; - size_t GetTotalUncompressedSize() const; -}; -} // namespace DPL - -#endif // DPL_ZIP_INPUT_H diff --git a/modules_mobile/core/src/DESCRIPTION b/modules_mobile/core/src/DESCRIPTION deleted file mode 100644 index 9043c93..0000000 --- a/modules_mobile/core/src/DESCRIPTION +++ /dev/null @@ -1 +0,0 @@ -Source files diff --git a/modules_mobile/core/src/abstract_waitable_input_adapter.cpp b/modules_mobile/core/src/abstract_waitable_input_adapter.cpp deleted file mode 100644 index a802a7f..0000000 --- a/modules_mobile/core/src/abstract_waitable_input_adapter.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_input_adapter.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract waitable input - * adapter - */ -#include -#include - -namespace DPL { -AbstractWaitableInputAdapter::AbstractWaitableInputAdapter(AbstractInput *input) - : - m_input(input) -{ - m_waitableEvent.Signal(); -} - -BinaryQueueAutoPtr AbstractWaitableInputAdapter::Read(size_t size) -{ - return m_input->Read(size); -} - -WaitableHandle AbstractWaitableInputAdapter::WaitableReadHandle() const -{ - return m_waitableEvent.GetHandle(); -} -} // namespace DPL diff --git a/modules_mobile/core/src/abstract_waitable_input_output_adapter.cpp b/modules_mobile/core/src/abstract_waitable_input_output_adapter.cpp deleted file mode 100644 index e432b31..0000000 --- a/modules_mobile/core/src/abstract_waitable_input_output_adapter.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_input_output_adapter.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract waitable input - * output adapter - */ -#include -#include - -namespace DPL { -AbstractWaitableInputOutputAdapter::AbstractWaitableInputOutputAdapter( - AbstractInputOutput *inputOutput) : - AbstractWaitableInputAdapter(inputOutput), - AbstractWaitableOutputAdapter(inputOutput) -{} -} // namespace DPL diff --git a/modules_mobile/core/src/abstract_waitable_output_adapter.cpp b/modules_mobile/core/src/abstract_waitable_output_adapter.cpp deleted file mode 100644 index 82c2347..0000000 --- a/modules_mobile/core/src/abstract_waitable_output_adapter.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_waitable_output_adapter.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract waitable output - * adapter - */ -#include -#include - -namespace DPL { -AbstractWaitableOutputAdapter::AbstractWaitableOutputAdapter( - AbstractOutput *output) : - m_output(output) -{ - m_waitableEvent.Signal(); -} - -size_t AbstractWaitableOutputAdapter::Write(const BinaryQueue &buffer, - size_t bufferSize) -{ - return m_output->Write(buffer, bufferSize); -} - -WaitableHandle AbstractWaitableOutputAdapter::WaitableWriteHandle() const -{ - return m_waitableEvent.GetHandle(); -} -} // namespace DPL diff --git a/modules_mobile/core/src/address.cpp b/modules_mobile/core/src/address.cpp deleted file mode 100644 index 34c8861..0000000 --- a/modules_mobile/core/src/address.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file address.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of address - */ -#include -#include -#include -#include - -namespace DPL { -Address::Address() : - m_port(0) -{} - -Address::Address(const std::string &address) : - m_address(address), - m_port(0) -{} - -Address::Address(const std::string &address, unsigned short port) : - m_address(address), - m_port(port) -{} - -Address::~Address() -{} - -std::string Address::GetAddress() const -{ - return m_address; -} - -unsigned short Address::GetPort() const -{ - return m_port; -} - -std::string Address::ToString() const -{ - std::ostringstream out; - out << m_address << ":" << m_port; - return out.str(); -} - -bool Address::operator<(const Address &addr) const -{ - return ToString() < addr.ToString(); -} -} // namespace DPL diff --git a/modules_mobile/core/src/apply.cpp b/modules_mobile/core/src/apply.cpp deleted file mode 100644 index 7ba5180..0000000 --- a/modules_mobile/core/src/apply.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apply.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of apply functionality - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/assert.cpp b/modules_mobile/core/src/assert.cpp deleted file mode 100644 index b8a12c8..0000000 --- a/modules_mobile/core/src/assert.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file assert.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of assert - */ -#include -#include -#include -#include -#include - -namespace DPL { -void AssertProc(const char *condition, - const char *file, - int line, - const char *function) -{ -#define INTERNAL_LOG(message) \ - do \ - { \ - std::ostringstream platformLog; \ - platformLog << message; \ - DPL::Log::LogSystemSingleton::Instance().Pedantic( \ - platformLog.str().c_str(), \ - __FILE__, __LINE__, __FUNCTION__); \ - } \ - while (0) - - // Try to log failed assertion to log system - Try - { - INTERNAL_LOG( - "################################################################################"); - INTERNAL_LOG( - "### DPL assertion failed! ###"); - INTERNAL_LOG( - "################################################################################"); - INTERNAL_LOG("### Condition: " << condition); - INTERNAL_LOG("### File: " << file); - INTERNAL_LOG("### Line: " << line); - INTERNAL_LOG("### Function: " << function); - INTERNAL_LOG( - "################################################################################"); - } catch (Exception) { - // Just ignore possible double errors - } - - // Fail with c-library abort - abort(); -} -} // namespace DPL diff --git a/modules_mobile/core/src/atomic.cpp b/modules_mobile/core/src/atomic.cpp deleted file mode 100644 index 2f50074..0000000 --- a/modules_mobile/core/src/atomic.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file atomic.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of atomic - */ -#include -#include - -namespace DPL { -Atomic::Atomic(ValueType value) : - m_value(value) -{} - -Atomic::ValueType Atomic::ExchangeAndAdd(ValueType value) -{ - return g_atomic_int_add(const_cast(&m_value), value); -} - -bool Atomic::CompareAndExchange(ValueType oldValue, ValueType newValue) -{ - return g_atomic_int_compare_and_exchange(const_cast(&m_value), - oldValue, - newValue); -} - -bool Atomic::operator--() -{ - return g_atomic_int_dec_and_test(const_cast(&m_value)) != TRUE; -} - -void Atomic::operator++() -{ - g_atomic_int_inc(const_cast(&m_value)); -} - -Atomic::operator ValueType() const -{ - return g_atomic_int_get(const_cast(&m_value)); -} -} // namespace DPL diff --git a/modules_mobile/core/src/binary_queue.cpp b/modules_mobile/core/src/binary_queue.cpp deleted file mode 100644 index 2234c8f..0000000 --- a/modules_mobile/core/src/binary_queue.cpp +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file binary_queue.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of binary queue - */ -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -BinaryQueue::BinaryQueue() : - m_size(0) -{} - -BinaryQueue::BinaryQueue(const BinaryQueue &other) : - m_size(0) -{ - AppendCopyFrom(other); -} - -BinaryQueue::~BinaryQueue() -{ - // Remove all remainig buckets - Clear(); -} - -const BinaryQueue &BinaryQueue::operator=(const BinaryQueue &other) -{ - if (this != &other) { - Clear(); - AppendCopyFrom(other); - } - - return *this; -} - -void BinaryQueue::AppendCopyFrom(const BinaryQueue &other) -{ - // To speed things up, always copy as one bucket - void *bufferCopy = malloc(other.m_size); - - if (bufferCopy == NULL) { - throw std::bad_alloc(); - } - - try { - other.Flatten(bufferCopy, other.m_size); - AppendUnmanaged(bufferCopy, other.m_size, &BufferDeleterFree, NULL); - } catch (const std::bad_alloc &) { - // Free allocated memory - free(bufferCopy); - throw; - } -} - -void BinaryQueue::AppendMoveFrom(BinaryQueue &other) -{ - // Copy all buckets - std::copy(other.m_buckets.begin(), - other.m_buckets.end(), std::back_inserter(m_buckets)); - m_size += other.m_size; - - // Clear other, but do not free memory - other.m_buckets.clear(); - other.m_size = 0; -} - -void BinaryQueue::AppendCopyTo(BinaryQueue &other) const -{ - other.AppendCopyFrom(*this); -} - -void BinaryQueue::AppendMoveTo(BinaryQueue &other) -{ - other.AppendMoveFrom(*this); -} - -void BinaryQueue::Clear() -{ - std::for_each(m_buckets.begin(), m_buckets.end(), &DeleteBucket); - m_buckets.clear(); - m_size = 0; -} - -void BinaryQueue::AppendCopy(const void* buffer, size_t bufferSize) -{ - // Create data copy with malloc/free - void *bufferCopy = malloc(bufferSize); - - // Check if allocation succeded - if (bufferCopy == NULL) { - throw std::bad_alloc(); - } - - // Copy user data - memcpy(bufferCopy, buffer, bufferSize); - - try { - // Try to append new bucket - AppendUnmanaged(bufferCopy, bufferSize, &BufferDeleterFree, NULL); - } catch (const std::bad_alloc &) { - // Free allocated memory - free(bufferCopy); - throw; - } -} - -void BinaryQueue::AppendUnmanaged(const void* buffer, - size_t bufferSize, - BufferDeleter deleter, - void* userParam) -{ - // Do not attach empty buckets - if (bufferSize == 0) { - deleter(buffer, bufferSize, userParam); - return; - } - - // Just add new bucket with selected deleter - m_buckets.push_back(new Bucket(buffer, bufferSize, deleter, userParam)); - - // Increase total queue size - m_size += bufferSize; -} - -size_t BinaryQueue::Size() const -{ - return m_size; -} - -bool BinaryQueue::Empty() const -{ - return m_size == 0; -} - -void BinaryQueue::Consume(size_t size) -{ - // Check parameters - if (size > m_size) { - Throw(Exception::OutOfData); - } - - size_t bytesLeft = size; - - // Consume data and/or remove buckets - while (bytesLeft > 0) { - // Get consume size - size_t count = std::min(bytesLeft, m_buckets.front()->left); - - m_buckets.front()->ptr = - static_cast(m_buckets.front()->ptr) + count; - m_buckets.front()->left -= count; - bytesLeft -= count; - m_size -= count; - - if (m_buckets.front()->left == 0) { - DeleteBucket(m_buckets.front()); - m_buckets.pop_front(); - } - } -} - -void BinaryQueue::Flatten(void *buffer, size_t bufferSize) const -{ - // Check parameters - if (bufferSize == 0) { - return; - } - - if (bufferSize > m_size) { - Throw(Exception::OutOfData); - } - - size_t bytesLeft = bufferSize; - void *ptr = buffer; - BucketList::const_iterator bucketIterator = m_buckets.begin(); - Assert(m_buckets.end() != bucketIterator); - - // Flatten data - while (bytesLeft > 0) { - // Get consume size - size_t count = std::min(bytesLeft, (*bucketIterator)->left); - - // Copy data to user pointer - memcpy(ptr, (*bucketIterator)->ptr, count); - - // Update flattened bytes count - bytesLeft -= count; - ptr = static_cast(ptr) + count; - - // Take next bucket - ++bucketIterator; - } -} - -void BinaryQueue::FlattenConsume(void *buffer, size_t bufferSize) -{ - // FIXME: Optimize - Flatten(buffer, bufferSize); - Consume(bufferSize); -} - -void BinaryQueue::DeleteBucket(BinaryQueue::Bucket *bucket) -{ - delete bucket; -} - -void BinaryQueue::BufferDeleterFree(const void* data, - size_t dataSize, - void* userParam) -{ - (void)dataSize; - (void)userParam; - - // Default free deleter - free(const_cast(data)); -} - -BinaryQueue::Bucket::Bucket(const void* data, - size_t dataSize, - BufferDeleter dataDeleter, - void* userParam) : - buffer(data), - ptr(data), - size(dataSize), - left(dataSize), - deleter(dataDeleter), - param(userParam) -{ - Assert(data != NULL); - Assert(deleter != NULL); -} - -BinaryQueue::Bucket::~Bucket() -{ - // Invoke deleter on bucket data - deleter(buffer, size, param); -} - -BinaryQueue::BucketVisitor::~BucketVisitor() -{} - -BinaryQueue::BucketVisitorCall::BucketVisitorCall(BucketVisitor *visitor) : - m_visitor(visitor) -{} - -BinaryQueue::BucketVisitorCall::~BucketVisitorCall() -{} - -void BinaryQueue::BucketVisitorCall::operator()(Bucket *bucket) const -{ - m_visitor->OnVisitBucket(bucket->ptr, bucket->left); -} - -void BinaryQueue::VisitBuckets(BucketVisitor *visitor) const -{ - Assert(visitor != NULL); - - // Visit all buckets - std::for_each(m_buckets.begin(), m_buckets.end(), BucketVisitorCall(visitor)); -} - -BinaryQueueAutoPtr BinaryQueue::Read(size_t size) -{ - // Simulate input stream - size_t available = std::min(size, m_size); - - ScopedFree bufferCopy(malloc(available)); - - if (!bufferCopy) { - throw std::bad_alloc(); - } - - BinaryQueueAutoPtr result(new BinaryQueue()); - - Flatten(bufferCopy.Get(), available); - result->AppendUnmanaged( - bufferCopy.Get(), available, &BufferDeleterFree, NULL); - bufferCopy.Release(); - Consume(available); - - return result; -} - -size_t BinaryQueue::Write(const BinaryQueue &buffer, size_t bufferSize) -{ - // Simulate output stream - AppendCopyFrom(buffer); - return bufferSize; -} -} // namespace DPL diff --git a/modules_mobile/core/src/char_traits.cpp b/modules_mobile/core/src/char_traits.cpp deleted file mode 100644 index 32b9197..0000000 --- a/modules_mobile/core/src/char_traits.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file char_traits.cpp - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @biref Char traits are used to create basic_string extended with - * additional features - * Current char traits could be extended in feature to boost - * performance - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/colors.cpp b/modules_mobile/core/src/colors.cpp deleted file mode 100644 index 0b2fcd4..0000000 --- a/modules_mobile/core/src/colors.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file colors.cpp - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Some constants with definition of colors for Console - * and html output - */ -#include -#include - -namespace DPL { -namespace Colors { -namespace Text { -const char* BOLD_GREEN_BEGIN = "\033[1;32m"; -const char* BOLD_GREEN_END = "\033[m"; -const char* RED_BEGIN = "\033[0;31m"; -const char* RED_END = "\033[m"; -const char* PURPLE_BEGIN = "\033[0;35m"; -const char* PURPLE_END = "\033[m"; -const char* GREEN_BEGIN = "\033[0;32m"; -const char* GREEN_END = "\033[m"; -const char* CYAN_BEGIN = "\033[0;36m"; -const char* CYAN_END = "\033[m"; -const char* BOLD_RED_BEGIN = "\033[1;31m"; -const char* BOLD_RED_END = "\033[m"; -const char* BOLD_YELLOW_BEGIN = "\033[1;33m"; -const char* BOLD_YELLOW_END = "\033[m"; -const char* BOLD_GOLD_BEGIN = "\033[0;33m"; -const char* BOLD_GOLD_END = "\033[m"; -const char* BOLD_WHITE_BEGIN = "\033[1;37m"; -const char* BOLD_WHITE_END = "\033[m"; -} //namespace Text - -namespace Html { -const char* BOLD_GREEN_BEGIN = ""; -const char* BOLD_GREEN_END = ""; -const char* PURPLE_BEGIN = ""; -const char* PURPLE_END = ""; -const char* RED_BEGIN = ""; -const char* RED_END = ""; -const char* GREEN_BEGIN = ""; -const char* GREEN_END = ""; -const char* CYAN_BEGIN = ""; -const char* CYAN_END = ""; -const char* BOLD_RED_BEGIN = ""; -const char* BOLD_RED_END = ""; -const char* BOLD_YELLOW_BEGIN = ""; -const char* BOLD_YELLOW_END = ""; -const char* BOLD_GOLD_BEGIN = ""; -const char* BOLD_GOLD_END = ""; -const char* BOLD_WHITE_BEGIN = ""; -const char* BOLD_WHITE_END = ""; -} //namespace Html -} //namespace Colors -} //namespace DPL diff --git a/modules_mobile/core/src/copy.cpp b/modules_mobile/core/src/copy.cpp deleted file mode 100644 index c05d06c..0000000 --- a/modules_mobile/core/src/copy.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file copy.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of copy - */ -#include -#include -#include -#include - -namespace DPL { -namespace // anonymous -{ -const size_t DEFAULT_COPY_BUFFER_SIZE = 16768; -} // namespace anonymous - -void Copy(AbstractWaitableInput *input, AbstractWaitableOutput *output) -{ - Try - { - while (true) { - BinaryQueueAutoPtr buffer; - - while (true) { - // Try to get data immediately - buffer = input->Read(DEFAULT_COPY_BUFFER_SIZE); - - // Do we need to wait for data ? - if (!buffer.get()) { - WaitForSingleHandle( - input->WaitableReadHandle(), WaitMode::Read); - continue; - } - - if (buffer->Empty()) { - return; // Done - } - // Ok, to process - break; - } - - // Write out all data - while (!buffer->Empty()) { - // Try to write all data immediately - size_t count = output->Write(*buffer, buffer->Size()); - - // Do we need to wait for writing data ? - if (count == 0) { - WaitForSingleHandle( - output->WaitableWriteHandle(), WaitMode::Write); - continue; - } - - // Consume data - buffer->Consume(count); - } - } - } - Catch(DPL::Exception) - { - ReThrow(CopyFailed); - } -} - -void Copy(AbstractWaitableInput *input, - AbstractWaitableOutput *output, - size_t totalBytes) -{ - Try - { - size_t bytesLeft = totalBytes; - - while (bytesLeft > 0) { - BinaryQueueAutoPtr buffer; - - // Copy at most left bytes - size_t bytesToCopy = bytesLeft > - DEFAULT_COPY_BUFFER_SIZE ? DEFAULT_COPY_BUFFER_SIZE : bytesLeft; - - while (true) { - // Try to get data immediately - buffer = input->Read(bytesToCopy); - - // Do we need to wait for data ? - if (!buffer.get()) { - WaitForSingleHandle( - input->WaitableReadHandle(), WaitMode::Read); - continue; - } - - if (buffer->Empty()) { - ThrowMsg(CopyFailed, "Unexpected end of abstract input"); - } - - // Ok, to process - break; - } - - // Write out all data - while (!buffer->Empty()) { - // Try to write all data immediately - size_t count = output->Write(*buffer, buffer->Size()); - - // Do we need to wait for writing data ? - if (count == 0) { - WaitForSingleHandle( - output->WaitableWriteHandle(), WaitMode::Write); - continue; - } - - // Consume data - buffer->Consume(count); - bytesLeft -= count; - } - } - } - Catch(DPL::Exception) - { - ReThrow(CopyFailed); - } -} -} // namespace DPL diff --git a/modules_mobile/core/src/errno_string.cpp b/modules_mobile/core/src/errno_string.cpp deleted file mode 100644 index cb607f5..0000000 --- a/modules_mobile/core/src/errno_string.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file errno_string.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of errno string - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace // anonymous -{ -const size_t DEFAULT_ERRNO_STRING_SIZE = 32; -} // namespace anonymous - -std::string GetErrnoString(int error) -{ - size_t size = DEFAULT_ERRNO_STRING_SIZE; - char *buffer = NULL; - - for (;;) { - // Add one extra characted for end of string null value - char *newBuffer = static_cast(::realloc(buffer, size + 1)); - - if (!newBuffer) { - // Failed to realloc - ::free(buffer); - throw std::bad_alloc(); - } - - // Setup reallocated buffer - buffer = newBuffer; - ::memset(buffer, 0, size + 1); - - // Try to retrieve error string -#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE - // The XSI-compliant version of strerror_r() is provided if: - int result = ::strerror_r(error, buffer, size); - - if (result == 0) { - ScopedFree scopedBufferFree(buffer); - return std::string(buffer); - } -#else - errno = 0; - - // Otherwise, the GNU-specific version is provided. - char *result = ::strerror_r(error, buffer, size); - - if (result != NULL) { - ScopedFree scopedBufferFree(buffer); - return std::string(result); - } -#endif - - // Interpret errors - switch (errno) { - case EINVAL: - // We got an invalid errno value - ::free(buffer); - ThrowMsg(InvalidErrnoValue, "Invalid errno value: " << error); - - case ERANGE: - // Incease buffer size and retry - size <<= 1; - continue; - - default: - Assert(0 && "Invalid errno value after call to strerror_r!"); - } - } -} -} // namespace DPL diff --git a/modules_mobile/core/src/fast_delegate.cpp b/modules_mobile/core/src/fast_delegate.cpp deleted file mode 100644 index 70821b2..0000000 --- a/modules_mobile/core/src/fast_delegate.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file fast_delegate.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of fast delegate - */ -#include -#include diff --git a/modules_mobile/core/src/generic_event.cpp b/modules_mobile/core/src/generic_event.cpp deleted file mode 100644 index f09ff2b..0000000 --- a/modules_mobile/core/src/generic_event.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_event.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC generic event - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/lexical_cast.cpp b/modules_mobile/core/src/lexical_cast.cpp deleted file mode 100644 index a89abc9..0000000 --- a/modules_mobile/core/src/lexical_cast.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file lexical_cast.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for lexical cast - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/mutable_task_list.cpp b/modules_mobile/core/src/mutable_task_list.cpp deleted file mode 100644 index 67576b8..0000000 --- a/modules_mobile/core/src/mutable_task_list.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file task_list.cpp - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @version 1.0 - * @brief Implementation file for task list - */ -#include -#include -#include - -namespace DPL { -MutableTaskList::MutableTaskList() : - m_running(false) -{ - m_currentTask = m_tasks.end(); -} - -MutableTaskList::~MutableTaskList() -{ - for (Tasks::iterator i = m_tasks.begin(); i != m_tasks.end(); ++i) { - delete *i; - } -} - -void MutableTaskList::AddTask(Task *task) -{ - if(m_tasks.empty()) - { - m_tasks.push_back(task); - m_currentTask = m_tasks.begin(); - } - else - { - m_tasks.push_back(task); - } -} - -bool MutableTaskList::NextStep() -{ - m_running = true; - - Assert( - m_currentTask != m_tasks.end() && - "Task list is empty or all tasks done"); - - bool result = (*m_currentTask)->NextStep(); - - if (result) { - return true; - } - - return ++m_currentTask != m_tasks.end(); -} - -bool MutableTaskList::Abort() -{ - m_tasks.erase(m_currentTask, m_tasks.end()); - m_tasks.reverse(); - for (Tasks::iterator i = m_tasks.begin(); i != m_tasks.end();) { - //If given task does not have any "abortSteps", remove it from the list - if (!(*i)->Abort()) { - delete *i; - i = m_tasks.erase(i); - continue; - } - ++i; - } - - if (m_tasks.empty()) { - return false; - } - - m_currentTask = m_tasks.begin(); - - return true; -} - -size_t MutableTaskList::GetStepCount() const -{ - size_t count = 0; - - for (Tasks::const_iterator i = m_tasks.begin(); i != m_tasks.end(); ++i) { - count += (*i)->GetStepCount(); - } - - return count; -} - -} // namespace DPL diff --git a/modules_mobile/core/src/named_base_pipe.cpp b/modules_mobile/core/src/named_base_pipe.cpp deleted file mode 100644 index 9f91d30..0000000 --- a/modules_mobile/core/src/named_base_pipe.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file named_base_pipe.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of named base pipe - */ -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace // anonymous -{ -const mode_t FIFO_MODE = 0600; -} // namespace anonymous - -NamedBasePipe::~NamedBasePipe() -{} - -void NamedBasePipe::Create(const std::string &pipeName) -{ - // Create new fifo - int status = mkfifo(pipeName.c_str(), FIFO_MODE); - - if (status == -1) { - // Ignore error it it already exists - if (errno == EEXIST) { - ThrowMsg(Exception::AlreadyExist, pipeName); - } else { - ThrowMsg(Exception::CreateFailed, pipeName); - } - } -} - -void NamedBasePipe::Destroy(const std::string &fileName) -{ - // Destroy fifo - unlink(fileName.c_str()); // FIXME: Add error handling -} -} // namespace DPL diff --git a/modules_mobile/core/src/named_output_pipe.cpp b/modules_mobile/core/src/named_output_pipe.cpp deleted file mode 100644 index 2a9a1fa..0000000 --- a/modules_mobile/core/src/named_output_pipe.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file named_output_pipe.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of named output pipe - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -NamedOutputPipe::NamedOutputPipe() : - m_fifo(-1) -{} - -NamedOutputPipe::~NamedOutputPipe() -{ - Close(); -} - -void NamedOutputPipe::Open(const std::string& pipeName) -{ - // Then open it for reading or writing - int fifo = TEMP_FAILURE_RETRY(open(pipeName.c_str(), O_WRONLY | O_NONBLOCK)); - - if (fifo == -1) { - ThrowMsg(Exception::OpenFailed, pipeName); - } - - m_fifo = fifo; -} - -void NamedOutputPipe::Close() -{ - if (m_fifo == -1) { - return; - } - - if (TEMP_FAILURE_RETRY(close(m_fifo)) == -1) { - Throw(Exception::CloseFailed); - } - - m_fifo = -1; -} - -size_t NamedOutputPipe::Write(const BinaryQueue &buffer, size_t bufferSize) -{ - // Adjust write size - if (bufferSize > buffer.Size()) { - bufferSize = buffer.Size(); - } - - // FIXME: User write visitor to write ! - // WriteVisitor visitor - - ScopedFree flattened(malloc(bufferSize)); - buffer.Flatten(flattened.Get(), bufferSize); - - ssize_t result = - TEMP_FAILURE_RETRY(write(m_fifo, flattened.Get(), bufferSize)); - - if (result > 0) { - // Successfuly written some bytes - return static_cast(result); - } else if (result == 0) { - // This is abnormal result - ThrowMsg(CommonException::InternalError, - "Invalid socket write result, 0 bytes written"); - } else { - // Interpret error result - // FIXME: Handle errno - Throw(AbstractOutput::Exception::WriteFailed); - } -} - -int NamedOutputPipe::WaitableWriteHandle() const -{ - return m_fifo; -} -} // namespace DPL diff --git a/modules_mobile/core/src/noncopyable.cpp b/modules_mobile/core/src/noncopyable.cpp deleted file mode 100644 index 9453655..0000000 --- a/modules_mobile/core/src/noncopyable.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file noncopyable.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of noncopyable - */ -#include -#include - -namespace DPL { -Noncopyable::Noncopyable() -{} - -Noncopyable::~Noncopyable() -{} -} // namespace DPL diff --git a/modules_mobile/core/src/once.cpp b/modules_mobile/core/src/once.cpp deleted file mode 100644 index f2d4a1a..0000000 --- a/modules_mobile/core/src/once.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file once.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of once - */ -#include -#include - -namespace DPL { -void Once::Call(Delegate delegate) -{ - // First chance test - if (m_atomic == 1) { - return; - } - - // Enter mutex - Mutex::ScopedLock lock(&m_mutex); - - // Second chance test - if (m_atomic == 1) { - return; - } - - // Initialization: call delegate - delegate(); - - // Initialization: done - ++m_atomic; -} -} // namespace DPL diff --git a/modules_mobile/core/src/read_write_mutex.cpp b/modules_mobile/core/src/read_write_mutex.cpp deleted file mode 100644 index ef34758..0000000 --- a/modules_mobile/core/src/read_write_mutex.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file read_write_mutex.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of read write mutex - */ -#include -#include -#include - -namespace DPL { -ReadWriteMutex::ReadWriteMutex() -{ - if (pthread_rwlock_init(&m_rwlock, NULL) != 0) { - Throw(Exception::CreateFailed); - } -} - -ReadWriteMutex::~ReadWriteMutex() -{ - if (pthread_rwlock_destroy(&m_rwlock) != 0) { - Throw(Exception::DestroyFailed); - } -} - -void ReadWriteMutex::ReadLock() const -{ - if (pthread_rwlock_rdlock(&m_rwlock) != 0) { - Throw(Exception::ReadLockFailed); - } -} - -void ReadWriteMutex::WriteLock() const -{ - if (pthread_rwlock_wrlock(&m_rwlock) != 0) { - Throw(Exception::WriteLockFailed); - } -} - -void ReadWriteMutex::Unlock() const -{ - if (pthread_rwlock_unlock(&m_rwlock) != 0) { - Throw(Exception::UnlockFailed); - } -} - -ReadWriteMutex::ScopedReadLock::ScopedReadLock(ReadWriteMutex *mutex) : - m_mutex(mutex) -{ - Assert(mutex != NULL); - m_mutex->ReadLock(); -} - -ReadWriteMutex::ScopedReadLock::~ScopedReadLock() -{ - m_mutex->Unlock(); -} - -ReadWriteMutex::ScopedWriteLock::ScopedWriteLock(ReadWriteMutex *mutex) : - m_mutex(mutex) -{ - Assert(mutex != NULL); - m_mutex->WriteLock(); -} - -ReadWriteMutex::ScopedWriteLock::~ScopedWriteLock() -{ - m_mutex->Unlock(); -} -} // namespace DPL diff --git a/modules_mobile/core/src/recursive_mutex.cpp b/modules_mobile/core/src/recursive_mutex.cpp deleted file mode 100644 index 234d25f..0000000 --- a/modules_mobile/core/src/recursive_mutex.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file recursive_mutex.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of recursive mutex - */ -#include -#include -#include - -namespace DPL { -RecursiveMutex::RecursiveMutex() -{ - pthread_mutexattr_t attr; - - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - - if (pthread_mutex_init(&m_mutex, &attr) != 0) { - Throw(Exception::CreateFailed); - } -} - -RecursiveMutex::~RecursiveMutex() -{ - if (pthread_mutex_destroy(&m_mutex) != 0) { - Throw(Exception::DestroyFailed); - } -} - -void RecursiveMutex::Lock() const -{ - if (pthread_mutex_lock(&m_mutex) != 0) { - Throw(Exception::LockFailed); - } -} - -void RecursiveMutex::Unlock() const -{ - if (pthread_mutex_unlock(&m_mutex) != 0) { - Throw(Exception::UnlockFailed); - } -} - -RecursiveMutex::ScopedLock::ScopedLock(RecursiveMutex *mutex) : - m_mutex(mutex) -{ - Assert(mutex != NULL); - m_mutex->Lock(); -} - -RecursiveMutex::ScopedLock::~ScopedLock() -{ - m_mutex->Unlock(); -} -} // namespace DPL diff --git a/modules_mobile/core/src/semaphore.cpp b/modules_mobile/core/src/semaphore.cpp deleted file mode 100644 index 387c009..0000000 --- a/modules_mobile/core/src/semaphore.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file semaphore.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of semaphore - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -void Semaphore::Remove(const std::string &fileName) -{ - if (sem_unlink(fileName.c_str()) == -1) { - int error = errno; - LogPedantic("Failed to unlink semaphore. Errno: " << error); - ThrowMsg(Exception::RemoveFailed, - "Failed to unlink semaphore. Errno: " << error); - } -} - -Semaphore::Semaphore(size_t maxLockCount) -{ - LogPedantic("Allocating unnamed semaphore:"); - LogPedantic(" Maximum lock count: " << maxLockCount); - - if (-1 == sem_init(&m_semaphore.unnamed.handle, - 0, - static_cast(maxLockCount))) - { - int error = errno; - - LogPedantic("Failed to create semaphore. Errno: " << error); - - ThrowMsg(Exception::CreateFailed, - "Failed to create semaphore. Errno: " << error); - } - - m_type = Type_Unnamed; -} - -Semaphore::Semaphore(const std::string &fileName, - bool allowCreate, - bool exclusiveCreate, - size_t maxLockCount, - int permissions, - bool unlinkOnDestroy) -{ - LogPedantic("Allocating named semaphore:"); - LogPedantic(" File name: " << fileName); - LogPedantic(" Maximum lock count: " << maxLockCount); - LogPedantic(" File name: " << fileName); - LogPedantic(" Allowed create: " << allowCreate); - LogPedantic(" Exclusive create: " << exclusiveCreate); - LogPedantic(" Permissions: " << permissions); - LogPedantic(" Unlink on destroy: " << unlinkOnDestroy); - - sem_t *semaphore; - - do { - if (allowCreate) { - if (exclusiveCreate) { - semaphore = sem_open(fileName.c_str(), - O_CREAT | O_EXCL, - permissions, - static_cast(maxLockCount)); - } else { - semaphore = sem_open(fileName.c_str(), - O_CREAT, - permissions, - static_cast(maxLockCount)); - } - } else { - semaphore = sem_open(fileName.c_str(), 0); - } - } while (semaphore == SEM_FAILED && errno == EINTR); - - if (semaphore == SEM_FAILED) { - int error = errno; - - LogPedantic("Failed to create semaphore '" << fileName - << "'. Errno: " << error); - - ThrowMsg(Exception::CreateFailed, - "Failed to create semaphore '" << fileName - << "'. Errno: " << error); - } - - m_semaphore.named.handle = semaphore; - - m_semaphore.named.name = strdup(fileName.c_str()); // May be NULL - - if (m_semaphore.named.name == NULL) { - LogPedantic("Out of memory while duplicating semaphore name"); - } - - m_semaphore.named.unlinkOnDestroy = unlinkOnDestroy; - - m_type = Type_Named; -} - -Semaphore::~Semaphore() -{ - InternalDestroy(); -} - -sem_t *Semaphore::InternalGet() const -{ - switch (m_type) { - case Type_Unnamed: - return &m_semaphore.unnamed.handle; - - case Type_Named: - return m_semaphore.named.handle; - - default: - Assert(false && "Invalid type"); - } - - return NULL; -} - -void Semaphore::InternalDestroy() -{ - switch (m_type) { - case Type_Unnamed: - if (sem_destroy(&m_semaphore.unnamed.handle) == -1) { - int error = errno; - - LogPedantic("Failed to destroy semaphore. Errno: " << error); - } - break; - - case Type_Named: - if (sem_close(m_semaphore.named.handle) == -1) { - int error = errno; - - LogPedantic("Failed to close semaphore. Errno: " << error); - } - - if (m_semaphore.named.name != NULL) { - // Unlink named semaphore - if (m_semaphore.named.unlinkOnDestroy && - sem_unlink(m_semaphore.named.name) == -1) - { - int error = errno; - - LogPedantic("Failed to unlink semaphore. Errno: " - << error); - } - - // Free name - free(m_semaphore.named.name); - } - break; - - default: - Assert(false && "Invalid type"); - } -} - -void Semaphore::Lock() const -{ - if (TEMP_FAILURE_RETRY(sem_wait(InternalGet())) != 0) { - int error = errno; - - LogPedantic("Failed to lock semaphore. Errno: " << error); - - ThrowMsg(Exception::LockFailed, - "Failed to lock semaphore. Errno: " << error); - } -} - -void Semaphore::Unlock() const -{ - if (sem_post(InternalGet()) != 0) { - int error = errno; - - LogPedantic("Failed to unlock semaphore. Errno: " << error); - - ThrowMsg(Exception::UnlockFailed, - "Failed to unlock semaphore. Errno: " << error); - } -} - -Semaphore::ScopedLock::ScopedLock(Semaphore *semaphore) : - m_semaphore(semaphore) -{ - Assert(semaphore != NULL); - m_semaphore->Lock(); -} - -Semaphore::ScopedLock::~ScopedLock() -{ - Try - { - m_semaphore->Unlock(); - } - Catch(Semaphore::Exception::UnlockFailed) - { - LogPedantic("Failed to leave semaphore scoped lock"); - } -} -} // namespace DPL diff --git a/modules_mobile/core/src/serialization.cpp b/modules_mobile/core/src/serialization.cpp deleted file mode 100644 index f8f05ff..0000000 --- a/modules_mobile/core/src/serialization.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file serialization.cpp - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of data serialization. - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/single_instance.cpp b/modules_mobile/core/src/single_instance.cpp deleted file mode 100644 index 5f95836..0000000 --- a/modules_mobile/core/src/single_instance.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file single_instance.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of single instance - */ -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace // anonumous -{ -const char *LOCK_PREFIX_PATH = "/tmp/dpl_single_instance_"; -} -SingleInstance::SingleInstance() : - m_locked(false), - m_fdLock(-1) -{} - -SingleInstance::~SingleInstance() -{ - Assert(!m_locked && "Single instance must be released before exit!"); -} - -bool SingleInstance::TryLock(const std::string &lockName) -{ - LogPedantic("Locking single instance: " << lockName); - - struct flock lock; - - lock.l_type = F_WRLCK; - lock.l_whence = SEEK_SET; - lock.l_start = 0; - lock.l_len = 1; - - // Open lock file - m_fdLock = - TEMP_FAILURE_RETRY(open((std::string(LOCK_PREFIX_PATH) + - lockName).c_str(), - O_WRONLY | O_CREAT, 0666)); - - if (m_fdLock == -1) { - ThrowMsg(Exception::LockError, "Cannot open single instance lock file!"); - } - - // Lock file - int result = TEMP_FAILURE_RETRY(fcntl(m_fdLock, F_SETLK, &lock)); - - // Was the instance successfuly locked ? - if (result == 0) { - LogPedantic("Instance locked: " << lockName); - - // It is locked now - m_locked = true; - - // Done - return true; - } - - if (errno == EACCES || errno == EAGAIN) { - LogPedantic("Instance is already running: " << lockName); - return false; - } - - // This is lock error - ThrowMsg(Exception::LockError, "Cannot lock single instance lock file!"); -} - -void SingleInstance::Release() -{ - if (!m_locked) { - return; - } - - LogPedantic("Unlocking single instance"); - - // Unlock file - struct flock lock; - - lock.l_type = F_UNLCK; - lock.l_whence = SEEK_SET; - lock.l_start = 0; - lock.l_len = 1; - - int result = TEMP_FAILURE_RETRY(fcntl(m_fdLock, F_SETLK, &lock)); - - // Was the instance successfuly unlocked ? - if (result == -1) { - ThrowMsg(Exception::LockError, - "Cannot unlock single instance lock file!"); - } - - // Close lock file - if (TEMP_FAILURE_RETRY(close(m_fdLock)) == -1) { - ThrowMsg(Exception::LockError, - "Cannot close single instance lock file!"); - } - - m_fdLock = -1; - - // Done - m_locked = false; - LogPedantic("Instance unlocked"); -} -} // namespace DPL diff --git a/modules_mobile/core/src/singleton.cpp b/modules_mobile/core/src/singleton.cpp deleted file mode 100644 index a76e8ac..0000000 --- a/modules_mobile/core/src/singleton.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_event.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of singleton - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/task.cpp b/modules_mobile/core/src/task.cpp deleted file mode 100644 index 6d4ff0d..0000000 --- a/modules_mobile/core/src/task.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file task.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Radoslaw Wicik (r.wicik@samsung.com) - * @version 1.0 - * @brief Implementation file for abstaract task definition - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/task_list.cpp b/modules_mobile/core/src/task_list.cpp deleted file mode 100644 index 928f254..0000000 --- a/modules_mobile/core/src/task_list.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file task_list.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Radoslaw Wicik (r.wicik@samsung.com) - * @version 1.0 - * @brief Implementation file for task list - */ -#include -#include -#include - -namespace DPL { -TaskList::TaskList() : - m_switched(false), - m_running(false) -{ - m_currentTask = m_tasks.end(); -} - -TaskList::~TaskList() -{ - for (Tasks::iterator i = m_tasks.begin(); i != m_tasks.end(); ++i) { - delete *i; - } -} - -void TaskList::AddTask(Task *task) -{ - Assert(!m_running && "AddTask is not allowed after calling NextStep"); - m_tasks.push_back(task); - m_currentTask = m_tasks.begin(); -} - -bool TaskList::NextStep() -{ - m_running = true; - - Assert( - m_currentTask != m_tasks.end() && - "Task list is empty or all tasks done"); - - m_switched = false; - - bool result = (*m_currentTask)->NextStep(); - - if (result || m_switched) { - return true; - } - - return ++m_currentTask != m_tasks.end(); -} - -bool TaskList::Abort() -{ - m_tasks.erase(m_currentTask, m_tasks.end()); - m_tasks.reverse(); - for (Tasks::iterator i = m_tasks.begin(); i != m_tasks.end();) { - //If given task does not have any "abortSteps", remove it from the list - if (!(*i)->Abort()) { - delete *i; - i = m_tasks.erase(i); - continue; - } - ++i; - } - - if (m_tasks.empty()) { - return false; - } - - m_currentTask = m_tasks.begin(); - - return true; -} - -void TaskList::SwitchToTask(Task *task) -{ - Tasks::iterator i = std::find(m_tasks.begin(), m_tasks.end(), task); - Assert(i != m_tasks.end()); - m_currentTask = i; - m_switched = true; -} - -size_t TaskList::GetTaskCount() const -{ - return static_cast(m_tasks.size()); -} - -size_t TaskList::GetStepCount() const -{ - size_t count = 0; - - for (Tasks::const_iterator i = m_tasks.begin(); i != m_tasks.end(); ++i) { - count += (*i)->GetStepCount(); - } - - return count; -} -} // namespace DPL diff --git a/modules_mobile/core/src/type_list.cpp b/modules_mobile/core/src/type_list.cpp deleted file mode 100644 index fa94806..0000000 --- a/modules_mobile/core/src/type_list.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file type_list.cpp - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Generic type list template - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/union_cast.cpp b/modules_mobile/core/src/union_cast.cpp deleted file mode 100644 index ffcb499..0000000 --- a/modules_mobile/core/src/union_cast.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file union_cast.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for union cast - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/core/src/waitable_event.cpp b/modules_mobile/core/src/waitable_event.cpp deleted file mode 100644 index 4808896..0000000 --- a/modules_mobile/core/src/waitable_event.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_event.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of waitable event - */ -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -WaitableEvent::WaitableEvent() -{ - if (pipe(m_pipe) == -1) { - Throw(Exception::CreateFailed); - } - - if (fcntl(m_pipe[0], F_SETFL, O_NONBLOCK | - fcntl(m_pipe[0], F_GETFL)) == -1) - { - Throw(Exception::CreateFailed); - } -} - -WaitableEvent::~WaitableEvent() -{ - if (TEMP_FAILURE_RETRY(close(m_pipe[0])) == -1) { - Throw(Exception::DestroyFailed); - } - - if (TEMP_FAILURE_RETRY(close(m_pipe[1])) == -1) { - Throw(Exception::DestroyFailed); - } -} - -WaitableHandle WaitableEvent::GetHandle() const -{ - return m_pipe[0]; -} - -void WaitableEvent::Signal() const -{ - char data = 0; - - if (TEMP_FAILURE_RETRY(write(m_pipe[1], &data, 1)) != 1) { - Throw(Exception::SignalFailed); - } -} - -void WaitableEvent::Reset() const -{ - char data; - - if (TEMP_FAILURE_RETRY(read(m_pipe[0], &data, 1)) != 1) { - Throw(Exception::ResetFailed); - } -} -} // namespace DPL diff --git a/modules_mobile/core/src/waitable_handle.cpp b/modules_mobile/core/src/waitable_handle.cpp deleted file mode 100644 index 2894022..0000000 --- a/modules_mobile/core/src/waitable_handle.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_handle.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of waitable handle - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace // anonymous -{ -void CheckWaitableHandle(WaitableHandle handle) -{ -#ifdef DPL_ENABLE_WAITABLE_HANDLE_BADF_CHECK - // Try to get descriptor flags - int result = fcntl(handle, F_GETFL); - - if (result == -1 && errno == EBADF) { - Assert(0 && "CheckWaitableHandle: Invalid WaitableHandle! (EBADF)"); - } - - Assert(result != -1 && "CheckWaitableHandle: Invalid WaitableHandle!"); -#endif // DPL_ENABLE_WAITABLE_HANDLE_BADF_CHECK -} -} // namespace anonymous - -WaitableHandleIndexList WaitForSingleHandle(WaitableHandle handle, - unsigned long miliseconds) -{ - WaitableHandleList waitHandles; - waitHandles.push_back(handle); - return WaitForMultipleHandles(waitHandles, miliseconds); -} - -WaitableHandleIndexList WaitForSingleHandle(WaitableHandle handle, - WaitMode::Type mode, - unsigned long miliseconds) -{ - WaitableHandleListEx waitHandles; - waitHandles.push_back(std::make_pair(handle, mode)); - return WaitForMultipleHandles(waitHandles, miliseconds); -} - -WaitableHandleIndexList WaitForMultipleHandles( - const WaitableHandleList &waitableHandleList, - unsigned long miliseconds) -{ - WaitableHandleListEx handleList; - - for (WaitableHandleList::const_iterator iterator = waitableHandleList.begin(); - iterator != waitableHandleList.end(); - ++iterator) - { - // Wait for multiple objects - handleList.push_back(std::make_pair(*iterator, WaitMode::Read)); - } - - // Do waiting - return WaitForMultipleHandles(handleList, miliseconds); -} - -WaitableHandleIndexList WaitForMultipleHandles( - const WaitableHandleListEx &waitableHandleListEx, - unsigned long miliseconds) -{ - fd_set readFds, writeFds, errorFds; - - // Fill sets - int maxFd = -1; - - FD_ZERO(&readFds); - FD_ZERO(&writeFds); - FD_ZERO(&errorFds); - - // Add read wait handles - for (WaitableHandleListEx::const_iterator iterator = - waitableHandleListEx.begin(); - iterator != waitableHandleListEx.end(); - ++iterator) - { - if (iterator->first > maxFd) { - maxFd = iterator->first; - } - - CheckWaitableHandle(iterator->first); - - // Handle errors along with read and write events - FD_SET(iterator->first, &errorFds); - - if (iterator->second == WaitMode::Read) { - FD_SET(iterator->first, &readFds); - } else if (iterator->second == WaitMode::Write) { - FD_SET(iterator->first, &writeFds); - } - } - - // Do select - timeval timeout; - timeval *effectiveTimeout = NULL; - if (miliseconds != 0xFFFFFFFF) { - timeout.tv_sec = miliseconds / 1000; - timeout.tv_usec = (miliseconds % 1000) * 1000; - effectiveTimeout = &timeout; - } - - if (TEMP_FAILURE_RETRY(select(maxFd + 1, &readFds, &writeFds, &errorFds, - effectiveTimeout)) == -1) - { - Throw(WaitFailed); - } - - // Check results - WaitableHandleIndexList indexes; - size_t index = 0; - - for (WaitableHandleListEx::const_iterator iterator = - waitableHandleListEx.begin(); - iterator != waitableHandleListEx.end(); - ++iterator) - { - // Always return errors, no matter what type of listening is set - if (FD_ISSET(iterator->first, &errorFds)) { - indexes.push_back(index); - } else if (iterator->second == WaitMode::Read) { - if (FD_ISSET(iterator->first, &readFds)) { - indexes.push_back(index); - } - } else if (iterator->second == WaitMode::Write) { - if (FD_ISSET(iterator->first, &writeFds)) { - indexes.push_back(index); - } - } - ++index; - } - - // Successfuly awaited some events or timeout occurred - return indexes; -} -} // namespace DPL diff --git a/modules_mobile/custom_handler_dao/dao/custom_handler_dao.cpp b/modules_mobile/custom_handler_dao/dao/custom_handler_dao.cpp deleted file mode 100644 index 6d57771..0000000 --- a/modules_mobile/custom_handler_dao/dao/custom_handler_dao.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file custom_handler_dao.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the definition of custom handler dao class. - */ - -#include -#include -#include -#include - -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::custom_handler; - -namespace CustomHandlerDB { -namespace { -template -void fillRow(T& row, const CustomHandler& handler, const DPL::String& pkgName) -{ - row.Set_app_id(pkgName); - row.Set_target(handler.target); - row.Set_base_url(handler.base_url); - row.Set_url(handler.url); - row.Set_title(handler.title); - row.Set_user_allowed(handler.user_decision); -} -} // namespace - -CustomHandlerDAO::CustomHandlerDAO(const DPL::String& pkgName) : - CustomHandlerDAOReadOnly(pkgName) -{} - -CustomHandlerDAO::~CustomHandlerDAO() -{} - -void CustomHandlerDAO::registerContentHandler(const CustomHandler& handler) -{ - LogDebug("Registering content handler " << handler.target << " " << - handler.base_url); - Try { - if (handler.user_decision & Agreed) { - //need to disable all previous, agreed entries - CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers); - select->Where(And(Equals(handler.target), - Or(Equals(Agreed), - Equals( - AgreedPermanently)) - )); - ContentHandlers::Select::RowList rows = select->GetRowList(); - if (rows.size() > 1) { - //more than one activ content handler - not good. Remove all. - //this should never happen - LogError("Database data incoherent."); - CUSTOM_HANDLER_DB_DELETE(deleteContent, ContentHandlers); - deleteContent->Where(And(Equals( - handler.target), - Or(Equals(Agreed), - Equals( - AgreedPermanently)))); - deleteContent->Execute(); - //all content handlers removed. New one can be inserted - } else if (!rows.empty()) { - //one active handler. Can be updaed - LogDebug("Activ content handler exist. Update"); - CUSTOM_HANDLER_DB_UPDATE(update, ContentHandlers); - update->Where(And(Equals(handler. - target), - Or(Equals( - Agreed), - Equals( - AgreedPermanently)) - )); - ContentHandlers::Row rowToUpdate = rows.front(); - - if (handler.user_decision & DecisionSaved) { - //do not ask about previous one - rowToUpdate.Set_user_allowed(DeclinedPermanently); - } else { - //ask for next time - rowToUpdate.Set_user_allowed(Declined); - } - update->Values(rowToUpdate); - update->Execute(); - } - } - LogDebug("Inserting new content handler"); - ContentHandlers::Row row; - fillRow(row, handler, m_pkgName); - if (getContentHandler(handler.target, handler.url, handler.base_url)) { - LogDebug("Content handler exist. Update its state"); - CUSTOM_HANDLER_DB_UPDATE(updateRow, ContentHandlers); - updateRow->Where(And(Equals(m_pkgName), - And(Equals(handler. - target), - And(Equals(handler. - url), - Equals( - handler.base_url))))); - updateRow->Values(row); - updateRow->Execute(); - LogDebug("updated"); - return; - } - CUSTOM_HANDLER_DB_INSERT(insert, ContentHandlers); - insert->Values(row); - insert->Execute(); - LogDebug("insterted"); - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to register custom handler"); - } -} - -void CustomHandlerDAO::registerProtocolHandler(const CustomHandler& handler) -{ - LogDebug("Registering protocol handler " << handler.target << " " << - handler.base_url); - Try { - if (handler.user_decision & Agreed) { - //need to disable all previous, agreed entries - CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); - select->Where(And(Equals(handler.target), - Or(Equals(Agreed), - Equals( - AgreedPermanently)) - )); - ProtocolHandlers::Select::RowList rows = select->GetRowList(); - if (rows.size() > 1) { - //more than one activ protocol handler - not good. Remove all. - //this should never happen - LogError("Database data incoherent."); - CUSTOM_HANDLER_DB_DELETE(deleteProtocol, ProtocolHandlers); - deleteProtocol->Where(And(Equals( - handler.target), - Or(Equals(Agreed), - Equals( - AgreedPermanently)))); - deleteProtocol->Execute(); - //all protocol handlers removed. New one can be inserted - } else if (!rows.empty()) { - //one active handler. Can be updaed - CUSTOM_HANDLER_DB_UPDATE(update, ProtocolHandlers); - update->Where(And(Equals(handler. - target), - Or(Equals( - Agreed), - Equals( - AgreedPermanently)) - )); - ProtocolHandlers::Row rowToUpdate = rows.front(); - - if (handler.user_decision & DecisionSaved) { - //do not ask about previous one - rowToUpdate.Set_user_allowed(DeclinedPermanently); - } else { - //ask for next time - rowToUpdate.Set_user_allowed(Declined); - } - update->Values(rowToUpdate); - update->Execute(); - } - } - LogDebug("Inserting new protocol handler"); - ProtocolHandlers::Row row; - fillRow(row, handler, m_pkgName); - if (getProtocolHandler(handler.target, handler.url, - handler.base_url)) - { - LogDebug("Protocol handler exist. Update its state"); - CUSTOM_HANDLER_DB_UPDATE(updateRow, ProtocolHandlers); - updateRow->Where(And(Equals(m_pkgName), - And(Equals(handler. - target), - And(Equals(handler. - url), - Equals( - handler.base_url))))); - updateRow->Values(row); - updateRow->Execute(); - LogDebug("updated"); - return; - } - CUSTOM_HANDLER_DB_INSERT(insert, ProtocolHandlers); - insert->Values(row); - insert->Execute(); - LogDebug("insterted"); - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to register custom handler"); - } -} - -void CustomHandlerDAO::unregisterContentHandler(const DPL::String& target, - const DPL::String& url) -{ - LogDebug("Removing content handler " << target << " " << url); - Try { - CUSTOM_HANDLER_DB_DELETE(deleteFrom, ContentHandlers); - deleteFrom->Where(And(Equals(m_pkgName), - And(Equals(target), - Equals(url)))); - deleteFrom->Execute(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to remove content handler"); - } -} - -void CustomHandlerDAO::unregisterProtocolHandler(const DPL::String& target, - const DPL::String& url) -{ - LogDebug("Removing protocol handler " << target << " " << url); - Try { - CUSTOM_HANDLER_DB_DELETE(deleteFrom, ProtocolHandlers); - deleteFrom->Where(And(Equals(m_pkgName), - And(Equals(target), - Equals(url)))); - deleteFrom->Execute(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to remove content handler"); - } -} - -void CustomHandlerDAO::unregisterContentHandler(const DPL::String& target, - const DPL::String& url, - const DPL::String& baseURL) -{ - LogDebug("Removing content handler " << target << " " << url); - Try { - CUSTOM_HANDLER_DB_DELETE(deleteFrom, ContentHandlers); - deleteFrom->Where(And(Equals(m_pkgName), - And(Equals(target), - And(Equals(url), - Equals(baseURL))))); - deleteFrom->Execute(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to remove content handler"); - } -} - -void CustomHandlerDAO::unregisterProtocolHandler(const DPL::String& target, - const DPL::String& url, - const DPL::String& baseURL) -{ - LogDebug("Removing protocol handler " << target << " " << url); - Try { - CUSTOM_HANDLER_DB_DELETE(deleteFrom, ProtocolHandlers); - deleteFrom->Where(And(Equals(m_pkgName), - And(Equals(target), - And(Equals(url), - Equals( - baseURL))))); - deleteFrom->Execute(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to remove content handler"); - } -} - -void CustomHandlerDAO::removeWidgetProtocolHandlers() -{ - LogDebug("ente"); - Try { - CUSTOM_HANDLER_DB_DELETE(deleteProtocol, ProtocolHandlers); - deleteProtocol->Where(Equals(m_pkgName)); - deleteProtocol->Execute(); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to remove widget protoc"); - } -} - -void CustomHandlerDAO::removeWidgetContentHandlers() -{ - LogDebug("ente"); - Try { - CUSTOM_HANDLER_DB_DELETE(deleteContent, ContentHandlers); - deleteContent->Where(Equals(m_pkgName)); - deleteContent->Execute(); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAO::Exception::DatabaseError, - "Failed to remove widget entries"); - } -} -} // namespace CustomHandlerDB diff --git a/modules_mobile/custom_handler_dao/dao/custom_handler_dao_read_only.cpp b/modules_mobile/custom_handler_dao/dao/custom_handler_dao_read_only.cpp deleted file mode 100644 index ff43613..0000000 --- a/modules_mobile/custom_handler_dao/dao/custom_handler_dao_read_only.cpp +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of custom handler dao class. - * - * @file custom_handler_dao_read_only.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of custom handler dao - */ - -#include -#include - -#include - -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::custom_handler; - -namespace CustomHandlerDB { -namespace { -template -CustomHandlerPtr getSingleHandler(std::list row) -{ - CustomHandlerPtr handler; - if (!row.empty()) { - // There should be only one - if (row.size() > 1) { - ThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "More than one handler registered"); - } - - handler.reset(new CustomHandler()); - handler->target = row.front().Get_target(); - handler->base_url = row.front().Get_base_url(); - handler->url = row.front().Get_url(); - handler->title = row.front().Get_title(); - handler->user_allowed = static_cast(row.front().Get_user_allowed()); - handler->user_decision = - static_cast(row.front().Get_user_allowed()); - } - return handler; -} -} // namespace - -CustomHandlerDAOReadOnly::CustomHandlerDAOReadOnly(const DPL::String& pkgName) - : - m_pkgName(pkgName) -{} - -CustomHandlerDAOReadOnly::~CustomHandlerDAOReadOnly() -{} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getProtocolHandler( - const DPL::String& protocol, - const DPL::String& url) -{ - LogDebug("Getting protocol handler"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); - - select->Where(And(Equals(m_pkgName), - And(Equals(protocol), - Equals(url)))); - - std::list list = select->GetRowList(); - return getSingleHandler(list); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get protocol handler"); - } -} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getContentHandler( - const DPL::String& content, - const DPL::String& url) -{ - LogDebug("Getting content handler"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers); - - select->Where(And(Equals(m_pkgName), - And(Equals(content), - Equals(url)))); - - std::list list = select->GetRowList(); - return getSingleHandler(list); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get content handler"); - } -} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getActivProtocolHandler( - const DPL::String& protocol) -{ - LogDebug("Getting active protocol handler"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); - - select->Where(And(Equals(m_pkgName), - Equals(protocol))); - - std::list list = select->GetRowList(); - CustomHandlerPtr handler; - - FOREACH(it, list) { - if (it->Get_user_allowed() & Agreed) { - handler.reset(new CustomHandler()); - handler->base_url = it->Get_base_url(); - handler->target = it->Get_target(); - handler->title = it->Get_title(); - handler->url = it->Get_url(); - handler->user_allowed = - static_cast(it->Get_user_allowed()); - handler->user_decision = - static_cast(it->Get_user_allowed()); - } - } - return handler; - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get protocol handler"); - } -} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getProtocolHandler( - const DPL::String& protocol, - const DPL::String& url, - const DPL::String& baseURL) -{ - LogDebug("Check if protocol is registered"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); - - select->Where(And(Equals(m_pkgName), - And(Equals(protocol), - And(Equals(url), - Equals(baseURL) - ) - ) - ) - ); - - std::list list = select->GetRowList(); - return getSingleHandler(list); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get content handler"); - } -} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getActivContentHandler( - const DPL::String& content) -{ - LogDebug("Getting active content handler"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers); - - select->Where(And(Equals(m_pkgName), - Equals(content))); - - std::list list = select->GetRowList(); - CustomHandlerPtr handler; - - FOREACH(it, list) { - if (it->Get_user_allowed() & Agreed) { - handler.reset(new CustomHandler()); - handler->base_url = it->Get_base_url(); - handler->target = it->Get_target(); - handler->title = it->Get_title(); - handler->url = it->Get_url(); - handler->user_allowed = - static_cast(it->Get_user_allowed()); - handler->user_decision = - static_cast(it->Get_user_allowed()); - } - } - return handler; - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get protocol handler"); - } -} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getContentHandler( - const DPL::String& content, - const DPL::String& url, - const DPL::String& baseURL) -{ - LogDebug("Check if content is registered"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers); - - select->Where(And(Equals(m_pkgName), - And(Equals(content), - And(Equals(url), - Equals(baseURL))))); - - std::list list = select->GetRowList(); - return getSingleHandler(list); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get content handler"); - } -} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getAllowedProtocolHandler( - const DPL::String& protocol) -{ - LogDebug("Getting allowed protocol handler"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ProtocolHandlers); - - select->Where(And(Equals(m_pkgName), - And(Equals(protocol), - Equals(true)))); - - std::list list = select->GetRowList(); - return getSingleHandler(list); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get content handler"); - } -} - -CustomHandlerPtr CustomHandlerDAOReadOnly::getAllowedContentHandler( - const DPL::String& protocol) -{ - LogDebug("Getting allowed content handler"); - Try { - CUSTOM_HANDLER_DB_SELECT(select, ContentHandlers) - - select->Where(And(Equals(m_pkgName), - And(Equals(protocol), - Equals(true)))); - - std::list list = select->GetRowList(); - return getSingleHandler(list); - } Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(CustomHandlerDAOReadOnly::Exception::DatabaseError, - "Failed to get content handler"); - } -} -} // namespace CustomHandlerDB diff --git a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h b/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h deleted file mode 100644 index 4eabd55..0000000 --- a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _CUSTOM_HANDLER_DATABASE_H_ -#define _CUSTOM_HANDLER_DATABASE_H_ - -#include -#include -#include - -namespace CustomHandlerDB { -namespace Interface { -void attachDatabaseRO(); -void attachDatabaseRW(); -void detachDatabase(); - -extern DPL::Mutex g_dbQueriesMutex; -extern DPL::DB::ThreadDatabaseSupport g_dbInterface; -} // namespace Interface -} // namespace CustomHandlerDB - -#define CUSTOM_HANDLER_DB_INTERNAL(tlsCommand, InternalType) \ - static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ - { \ - DPL::Mutex::ScopedLock lock( \ - &CustomHandlerDB::Interface::g_dbQueriesMutex); \ - if (!tlsCommand##Ptr) { \ - static DPL::ThreadLocalVariable tmp; \ - tlsCommand##Ptr = &tmp; \ - } \ - } \ - DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ - if (tlsCommand.IsNull()) \ - { \ - tlsCommand = InternalType(&CustomHandlerDB::Interface::g_dbInterface); \ - } - -#define CUSTOM_HANDLER_DB_SELECT(name, type) \ - CUSTOM_HANDLER_DB_INTERNAL(name, type::Select) - -#define CUSTOM_HANDLER_DB_INSERT(name, type) \ - CUSTOM_HANDLER_DB_INTERNAL(name, type::Insert) - -#define CUSTOM_HANDLER_DB_UPDATE(name, type) \ - CUSTOM_HANDLER_DB_INTERNAL(name, type::Update) - -#define CUSTOM_HANDLER_DB_DELETE(name, type) \ - CUSTOM_HANDLER_DB_INTERNAL(name, type::Delete) - -#endif /* _CUSTOM_HANDLER_DATABASE_H_ */ - diff --git a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h b/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h deleted file mode 100644 index c798cea..0000000 --- a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/common_dao_types.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file common_dao_types.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of - * common data types for custom handler database. - */ -#ifndef SRC_MODULES_CUSTOM_HANDLERS_DAO_COMMON_DAO_TYPES_H_ -#define SRC_MODULES_CUSTOM_HANDLERS_DAO_COMMON_DAO_TYPES_H_ - -#include -#include -#include - -namespace CustomHandlerDB { -/** - * @brief Custom Handler struct - * - * Describes custom handler for protocol and content. - */ -enum HandlerState { - Agreed = 0x01, //user agreed to use protocol only, - //but want to ask in next occurence - Declined = 0x02, //user declined to use protocol, - //but want to ask in next occurence - //in fact it is used when user wants to cover saved - // agreed - //decision by agreeing to another one without save. - DecisionSaved = 0x04, //user dont want to ask again - AgreedPermanently = Agreed | DecisionSaved, - DeclinedPermanently = Declined | DecisionSaved -}; - -struct CustomHandler -{ - DPL::String target; // protocol/content ("mailto"/"application/x-soup") - DPL::String base_url; // base url of registered page - DPL::String url; // url used for protocol/content handling - DPL::String title; // user friendly handler name - bool user_allowed; // true if user has allowed the handler - HandlerState user_decision; -}; - -typedef std::shared_ptr CustomHandlerPtr; -typedef std::list CustomHandlersList; -} // namespace CustomHandlerDB - -#endif /* SRC_MODULES_CUSTOM_HANDLERS_DAO_COMMON_DAO_TYPES_H_ */ diff --git a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h b/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h deleted file mode 100644 index 42a9936..0000000 --- a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of custom handler dao class. - * - * @file custom_handler_dao_read_only.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of custom handler dao - */ - -#ifndef _CUSTOM_HANDLER_DAO_READ_ONLY_H_ -#define _CUSTOM_HANDLER_DAO_READ_ONLY_H_ - -#include -#include -#include "common_dao_types.h" - -namespace CustomHandlerDB { -class CustomHandlerDAOReadOnly -{ - public: - /** - * CustomHandlerDAOReadOnly Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - }; - - public: - explicit CustomHandlerDAOReadOnly(const DPL::String& pkgName); - virtual ~CustomHandlerDAOReadOnly(); - - /** - * Returns protocol handler - */ - CustomHandlerPtr getProtocolHandler(const DPL::String& protocol, - const DPL::String& url); - CustomHandlerPtr getProtocolHandler(const DPL::String& protocol, - const DPL::String& url, - const DPL::String& baseURL); - - /** - * Returns protocol handler that is agreed or agreed and saved and match - * tizenID - */ - CustomHandlerPtr getActivProtocolHandler(const DPL::String& protocol); - - /** - * Returns content handler - */ - CustomHandlerPtr getContentHandler(const DPL::String& content, - const DPL::String& url); - CustomHandlerPtr getContentHandler(const DPL::String& protocol, - const DPL::String& url, - const DPL::String& baseURL); - - /** - * Returns content handler that is agreed or agreed and saved and match - * tizenID - */ - CustomHandlerPtr getActivContentHandler(const DPL::String& content); - - /** - * Returns allowed handler for given protocol - */ - CustomHandlerPtr getAllowedProtocolHandler(const DPL::String& protocol); - - /** - * Returns allowed handler for given content - */ - CustomHandlerPtr getAllowedContentHandler(const DPL::String& protocol); - - protected: - DPL::String m_pkgName; -}; -} // namespace CustomHandlerDB - -#endif // _CUSTOM_HANDLER_DAO_READ_ONLY_H_ - diff --git a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h b/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h deleted file mode 100644 index 9a478cb..0000000 --- a/modules_mobile/custom_handler_dao/include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of custom handler dao class. - * - * @file custom_handler_dao.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of custom handler dao - */ -#ifndef _CUSTOM_HANDLER_DAO_H_ -#define _CUSTOM_HANDLER_DAO_H_ - -#include - -namespace CustomHandlerDB { -class CustomHandlerDAO : public CustomHandlerDAOReadOnly -{ - public: - explicit CustomHandlerDAO(const DPL::String& pkgName); - virtual ~CustomHandlerDAO(); - - /** - * Registers custom content handler - */ - void registerContentHandler(const CustomHandler& handler); - - /** - * Registers custom protocol handler - */ - void registerProtocolHandler(const CustomHandler& handler); - - /** - * Unregisters custom content handler - */ - void unregisterContentHandler(const DPL::String& target, - const DPL::String& burl); - /** - * Unregisters custom protocol handler - */ - void unregisterProtocolHandler(const DPL::String& target, - const DPL::String& url); - - void unregisterContentHandler(const DPL::String& target, - const DPL::String& url, - const DPL::String& baseURL); - - void unregisterProtocolHandler(const DPL::String& target, - const DPL::String& url, - const DPL::String& baseURL); - - /** - * Removes all widget entries connected to given ID - */ - void removeWidgetProtocolHandlers(); - void removeWidgetContentHandlers(); -}; -} // namespace CustomHandlerDB - -#endif // _CUSTOM_HANDLER_DAO_H_ diff --git a/modules_mobile/custom_handler_dao/orm/custom_handler_db b/modules_mobile/custom_handler_dao/orm/custom_handler_db deleted file mode 100644 index 848c84a..0000000 --- a/modules_mobile/custom_handler_dao/orm/custom_handler_db +++ /dev/null @@ -1,34 +0,0 @@ -SQL( - BEGIN TRANSACTION; -) - -CREATE_TABLE(ProtocolHandlers) - COLUMN_NOT_NULL(app_id, TEXT,) - COLUMN_NOT_NULL(target, TEXT,) - COLUMN_NOT_NULL(base_url, TEXT,) - COLUMN_NOT_NULL(url, TEXT,) - COLUMN_NOT_NULL(title, TEXT,) - COLUMN_NOT_NULL(user_allowed, INT,) - - TABLE_CONSTRAINTS( - PRIMARY KEY (app_id, target, base_url, url) - ) -CREATE_TABLE_END() - -CREATE_TABLE(ContentHandlers) - COLUMN_NOT_NULL(app_id, TEXT,) - COLUMN_NOT_NULL(target, TEXT,) - COLUMN_NOT_NULL(base_url, TEXT,) - COLUMN_NOT_NULL(url, TEXT,) - COLUMN_NOT_NULL(title, TEXT,) - COLUMN_NOT_NULL(user_allowed, INT,) - - TABLE_CONSTRAINTS( - PRIMARY KEY (app_id, target, base_url, url) - ) -CREATE_TABLE_END() - -SQL( - COMMIT; -) - diff --git a/modules_mobile/custom_handler_dao/orm/custom_handler_db_definitions b/modules_mobile/custom_handler_dao/orm/custom_handler_db_definitions deleted file mode 100644 index 1bc2bcd..0000000 --- a/modules_mobile/custom_handler_dao/orm/custom_handler_db_definitions +++ /dev/null @@ -1,6 +0,0 @@ -DATABASE_START(custom_handler) - -#include "custom_handler_db" -#include "version_db" - -DATABASE_END() diff --git a/modules_mobile/custom_handler_dao/orm/custom_handler_db_sql_generator.h b/modules_mobile/custom_handler_dao/orm/custom_handler_db_sql_generator.h deleted file mode 100644 index 9b007de..0000000 --- a/modules_mobile/custom_handler_dao/orm/custom_handler_db_sql_generator.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file custom_handler_db_sql_generator.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL - * input file from database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. -#include - -#include "custom_handler_db_definitions" diff --git a/modules_mobile/custom_handler_dao/orm/gen_db_md5.sh b/modules_mobile/custom_handler_dao/orm/gen_db_md5.sh deleted file mode 100755 index 22c2530..0000000 --- a/modules_mobile/custom_handler_dao/orm/gen_db_md5.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -CHECKSUM=`cat ${2} ${3} 2>/dev/null | md5sum 2>/dev/null | cut -d\ -f1 2>/dev/null` -echo "#define DB_CHECKSUM DB_VERSION_${CHECKSUM}" > ${1} -echo "#define DB_CHECKSUM_STR \"DB_VERSION_${CHECKSUM}\"" >> ${1} - diff --git a/modules_mobile/custom_handler_dao/orm/orm_generator_custom_handler.h b/modules_mobile/custom_handler_dao/orm/orm_generator_custom_handler.h deleted file mode 100644 index 35c43a2..0000000 --- a/modules_mobile/custom_handler_dao/orm/orm_generator_custom_handler.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _ORM_GENERATOR_CUSTOM_HANDLER_H_ -#define _ORM_GENERATOR_CUSTOM_HANDLER_H_ - -#define ORM_GENERATOR_DATABASE_NAME custom_handler_db_definitions -#include -#undef ORM_GENERATOR_DATABASE_NAME - -#endif // _ORM_GENERATOR_CUSTOM_HANDLER_H_ diff --git a/modules_mobile/custom_handler_dao/orm/version_db b/modules_mobile/custom_handler_dao/orm/version_db deleted file mode 100644 index 7e20d8d..0000000 --- a/modules_mobile/custom_handler_dao/orm/version_db +++ /dev/null @@ -1,5 +0,0 @@ -SQL( - BEGIN TRANSACTION; - CREATE TABLE DB_CHECKSUM (version INT); - COMMIT; -) diff --git a/modules_mobile/db/config.cmake b/modules_mobile/db/config.cmake deleted file mode 100644 index 96ccbb9..0000000 --- a/modules_mobile/db/config.cmake +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_DB_SOURCES - ${PROJECT_SOURCE_DIR}/modules/db/src/naive_synchronization_object.cpp - ${PROJECT_SOURCE_DIR}/modules/db/src/orm.cpp - ${PROJECT_SOURCE_DIR}/modules/db/src/sql_connection.cpp - ${PROJECT_SOURCE_DIR}/modules/db/src/thread_database_support.cpp - PARENT_SCOPE -) - - -SET(DPL_DB_HEADERS - ${PROJECT_SOURCE_DIR}/modules/db/include/dpl/db/naive_synchronization_object.h - ${PROJECT_SOURCE_DIR}/modules/db/include/dpl/db/orm_generator.h - ${PROJECT_SOURCE_DIR}/modules/db/include/dpl/db/orm.h - ${PROJECT_SOURCE_DIR}/modules/db/include/dpl/db/orm_interface.h - ${PROJECT_SOURCE_DIR}/modules/db/include/dpl/db/orm_macros.h - ${PROJECT_SOURCE_DIR}/modules/db/include/dpl/db/sql_connection.h - ${PROJECT_SOURCE_DIR}/modules/db/include/dpl/db/thread_database_support.h - PARENT_SCOPE -) - -SET(DPL_DB_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/db/include - PARENT_SCOPE -) diff --git a/modules_mobile/db/include/dpl/db/naive_synchronization_object.h b/modules_mobile/db/include/dpl/db/naive_synchronization_object.h deleted file mode 100644 index 2f63a0f..0000000 --- a/modules_mobile/db/include/dpl/db/naive_synchronization_object.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file naive_synchronization_object.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of SQL naive - * synchronization object - */ -#ifndef DPL_NAIVE_SYNCHRONIZATION_OBJECT_H -#define DPL_NAIVE_SYNCHRONIZATION_OBJECT_H - -#include - -namespace DPL { -namespace DB { -/** - * Naive synchronization object used to synchronize SQL connection - * to the same database across different threads and processes - */ -class NaiveSynchronizationObject : - public SqlConnection::SynchronizationObject -{ - public: - // [SqlConnection::SynchronizationObject] - virtual void Synchronize(); - virtual void NotifyAll(); -}; -} // namespace DB -} // namespace DPL - -#endif // DPL_NAIVE_SYNCHRONIZATION_OBJECT_H diff --git a/modules_mobile/db/include/dpl/db/orm.h b/modules_mobile/db/include/dpl/db/orm.h deleted file mode 100644 index 652e8e1..0000000 --- a/modules_mobile/db/include/dpl/db/orm.h +++ /dev/null @@ -1,1116 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file orm.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief DPL-ORM: Object-relational mapping for sqlite database, written on top of DPL. - */ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#ifndef DPL_ORM_H -#define DPL_ORM_H - -namespace DPL { -namespace DB { -namespace ORM { - -//TODO move to type utils -#define DPL_CHECK_TYPE_INSTANTIABILITY(type) \ - { \ - type _ignored_; \ - (void)_ignored_; \ - } - -#define DECLARE_COLUMN_TYPE_LIST() typedef DPL::TypeListDecl< -#define SELECTED_COLUMN(table_name, column_name) table_name::column_name, -#define DECLARE_COLUMN_TYPE_LIST_END(name) DPL::TypeListGuard>::Type name; - -typedef size_t ColumnIndex; -typedef size_t ArgumentIndex; -typedef DPL::Optional OptionalString; -typedef DPL::Optional OptionalInteger; -typedef DPL::DB::SqlConnection::DataCommand DataCommand; - -namespace RelationTypes { - extern const char Equal[]; - extern const char LessThan[]; - extern const char And[]; - extern const char Or[]; - extern const char Is[]; - extern const char In[]; - //TODO define more relation types -} - -namespace DataCommandUtils { - //TODO move to DPL::DataCommand? - void BindArgument(DataCommand *command, ArgumentIndex index, int argument); - void BindArgument(DataCommand *command, ArgumentIndex index, const OptionalInteger& argument); - void BindArgument(DataCommand *command, ArgumentIndex index, const DPL::String& argument); - void BindArgument(DataCommand *command, ArgumentIndex index, const OptionalString& argument); -} -class __attribute__ ((visibility("hidden"))) Expression { -public: - virtual ~Expression() {} - virtual std::string GetString() const = 0; - virtual ArgumentIndex BindTo(DataCommand *command, ArgumentIndex index) = 0; -}; - -typedef std::shared_ptr ExpressionPtr; - -namespace OrderingUtils { - -template inline std::string OrderByInternal() -{ - std::string order = OrderByInternal(); - if(!order.empty()) return CompoundType::Head::GetString() + ", " + order; - else return CompoundType::Head::GetString(); -} - -template<> inline std::string OrderByInternal() -{ - return std::string(); -} - -} - -template -class __attribute__ ((visibility("hidden"))) OrderingExpression { -protected: - static std::string GetSchemaAndName() - { - std::string statement; - statement += ColumnType::GetTableName(); - statement += "."; - statement += ColumnType::GetColumnName(); - statement += " "; - return statement; - } -public: - virtual ~OrderingExpression() {} -}; - -template -class __attribute__ ((visibility("hidden"))) BinaryExpression : public Expression { -protected: - LeftExpression m_leftExpression; - RightExpression m_rightExpression; - bool m_outerParenthesis; -public: - BinaryExpression(const LeftExpression& leftExpression, const RightExpression& rightExpression, bool outerParenthesis = true) : - m_leftExpression(leftExpression), - m_rightExpression(rightExpression), - m_outerParenthesis(outerParenthesis) - {} - - virtual std::string GetString() const - { - return (m_outerParenthesis ? "( " : " " ) + - m_leftExpression.GetString() + " " + Operator + " " + m_rightExpression.GetString() + - (m_outerParenthesis ? " )" : " " ) ; - } - - virtual ArgumentIndex BindTo(DataCommand *command, ArgumentIndex index) - { - index = m_leftExpression.BindTo(command, index); - return m_rightExpression.BindTo(command, index); - } - - template - struct ValidForTable { - typedef std::pair::Yes , - typename RightExpression::template ValidForTable::Yes > - Yes; - }; -}; - -template -BinaryExpression - And(const LeftExpression& leftExpression, const RightExpression& rightExpression) -{ - return BinaryExpression - (leftExpression, rightExpression); -} - -template -BinaryExpression - Or(const LeftExpression& leftExpression, const RightExpression& rightExpression) -{ - return BinaryExpression - (leftExpression, rightExpression); -} - -template -class __attribute__ ((visibility("hidden"))) ExpressionWithArgument : public Expression { -protected: - ArgumentType argument; - -public: - explicit ExpressionWithArgument(const ArgumentType& _argument) : argument(_argument) {} - - virtual ArgumentIndex BindTo(DataCommand *command, ArgumentIndex index) - { - DataCommandUtils::BindArgument(command, index, argument); - return index + 1; - } -}; - -template -class __attribute__ ((visibility("hidden"))) Compare : public ExpressionWithArgument { -public: - explicit Compare(typename ColumnData::ColumnType column) : - ExpressionWithArgument(column) - {} - - virtual std::string GetString() const - { - std::string statement; - statement += ColumnData::GetTableName(); - statement += "."; - statement += ColumnData::GetColumnName(); - statement += " "; - statement += Relation; - statement += " ?"; - return statement; - } - - template - struct ValidForTable { - typedef typename TableDefinition::ColumnList::template Contains Yes; - }; -}; -#define ORM_DEFINE_COMPARE_EXPRESSION(name, relationType) \ - template \ - class __attribute__ ((visibility("hidden"))) name : public Compare { \ - public: \ - name(typename ColumnData::ColumnType column) : \ - Compare(column) \ - {} \ - }; - -ORM_DEFINE_COMPARE_EXPRESSION(Equals, Equal) -ORM_DEFINE_COMPARE_EXPRESSION(Is, Is) - -#define ORM_DEFINE_ORDERING_EXPRESSION(name, value) \ - template \ - class __attribute__ ((visibility("hidden"))) name \ - : OrderingExpression { \ - public: \ - static std::string GetString() \ - { \ - std::string statement = OrderingExpression::GetSchemaAndName(); \ - statement += value; \ - return statement; \ - } \ - }; - -ORM_DEFINE_ORDERING_EXPRESSION(OrderingAscending, "ASC") -ORM_DEFINE_ORDERING_EXPRESSION(OrderingDescending, "DESC") - -template -class __attribute__ ((visibility("hidden"))) CompareBinaryColumn { -private: - std::string m_relation; -public: - CompareBinaryColumn(const char* Relation) : - m_relation(Relation) - {} - - virtual ~CompareBinaryColumn() {} - - virtual std::string GetString() const - { - std::string statement; - statement += ColumnData1::GetTableName(); - statement += "."; - statement += ColumnData1::GetColumnName(); - statement += " "; - statement += m_relation; - statement += " "; - statement += ColumnData2::GetTableName(); - statement += "."; - statement += ColumnData2::GetColumnName(); - - return statement; - } -}; - -template -CompareBinaryColumn - Equal() -{ - return CompareBinaryColumn(RelationTypes::Equal); -} - -template -class __attribute__ ((visibility("hidden"))) NumerousArguments : public Expression { -protected: - std::set m_argumentList; -public: - NumerousArguments(const std::set& argumentList) : m_argumentList(argumentList) {} - - virtual std::string GetString() const - { - std::string statement; - statement += ColumnData::GetColumnName(); - statement += " "; - statement += Relation; - statement += " ( "; - - int argumentCount = m_argumentList.size(); - while(argumentCount) - { - statement += "?"; - argumentCount--; - if (argumentCount) - { - statement += ", "; - } - } - - statement += " )"; - - return statement; - } - - virtual ArgumentIndex BindTo(DataCommand *command, ArgumentIndex index) - { - ArgumentIndex argumentIndex = index; - FOREACH(argumentIt, m_argumentList) - { - DataCommandUtils::BindArgument(command, argumentIndex, *argumentIt); - argumentIndex++; - } - return argumentIndex + 1; - } - - template - struct ValidForTable { - typedef typename TableDefinition::ColumnList::template Contains Yes; - }; -}; - -#define ORM_DEFINE_COMPARE_EXPRESSION_NUMEROUS_ARGUMENTS(name, relationType) \ - template \ - class __attribute__ ((visibility("hidden"))) name : public NumerousArguments { \ - public: \ - name(std::set column) : \ - NumerousArguments(column) \ - {} \ - }; - -ORM_DEFINE_COMPARE_EXPRESSION_NUMEROUS_ARGUMENTS(In, In) - -template -ColumnType GetColumnFromCommand(ColumnIndex columnIndex, DataCommand *command); - -class __attribute__ ((visibility("hidden"))) CustomColumnBase { -public: - CustomColumnBase() {} - virtual ~CustomColumnBase() {} -}; - -template -class __attribute__ ((visibility("hidden"))) CustomColumn : public CustomColumnBase { -private: - ColumnType m_columnData; - -public: - CustomColumn() {} - CustomColumn(ColumnType data) - { - m_columnData = data; - } - - void SetColumnData(ColumnType data) - { - m_columnData = data; - } - - ColumnType GetColumnData() const - { - return m_columnData; - } -}; - -template -class __attribute__ ((visibility("hidden"))) CustomRowUtil { -public: - static void MakeColumnList(std::vector& columnList) - { - typedef CustomColumn Type; - Type* pColumn = new Type(); - columnList.push_back(pColumn); - CustomRowUtil::MakeColumnList(columnList); - } - - static void CopyColumnList(const std::vector& srcList, std::vector& dstList) - { - CopyColumnList(srcList, dstList, 0); - } - - static ColumnIndex GetColumnIndex(const std::string& columnName) - { - return GetColumnIndex(columnName, 0); - } - -private: - static void CopyColumnList(const std::vector& srcList, std::vector& dstList, ColumnIndex index) - { - typedef CustomColumn Type; - Type* pColumn = new Type(((Type*)(srcList.at(index)))->GetColumnData()); - dstList.push_back(pColumn); - CustomRowUtil::CopyColumnList(srcList, dstList, index + 1); - } - - static ColumnIndex GetColumnIndex(const std::string& columnName, ColumnIndex index) - { - if (ColumnList::Head::GetColumnName() == columnName) - return index; - - return CustomRowUtil::GetColumnIndex(columnName, index + 1); - } - -template -friend class CustomRowUtil; -}; - -template<> -class __attribute__ ((visibility("hidden"))) CustomRowUtil { -public: - static void MakeColumnList(std::vector&) {} -private: - static void CopyColumnList(const std::vector&, std::vector&, ColumnIndex) {} - static ColumnIndex GetColumnIndex(const std::string&, ColumnIndex) { return -1; } - -template -friend class CustomRowUtil; -}; - -template -class __attribute__ ((visibility("hidden"))) CustomRow { -private: - std::vector m_columns; - -public: - CustomRow() - { - CustomRowUtil::MakeColumnList(m_columns); - } - - CustomRow(const CustomRow& r) - { - CustomRowUtil::CopyColumnList(r.m_columns, m_columns); - } - - virtual ~CustomRow() - { - while (!m_columns.empty()) - { - CustomColumnBase* pCustomColumn = m_columns.back(); - m_columns.pop_back(); - if (pCustomColumn) - delete pCustomColumn; - } - } - - template - void SetColumnData(ColumnIndex columnIndex, ColumnType data) - { - typedef CustomColumn Type; - Assert(columnIndex < m_columns.size()); - Type* pColumn = dynamic_cast(m_columns.at(columnIndex)); - Assert(pColumn); - pColumn->SetColumnData(data); - } - - template - typename ColumnData::ColumnType GetColumnData() - { - typedef CustomColumn Type; - ColumnIndex index = CustomRowUtil::GetColumnIndex(ColumnData::GetColumnName()); - Assert(index < m_columns.size()); - Type* pColumn = dynamic_cast(m_columns.at(index)); - Assert(pColumn); - return pColumn->GetColumnData(); - } -}; - -template -void SetColumnData(CustomRow& row, ColumnType columnData, ColumnIndex columnIndex) -{ - row.SetColumnData(columnIndex, columnData); -} - -template -class __attribute__ ((visibility("hidden"))) FillCustomRowUtil { -public: - static void FillCustomRow(CustomRow& row, DataCommand* command) - { - FillCustomRow(row, 0, command); - } - -private: - static void FillCustomRow(CustomRow& row, ColumnIndex columnIndex, DataCommand* command) - { - typename ColumnList::Head::ColumnType columnData; - columnData = GetColumnFromCommand(columnIndex, command); - SetColumnData(row, columnData, columnIndex); - FillCustomRowUtil::FillCustomRow(row, columnIndex + 1, command); - } - -template -friend class FillCustomRowUtil; -}; - -template -class __attribute__ ((visibility("hidden"))) FillCustomRowUtil { -private: - static void FillCustomRow(CustomRow&, ColumnIndex, DataCommand *) - { /* do nothing, we're past the last element of column list */ } - -template -friend class FillCustomRowUtil; -}; - -template -class __attribute__ ((visibility("hidden"))) FillRowUtil { -public: - static void FillRow(Row& row, DataCommand *command) - { - FillRow(row, 0, command); - } - -private: - static void FillRow(Row& row, ColumnIndex columnIndex, DataCommand *command) - { - typename ColumnList::Head::ColumnType rowField; - rowField = GetColumnFromCommand(columnIndex, command); - ColumnList::Head::SetRowField(row, rowField); - FillRowUtil::FillRow(row, columnIndex + 1, command); - } - -template -friend class FillRowUtil; -}; - -template -class __attribute__ ((visibility("hidden"))) FillRowUtil { -private: - static void FillRow(Row&, ColumnIndex, DataCommand *) - { /* do nothing, we're past the last element of column list */ } - -template -friend class FillRowUtil; -}; - -template -class __attribute__ ((visibility("hidden"))) JoinUtil { -public: - static std::string GetColumnNames() - { - std::string result; - result = ColumnList::Head::GetTableName(); - result += "."; - result += ColumnList::Head::GetColumnName(); - if (ColumnList::Tail::Size > 0) - result += ", "; - - return result += JoinUtil::GetColumnNames(); - } - - static std::string GetJoinTableName(const std::string& tableName) - { - std::string joinTableName = ColumnList::Head::GetTableName(); - if (tableName.find(joinTableName) == std::string::npos) - return joinTableName; - - return JoinUtil::GetJoinTableName(tableName); - } -}; - -template<> -class __attribute__ ((visibility("hidden"))) JoinUtil { -public: - static std::string GetColumnNames() { return ""; } - static std::string GetJoinTableName(std::string) { return ""; } -}; - -class Exception { -public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, SelectReuseWithDifferentQuerySignature) - DECLARE_EXCEPTION_TYPE(Base, RowFieldNotInitialized) - DECLARE_EXCEPTION_TYPE(Base, EmptyUpdateStatement) -}; - -template -class __attribute__ ((visibility("hidden"))) Query -{ -protected: - explicit Query(IOrmInterface* interface) : - m_interface(interface), - m_command(NULL) - { - } - - virtual ~Query() - { - if (m_command == NULL) - return; - - TableDefinition::FreeTableDataCommand(m_command, m_interface); - } - - IOrmInterface* m_interface; - DataCommand *m_command; - std::string m_commandString; - ArgumentIndex m_bindArgumentIndex; -}; - -template -class __attribute__ ((visibility("hidden"))) QueryWithWhereClause : public Query -{ -protected: - ExpressionPtr m_whereExpression; - - void Prepare() - { - if ( !!m_whereExpression ) - { - this->m_commandString += " WHERE "; - this->m_commandString += m_whereExpression->GetString(); - } - } - - void Bind() - { - if ( !!m_whereExpression ) - { - this->m_bindArgumentIndex = m_whereExpression->BindTo( - this->m_command, this->m_bindArgumentIndex); - } - } - -public: - explicit QueryWithWhereClause(IOrmInterface* interface) : - Query(interface) - { - } - - template - void Where(const Expression& expression) - { - DPL_CHECK_TYPE_INSTANTIABILITY(typename Expression::template ValidForTable::Yes); - if ( !!m_whereExpression && ( typeid(Expression) != typeid(*m_whereExpression) ) ) - { - std::ostringstream str; - str << "Current ORM implementation doesn't allow to reuse Select" - " instance with different query signature (particularly " - "WHERE on different column).\n"; - str << "Query: "; - str << this->m_commandString; - ThrowMsg(Exception::SelectReuseWithDifferentQuerySignature, - str.str()); - } - //TODO maybe don't make a copy here but just generate the string part of the query. - m_whereExpression.reset(new Expression(expression)); - } - -}; - -template -class __attribute__ ((visibility("hidden"))) Delete : public QueryWithWhereClause -{ -protected: - void Prepare() - { - if ( !this->m_command) - { - this->m_commandString = "DELETE FROM "; - this->m_commandString += TableDefinition::GetName(); - - QueryWithWhereClause::Prepare(); - - this->m_command = TableDefinition::AllocTableDataCommand( - this->m_commandString.c_str(), - Query::m_interface); - LogPedantic("Prepared SQL command " << this->m_commandString); - } - } - - void Bind() - { - this->m_bindArgumentIndex = 1; - QueryWithWhereClause::Bind(); - } - -public: - explicit Delete(IOrmInterface *interface = NULL) : - QueryWithWhereClause(interface) - { - } - - void Execute() - { - Prepare(); - Bind(); - this->m_command->Step(); - this->m_command->Reset(); - } -}; - -namespace { -class BindVisitor { -private: - DataCommand *m_command; -public: - ArgumentIndex m_bindArgumentIndex; - - BindVisitor(DataCommand *command) : - m_command(command), - m_bindArgumentIndex(1) - {} - - template - void Visit(const char*, const ColumnType& value, bool isSet) - { - if ( isSet ) - { - DataCommandUtils::BindArgument(m_command, m_bindArgumentIndex, value); - m_bindArgumentIndex++; - } - } -}; -} //anonymous namespace -template -class __attribute__ ((visibility("hidden"))) Insert : public Query -{ -public: - typedef typename TableDefinition::Row Row; - typedef DPL::DB::SqlConnection::RowID RowID; - -protected: - DPL::Optional m_orClause; - Row m_row; - - class PrepareVisitor { - public: - std::string m_columnNames; - std::string m_values; - - template - void Visit(const char* name, const ColumnType&, bool isSet) - { - if ( isSet ) - { - if ( !m_columnNames.empty() ) - { - m_columnNames += ", "; - m_values += ", "; - } - m_columnNames += name; - m_values += "?"; - } - } - }; - - void Prepare() - { - if ( !this->m_command ) - { - this->m_commandString = "INSERT "; - if ( !!m_orClause ) - { - this->m_commandString += " OR " + *m_orClause + " "; - } - this->m_commandString += "INTO "; - this->m_commandString += TableDefinition::GetName(); - - PrepareVisitor visitor; - m_row.VisitColumns(visitor); - - this->m_commandString += " ( " + visitor.m_columnNames + " ) "; - this->m_commandString += "VALUES ( " + visitor.m_values + " )"; - - LogPedantic("Prepared SQL command " << this->m_commandString); - this->m_command = TableDefinition::AllocTableDataCommand( - this->m_commandString.c_str(), - Query::m_interface); - } - } - - void Bind() - { - BindVisitor visitor(this->m_command); - m_row.VisitColumns(visitor); - } - -public: - explicit Insert( - IOrmInterface* interface = NULL, - const DPL::Optional& orClause = DPL::Optional::Null) : - Query(interface), - m_orClause(orClause) - { - } - - void Values(const Row& row) - { - if ( this->m_command ) - { - if ( !row.IsSignatureMatching(m_row) ) - { - ThrowMsg(Exception::SelectReuseWithDifferentQuerySignature, - "Current ORM implementation doesn't allow to reuse Insert instance " - "with different query signature."); - } - } - m_row = row; - } - - RowID Execute() - { - Prepare(); - Bind(); - this->m_command->Step(); - - RowID result = TableDefinition::GetLastInsertRowID( - Query::m_interface); - - this->m_command->Reset(); - return result; - } -}; - -template -class __attribute__ ((visibility("hidden"))) Select : public QueryWithWhereClause -{ -public: - typedef typename TableDefinition::ColumnList ColumnList; - typedef typename TableDefinition::Row Row; - - typedef std::list RowList; -protected: - DPL::Optional m_orderBy; - std::string m_JoinClause; - bool m_distinctResults; - - void Prepare(const char* selectColumnName) - { - if ( !this->m_command ) - { - this->m_commandString = "SELECT "; - if (m_distinctResults) - this->m_commandString += "DISTINCT "; - this->m_commandString += selectColumnName; - this->m_commandString += " FROM "; - this->m_commandString += TableDefinition::GetName(); - - this->m_commandString += m_JoinClause; - - QueryWithWhereClause::Prepare(); - - if ( !m_orderBy.IsNull() ) - { - this->m_commandString += " ORDER BY " + *m_orderBy; - } - - this->m_command = TableDefinition::AllocTableDataCommand( - this->m_commandString.c_str(), - Query::m_interface); - - LogPedantic("Prepared SQL command " << this->m_commandString); - } - } - - void Bind() - { - this->m_bindArgumentIndex = 1; - QueryWithWhereClause::Bind(); - } - - template - ColumnType GetColumn(ColumnIndex columnIndex) - { - return GetColumnFromCommand(columnIndex, this->m_command); - } - - Row GetRow() - { - Row row; - FillRowUtil::FillRow(row, this->m_command); - return row; - } - - template - CustomRow GetCustomRow() - { - CustomRow row; - FillCustomRowUtil::FillCustomRow(row, this->m_command); - return row; - } - -public: - - explicit Select(IOrmInterface *interface = NULL) : - QueryWithWhereClause(interface), - m_distinctResults(false) - { - } - - void Distinct() - { - m_distinctResults = true; - } - - template - void OrderBy(const CompoundType&) - { - m_orderBy = OrderingUtils::OrderByInternal(); - } - - void OrderBy(const std::string & orderBy) //backward compatibility - { - m_orderBy = orderBy; - } - - void OrderBy(const char * orderBy) //backward compatibility - { - m_orderBy = std::string(orderBy); - } - - template - void Join(const Expression& expression) { - std::string usedTableNames = TableDefinition::GetName(); - if (!m_JoinClause.empty()) - usedTableNames += m_JoinClause; - - this->m_JoinClause += " JOIN "; - this->m_JoinClause += JoinUtil::GetJoinTableName(usedTableNames); - this->m_JoinClause += " ON "; - this->m_JoinClause += expression.GetString(); - } - - template - typename ColumnData::ColumnType GetSingleValue() - { - Prepare(ColumnData::GetColumnName()); - Bind(); - this->m_command->Step(); - - typename ColumnData::ColumnType result = - GetColumn(0); - - this->m_command->Reset(); - return result; - } - - //TODO return range - pair of custom iterators - template - std::list GetValueList() - { - Prepare(ColumnData::GetColumnName()); - Bind(); - - std::list resultList; - - while (this->m_command->Step()) - resultList.push_back(GetColumn(0)); - - this->m_command->Reset(); - return resultList; - } - - Row GetSingleRow() - { - Prepare("*"); - Bind(); - this->m_command->Step(); - - Row result = GetRow(); - - this->m_command->Reset(); - return result; - } - - //TODO return range - pair of custom iterators - RowList GetRowList() - { - Prepare("*"); - Bind(); - - RowList resultList; - - while (this->m_command->Step()) - resultList.push_back(GetRow()); - - this->m_command->Reset(); - return resultList; - } - - template - CustomRow GetCustomSingleRow() - { - Prepare(JoinUtil::GetColumnNames().c_str()); - Bind(); - this->m_command->Step(); - - CustomRow result = GetCustomRow(); - - this->m_command->Reset(); - return result; - } - - template - std::list GetCustomRowList() - { - Prepare(JoinUtil::GetColumnNames().c_str()); - Bind(); - - std::list resultList; - - while (this->m_command->Step()) - resultList.push_back(GetCustomRow()); - - this->m_command->Reset(); - return resultList; - } -}; - -template -class __attribute__ ((visibility("hidden"))) Update : public QueryWithWhereClause { -public: - typedef typename TableDefinition::Row Row; - -protected: - DPL::Optional m_orClause; - Row m_row; - - class PrepareVisitor { - public: - std::string m_setExpressions; - - template - void Visit(const char* name, const ColumnType&, bool isSet) - { - if ( isSet ) - { - if ( !m_setExpressions.empty() ) - { - m_setExpressions += ", "; - } - m_setExpressions += name; - m_setExpressions += " = "; - m_setExpressions += "?"; - } - } - }; - - void Prepare() - { - if ( !this->m_command ) - { - this->m_commandString = "UPDATE "; - if ( !!m_orClause ) - { - this->m_commandString += " OR " + *m_orClause + " "; - } - this->m_commandString += TableDefinition::GetName(); - this->m_commandString += " SET "; - - // got through row columns and values - PrepareVisitor visitor; - m_row.VisitColumns(visitor); - - if(visitor.m_setExpressions.empty()) - { - ThrowMsg(Exception::EmptyUpdateStatement, "No SET expressions in update statement"); - } - - this->m_commandString += visitor.m_setExpressions; - - // where - QueryWithWhereClause::Prepare(); - - this->m_command = TableDefinition::AllocTableDataCommand( - this->m_commandString.c_str(), - Query::m_interface); - LogPedantic("Prepared SQL command " << this->m_commandString); - } - } - - void Bind() - { - BindVisitor visitor(this->m_command); - m_row.VisitColumns(visitor); - - this->m_bindArgumentIndex = visitor.m_bindArgumentIndex; - QueryWithWhereClause::Bind(); - } - - -public: - explicit Update(IOrmInterface *interface = NULL, - const DPL::Optional& orClause = DPL::Optional::Null) : - QueryWithWhereClause(interface), - m_orClause(orClause) - { - } - - void Values(const Row& row) - { - if ( this->m_command ) - { - if ( !row.IsSignatureMatching(m_row) ) - { - ThrowMsg(Exception::SelectReuseWithDifferentQuerySignature, - "Current ORM implementation doesn't allow to reuse Update instance " - "with different query signature."); - } - } - m_row = row; - } - - void Execute() - { - Prepare(); - Bind(); - this->m_command->Step(); - this->m_command->Reset(); - } -}; - -} //namespace ORM -} //namespace DB -} //namespace DPL - -#endif // DPL_ORM_H diff --git a/modules_mobile/db/include/dpl/db/orm_generator.h b/modules_mobile/db/include/dpl/db/orm_generator.h deleted file mode 100644 index 8bd9fdb..0000000 --- a/modules_mobile/db/include/dpl/db/orm_generator.h +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file orm_generator.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the DPL-ORM table definitions from database definitions. - */ - -#ifndef ORM_GENERATOR_DATABASE_NAME -#error You need to define database name in ORM_GENERATOR_DATABASE_NAME define before you include orm_generator.h file -#endif - -#include - -#define ORM_GENERATOR_DATABASE_NAME_LOCAL - -#ifdef DPL_ORM_GENERATOR_H -#warning orm_generator.h is included multiply times. Make sure it has different ORM_GENERATOR_DATABASE_NAME set. -#endif - -#define DPL_ORM_GENERATOR_H - - -#include -#include -#include -#include -#include -#include -#include - -/* - -This is true only when exactly one db is available. - -#if (defined DECLARE_COLUMN) || (defined INT) || (defined TINYINT) || \ - (defined INTEGER) || (defined BIGINT) || defined(VARCHAR) || defined(TEXT) || \ - (defined SQL) || (defined TABLE_CONSTRAINTS) || (defined OPTIONAL) || \ - (defined DATABASE_START) || (defined DATABASE_END) || (defined CREATE_TABLE) || \ - (defined COLUMN) || (defined COLUMN_NOT_NULL) || (defined CREATE_TABLE_END) - -#error This file temporarily defines many macros with generic names. To avoid name clash please include \ - this file as early as possible. If this is not possible please report this problem to DPL developers. - -#endif -*/ - -namespace DPL { -namespace DB { -namespace ORM { - -// Global macros - -#define STRINGIFY(s) _str(s) -#define _str(s) #s -#define DECLARE_COLUMN(FIELD, TYPE) \ - struct FIELD { \ - typedef TYPE ColumnType; \ - static const char* GetTableName() { return GetName(); } \ - static const char* GetColumnName() { return STRINGIFY(FIELD); } \ - static void SetRowField(Row& row, const TYPE& _value) { row.Set_##FIELD(_value);} \ - }; - -#define INT int -#define TINYINT int -#define INTEGER int //TODO: should be long long? -#define BIGINT int //TODO: should be long long? -#define VARCHAR(x) DPL::String -#define TEXT DPL::String - -#define SQL(...) -#define TABLE_CONSTRAINTS(...) -#define OPTIONAL(type) DPL::Optional< type > -#define DATABASE_START(db_name) \ - namespace db_name \ - { \ - class ScopedTransaction \ - { \ - bool m_commited; \ - IOrmInterface *m_interface; \ - \ - public: \ - ScopedTransaction(IOrmInterface *interface) : \ - m_commited(false), \ - m_interface(interface) \ - { \ - Assert(interface != NULL); \ - m_interface->TransactionBegin(); \ - } \ - \ - ~ScopedTransaction() \ - { \ - if (!m_commited) \ - m_interface->TransactionRollback(); \ - } \ - \ - void Commit() \ - { \ - m_interface->TransactionCommit(); \ - m_commited = true; \ - } \ - }; - -#define DATABASE_END() } - -// RowBase ostream operator<< declaration - -#define CREATE_TABLE(name) \ - namespace name { \ - class RowBase; \ - inline std::ostream& operator<<(std::ostream& ostr, const RowBase& row); \ - } -#define COLUMN_NOT_NULL(name, type, ...) -#define COLUMN(name, type, ...) -#define CREATE_TABLE_END() - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -#undef DATABASE_START -#define DATABASE_START(db_name) namespace db_name { - -// RowBase class - -#define CREATE_TABLE(name) namespace name { class RowBase { \ - public: friend std::ostream& operator<<(std::ostream&, const RowBase&); -#define COLUMN_NOT_NULL(name, type, ...) \ - protected: type name; bool m_##name##_set; \ - public: void Set_##name(const type& _value) { \ - m_##name##_set = true; \ - this->name = _value; \ - } \ - public: type Get_##name() const { \ - if ( !m_##name##_set ) { \ - ThrowMsg(Exception::RowFieldNotInitialized, \ - "You tried to read a row field that hasn't been set yet."); \ - } \ - return name; \ - } - -#define COLUMN(name, type, ...) \ - protected: OPTIONAL(type) name; bool m_##name##_set; \ - public: void Set_##name(const OPTIONAL(type)& _value) { \ - m_##name##_set = true; \ - this->name = _value; \ - } \ - public: OPTIONAL(type) Get_##name() const { \ - if ( !m_##name##_set ) { \ - ThrowMsg(Exception::RowFieldNotInitialized, \ - "You tried to read a row field that hasn't been set yet."); \ - } \ - return name; \ - } -#define CREATE_TABLE_END() }; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// RowBase ostream operator<< - -#define CREATE_TABLE(name) std::ostream& name::operator<<(std::ostream& ostr, const RowBase& row) { using ::operator<< ; ostr << STRINGIFY(name) << " ("; -#define COLUMN_NOT_NULL(name, type, ...) ostr << " '" << row.name << "'" ; -#define COLUMN(name, type, ...) ostr << " '" << row.name << "'" ; -#define CREATE_TABLE_END() ostr << " )" ; return ostr; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// RowBase2 class (== RowBase + operator==) - -#define CREATE_TABLE(name) namespace name { class RowBase2 : public RowBase { \ - public: bool operator==(const RowBase2& row) const { return true -#define COLUMN_NOT_NULL(name, type, ...) && (this->name == row.name) -#define COLUMN(name, type, ...) && (this->name == row.name) -#define CREATE_TABLE_END() ; } }; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// RowBase3 class (== RowBase2 + operator<) - -#define CREATE_TABLE(name) namespace name { class RowBase3 : public RowBase2 { \ - public: bool operator<(const RowBase3& row) const { -#define COLUMN_NOT_NULL(name, type, ...) if (this->name < row.name) { return true; } if (this->name > row.name) { return false; } -#define COLUMN(name, type, ...) if (this->name < row.name) { return true; } if (this->name > row.name) { return false; } -#define CREATE_TABLE_END() return false; } }; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// RowBase4 class (== RowBase3 + IsSignatureMatching ) - -#define CREATE_TABLE(name) namespace name { class RowBase4 : public RowBase3 { \ - public: bool IsSignatureMatching(const RowBase4& row) const { return true -#define COLUMN_NOT_NULL(name, type, ...) && (this->m_##name##_set == row.m_##name##_set) -#define COLUMN(name, type, ...) && (this->m_##name##_set == row.m_##name##_set) -#define CREATE_TABLE_END() ; } }; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// RowBase5 class (== RowBase4 + default constructor) - -#define CREATE_TABLE(name) namespace name { class RowBase5 : public RowBase4 { \ - public: RowBase5() { -#define COLUMN_NOT_NULL(name, type, ...) m_##name##_set = false; -#define COLUMN(name, type, ...) m_##name##_set = false; -#define CREATE_TABLE_END() } }; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// Row class (== RowBase5 + ForEachColumn ) - -#define CREATE_TABLE(name) namespace name { class Row : public RowBase5 { \ - public: template \ - void VisitColumns(Visitor& visitor) const { -#define COLUMN_NOT_NULL(name, type, ...) visitor.Visit(STRINGIFY(name), this->name, this->m_##name##_set); -#define COLUMN(name, type, ...) visitor.Visit(STRINGIFY(name), this->name, this->m_##name##_set); -#define CREATE_TABLE_END() } }; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// Field structure declarations - -#define CREATE_TABLE(name) namespace name { \ - static const char* GetName() { return STRINGIFY(name); } -#define COLUMN_NOT_NULL(name, type, ...) DECLARE_COLUMN(name, type) -#define COLUMN(name, type, ...) DECLARE_COLUMN(name, OPTIONAL(type)) -#define CREATE_TABLE_END() } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// ColumnList typedef - -#define CREATE_TABLE(name) namespace name { typedef DPL::TypeListDecl< -#define COLUMN_NOT_NULL(name, type, ...) name, -#define COLUMN(name, type, ...) name, -#define CREATE_TABLE_END() DPL::TypeListGuard>::Type ColumnList; } - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// TableDefinition struct - -#define CREATE_TABLE(table_name) \ - namespace table_name { \ - struct TableDefinition { \ - typedef table_name::ColumnList ColumnList; \ - typedef table_name::Row Row; \ - static const char* GetName() { return STRINGIFY(table_name); } \ - static DPL::DB::SqlConnection::DataCommand *AllocTableDataCommand( \ - const std::string &statement, \ - IOrmInterface *interface) \ - { \ - Assert(interface != NULL); \ - return interface->AllocDataCommand(statement); \ - } \ - static void FreeTableDataCommand( \ - DPL::DB::SqlConnection::DataCommand *command, \ - IOrmInterface *interface) \ - { \ - Assert(interface != NULL); \ - interface->FreeDataCommand(command); \ - } \ - static DPL::DB::SqlConnection::RowID GetLastInsertRowID( \ - IOrmInterface *interface) \ - { \ - Assert(interface != NULL); \ - return interface->GetLastInsertRowID(); \ - } \ - }; \ - } - -#define COLUMN_NOT_NULL(name, type, ...) -#define COLUMN(name, type, ...) -#define CREATE_TABLE_END() - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - -// Query typedefs - -#define CREATE_TABLE(name) \ - namespace name { \ - typedef Select Select; \ - typedef Insert Insert; \ - typedef Delete Delete; \ - typedef Update Update; \ - } -#define COLUMN_NOT_NULL(name, type, ...) -#define COLUMN(name, type, ...) -#define CREATE_TABLE_END() - -#include ORM_GENERATOR_DATABASE_NAME_LOCAL - -#undef CREATE_TABLE -#undef COLUMN_NOT_NULL -#undef COLUMN -#undef CREATE_TABLE_END - - -// Global undefs -#undef INT -#undef TINYINT -#undef INTEGER -#undef BIGINT -#undef VARCHAR -#undef TEXT - -#undef SQL -#undef TABLE_CONSTRAINTS -#undef OPTIONAL -#undef DATABASE_START -#undef DATABASE_END - -} //namespace ORM -} //namespace DB -} //namespace DPL - -#undef ORM_GENERATOR_DATABASE_NAME -#undef ORM_GENERATOR_DATABASE_NAME_LOCAL diff --git a/modules_mobile/db/include/dpl/db/orm_interface.h b/modules_mobile/db/include/dpl/db/orm_interface.h deleted file mode 100644 index 62ec073..0000000 --- a/modules_mobile/db/include/dpl/db/orm_interface.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file orm_interface.h - * @author Lukasz Marek (l.marek@samsung.com) - * @version 1.0 - */ - -#include -#include - -#ifndef DPL_ORM_INTERFACE_H -#define DPL_ORM_INTERFACE_H - -namespace DPL { -namespace DB { -namespace ORM { -class IOrmInterface -{ - public: - virtual ~IOrmInterface() {} - virtual DPL::DB::SqlConnection::DataCommand *AllocDataCommand( - const std::string &statement) = 0; - virtual void FreeDataCommand(DPL::DB::SqlConnection::DataCommand *command) - = 0; - virtual void TransactionBegin() = 0; - virtual void TransactionCommit() = 0; - virtual void TransactionRollback() = 0; - virtual DPL::DB::SqlConnection::RowID GetLastInsertRowID() = 0; -}; -} -} -} - -#endif diff --git a/modules_mobile/db/include/dpl/db/orm_macros.h b/modules_mobile/db/include/dpl/db/orm_macros.h deleted file mode 100644 index a038523..0000000 --- a/modules_mobile/db/include/dpl/db/orm_macros.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file orm_macros.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL input file from - * database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. - -#define CREATE_TABLE(name) CREATE TABLE name( -#define COLUMN(name, type, ...) name type __VA_ARGS__, -#define COLUMN_NOT_NULL(name, type, ...) name type __VA_ARGS__ not null, -#define SQL(...) __VA_ARGS__ -#define TABLE_CONSTRAINTS(...) __VA_ARGS__, -#define CREATE_TABLE_END() CHECK(1) ); -#define DATABASE_START(db_name) -#define DATABASE_END() - diff --git a/modules_mobile/db/include/dpl/db/sql_connection.h b/modules_mobile/db/include/dpl/db/sql_connection.h deleted file mode 100644 index 5a3b0c1..0000000 --- a/modules_mobile/db/include/dpl/db/sql_connection.h +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file sql_connection.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of SQL connection - */ -#ifndef DPL_SQL_CONNECTION_H -#define DPL_SQL_CONNECTION_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DB { -/** - * SQL connection class - */ -class SqlConnection -{ - public: - /** - * SQL Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, SyntaxError) - DECLARE_EXCEPTION_TYPE(Base, ConnectionBroken) - DECLARE_EXCEPTION_TYPE(Base, InternalError) - DECLARE_EXCEPTION_TYPE(Base, InvalidColumn) - }; - - typedef int ColumnIndex; - typedef int ArgumentIndex; - - /* - * SQL processed data command - */ - class DataCommand : - private Noncopyable - { - private: - SqlConnection *m_masterConnection; - sqlite3_stmt *m_stmt; - - void CheckBindResult(int result); - void CheckColumnIndex(SqlConnection::ColumnIndex column); - - DataCommand(SqlConnection *connection, const char *buffer); - - friend class SqlConnection; - - public: - virtual ~DataCommand(); - - /** - * Bind null to the prepared statement argument - * - * @param position Index of argument to bind value to - */ - void BindNull(ArgumentIndex position); - - /** - * Bind int to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInteger(ArgumentIndex position, int value); - - /** - * Bind int8_t to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt8(ArgumentIndex position, int8_t value); - - /** - * Bind int16 to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt16(ArgumentIndex position, int16_t value); - - /** - * Bind int32 to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt32(ArgumentIndex position, int32_t value); - - /** - * Bind int64 to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt64(ArgumentIndex position, int64_t value); - - /** - * Bind float to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindFloat(ArgumentIndex position, float value); - - /** - * Bind double to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindDouble(ArgumentIndex position, double value); - - /** - * Bind string to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindString(ArgumentIndex position, const char *value); - - /** - * Bind string to the prepared statement argument - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindString(ArgumentIndex position, const String& value); - - /** - * Bind optional int to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInteger(ArgumentIndex position, const Optional &value); - - /** - * Bind optional int8 to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt8(ArgumentIndex position, const Optional &value); - - /** - * Bind optional int16 to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt16(ArgumentIndex position, const Optional &value); - - /** - * Bind optional int32 to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt32(ArgumentIndex position, const Optional &value); - - /** - * Bind optional int64 to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindInt64(ArgumentIndex position, const Optional &value); - - /** - * Bind optional float to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindFloat(ArgumentIndex position, const Optional &value); - - /** - * Bind optional double to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindDouble(ArgumentIndex position, const Optional &value); - - /** - * Bind optional string to the prepared statement argument. - * If optional is not set null will be bound - * - * @param position Index of argument to bind value to - * @param value Value to bind - */ - void BindString(ArgumentIndex position, const Optional &value); - - /** - * Execute the prepared statement and/or move - * to the next row of the result - * - * @return True when there was a row returned - */ - bool Step(); - - /** - * Reset prepared statement's arguments - * All parameters will become null - */ - void Reset(); - - /** - * Checks whether column value is null - * - * @throw Exception::InvalidColumn - */ - bool IsColumnNull(ColumnIndex column); - - /** - * Get integer value from column in current row. - * - * @throw Exception::InvalidColumn - */ - int GetColumnInteger(ColumnIndex column); - - /** - * Get int8 value from column in current row. - * - * @throw Exception::InvalidColumn - */ - int8_t GetColumnInt8(ColumnIndex column); - - /** - * Get int16 value from column in current row. - * - * @throw Exception::InvalidColumn - */ - int16_t GetColumnInt16(ColumnIndex column); - /** - * Get int32 value from column in current row. - * - * @throw Exception::InvalidColumn - */ - int32_t GetColumnInt32(ColumnIndex column); - - /** - * Get int64 value from column in current row. - * - * @throw Exception::InvalidColumn - */ - int64_t GetColumnInt64(ColumnIndex column); - - /** - * Get float value from column in current row. - * - * @throw Exception::InvalidColumn - */ - float GetColumnFloat(ColumnIndex column); - - /** - * Get double value from column in current row. - * - * @throw Exception::InvalidColumn - */ - double GetColumnDouble(ColumnIndex column); - - /** - * Get string value from column in current row. - * - * @throw Exception::InvalidColumn - */ - std::string GetColumnString(ColumnIndex column); - - /** - * Get optional integer value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalInteger(ColumnIndex column); - - /** - * Get optional int8 value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalInt8(ColumnIndex column); - - /** - * Get optional int16value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalInt16(ColumnIndex column); - - /** - * Get optional int32 value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalInt32(ColumnIndex column); - - /** - * Get optional int64 value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalInt64(ColumnIndex column); - - /** - * Get optional float value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalFloat(ColumnIndex column); - - /** - * Get optional double value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalDouble(ColumnIndex column); - - /** - * Get optional string value from column in current row. - * - * @throw Exception::InvalidColumn - */ - Optional GetColumnOptionalString(ColumnIndex column); - }; - - // Move on copy semantics - typedef std::auto_ptr DataCommandAutoPtr; - - // Open flags - class Flag - { - public: - enum Type - { - None = 1 << 0, - UseLucene = 1 << 1 - }; - - enum Option - { - RO = SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_READONLY, - /** - * *TODO: please remove CREATE option from RW flag when all places - * that need that switched do CRW - */ - RW = SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_READWRITE | - SQLITE_OPEN_CREATE, - CRW = RW | SQLITE_OPEN_CREATE - }; - }; - - // RowID - typedef sqlite3_int64 RowID; - - /** - * Synchronization object used to synchronize SQL connection - * to the same database across different threads and processes - */ - class SynchronizationObject - { - public: - virtual ~SynchronizationObject() {} - - /** - * Synchronizes SQL connection for multiple clients. - */ - virtual void Synchronize() = 0; - - /** - * Notify all waiting clients that the connection is no longer locked. - */ - virtual void NotifyAll() = 0; - }; - - protected: - sqlite3 *m_connection; - - // Options - bool m_usingLucene; - - // Stored data procedures - int m_dataCommandsCount; - - // Synchronization object - std::unique_ptr m_synchronizationObject; - - virtual void Connect(const std::string &address, - Flag::Type = Flag::None, Flag::Option = Flag::RO); - virtual void Disconnect(); - - void TurnOnForeignKeys(); - - static SynchronizationObject *AllocDefaultSynchronizationObject(); - - public: - /** - * Open SQL connection - * - * Synchronization is archieved by using provided asynchronization object. - * If synchronizationObject is set to NULL, so synchronization is performed. - * Ownership of the synchronization object is transfered to sql connection - * object. - * - * @param address Database file name - * @param flags Open flags - * @param synchronizationObject A synchronization object to use. - */ - explicit SqlConnection(const std::string &address = std::string(), - Flag::Type flags = Flag::None, - Flag::Option options = Flag::RO, - SynchronizationObject *synchronizationObject = - AllocDefaultSynchronizationObject()); - - /** - * Destructor - */ - virtual ~SqlConnection(); - - /** - * Execute SQL command without result - * - * @param format - * @param ... - */ - void ExecCommand(const char *format, ...); - - /** - * Prepare stored procedure - * - * @param format SQL statement - * @return Data command representing stored procedure - */ - DataCommandAutoPtr PrepareDataCommand(const char *format, ...); - - /** - * Check whether given table exists - * - * @param tableName Name of the table to check - * @return True if given table name exists - */ - bool CheckTableExist(const char *tableName); - - /** - * Get last insert operation new row id - * - * @return Row ID - */ - RowID GetLastInsertRowID() const; -}; -} // namespace DB -} // namespace DPL - -#endif // DPL_SQL_CONNECTION_H diff --git a/modules_mobile/db/include/dpl/db/thread_database_support.h b/modules_mobile/db/include/dpl/db/thread_database_support.h deleted file mode 100644 index 02d796f..0000000 --- a/modules_mobile/db/include/dpl/db/thread_database_support.h +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file thread_database_support.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk) - * @version 1.0 - * @brief This file contains the declaration of thread database support - */ - -#ifndef DPL_THREAD_DATABASE_SUPPORT_H -#define DPL_THREAD_DATABASE_SUPPORT_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DB { -/** - * Thread database support - * - * Associate database connection with thread lifecycle - * - */ - -class ThreadDatabaseSupport : - public DPL::DB::ORM::IOrmInterface -{ - private: - typedef DPL::DB::SqlConnection *SqlConnectionPtr; - typedef DPL::ThreadLocalVariable TLVSqlConnectionPtr; - typedef DPL::ThreadLocalVariable TLVSizeT; - typedef DPL::ThreadLocalVariable TLVBool; - - TLVSqlConnectionPtr m_connection; - TLVBool m_linger; - TLVSizeT m_refCounter; - TLVSizeT m_transactionDepth; - TLVSizeT m_attachCount; - TLVBool m_transactionCancel; - std::string m_address; - DPL::DB::SqlConnection::Flag::Type m_flags; - - TLVSqlConnectionPtr &Connection() - { - return m_connection; - } - - TLVBool &Linger() - { - return m_linger; - } - - TLVSizeT &RefCounter() - { - return m_refCounter; - } - - TLVSizeT &TransactionDepth() - { - return m_transactionDepth; - } - - TLVSizeT &AttachCount() - { - return m_attachCount; - } - - TLVBool &TransactionCancel() - { - return m_transactionCancel; - } - - void CheckedConnectionDelete() - { - Assert(!Connection().IsNull()); - Assert(*Linger() == true); - - if (*RefCounter() > 0 || *AttachCount() > 0) { - return; - } - - // Destroy connection - LogDebug("Destroying thread database connection: " << m_address); - - delete *Connection(); - - // Blocking destroy - Connection().GuardValue(false); - Linger().GuardValue(false); - RefCounter().GuardValue(false); - TransactionCancel().GuardValue(false); - TransactionDepth().GuardValue(false); - AttachCount().GuardValue(false); - - Connection().Reset(); - Linger().Reset(); - RefCounter().Reset(); - TransactionCancel().Reset(); - TransactionDepth().Reset(); - AttachCount().Reset(); - } - - void TransactionUnref() - { - LogPedantic("Unref transaction"); - - if (--(*TransactionDepth()) == 0) { - LogPedantic("Transaction is finalized"); - - if (*TransactionCancel()) { - LogPedantic("Transaction will be rolled back"); - (*Connection())->ExecCommand("ROLLBACK;"); - } else { - LogPedantic("Transaction will be commited"); - (*Connection())->ExecCommand("COMMIT;"); - } - } - } - - public: - ThreadDatabaseSupport(const std::string &address, - DPL::DB::SqlConnection::Flag::Type flags) : - m_address(address), - m_flags(flags) - {} - - virtual ~ThreadDatabaseSupport() - {} - - void AttachToThread( - DPL::DB::SqlConnection::Flag::Option options = - DPL::DB::SqlConnection::Flag::RO) - { - Linger() = false; - - if (!Connection().IsNull()) { - // Add reference - ++*AttachCount(); - return; - } - - // Initialize SQL connection described in traits - LogDebug("Attaching thread database connection: " << m_address); - - Connection() = new DPL::DB::SqlConnection( - m_address.c_str(), m_flags, options); - - RefCounter() = 0; - - AttachCount() = 1; - - //Init Transaction related variables - TransactionDepth() = 0; - TransactionCancel() = false; - - // Blocking destroy - Connection().GuardValue(true); - Linger().GuardValue(true); - RefCounter().GuardValue(true); - TransactionDepth().GuardValue(true); - AttachCount().GuardValue(true); - TransactionCancel().GuardValue(true); - } - - void DetachFromThread() - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - // Remove reference - --*AttachCount(); - - if (*AttachCount() > 0) { - return; - } - - // It must not be in linger state yet - Assert(*Linger() == false); - - LogDebug("Detaching thread database connection: " << m_address); - - // Enter linger state - *Linger() = true; - - // Checked delete - CheckedConnectionDelete(); - } - - bool IsAttached() - { - return !AttachCount().IsNull() && *AttachCount() > 0; - } - - DPL::DB::SqlConnection::DataCommand *AllocDataCommand( - const std::string &statement) - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - // Calling thread must not be in linger state - Assert(*Linger() == false); - - // Add reference - ++*RefCounter(); - - // Create new unmanaged data command - return (*Connection())->PrepareDataCommand(statement.c_str()).release(); - } - - void FreeDataCommand(DPL::DB::SqlConnection::DataCommand *command) - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - // Delete data command - delete command; - - // Unreference SQL connection - --*RefCounter(); - - // If it is linger state, connection may be destroyed - if (*Linger() == true) { - CheckedConnectionDelete(); - } - } - - void TransactionBegin() - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - LogPedantic("Begin transaction"); - - // Addref transaction - if (++(*TransactionDepth()) == 1) { - LogPedantic("Transaction is initialized"); - - TransactionCancel() = false; - (*Connection())->ExecCommand("BEGIN;"); - } - } - - void TransactionCommit() - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - LogPedantic("Commit transaction"); - - // Unref transation - TransactionUnref(); - } - - void TransactionRollback() - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - // Cancel and unref transaction - TransactionCancel() = true; - TransactionUnref(); - } - - DPL::DB::SqlConnection::RowID GetLastInsertRowID() - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - return (*Connection())->GetLastInsertRowID(); - } - - bool CheckTableExist(const char *name) - { - // Calling thread must support thread database connections - Assert(!Connection().IsNull()); - - return (*Connection())->CheckTableExist(name); - } -}; -} -} - -#endif // DPL_THREAD_DATABASE_SUPPORT_H diff --git a/modules_mobile/db/src/naive_synchronization_object.cpp b/modules_mobile/db/src/naive_synchronization_object.cpp deleted file mode 100644 index 1ac71ca..0000000 --- a/modules_mobile/db/src/naive_synchronization_object.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file naive_synchronization_object.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of SQL naive - * synchronization object - */ -#include -#include -#include - -namespace { - unsigned int seed = time(NULL); -} - -namespace DPL { -namespace DB { -void NaiveSynchronizationObject::Synchronize() -{ - // Sleep for about 10ms - 30ms - Thread::MiliSleep(10 + rand_r(&seed) % 20); -} - -void NaiveSynchronizationObject::NotifyAll() -{ - // No need to inform about anything -} -} // namespace DB -} // namespace DPL diff --git a/modules_mobile/db/src/orm.cpp b/modules_mobile/db/src/orm.cpp deleted file mode 100644 index c69415d..0000000 --- a/modules_mobile/db/src/orm.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file orm.cpp - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Static definitions and function template specialziations of - * DPL-ORM. - */ -#include -#include - -namespace DPL { -namespace DB { -namespace ORM { -namespace RelationTypes { -const char Equal[] = "="; -const char LessThan[] = "<"; -const char And[] = "AND"; -const char Or[] = "OR"; -const char Is[] = "IS"; -const char In[] = "IN"; -} - -template<> -int GetColumnFromCommand(ColumnIndex columnIndex, - DataCommand *command) -{ - return command->GetColumnInteger(columnIndex); -} - -template<> -DPL::String GetColumnFromCommand(ColumnIndex columnIndex, - DataCommand *command) -{ - return DPL::FromUTF8String(command->GetColumnString(columnIndex)); -} - -template<> -OptionalInteger GetColumnFromCommand(ColumnIndex columnIndex, - DataCommand *command) -{ - return command->GetColumnOptionalInteger(columnIndex); -} - -template<> -OptionalString GetColumnFromCommand(ColumnIndex columnIndex, - DataCommand *command) -{ - return command->GetColumnOptionalString(columnIndex); -} - -template<> -double GetColumnFromCommand(ColumnIndex columnIndex, - DataCommand *command) -{ - return command->GetColumnDouble(columnIndex); -} - -void DataCommandUtils::BindArgument(DataCommand *command, - ArgumentIndex index, - int argument) -{ - command->BindInteger(index, argument); -} - -void DataCommandUtils::BindArgument(DataCommand *command, - ArgumentIndex index, - const OptionalInteger& argument) -{ - command->BindInteger(index, argument); -} - -void DataCommandUtils::BindArgument(DataCommand *command, - ArgumentIndex index, - const DPL::String& argument) -{ - command->BindString(index, argument); -} - -void DataCommandUtils::BindArgument(DataCommand *command, - ArgumentIndex index, - const OptionalString& argument) -{ - command->BindString(index, argument); -} -} -} -} diff --git a/modules_mobile/db/src/sql_connection.cpp b/modules_mobile/db/src/sql_connection.cpp deleted file mode 100644 index dab6116..0000000 --- a/modules_mobile/db/src/sql_connection.cpp +++ /dev/null @@ -1,850 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file sql_connection.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of SQL connection - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DB { -namespace // anonymous -{ -class ScopedNotifyAll : - public Noncopyable -{ - private: - SqlConnection::SynchronizationObject *m_synchronizationObject; - - public: - explicit ScopedNotifyAll( - SqlConnection::SynchronizationObject *synchronizationObject) : - m_synchronizationObject(synchronizationObject) - {} - - ~ScopedNotifyAll() - { - if (!m_synchronizationObject) { - return; - } - - LogPedantic("Notifying after successful synchronize"); - m_synchronizationObject->NotifyAll(); - } -}; -} // namespace anonymous - -SqlConnection::DataCommand::DataCommand(SqlConnection *connection, - const char *buffer) : - m_masterConnection(connection), - m_stmt(NULL) -{ - Assert(connection != NULL); - - // Notify all after potentially synchronized database connection access - ScopedNotifyAll notifyAll(connection->m_synchronizationObject.get()); - - for (;;) { - int ret = sqlite3_prepare_v2(connection->m_connection, - buffer, strlen(buffer), - &m_stmt, NULL); - - if (ret == SQLITE_OK) { - LogPedantic("Data command prepared successfuly"); - break; - } else if (ret == SQLITE_BUSY) { - LogPedantic("Collision occurred while preparing SQL command"); - - // Synchronize if synchronization object is available - if (connection->m_synchronizationObject) { - LogPedantic("Performing synchronization"); - connection->m_synchronizationObject->Synchronize(); - continue; - } - - // No synchronization object defined. Fail. - } - - // Fatal error - const char *error = sqlite3_errmsg(m_masterConnection->m_connection); - - LogPedantic("SQL prepare data command failed"); - LogPedantic(" Statement: " << buffer); - LogPedantic(" Error: " << error); - - ThrowMsg(Exception::SyntaxError, error); - } - - LogPedantic("Prepared data command: " << buffer); - - // Increment stored data command count - ++m_masterConnection->m_dataCommandsCount; -} - -SqlConnection::DataCommand::~DataCommand() -{ - LogPedantic("SQL data command finalizing"); - - if (sqlite3_finalize(m_stmt) != SQLITE_OK) { - LogPedantic("Failed to finalize data command"); - } - - // Decrement stored data command count - --m_masterConnection->m_dataCommandsCount; -} - -void SqlConnection::DataCommand::CheckBindResult(int result) -{ - if (result != SQLITE_OK) { - const char *error = sqlite3_errmsg( - m_masterConnection->m_connection); - - LogPedantic("Failed to bind SQL statement parameter"); - LogPedantic(" Error: " << error); - - ThrowMsg(Exception::SyntaxError, error); - } -} - -void SqlConnection::DataCommand::BindNull( - SqlConnection::ArgumentIndex position) -{ - CheckBindResult(sqlite3_bind_null(m_stmt, position)); - LogPedantic("SQL data command bind null: [" - << position << "]"); -} - -void SqlConnection::DataCommand::BindInteger( - SqlConnection::ArgumentIndex position, - int value) -{ - CheckBindResult(sqlite3_bind_int(m_stmt, position, value)); - LogPedantic("SQL data command bind integer: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindInt8( - SqlConnection::ArgumentIndex position, - int8_t value) -{ - CheckBindResult(sqlite3_bind_int(m_stmt, position, - static_cast(value))); - LogPedantic("SQL data command bind int8: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindInt16( - SqlConnection::ArgumentIndex position, - int16_t value) -{ - CheckBindResult(sqlite3_bind_int(m_stmt, position, - static_cast(value))); - LogPedantic("SQL data command bind int16: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindInt32( - SqlConnection::ArgumentIndex position, - int32_t value) -{ - CheckBindResult(sqlite3_bind_int(m_stmt, position, - static_cast(value))); - LogPedantic("SQL data command bind int32: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindInt64( - SqlConnection::ArgumentIndex position, - int64_t value) -{ - CheckBindResult(sqlite3_bind_int64(m_stmt, position, - static_cast(value))); - LogPedantic("SQL data command bind int64: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindFloat( - SqlConnection::ArgumentIndex position, - float value) -{ - CheckBindResult(sqlite3_bind_double(m_stmt, position, - static_cast(value))); - LogPedantic("SQL data command bind float: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindDouble( - SqlConnection::ArgumentIndex position, - double value) -{ - CheckBindResult(sqlite3_bind_double(m_stmt, position, value)); - LogPedantic("SQL data command bind double: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindString( - SqlConnection::ArgumentIndex position, - const char *value) -{ - if (!value) { - BindNull(position); - return; - } - - // Assume that text may disappear - CheckBindResult(sqlite3_bind_text(m_stmt, position, - value, strlen(value), - SQLITE_TRANSIENT)); - - LogPedantic("SQL data command bind string: [" - << position << "] -> " << value); -} - -void SqlConnection::DataCommand::BindString( - SqlConnection::ArgumentIndex position, - const String &value) -{ - BindString(position, ToUTF8String(value).c_str()); -} - -void SqlConnection::DataCommand::BindInteger( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (value.IsNull()) { - BindNull(position); - } else { - BindInteger(position, *value); - } -} - -void SqlConnection::DataCommand::BindInt8( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (value.IsNull()) { - BindNull(position); - } else { - BindInt8(position, *value); - } -} - -void SqlConnection::DataCommand::BindInt16( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (value.IsNull()) { - BindNull(position); - } else { - BindInt16(position, *value); - } -} - -void SqlConnection::DataCommand::BindInt32( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (value.IsNull()) { - BindNull(position); - } else { - BindInt32(position, *value); - } -} - -void SqlConnection::DataCommand::BindInt64( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (value.IsNull()) { - BindNull(position); - } else { - BindInt64(position, *value); - } -} - -void SqlConnection::DataCommand::BindFloat( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (value.IsNull()) { - BindNull(position); - } else { - BindFloat(position, *value); - } -} - -void SqlConnection::DataCommand::BindDouble( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (value.IsNull()) { - BindNull(position); - } else { - BindDouble(position, *value); - } -} - -void SqlConnection::DataCommand::BindString( - SqlConnection::ArgumentIndex position, - const Optional &value) -{ - if (!!value) { - BindString(position, ToUTF8String(*value).c_str()); - } else { - BindNull(position); - } -} - -bool SqlConnection::DataCommand::Step() -{ - // Notify all after potentially synchronized database connection access - ScopedNotifyAll notifyAll( - m_masterConnection->m_synchronizationObject.get()); - - for (;;) { - int ret = sqlite3_step(m_stmt); - - if (ret == SQLITE_ROW) { - LogPedantic("SQL data command step ROW"); - return true; - } else if (ret == SQLITE_DONE) { - LogPedantic("SQL data command step DONE"); - return false; - } else if (ret == SQLITE_BUSY) { - LogPedantic("Collision occurred while executing SQL command"); - - // Synchronize if synchronization object is available - if (m_masterConnection->m_synchronizationObject) { - LogPedantic("Performing synchronization"); - - m_masterConnection-> - m_synchronizationObject->Synchronize(); - - continue; - } - - // No synchronization object defined. Fail. - } - - // Fatal error - const char *error = sqlite3_errmsg(m_masterConnection->m_connection); - - LogPedantic("SQL step data command failed"); - LogPedantic(" Error: " << error); - - ThrowMsg(Exception::InternalError, error); - } -} - -void SqlConnection::DataCommand::Reset() -{ - /* - * According to: - * http://www.sqlite.org/c3ref/stmt.html - * - * if last sqlite3_step command on this stmt returned an error, - * then sqlite3_reset will return that error, althought it is not an error. - * So sqlite3_reset allways succedes. - */ - sqlite3_reset(m_stmt); - - LogPedantic("SQL data command reset"); -} - -void SqlConnection::DataCommand::CheckColumnIndex( - SqlConnection::ColumnIndex column) -{ - if (column < 0 || column >= sqlite3_column_count(m_stmt)) { - ThrowMsg(Exception::InvalidColumn, "Column index is out of bounds"); - } -} - -bool SqlConnection::DataCommand::IsColumnNull( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column type: [" << column << "]"); - CheckColumnIndex(column); - return sqlite3_column_type(m_stmt, column) == SQLITE_NULL; -} - -int SqlConnection::DataCommand::GetColumnInteger( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column integer: [" << column << "]"); - CheckColumnIndex(column); - int value = sqlite3_column_int(m_stmt, column); - LogPedantic(" Value: " << value); - return value; -} - -int8_t SqlConnection::DataCommand::GetColumnInt8( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column int8: [" << column << "]"); - CheckColumnIndex(column); - int8_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return value; -} - -int16_t SqlConnection::DataCommand::GetColumnInt16( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column int16: [" << column << "]"); - CheckColumnIndex(column); - int16_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return value; -} - -int32_t SqlConnection::DataCommand::GetColumnInt32( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column int32: [" << column << "]"); - CheckColumnIndex(column); - int32_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return value; -} - -int64_t SqlConnection::DataCommand::GetColumnInt64( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column int64: [" << column << "]"); - CheckColumnIndex(column); - int64_t value = static_cast(sqlite3_column_int64(m_stmt, column)); - LogPedantic(" Value: " << value); - return value; -} - -float SqlConnection::DataCommand::GetColumnFloat( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column float: [" << column << "]"); - CheckColumnIndex(column); - float value = static_cast(sqlite3_column_double(m_stmt, column)); - LogPedantic(" Value: " << value); - return value; -} - -double SqlConnection::DataCommand::GetColumnDouble( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column double: [" << column << "]"); - CheckColumnIndex(column); - double value = sqlite3_column_double(m_stmt, column); - LogPedantic(" Value: " << value); - return value; -} - -std::string SqlConnection::DataCommand::GetColumnString( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column string: [" << column << "]"); - CheckColumnIndex(column); - - const char *value = reinterpret_cast( - sqlite3_column_text(m_stmt, column)); - - LogPedantic("Value: " << (value ? value : "NULL")); - - if (value == NULL) { - return std::string(); - } - - return std::string(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalInteger( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional integer: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - int value = sqlite3_column_int(m_stmt, column); - LogPedantic(" Value: " << value); - return Optional(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalInt8( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional int8: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - int8_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalInt16( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional int16: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - int16_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalInt32( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional int32: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - int32_t value = static_cast(sqlite3_column_int(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalInt64( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional int64: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - int64_t value = static_cast(sqlite3_column_int64(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalFloat( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional float: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - float value = static_cast(sqlite3_column_double(m_stmt, column)); - LogPedantic(" Value: " << value); - return Optional(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalDouble( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional double: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - double value = sqlite3_column_double(m_stmt, column); - LogPedantic(" Value: " << value); - return Optional(value); -} - -Optional SqlConnection::DataCommand::GetColumnOptionalString( - SqlConnection::ColumnIndex column) -{ - LogPedantic("SQL data command get column optional string: [" - << column << "]"); - CheckColumnIndex(column); - if (sqlite3_column_type(m_stmt, column) == SQLITE_NULL) { - return Optional::Null; - } - const char *value = reinterpret_cast( - sqlite3_column_text(m_stmt, column)); - LogPedantic("Value: " << value); - String s = FromUTF8String(value); - return Optional(s); -} - -void SqlConnection::Connect(const std::string &address, - Flag::Type type, - Flag::Option flag) -{ - if (m_connection != NULL) { - LogPedantic("Already connected."); - return; - } - LogPedantic("Connecting to DB: " << address << "..."); - - // Connect to database - int result; - if (type & Flag::UseLucene) { - result = db_util_open_with_options( - address.c_str(), - &m_connection, - flag, - NULL); - - m_usingLucene = true; - LogPedantic("Lucene index enabled"); - } else { - result = sqlite3_open_v2( - address.c_str(), - &m_connection, - flag, - NULL); - - m_usingLucene = false; - LogPedantic("Lucene index disabled"); - } - - if (result == SQLITE_OK) { - LogPedantic("Connected to DB"); - } else { - LogPedantic("Failed to connect to DB!"); - ThrowMsg(Exception::ConnectionBroken, address); - } - - // Enable foreign keys - TurnOnForeignKeys(); -} - -void SqlConnection::Disconnect() -{ - if (m_connection == NULL) { - LogPedantic("Already disconnected."); - return; - } - - LogPedantic("Disconnecting from DB..."); - - // All stored data commands must be deleted before disconnect - Assert(m_dataCommandsCount == 0 && - "All stored procedures must be deleted" - " before disconnecting SqlConnection"); - - int result; - - if (m_usingLucene) { - result = db_util_close(m_connection); - } else { - result = sqlite3_close(m_connection); - } - - if (result != SQLITE_OK) { - const char *error = sqlite3_errmsg(m_connection); - LogPedantic("SQL close failed"); - LogPedantic(" Error: " << error); - Throw(Exception::InternalError); - } - - m_connection = NULL; - - LogPedantic("Disconnected from DB"); -} - -bool SqlConnection::CheckTableExist(const char *tableName) -{ - if (m_connection == NULL) { - LogPedantic("Cannot execute command. Not connected to DB!"); - return false; - } - - DataCommandAutoPtr command = - PrepareDataCommand("select tbl_name from sqlite_master where name=?;"); - - command->BindString(1, tableName); - - if (!command->Step()) { - LogPedantic("No matching records in table"); - return false; - } - - return command->GetColumnString(0) == tableName; -} - -SqlConnection::SqlConnection(const std::string &address, - Flag::Type flag, - Flag::Option option, - SynchronizationObject *synchronizationObject) : - m_connection(NULL), - m_usingLucene(false), - m_dataCommandsCount(0), - m_synchronizationObject(synchronizationObject) -{ - LogPedantic("Opening database connection to: " << address); - - // Connect to DB - SqlConnection::Connect(address, flag, option); - - if (!m_synchronizationObject) { - LogPedantic("No synchronization object defined"); - } -} - -SqlConnection::~SqlConnection() -{ - LogPedantic("Closing database connection"); - - // Disconnect from DB - Try - { - SqlConnection::Disconnect(); - } - Catch(Exception::Base) - { - LogPedantic("Failed to disconnect from database"); - } -} - -void SqlConnection::ExecCommand(const char *format, ...) -{ - if (m_connection == NULL) { - LogPedantic("Cannot execute command. Not connected to DB!"); - return; - } - - if (format == NULL) { - LogPedantic("Null query!"); - ThrowMsg(Exception::SyntaxError, "Null statement"); - } - - char *rawBuffer; - - va_list args; - va_start(args, format); - - if (vasprintf(&rawBuffer, format, args) == -1) { - rawBuffer = NULL; - } - - va_end(args); - - ScopedFree buffer(rawBuffer); - - if (!buffer) { - LogPedantic("Failed to allocate statement string"); - return; - } - - LogPedantic("Executing SQL command: " << buffer.Get()); - - // Notify all after potentially synchronized database connection access - ScopedNotifyAll notifyAll(m_synchronizationObject.get()); - - for (;;) { - char *errorBuffer; - - int ret = sqlite3_exec(m_connection, - buffer.Get(), - NULL, - NULL, - &errorBuffer); - - std::string errorMsg; - - // Take allocated error buffer - if (errorBuffer != NULL) { - errorMsg = errorBuffer; - sqlite3_free(errorBuffer); - } - - if (ret == SQLITE_OK) { - return; - } - - if (ret == SQLITE_BUSY) { - LogPedantic("Collision occurred while executing SQL command"); - - // Synchronize if synchronization object is available - if (m_synchronizationObject) { - LogPedantic("Performing synchronization"); - m_synchronizationObject->Synchronize(); - continue; - } - - // No synchronization object defined. Fail. - } - - // Fatal error - LogPedantic("Failed to execute SQL command. Error: " << errorMsg); - ThrowMsg(Exception::SyntaxError, errorMsg); - } -} - -SqlConnection::DataCommandAutoPtr SqlConnection::PrepareDataCommand( - const char *format, - ...) -{ - if (m_connection == NULL) { - LogPedantic("Cannot execute data command. Not connected to DB!"); - return DataCommandAutoPtr(); - } - - char *rawBuffer; - - va_list args; - va_start(args, format); - - if (vasprintf(&rawBuffer, format, args) == -1) { - rawBuffer = NULL; - } - - va_end(args); - - ScopedFree buffer(rawBuffer); - - if (!buffer) { - LogPedantic("Failed to allocate statement string"); - return DataCommandAutoPtr(); - } - - LogPedantic("Executing SQL data command: " << buffer.Get()); - - return DataCommandAutoPtr(new DataCommand(this, buffer.Get())); -} - -SqlConnection::RowID SqlConnection::GetLastInsertRowID() const -{ - return static_cast(sqlite3_last_insert_rowid(m_connection)); -} - -void SqlConnection::TurnOnForeignKeys() -{ - ExecCommand("PRAGMA foreign_keys = ON;"); -} - -SqlConnection::SynchronizationObject * -SqlConnection::AllocDefaultSynchronizationObject() -{ - return new NaiveSynchronizationObject(); -} -} // namespace DB -} // namespace DPL diff --git a/modules_mobile/db/src/thread_database_support.cpp b/modules_mobile/db/src/thread_database_support.cpp deleted file mode 100644 index 101640f..0000000 --- a/modules_mobile/db/src/thread_database_support.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file thread_database_support.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk) - * @version 1.0 - * @brief This file contains the definition of thread database support - */ -#include -#include \ No newline at end of file diff --git a/modules_mobile/dbus/config.cmake b/modules_mobile/dbus/config.cmake deleted file mode 100644 index f2fefde..0000000 --- a/modules_mobile/dbus/config.cmake +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_DBUS_SOURCES - ${PROJECT_SOURCE_DIR}/modules/dbus/src/connection.cpp - ${PROJECT_SOURCE_DIR}/modules/dbus/src/dispatcher.cpp - ${PROJECT_SOURCE_DIR}/modules/dbus/src/interface.cpp - ${PROJECT_SOURCE_DIR}/modules/dbus/src/object.cpp - ${PROJECT_SOURCE_DIR}/modules/dbus/src/object_proxy.cpp - ${PROJECT_SOURCE_DIR}/modules/dbus/src/server.cpp - PARENT_SCOPE -) - - -SET(DPL_DBUS_HEADERS - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/connection.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dbus_client.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dbus_deserialization.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dbus_interface_dispatcher.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dbus_serialization.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dbus_server_deserialization.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dbus_server_serialization.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dbus_signature.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/dispatcher.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/glib_util.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/exception.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/interface.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/method_proxy.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/object.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/object_proxy.h - ${PROJECT_SOURCE_DIR}/modules/dbus/include/dpl/dbus/server.h - PARENT_SCOPE -) - -SET(DPL_DBUS_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/dbus/include - PARENT_SCOPE -) diff --git a/modules_mobile/dbus/include/dpl/dbus/connection.h b/modules_mobile/dbus/include/dpl/dbus/connection.h deleted file mode 100644 index 4a455ad..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/connection.h +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file connection.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_CONNECTION_H -#define DPL_DBUS_CONNECTION_H - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -namespace ConnectionEvents { -/** - * Emitted when service name is acquired. - * - * Arg0 Acquired name. - */ -DECLARE_GENERIC_EVENT_1(ServiceNameAcquiredEvent, std::string) - -/** - * Emitted when service name is lost. - * - * Arg0 Lost name. - */ -DECLARE_GENERIC_EVENT_1(ServiceNameLostEvent, std::string) - -/** - * Emitted when remote host closes connection. - * - * Arg0 Low-level error message. - */ -DECLARE_GENERIC_EVENT_1(ConnectionBrokenEvent, std::string) - -/** - * Emitted when invalid or malformed data appear on connection. - * - * Arg0 Low-level error message. - */ -DECLARE_GENERIC_EVENT_1(ConnectionInvalidEvent, std::string) -} - -class Server; - -class Connection; -typedef std::shared_ptr ConnectionPtr; - -typedef std::shared_ptr ObjectProxyPtr; - -class Connection : - public DPL::Event::EventSupport, - public DPL::Event::EventSupport, - public DPL::Event::EventSupport, - public DPL::Event::EventSupport -{ - public: - /** - * Acquires connection to session bus. - * - * @return Session bus connection. - * @throw DBus::Exception If unable to connect to session bus. - */ - static ConnectionPtr sessionBus(); - - /** - * Acquires connection to system bus. - * - * @return System bus connection. - * @throw DBus::Exception If unable to connect to system bus. - */ - static ConnectionPtr systemBus(); - - /** - * Acquires connection to specified bus. - * - * @return Bus connection. - * @throw DBus::Exception If unable to connect to a bus. - */ - static ConnectionPtr connectTo(GBusType busType); - - /** - * Acquires connection to for specified address. - * - * @return Connection. - * @throw DBus::Exception If unable to connect. - * - * @remarks Address should be in DBus format (@see DBus documentation). - */ - static ConnectionPtr connectTo(const std::string& address); - - ~Connection(); - - /** - * Sets up a service on the connection. - * - * @param serviceName Service to register. - * @throw DBus::Exception If registration failed. - * - * @remarks Add objects before services to prevent notifications about new - * interfaces being added. - */ - void registerService(const std::string& serviceName); - - /** - * Unregisters a service from the connection. - * - * @param serviceName Service to unregister. - * @throw DBus::Exception If service not registered. - */ - void unregisterService(const std::string& serviceName); - - /** - * Adds object to the connection. - * - * @param object Object to register. - * @throw DBus::Exception If registration failed. - * - * @remarks Add objects before services to prevent notifications about new - * interfaces being added. - */ - void registerObject(const ObjectPtr& object); - - /** - * Removed object from the connection. - * - * @param objectPath Path of the object to unregister. - * @throw DBus::Exception If object not registered. - */ - void unregisterObject(const std::string& objectPath); - - /** - * Creates proxy to remote objects. - * - * @param serviceName Name of the DBus service. - * @param objectPath DBus path to the object. - * @return Object proxy. - * @throw DBus::ConnectionClosedException If connection is closed. - */ - ObjectProxyPtr createObjectProxy(const std::string& serviceName, - const std::string& objectPath); - - private: - friend class Server; - - typedef std::map RegisteredServices; - - struct ObjectRegistration - { - ObjectRegistration(guint _registrationId, const ObjectPtr& _object) : - registrationId(_registrationId), - object(_object) - {} - - guint registrationId; - ObjectPtr object; - }; - typedef std::map RegisteredObjects; - - static void onServiceNameAcquired(GDBusConnection* connection, - const gchar* serviceName, - gpointer data); - - static void onServiceNameLost(GDBusConnection* connection, - const gchar* serviceName, - gpointer data); - - static void onConnectionClosed(GDBusConnection* connection, - gboolean peerVanished, - GError* error, - gpointer data); - - explicit Connection(GDBusConnection* connection); - - GDBusConnection* m_connection; - - RegisteredServices m_registeredServices; - - RegisteredObjects m_registeredObjects; -}; -} -} - -#endif // DPL_DBUS_CONNECTION_H diff --git a/modules_mobile/dbus/include/dpl/dbus/dbus_client.h b/modules_mobile/dbus/include/dpl/dbus/dbus_client.h deleted file mode 100644 index 061ec46..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dbus_client.h +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dbus_client.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Header file for DBus generic client support - */ - -#ifndef DPL_DBUS_DBUS_CLIENT_H_ -#define DPL_DBUS_DBUS_CLIENT_H_ - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -/* - * DBus::Client class is intended to act as simple DBus client. To call a method - * on remote service "Service", on remote object "Object", interface - * "Interface",use it like this: - * - * - * DBus::Client client("Object", "Service", "Interface"); - * (...) // variables declarations - * client.call("Method name", arg1, arg2, arg2, ... argN, - * &outArg1, &outArg2, &outArg3, ..., &outArgN); - * - * - * As You can see, input parameters of the call are passed with reference, - * output ones are passed as pointers - parameters MUST be passed this way. - * - * To call a void function (no out params), just pass in arguments to Call(). - * - * Currently client supports serialization and deserialization of simple types - * (int, char, float, unsigned), strings (std::string and char*) and - * some STL containers (std::vector, std::list, std::map, std::set, std::pair). - * Structures and classes are not (yet) supported. - */ - -class Client -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DBusClientException) - }; - - Client(std::string serverPath, - std::string serviceName, - std::string interfaceName) : - m_serviceName(serviceName), - m_serverPath(serverPath), - m_interfaceName(interfaceName) - { - DBusError error; - - dbus_error_init(&error); - m_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); - if (NULL == m_connection) { - LogPedantic("Couldn't get DBUS connection. Error: " << - error.message); - dbus_error_free(&error); - ThrowMsg(Exception::DBusClientException, - "Couldn't get DBUS connection."); - } - } - - template - void call(const char* methodName, const Args& ... args) - { - DBusMessage* message = dbus_message_new_method_call( - m_serviceName.c_str(), - m_serverPath.c_str(), - m_interfaceName.c_str(), - methodName); - DBusMessageIter argsIterator; - dbus_message_iter_init_append(message, &argsIterator); - call(message, &argsIterator, args ...); - dbus_message_unref(message); - } - - template - void call(std::string methodName, const Args& ... args) - { - call(methodName.c_str(), args ...); - } - - ~Client() - { - dbus_connection_unref(m_connection); - } - - private: - - DBusMessage* makeCall( - DBusMessage* message) - { - DBusError error; - dbus_error_init(&error); - DBusMessage* ret = dbus_connection_send_with_reply_and_block( - m_connection, - message, - -1, - &error); - if (NULL == ret) { - LogPedantic("Error sending DBUS message: " << - error.message); - dbus_error_free(&error); - ThrowMsg(Exception::DBusClientException, - "Error sending DBUS message."); - } - return ret; - } - - void call(DBusMessage* message, DBusMessageIter* /*argsIterator*/) - { - DBusMessage* ret = makeCall(message); - if (ret != NULL) { - dbus_message_unref(ret); - } else { - LogPedantic("Error getting DBUS response."); - ThrowMsg(Exception::DBusClientException, - "Error getting DBUS response."); - } - } - - template - void call( - DBusMessage* message, - DBusMessageIter* argsIterator, - const T& invalue, - const Args& ... args) - { - if (!Serialization::serialize(argsIterator, invalue)) { - LogPedantic("Error in serialization."); - ThrowMsg(Exception::DBusClientException, - "Error in serialization."); - } - call(message, argsIterator, args ...); - } - - template - void call( - DBusMessage* message, - DBusMessageIter* argsIterator, - const T* invalue, - const Args& ... args) - { - if (!Serialization::serialize(argsIterator, invalue)) { - LogPedantic("Error in serialization."); - ThrowMsg(Exception::DBusClientException, - "Error in serialization."); - } - call(message, argsIterator, args ...); - } - - template - void call( - DBusMessage* message, - DBusMessageIter* argsIterator, - const T* invalue) - { - if (!Serialization::serialize(argsIterator, invalue)) { - LogPedantic("Error in serialization."); - ThrowMsg(Exception::DBusClientException, - "Error in serialization."); - } - call(message, argsIterator); - } - - template - void call( - DBusMessage* message, - DBusMessageIter* /*argsIterator*/, - T* out, - const Args& ... args) - { - DBusMessage* ret = makeCall(message); - if (ret != NULL) { - DBusMessageIter responseIterator; - dbus_message_iter_init(ret, &responseIterator); - returnFromCall(&responseIterator, out, args ...); - dbus_message_unref(ret); - } - } - - template - void returnFromCall( - DBusMessageIter* responseIterator, - T* out, - const Args& ... args) - { - if (!Deserialization::deserialize(responseIterator, out)) { - LogPedantic("Error in deserialization."); - ThrowMsg(Exception::DBusClientException, - "Error in deserialization."); - } - returnFromCall(responseIterator, args ...); - } - - template - void returnFromCall(DBusMessageIter* responseIterator, T* out) - { - if (!Deserialization::deserialize(responseIterator, out)) { - LogPedantic("Error in deserialization."); - ThrowMsg(Exception::DBusClientException, - "Error in deserialization."); - } - } - - std::string m_serviceName, m_serverPath, m_interfaceName; - DBusConnection* m_connection; -}; -} // namespace DBus -} // namespace DPL - -#endif // DPL_DBUS_DBUS_CLIENT_H_ diff --git a/modules_mobile/dbus/include/dpl/dbus/dbus_deserialization.h b/modules_mobile/dbus/include/dpl/dbus/dbus_deserialization.h deleted file mode 100644 index 2a05db8..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dbus_deserialization.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dbus_deserialization.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Header file for DBus data deserialization - */ - -#ifndef DPL_DBUS_DBUS_DESERIALIZATION_H_ -#define DPL_DBUS_DBUS_DESERIALIZATION_H_ - -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -struct Deserialization -{ - static bool deserializePrimitive( - DBusMessageIter* responseIterator, - void* arg, - int type) - { - if (dbus_message_iter_get_arg_type(responseIterator) != type) { - return false; - } - dbus_message_iter_get_basic(responseIterator, arg); - return true; - } - - // char* and all integer types + doubles - template - static bool deserialize(DBusMessageIter* responseIterator, T* arg) - { - if (dbus_message_iter_get_arg_type(responseIterator) - != SimpleType::value) - { - return false; - } - dbus_message_iter_get_basic(responseIterator, arg); - return true; - } - - // float case - read as double - static bool deserialize(DBusMessageIter* responseIterator, float* arg) - { - double d; - if (!deserialize(responseIterator, &d)) { - return false; - } - *arg = static_cast(d); - return true; - } - - // std::string - static bool deserialize( - DBusMessageIter* responseIterator, - std::string* arg) - { - char* str = NULL; - if (!deserialize(responseIterator, &str)) { - return false; - } - *arg = std::string(str); - return true; - } - - // dbus array deserialization - template - static bool deserializeContainer( - DBusMessageIter* responseIterator, - T* arg) - { - if (dbus_message_iter_get_arg_type(responseIterator) - != DBUS_TYPE_ARRAY) - { - return false; - } - DBusMessageIter subIterator; - dbus_message_iter_recurse(responseIterator, &subIterator); - while (dbus_message_iter_get_arg_type(&subIterator) - != DBUS_TYPE_INVALID) - { - arg->push_back(typename T::value_type()); - if (!deserialize(&subIterator, &arg->back())) { - return false; - } - dbus_message_iter_next(&subIterator); - } - return true; - } - - // std::vector - template - static bool deserialize( - DBusMessageIter* responseIterator, - std::vector* arg) - { - return deserializeContainer(responseIterator, arg); - } - - // std::list - template - static bool deserialize( - DBusMessageIter* responseIterator, - std::list* arg) - { - return deserializeContainer(responseIterator, arg); - } - - // std::set - template - static bool deserialize( - DBusMessageIter* responseIterator, - std::set* arg) - { - if (dbus_message_iter_get_arg_type(responseIterator) - != DBUS_TYPE_ARRAY) - { - return false; - } - DBusMessageIter subIterator; - dbus_message_iter_recurse(responseIterator, &subIterator); - while (dbus_message_iter_get_arg_type(&subIterator) - != DBUS_TYPE_INVALID) - { - typename std::set::value_type element; - if (!deserialize(&subIterator, &element)) { - return false; - } - arg->insert(element); - dbus_message_iter_next(&subIterator); - } - return true; - } - - // std::pair - template - static bool deserialize( - DBusMessageIter* argsIterator, - const std::pair* arg) - { - if (dbus_message_iter_get_arg_type(argsIterator) - != DBUS_TYPE_DICT_ENTRY) - { - return false; - } - DBusMessageIter dictEntryIterator; - dbus_message_iter_recurse(argsIterator, &dictEntryIterator); - if (!deserialize(dictEntryIterator, &arg->first)) { - return false; - } - dbus_message_iter_next(&dictEntryIterator); - if (!deserialize(dictEntryIterator, &arg->second)) { - return false; - } - return true; - } - - // std::map - template - static bool deserialize( - DBusMessageIter* responseIterator, - const std::map* arg) - { - if (dbus_message_iter_get_arg_type(responseIterator) - != DBUS_TYPE_ARRAY) - { - return false; - } - DBusMessageIter subIterator; - dbus_message_iter_recurse(responseIterator, &subIterator); - while (dbus_message_iter_get_arg_type(&subIterator) - != DBUS_TYPE_INVALID) - { - typename std::pair element; - if (!deserialize(&subIterator, &element)) { - return false; - } - arg->insert(element); - dbus_message_iter_next(&subIterator); - } - return true; - } -}; - -template<> -inline bool Deserialization::deserialize( - DBusMessageIter* responseIterator, - bool* arg) -{ - unsigned int value; - if (dbus_message_iter_get_arg_type(responseIterator) - != SimpleType::value) - { - return false; - } - dbus_message_iter_get_basic(responseIterator, &value); - *arg = static_cast(value); - return true; -} -} // namespace DBus -} // namespace DPL - -#endif // DPL_DBUS_DBUS_DESERIALIZATION_H_ diff --git a/modules_mobile/dbus/include/dpl/dbus/dbus_interface_dispatcher.h b/modules_mobile/dbus/include/dpl/dbus/dbus_interface_dispatcher.h deleted file mode 100644 index 97d7407..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dbus_interface_dispatcher.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file dbus_interface_dispatcher.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief This file contains definitions of DBus::InterfaceDispatcher - * class. - */ - -#ifndef DPL_DBUS_DBUS_INTERFACE_DISPATCHER_H_ -#define DPL_DBUS_DBUS_INTERFACE_DISPATCHER_H_ - -#include -#include -#include - -namespace DPL { -namespace DBus { -class InterfaceDispatcher : public DBus::Dispatcher -{ - public: - explicit InterfaceDispatcher(const std::string& interfaceName) : - m_interfaceName(interfaceName) - {} - - virtual ~InterfaceDispatcher() - {} - - // Implement it in specific interface with method handling - virtual void onMethodCall(const gchar* /*methodName*/, - GVariant* /*parameters*/, - GDBusMethodInvocation* /*invocation*/) = 0; - - virtual std::string getName() const - { - return m_interfaceName; - } - - virtual std::string getXmlSignature() const - { - return m_xml; - } - virtual void setXmlSignature(const std::string& newSignature) - { - m_xml = newSignature; - } - - virtual void onMethodCall(GDBusConnection* /*connection*/, - const gchar* /*sender*/, - const gchar* /*objectPath*/, - const gchar* interfaceName, - const gchar* methodName, - GVariant* parameters, - GDBusMethodInvocation* invocation) - { - if (g_strcmp0(interfaceName, m_interfaceName.c_str()) == 0) { - onMethodCall(methodName, parameters, invocation); - } else { - LogPedantic("Called invalid interface: " << interfaceName << - " instead of: " << m_interfaceName); - } - } - - virtual GVariant* onPropertyGet(GDBusConnection* /*connection*/, - const gchar* /*sender*/, - const gchar* /*objectPath*/, - const gchar* /*interfaceName*/, - const gchar* propertyName) - { - LogDebug("InterfaceDispatcher onPropertyGet: " << propertyName); - return NULL; - } - - virtual gboolean onPropertySet(GDBusConnection* /*connection*/, - const gchar* /*sender*/, - const gchar* /*objectPath*/, - const gchar* /*interfaceName*/, - const gchar* propertyName, - GVariant* /*value*/) - { - LogDebug("InterfaceDispatcher onPropertySet: " << propertyName); - return false; - } - - private: - std::string m_interfaceName, m_xml; -}; -} // namespace DBus -} // namespace DPL - -#endif // DPL_DBUS_DBUS_INTERFACE_DISPATCHER_H_ diff --git a/modules_mobile/dbus/include/dpl/dbus/dbus_serialization.h b/modules_mobile/dbus/include/dpl/dbus/dbus_serialization.h deleted file mode 100644 index c0fa338..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dbus_serialization.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dbus_serialization.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Header file for DBus data derialization - */ - -#ifndef DPL_DBUS_DBUS_SERIALIZATION_H_ -#define DPL_DBUS_DBUS_SERIALIZATION_H_ - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -struct Serialization -{ - // std::string - static bool serialize( - DBusMessageIter* argsIterator, - const std::string& str) - { - return serialize(argsIterator, str.c_str()); - } - - // float case - send as double - static bool serialize(DBusMessageIter* argsIterator, const float& arg) - { - const double d = static_cast(arg); - return serialize(argsIterator, d); - } - - // char* and all integer types + doubles - template - static bool serialize(DBusMessageIter* argsIterator, const T& arg) - { - return dbus_message_iter_append_basic(argsIterator, - SimpleType::value, - &arg); - } - - // dbus array serialization - template - static bool serializeContainer( - DBusMessageIter* argsIterator, - const T& arg) - { - typename T::const_iterator containerIt; - DBusMessageIter subIterator; - if (!dbus_message_iter_open_container(argsIterator, DBUS_TYPE_ARRAY, - Signature - ::value(), &subIterator)) - { - return false; - } - FOREACH(containerIt, arg) { - if (!serialize(&subIterator, *containerIt)) { - return false; - } - } - return dbus_message_iter_close_container(argsIterator, &subIterator); - } - - // std::vector - template - static bool serialize( - DBusMessageIter* argsIterator, - const std::vector &arg) - { - return serializeContainer(argsIterator, arg); - } - - // std::list - template - static bool serialize( - DBusMessageIter* argsIterator, - const std::list &arg) - { - return serializeContainer(argsIterator, arg); - } - - // std::set - template - static bool serialize( - DBusMessageIter* argsIterator, - const std::set &arg) - { - return serializeContainer(argsIterator, arg); - } - - // std::pair - template - static bool serialize( - DBusMessageIter* argsIterator, - const std::pair &arg) - { - DBusMessageIter dictEntryIterator; - if (!dbus_message_iter_open_container(argsIterator, - DBUS_TYPE_DICT_ENTRY, NULL, - &dictEntryIterator)) - { - return false; - } - if (!serialize(dictEntryIterator, arg.first)) { - return false; - } - if (!serialize(dictEntryIterator, arg.second)) { - return false; - } - return dbus_message_iter_close_container(argsIterator, - &dictEntryIterator); - } - - // std::map - template - static bool serialize( - DBusMessageIter* argsIterator, - const std::map &arg) - { - return serializeContainer(argsIterator, arg); - } -}; - -// char* and all integer types + doubles -template<> -inline bool Serialization::serialize(DBusMessageIter* argsIterator, - const bool& arg) -{ - unsigned int value = static_cast(arg); - return dbus_message_iter_append_basic(argsIterator, - SimpleType::value, - &value); -} -} // namespace DBus -} // namespace DPL - -#endif // DPL_DBUS_DBUS_SERIALIZATION_H_ diff --git a/modules_mobile/dbus/include/dpl/dbus/dbus_server_deserialization.h b/modules_mobile/dbus/include/dpl/dbus/dbus_server_deserialization.h deleted file mode 100644 index eb09d6d..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dbus_server_deserialization.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dbus_server_deserialization.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Header file for DBus data deserialization from GVariant - */ - -#ifndef DPL_DBUS_DBUS_SERVER_DESERIALIZATION_H_ -#define DPL_DBUS_DBUS_SERVER_DESERIALIZATION_H_ - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -struct ServerDeserialization { - template - static bool deserialize(GVariant* g, T* arg1, Args ... args) - { - Assert(NULL != g); - Assert(NULL != arg1); - GVariantIter* iterator = g_variant_iter_new(g); - if (NULL == iterator) { - return false; - } - if (!deserializeIterator(iterator, arg1)) { - g_variant_iter_free(iterator); - return false; - } - if (!deserializeIterator(iterator, args ...)) { - g_variant_iter_free(iterator); - return false; - } - g_variant_iter_free(iterator); - return true; - } - - template - static bool deserialize(GVariant* g, T* arg1) - { - Assert(NULL != g); - Assert(NULL != arg1); - GVariantIter* iterator = g_variant_iter_new(g); - if (NULL == iterator) { - return false; - } - if (!deserializeIterator(iterator, arg1)) { - g_variant_iter_free(iterator); - return false; - } - g_variant_iter_free(iterator); - return true; - } - - // deserialization from GVariant tuple iterator - template - static bool deserializeIterator(GVariantIter* g, T* arg1, Args ... args) - { - Assert(NULL != g); - Assert(NULL != arg1); - GVariant* elem = g_variant_iter_next_value(g); - if (NULL == elem) { - return false; - } - if (!deserializeElem(elem, arg1)) { - return false; - } - if (!deserializeIterator(g, args ...)) { - return false; - } - return true; - } - - template - static bool deserializeIterator(GVariantIter* g, T* arg1) - { - Assert(NULL != g); - Assert(NULL != arg1); - GVariant* elem = g_variant_iter_next_value(g); - if (NULL == elem) { - return false; - } - if (!deserializeElem(elem, arg1)) { - return false; - } - g_variant_unref(elem); - return true; - } - - // type specialization - static bool deserializeElem(GVariant* parameters, std::string* outStr) - { - const gchar* arg = g_variant_get_string(parameters, NULL); - *outStr = std::string(arg); - return true; - } - - static bool deserializeElem(GVariant* parameters, int* outInt) - { - gint32 arg = g_variant_get_int32(parameters); - *outInt = arg; - return true; - } - - static bool deserializeElem(GVariant* parameters, unsigned* outInt) - { - guint32 arg = g_variant_get_uint32(parameters); - *outInt = arg; - return true; - } - - static bool deserializeElem(GVariant* parameters, bool* outInt) - { - gboolean arg = g_variant_get_boolean(parameters); - *outInt = arg; - return true; - } - - static bool deserializeElem(GVariant* parameters, float* outInt) - { - gdouble arg = g_variant_get_double(parameters); - *outInt = static_cast(arg); - return true; - } - - static bool deserializeElem(GVariant* parameters, - std::vector* outArray) - { - unsigned int i = 0; - gsize length = 0; - const gchar** args = g_variant_get_strv( - parameters, - &length); - for (i = 0; i < length; ++i) { - outArray->push_back(std::string(args[i])); - } - g_free(args); - return true; - } - - static bool deserializeElem(GVariant* parameters, - std::list* outArray) - { - unsigned int i = 0; - gsize length = 0; - const gchar** args = g_variant_get_strv( - parameters, - &length); - for (i = 0; i < length; ++i) { - outArray->push_back(std::string(args[i])); - } - g_free(args); - return true; - } -}; -} // namespace DBus -} // namespace DPL - -#endif // DPL_DBUS_DBUS_SERVER_DESERIALIZATION_H_ diff --git a/modules_mobile/dbus/include/dpl/dbus/dbus_server_serialization.h b/modules_mobile/dbus/include/dpl/dbus/dbus_server_serialization.h deleted file mode 100644 index 9e47ca6..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dbus_server_serialization.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dbus_server_serialization.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Header file for DBus data serialization to GVariant - */ - -#ifndef DPL_DBUS_DBUS_SERVER_SERIALIZATION_H_ -#define DPL_DBUS_DBUS_SERVER_SERIALIZATION_H_ - -#include -#include - -namespace DPL { -namespace DBus { -struct ServerSerialization { - template - static GVariant* serialize(Args ... args) - { - GVariantBuilder* builder = g_variant_builder_new(G_VARIANT_TYPE_TUPLE); - if (NULL == builder) { - return NULL; - } - serializeBuilder(builder, args ...); - return g_variant_builder_end(builder); - } - - // serialization on GVariantBuilder - template - static void serializeBuilder(GVariantBuilder* builder, - const T& arg, - Args ... args) - { - serializeElem(builder, arg); - serializeBuilder(builder, args ...); - } - - template - static void serializeBuilder(GVariantBuilder* builder, const T& arg) - { - serializeElem(builder, arg); - } - - // type specialization - static void serializeElem(GVariantBuilder* builder, int arg) - { - g_variant_builder_add_value(builder, g_variant_new_int32(arg)); - } - - static void serializeElem(GVariantBuilder* builder, unsigned arg) - { - g_variant_builder_add_value(builder, g_variant_new_uint32(arg)); - } - - static void serializeElem(GVariantBuilder* builder, bool arg) - { - g_variant_builder_add_value(builder, g_variant_new_boolean(arg)); - } - - static void serializeElem(GVariantBuilder* builder, float arg) - { - gdouble d = static_cast(arg); - g_variant_builder_add_value(builder, g_variant_new_double(d)); - } - - static void serializeElem(GVariantBuilder* builder, const char* arg) - { - g_variant_builder_add_value(builder, g_variant_new_string(arg)); - } - - static void serializeElem(GVariantBuilder* builder, - const std::string& arg) - { - g_variant_builder_add_value(builder, g_variant_new_string(arg.c_str())); - } -}; -} // namespace DBus -} // namespace DPL - -#endif // DPL_DBUS_DBUS_SERVER_SERIALIZATION_H_ diff --git a/modules_mobile/dbus/include/dpl/dbus/dbus_signature.h b/modules_mobile/dbus/include/dpl/dbus/dbus_signature.h deleted file mode 100644 index bc99108..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dbus_signature.h +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dbus_deserialization.h - * @author Tomasz Swierczek (t.swierczek@samsung.com) - * @version 1.0 - * @brief Header file for DBus data signatures - */ - -#ifndef DPL_DBUS_SIGNATURE_H -#define DPL_DBUS_SIGNATURE_H - -#include -#include - -namespace DPL { -namespace DBus { -template -struct SimpleType; - -template -struct Signature -{ - static inline const char* value() - { - static const char signature[] = - { (char) SimpleType::value, 0 }; - return signature; - } -}; - -// signed integer types -template -struct __SignedIntegerType; - -template<> -struct __SignedIntegerType<1> -{ - static const int value = DBUS_TYPE_INT16; -}; - -template<> -struct __SignedIntegerType<2> -{ - static const int value = DBUS_TYPE_INT16; -}; - -template<> -struct __SignedIntegerType<4> -{ - static const int value = DBUS_TYPE_INT32; -}; - -template<> -struct __SignedIntegerType<8> -{ - static const int value = DBUS_TYPE_INT64; -}; - -// unsigned integer types -template -struct __UnsignedIntegerType; - -template<> -struct __UnsignedIntegerType<1> -{ - static const int value = DBUS_TYPE_BYTE; -}; -template<> -struct __UnsignedIntegerType<2> -{ - static const int value = DBUS_TYPE_UINT16; -}; -template<> -struct __UnsignedIntegerType<4> -{ - static const int value = DBUS_TYPE_UINT32; -}; -template<> -struct __UnsignedIntegerType<8> -{ - static const int value = DBUS_TYPE_UINT64; -}; - -// basic types -template<> -struct SimpleType -{ - static const int value = DBUS_TYPE_BOOLEAN; -}; - -template<> -struct SimpleType -{ - static const int value = __UnsignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = __SignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = - __UnsignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = __SignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = - __UnsignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = __SignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = - __UnsignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = __SignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = - __UnsignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = __SignedIntegerType::value; -}; - -template<> -struct SimpleType -{ - static const int value = __UnsignedIntegerType< - sizeof(unsigned long long)>::value; -}; - -template<> -struct SimpleType -{ - static const int value = DBUS_TYPE_DOUBLE; -}; - -template<> -struct SimpleType -{ - static const int value = DBUS_TYPE_DOUBLE; -}; - -template<> -struct SimpleType -{ - static const int value = DBUS_TYPE_STRING; -}; - -template<> -struct SimpleType -{ - static const int value = DBUS_TYPE_STRING; -}; - -template<> -struct SimpleType -{ - static const int value = DBUS_TYPE_STRING; -}; - -// STL containers signatures - -// generic array -template -struct ArraySignature -{ - static inline const char* value() - { - static const std::string signature = std::string( - DBUS_TYPE_ARRAY_AS_STRING) + Signature::value(); - return signature.c_str(); - } -}; - -// std::vector -template -struct Signature > : public ArraySignature -{}; - -// std::list -template -struct Signature > : public ArraySignature -{}; - -// std::set -template -struct Signature > : public ArraySignature -{}; - -// std::pair -template -struct Signature > -{ - static inline const char* value() - { - static const std::string signature = std::string( - DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING) - + Signature::value() + Signature::value() - + DBUS_DICT_ENTRY_END_CHAR_AS_STRING; - return signature.c_str(); - } -}; - -// std::map -template -struct Signature > : public ArraySignature > -{}; -} // namespace DBus -} // namespace DPL - -#endif // DPL_DBUS_SIGNATURE_H diff --git a/modules_mobile/dbus/include/dpl/dbus/dispatcher.h b/modules_mobile/dbus/include/dpl/dbus/dispatcher.h deleted file mode 100644 index 93e62e6..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/dispatcher.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file dispatcher.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_DISPATCHER_H -#define DPL_DBUS_DISPATCHER_H - -#include - -namespace DPL { -namespace DBus { -class Dispatcher -{ - public: - virtual ~Dispatcher() = 0; - - /** - * Called on method invocation. - * - * @param connection - * @param sender - * @param objectPath - * @param interfaceName - * @param methodName - * @param parameters - * @param invocation - * - * @see GLib DBus documentation. - */ - virtual void onMethodCall(GDBusConnection* connection, - const gchar* sender, - const gchar* objectPath, - const gchar* interfaceName, - const gchar* methodName, - GVariant* parameters, - GDBusMethodInvocation* invocation) = 0; - - /** - * Called on property get. - * - * @param connection - * @param sender - * @param objectPath - * @param interfaceName - * @param propertyName - * @return Porperty value. - * - * @see GLib DBus documentation. - */ - virtual GVariant* onPropertyGet(GDBusConnection* connection, - const gchar* sender, - const gchar* objectPath, - const gchar* interfaceName, - const gchar* propertyName, - GError** error); - - /** - * Called on property set. - * - * @param connection - * @param sender - * @param objectPath - * @param interfaceName - * @param propertyName - * @param value - * @return TRUE if successfully set, FALSE otherwise. - * - * @see GLib DBus documentation. - */ - virtual gboolean onPropertySet(GDBusConnection* connection, - const gchar* sender, - const gchar* objectPath, - const gchar* interfaceName, - const gchar* propertyName, - GVariant* value, - GError** error); -}; -} -} - -#endif // DPL_DBUS_DISPATCHER_H diff --git a/modules_mobile/dbus/include/dpl/dbus/exception.h b/modules_mobile/dbus/include/dpl/dbus/exception.h deleted file mode 100644 index 035d16f..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/exception.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file exception.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_EXCEPTION_H -#define DPL_DBUS_EXCEPTION_H - -#include - -namespace DPL { -namespace DBus { -/** - * Thrown when none of the following, more specific exception fit. - */ -DECLARE_EXCEPTION_TYPE(DPL::Exception, Exception) - -/** - * Thrown when trying to perform an operation on a closed connection. - */ -DECLARE_EXCEPTION_TYPE(DBus::Exception, ConnectionClosedException) - -/** - * Thrown when passing invalid argument(s). - */ -DECLARE_EXCEPTION_TYPE(DBus::Exception, InvalidArgumentException) -} -} - -#endif diff --git a/modules_mobile/dbus/include/dpl/dbus/glib_util.h b/modules_mobile/dbus/include/dpl/dbus/glib_util.h deleted file mode 100644 index 13206e3..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/glib_util.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file glib_util.h - * @author Iwanek Tomasz (t.iwanek@samsung.com) - * @version 1.0 - * @brief This file is the definitions of loop controlling utilities - */ -#ifndef GLIB_UTIL_H -#define GLIB_UTIL_H - -//this header wraps glib headers which generates warnings - -#pragma GCC system_header -#include - -#endif // GLIB_UTIL_H diff --git a/modules_mobile/dbus/include/dpl/dbus/interface.h b/modules_mobile/dbus/include/dpl/dbus/interface.h deleted file mode 100644 index 6248dab..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/interface.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file interface.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_INTERFACE_H -#define DPL_DBUS_INTERFACE_H - -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -class Interface; -typedef std::shared_ptr InterfacePtr; - -class Interface : private DPL::Noncopyable -{ - public: - /** - * Parses supplied XML string to produce DBus interface descriptions. - * - * @param xmlString XML string to parse. - * @return Interfaces. - * @throw DPL::DBus::Exception If error while parsing occurs. - */ - static std::vector fromXMLString( - const std::string& xmlString); - - public: - ~Interface(); - - /** - * Gets pointers to functions called on method call or property get/set - * request. - * - * @return Pointers to functions. - */ - const GDBusInterfaceVTable* getVTable() const; - - /** - * Gets interface description. - * - * @return Interface description. - */ - GDBusInterfaceInfo* getInfo() const; - - /** - * Sets method/property dispatcher for the interface. - * - * @param dispatcher Method call and property get/set dispatcher. - */ - void setDispatcher(Dispatcher* dispatcher); - - private: - static void onMethodCallFunc(GDBusConnection *connection, - const gchar *sender, - const gchar *objectPath, - const gchar *interfaceName, - const gchar *methodName, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer data); - - static GVariant* onPropertyGetFunc(GDBusConnection *connection, - const gchar *sender, - const gchar *objectPath, - const gchar *interfaceName, - const gchar *propertyName, - GError **error, - gpointer data); - - static gboolean onPropertySetFunc(GDBusConnection *connection, - const gchar *sender, - const gchar *objectPath, - const gchar *interfaceName, - const gchar *propertyName, - GVariant *value, - GError **error, - gpointer data); - - explicit Interface(GDBusInterfaceInfo* info); - - static const GDBusInterfaceVTable m_vTable; - - GDBusInterfaceInfo* m_info; - - Dispatcher* m_dispatcher; -}; -} -} - -#endif // DPL_DBUS_INTERFACE_H diff --git a/modules_mobile/dbus/include/dpl/dbus/object.h b/modules_mobile/dbus/include/dpl/dbus/object.h deleted file mode 100644 index 191464c..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/object.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file object.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_OBJECT_H -#define DPL_DBUS_OBJECT_H - -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -class Object; -typedef std::shared_ptr ObjectPtr; - -class Object -{ - public: - /** - * Creates an object. - * - * @param path Object's path. - * @param interface Interface the object supports. - * @return Object shared pointer. - */ - static ObjectPtr create(const std::string& path, - const InterfacePtr& interface); - - /** - * Gets object's path. - * - * @return Object's path. - */ - std::string getPath() const; - - /** - * Gets object's interface. - * - * @return Object's interface. - */ - InterfacePtr getInterface() const; - - private: - Object(const std::string& path, const InterfacePtr& interface); - - std::string m_path; - InterfacePtr m_interface; -}; -} -} - -#endif // WRT_SRC_DBUS_OBJECT_H diff --git a/modules_mobile/dbus/include/dpl/dbus/object_proxy.h b/modules_mobile/dbus/include/dpl/dbus/object_proxy.h deleted file mode 100644 index 17764f1..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/object_proxy.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file object_proxy.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_OBJECT_PROXY_H -#define DPL_DBUS_OBJECT_PROXY_H - -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -class Connection; - -/** - * Represents a remote object attached to a DBus service. - */ -class ObjectProxy -{ - public: - ~ObjectProxy(); - - /** - * Creates method proxy object. - * - * The object is used to call remote methods. - * - * @param interface Name of the DBus interface. - * @param name Name of the method to call. - * @return Proxy to remote method. - * @throw DBus::ConnectionClosedException If connection is closed. - */ - template - MethodProxyPtr createMethodProxy( - const std::string& interface, - const std::string& name) - { - if (g_dbus_connection_is_closed(m_connection)) { - ThrowMsg(DBus::ConnectionClosedException, "Connection closed."); - } - - return MethodProxyPtr( - new MethodProxy(m_connection, - m_serviceName, - m_objectPath, - interface, - name)); - } - - private: - friend class Connection; - - ObjectProxy(GDBusConnection* connection, - const std::string& serviceName, - const std::string& objectPath); - - GDBusConnection* m_connection; - std::string m_serviceName; - std::string m_objectPath; -}; -} -} - -#endif diff --git a/modules_mobile/dbus/include/dpl/dbus/server.h b/modules_mobile/dbus/include/dpl/dbus/server.h deleted file mode 100644 index 795a757..0000000 --- a/modules_mobile/dbus/include/dpl/dbus/server.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file server.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_SERVER_H -#define DPL_DBUS_SERVER_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -namespace ServerEvents { -/** - * Emitted when new connection is accepted. - * - * Arg0 Accepted connection. - * - * @remarks If this event is processed on separate thread than that thread - * should run GLib main loop if one wants to e.g. register DBus - * objects during this event processing. - */ -DECLARE_GENERIC_EVENT_1(NewConnectionEvent, ConnectionPtr) -} - -class Server; -typedef std::shared_ptr ServerPtr; - -/** - * Class acting as a server for peer to peer connections over DBus. - */ -class Server : public DPL::Event::EventSupport -{ - public: - /** - * Creates server. - * - * @param address Address the server should listen on. - * @return Server. - */ - static ServerPtr create(const std::string& address); - - ~Server(); - - /** - * Starts the server. - */ - void start(); - - /** - * Stops the server. - */ - void stop(); - - protected: - explicit Server(GDBusServer* server); - - private: - static gboolean onNewConnection(GDBusServer* server, - GDBusConnection* connection, - gpointer data); - - GDBusServer* m_server; -}; -} -} - -#endif // DPL_DBUS_SERVER_H diff --git a/modules_mobile/dbus/src/connection.cpp b/modules_mobile/dbus/src/connection.cpp deleted file mode 100644 index 52c0065..0000000 --- a/modules_mobile/dbus/src/connection.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file connection.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -ConnectionPtr Connection::sessionBus() -{ - return connectTo(G_BUS_TYPE_SESSION); -} - -ConnectionPtr Connection::systemBus() -{ - return connectTo(G_BUS_TYPE_SYSTEM); -} - -ConnectionPtr Connection::connectTo(GBusType busType) -{ - GError* error = NULL; - - GDBusConnection* connection = g_bus_get_sync(busType, - NULL, - &error); - if (NULL == connection) { - std::string message; - if (NULL != error) { - message = error->message; - g_error_free(error); - } - ThrowMsg(DBus::Exception, - "Couldn't connect to bus: " << message); - } - - g_dbus_connection_set_exit_on_close(connection, FALSE); - - return ConnectionPtr(new Connection(connection)); -} - -ConnectionPtr Connection::connectTo(const std::string& address) -{ - GError* error = NULL; - - GDBusConnection* connection = g_dbus_connection_new_for_address_sync( - address.c_str(), - G_DBUS_CONNECTION_FLAGS_NONE, - NULL, - NULL, - &error); - if (NULL == connection) { - std::string message; - if (NULL != error) { - message = error->message; - g_error_free(error); - } - ThrowMsg(DBus::Exception, - "Couldn't connect to " << address << ": " << message); - } - - return ConnectionPtr(new Connection(connection)); -} - -Connection::Connection(GDBusConnection* connection) : - m_connection(connection) -{ - g_signal_connect(m_connection, - "closed", - G_CALLBACK(onConnectionClosed), - this); -} - -Connection::~Connection() -{ - std::for_each(m_registeredServices.begin(), - m_registeredServices.end(), - [] (const RegisteredServices::value_type & value) - { - g_bus_unown_name(value.second); - }); - - std::for_each(m_registeredObjects.begin(), - m_registeredObjects.end(), - [this] (const RegisteredObjects::value_type & value) - { - g_dbus_connection_unregister_object( - m_connection, - value.second.registrationId); - }); - - if (!g_dbus_connection_is_closed(m_connection)) { - GError* error = NULL; - - if (FALSE == - g_dbus_connection_flush_sync(m_connection, NULL, &error)) - { - LogPedantic("Could not flush the connection" - << " <" << error->message << ">"); - g_error_free(error); - } - } - - g_object_unref(m_connection); -} - -void Connection::registerService(const std::string& serviceName) -{ - guint regId = g_bus_own_name_on_connection(m_connection, - serviceName.c_str(), - G_BUS_NAME_OWNER_FLAGS_NONE, - onServiceNameAcquired, - onServiceNameLost, - this, - NULL); - if (0 >= regId) { - ThrowMsg(DBus::Exception, "Error while registering service."); - } - - m_registeredServices.insert(RegisteredServices::value_type(serviceName, - regId)); -} - -void Connection::unregisterService(const std::string& serviceName) -{ - auto it = m_registeredServices.find(serviceName); - if (m_registeredServices.end() == it) { - ThrowMsg(DBus::Exception, "Service not registered."); - } - - g_bus_unown_name(it->second); - - m_registeredServices.erase(it); -} - -void Connection::registerObject(const ObjectPtr& object) -{ - GError* error = NULL; - - guint regId = g_dbus_connection_register_object( - m_connection, - object->getPath().c_str(), - object->getInterface()->getInfo(), - object->getInterface()->getVTable(), - // TODO This is ugly, fix this! - object->getInterface().get(), - NULL, - &error); - if (0 == regId) { - std::string message; - if (NULL != error) { - message = error->message; - LogPedantic(error->message << " " << error->code); - g_error_free(error); - } - ThrowMsg(DBus::Exception, "Error while registering an object: " - << message); - } - - m_registeredObjects.insert(RegisteredObjects::value_type( - object->getPath(), - ObjectRegistration(regId, object))); -} - -void Connection::unregisterObject(const std::string& objectPath) -{ - auto it = m_registeredObjects.find(objectPath); - if (m_registeredObjects.end() == it) { - ThrowMsg(DBus::Exception, "Object not registered."); - } - - gboolean result = g_dbus_connection_unregister_object( - m_connection, - it->second.registrationId); - if (FALSE == result) { - ThrowMsg(DBus::Exception, "Unregistering object failed."); - } - m_registeredObjects.erase(it); -} - -ObjectProxyPtr Connection::createObjectProxy(const std::string& serviceName, - const std::string& objectPath) -{ - if (g_dbus_connection_is_closed(m_connection)) { - ThrowMsg(DBus::ConnectionClosedException, "Connection closed."); - } - - return ObjectProxyPtr( - new ObjectProxy(m_connection, serviceName, objectPath)); -} - -void Connection::onServiceNameAcquired(GDBusConnection* /*connection*/, - const gchar* serviceName, - gpointer data) -{ - Assert(data && "Connection should not be NULL"); - - Connection* self = static_cast(data); - - LogPedantic("Emitting service name acquired event: " << serviceName); - - ConnectionEvents::ServiceNameAcquiredEvent event(serviceName); - self->DPL::Event::EventSupport - :: - EmitEvent(event, DPL::Event::EmitMode::Queued); -} - -void Connection::onServiceNameLost(GDBusConnection* /*connection*/, - const gchar* serviceName, - gpointer data) -{ - Assert(data && "Connection should not be NULL"); - - Connection* self = static_cast(data); - - LogPedantic("Emitting service name lost event: " << serviceName); - - ConnectionEvents::ServiceNameLostEvent event(serviceName); - self->DPL::Event::EventSupport:: - EmitEvent(event, DPL::Event::EmitMode::Queued); -} - -void Connection::onConnectionClosed(GDBusConnection* /*connection*/, - gboolean peerVanished, - GError* error, - gpointer data) -{ - Assert(NULL != data && "Connection cannot be NULL"); - - Connection* self = static_cast(data); - - if ((NULL == error) && (FALSE == peerVanished)) { - // Connection closed by this. - } else if (NULL != error) { - std::string message = error->message; - - g_error_free(error); - - if (TRUE == peerVanished) { - // Connection closed by remote host. - ConnectionEvents::ConnectionBrokenEvent event(message); - self->DPL::Event::EventSupport:: - EmitEvent(event, DPL::Event::EmitMode::Queued); - } else { - // Invalid or malformed data on connection. - ConnectionEvents::ConnectionInvalidEvent event(message); - self->DPL::Event::EventSupport:: - EmitEvent(event, DPL::Event::EmitMode::Queued); - } - } -} -} -} diff --git a/modules_mobile/dbus/src/dispatcher.cpp b/modules_mobile/dbus/src/dispatcher.cpp deleted file mode 100644 index d83a22a..0000000 --- a/modules_mobile/dbus/src/dispatcher.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file dispatcher.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ -#include -#include - -namespace DPL { -namespace DBus { -Dispatcher::~Dispatcher() { } - -GVariant* Dispatcher::onPropertyGet(GDBusConnection* /*connection*/, - const gchar* /*sender*/, - const gchar* /*objectPath*/, - const gchar* /*interfaceName*/, - const gchar* /*propertyName*/, - GError** /*error*/) -{ - return NULL; -} - -gboolean Dispatcher::onPropertySet(GDBusConnection* /*connection*/, - const gchar* /*sender*/, - const gchar* /*objectPath*/, - const gchar* /*interfaceName*/, - const gchar* /*propertyName*/, - GVariant* /*value*/, - GError** /*error*/) -{ - return false; -} -} -} diff --git a/modules_mobile/dbus/src/interface.cpp b/modules_mobile/dbus/src/interface.cpp deleted file mode 100644 index 0df3a59..0000000 --- a/modules_mobile/dbus/src/interface.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file interface.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -const GDBusInterfaceVTable Interface::m_vTable = { - Interface::onMethodCallFunc, - Interface::onPropertyGetFunc, - Interface::onPropertySetFunc, - { 0, 0, 0, 0, 0, 0, 0, 0 } -}; - -std::vector Interface::fromXMLString(const std::string& xmlString) -{ - GError* error = NULL; - - GDBusNodeInfo* nodeInfo = g_dbus_node_info_new_for_xml(xmlString.c_str(), - &error); - if (NULL == nodeInfo) { - std::string message; - if (NULL != error) { - message = error->message; - g_error_free(error); - } - ThrowMsg(DPL::DBus::Exception, - "Error parsing node info <" << message << ">"); - } - - std::vector result; - - GDBusInterfaceInfo** interface = nodeInfo->interfaces; - while (NULL != *interface) { - result.push_back(InterfacePtr(new Interface(*interface))); - ++interface; - } - - g_dbus_node_info_unref(nodeInfo); - - return result; -} - -Interface::Interface(GDBusInterfaceInfo* info) : - m_info(info) -{ - g_dbus_interface_info_ref(m_info); -} - -Interface::~Interface() -{ - g_dbus_interface_info_unref(m_info); -} - -const GDBusInterfaceVTable* Interface::getVTable() const -{ - return &m_vTable; -} - -GDBusInterfaceInfo* Interface::getInfo() const -{ - return m_info; -} - -void Interface::setDispatcher(Dispatcher* dispatcher) -{ - m_dispatcher = dispatcher; -} - -void Interface::onMethodCallFunc(GDBusConnection *connection, - const gchar *sender, - const gchar *objectPath, - const gchar *interfaceName, - const gchar *methodName, - GVariant *parameters, - GDBusMethodInvocation *invocation, - gpointer data) -{ - Assert(NULL != data && "Interface cannot be NULL."); - Interface* self = static_cast(data); - - // TODO Verify interface name. - - if (NULL != self->m_dispatcher) { - try { - self->m_dispatcher->onMethodCall(connection, - sender, - objectPath, - interfaceName, - methodName, - parameters, - invocation); - } catch (const DPL::Exception& /*ex*/) { - // TODO Support for errors. - } - } -} - -GVariant* Interface::onPropertyGetFunc(GDBusConnection *connection, - const gchar *sender, - const gchar *objectPath, - const gchar *interfaceName, - const gchar *propertyName, - GError **error, - gpointer data) -{ - Assert(NULL != data && "Interface cannot be NULL."); - Interface* self = static_cast(data); - - // TODO Verify interface name. - - if (NULL != self->m_dispatcher) { - try { - // TODO Check if NULL is returned, if so set error variable. - return self->m_dispatcher->onPropertyGet(connection, - sender, - objectPath, - interfaceName, - propertyName, - error); - } catch (const DPL::Exception& /*ex*/) { - // TODO Support for errors. - } - } - - // TODO Set error. - - return NULL; -} - -gboolean Interface::onPropertySetFunc(GDBusConnection *connection, - const gchar *sender, - const gchar *objectPath, - const gchar *interfaceName, - const gchar *propertyName, - GVariant *value, - GError **error, - gpointer data) -{ - Assert(NULL != data && "Interface cannot be NULL."); - Interface* self = static_cast(data); - - // TODO Verify interface name. - - if (NULL != self->m_dispatcher) { - try { - return self->m_dispatcher->onPropertySet(connection, - sender, - objectPath, - interfaceName, - propertyName, - value, - error); - } catch (const DPL::Exception& /*ex*/) { - // TODO Support for errors. - } - } - - // TODO Set error. - - return false; -} -} -} diff --git a/modules_mobile/dbus/src/object.cpp b/modules_mobile/dbus/src/object.cpp deleted file mode 100644 index a66796d..0000000 --- a/modules_mobile/dbus/src/object.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file object.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ -#include -#include - -namespace DPL { -namespace DBus { -ObjectPtr Object::create(const std::string& path, const InterfacePtr& interface) -{ - return ObjectPtr(new Object(path, interface)); -} - -std::string Object::getPath() const -{ - return m_path; -} - -InterfacePtr Object::getInterface() const -{ - return m_interface; -} - -Object::Object(const std::string& path, const InterfacePtr& interface) : - m_path(path), - m_interface(interface) -{} -} -} \ No newline at end of file diff --git a/modules_mobile/dbus/src/object_proxy.cpp b/modules_mobile/dbus/src/object_proxy.cpp deleted file mode 100644 index 9b15bb7..0000000 --- a/modules_mobile/dbus/src/object_proxy.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file object_proxy.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ -#include -#include - -namespace DPL { -namespace DBus { -ObjectProxy::ObjectProxy(GDBusConnection* connection, - const std::string& serviceName, - const std::string& objectPath) : - m_connection(connection), - m_serviceName(serviceName), - m_objectPath(objectPath) -{ - g_object_ref(m_connection); -} - -ObjectProxy::~ObjectProxy() -{ - g_object_unref(m_connection); -} -} -} \ No newline at end of file diff --git a/modules_mobile/dbus/src/server.cpp b/modules_mobile/dbus/src/server.cpp deleted file mode 100644 index a71e4bd..0000000 --- a/modules_mobile/dbus/src/server.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file server.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -ServerPtr Server::create(const std::string& address) -{ - GError* error = NULL; - - int flags = G_DBUS_SERVER_FLAGS_NONE | - G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS; - - gchar* serverId = g_dbus_generate_guid(); - - GDBusServer* server = g_dbus_server_new_sync( - address.c_str(), - static_cast(flags), - serverId, - NULL, - NULL, - &error); - g_free(serverId); - - if (NULL == server) { - std::string message; - if (NULL != error) { - message = error->message; - g_error_free(error); - } - - ThrowMsg(DPL::Exception, "Error on server creation: " << message); - } - - return ServerPtr(new Server(server)); -} - -Server::Server(GDBusServer* server) : - m_server(server) -{} - -Server::~Server() -{ - if (g_dbus_server_is_active(m_server)) { - stop(); - } - g_object_unref(m_server); -} - -void Server::start() -{ - Assert(!g_dbus_server_is_active(m_server) && "Server already started."); - - g_dbus_server_start(m_server); - - g_signal_connect(m_server, - "new-connection", - G_CALLBACK(onNewConnection), - this); - - LogDebug("Server started at: " - << g_dbus_server_get_client_address(m_server)); -} - -void Server::stop() -{ - Assert(g_dbus_server_is_active(m_server) && "Server not started."); - - g_dbus_server_stop(m_server); -} - -gboolean Server::onNewConnection(GDBusServer* /*server*/, - GDBusConnection* connection, - gpointer data) -{ - Assert(NULL != data && "User data cannot be NULL."); - - Server* self = static_cast(data); - - ServerEvents::NewConnectionEvent event( - ConnectionPtr(new Connection(connection))); - - LogDebug("Emitting new connection event"); - // TODO Blocking to allow object registration before any DBus messages are - // processed. - self->DPL::Event::EventSupport:: - EmitEvent(event, DPL::Event::EmitMode::Blocking); - - return TRUE; -} -} -} diff --git a/modules_mobile/event/config.cmake b/modules_mobile/event/config.cmake deleted file mode 100644 index 313b6a8..0000000 --- a/modules_mobile/event/config.cmake +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_EVENT_SOURCES - ${PROJECT_SOURCE_DIR}/modules/event/src/abstract_event_call.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/abstract_event_dispatcher.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/controller.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/event_listener.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/event_support.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/generic_event_call.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/main_event_dispatcher.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/thread_event_dispatcher.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/inter_context_delegate.cpp - ${PROJECT_SOURCE_DIR}/modules/event/src/model.cpp - PARENT_SCOPE -) - -SET(DPL_EVENT_HEADERS - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/abstract_event_call.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/abstract_event_dispatcher.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/controller.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/event_listener.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/event_support.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/generic_event_call.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/main_event_dispatcher.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/thread_event_dispatcher.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/inter_context_delegate.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/model.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/property.h - ${PROJECT_SOURCE_DIR}/modules/event/include/dpl/event/model_bind_to_dao.h - PARENT_SCOPE -) - -SET(DPL_EVENT_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/event/include/ - PARENT_SCOPE -) diff --git a/modules_mobile/event/include/dpl/event/abstract_event_call.h b/modules_mobile/event/include/dpl/event/abstract_event_call.h deleted file mode 100644 index db1bea4..0000000 --- a/modules_mobile/event/include/dpl/event/abstract_event_call.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_event_call.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract event call - */ -#ifndef DPL_ABSTRACT_EVENT_CALL_H -#define DPL_ABSTRACT_EVENT_CALL_H - -#include - -namespace DPL { -namespace Event { -class AbstractEventCall : - private Noncopyable -{ - public: - /** - * Constructor - */ - explicit AbstractEventCall(); - - /** - * Destructor - */ - virtual ~AbstractEventCall(); - - /** - * Call abstract event call - */ - virtual void Call() = 0; -}; -} -} // namespace DPL - -#endif // DPL_ABSTRACT_EVENT_CALL_H diff --git a/modules_mobile/event/include/dpl/event/abstract_event_dispatcher.h b/modules_mobile/event/include/dpl/event/abstract_event_dispatcher.h deleted file mode 100644 index f5caa56..0000000 --- a/modules_mobile/event/include/dpl/event/abstract_event_dispatcher.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_event_dispatcher.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract event - * dispatcher - */ -#ifndef DPL_ABSTRACT_EVENT_DISPATCHER_H -#define DPL_ABSTRACT_EVENT_DISPATCHER_H - -#include -#include - -namespace DPL { -namespace Event { -class AbstractEventDispatcher : - private Noncopyable -{ - public: - /** - * Constructor - */ - explicit AbstractEventDispatcher(); - - /** - * Destructor - */ - virtual ~AbstractEventDispatcher(); - - /** - * Add abstract event call to abstract event dispatcher - * - * @param[in] abstractEventCall Pointer to abstract event call to add - * @return none - */ - virtual void AddEventCall(AbstractEventCall *abstractEventCall) = 0; - - /** - * Add abstract timed event call to abstract event dispatcher - * - * @param[in] abstractEventCall Pointer to abstract event call to add - * @param[in] dueTime Due time for timed event in seconds - * @return none - */ - virtual void AddTimedEventCall(AbstractEventCall *abstractEventCall, - double dueTime) = 0; -}; -} -} // namespace DPL - -#endif // DPL_ABSTRACT_EVENT_DISPATCHER_H diff --git a/modules_mobile/event/include/dpl/event/controller.h b/modules_mobile/event/include/dpl/event/controller.h deleted file mode 100644 index 1b14632..0000000 --- a/modules_mobile/event/include/dpl/event/controller.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file controller.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC controller - */ -#ifndef DPL_CONTROLLER_H -#define DPL_CONTROLLER_H - -#include -#include -#include -#include -#include - -namespace DPL { -namespace Event { -template -class ControllerEventHandler : - public EventListener, - private EventSupport -{ - private: - bool m_touched; - - public: - ControllerEventHandler() : - m_touched(false) - { - EventSupport::AddListener(this); - } - - virtual ~ControllerEventHandler() - { - EventSupport::RemoveListener(this); - } - - void PostEvent(const EventType &event) - { - Assert( - m_touched && - "Default context not inherited. Call Touch() to inherit one."); - EventSupport::EmitEvent(event, EmitMode::Queued); - } - - void PostTimedEvent(const EventType &event, double dueTime) - { - Assert( - m_touched && - "Default context not inherited. Call Touch() to inherit one."); - EventSupport::EmitEvent(event, EmitMode::Deffered, dueTime); - } - - void PostSyncEvent(const EventType &event) - { - Assert( - m_touched && - "Default context not inherited. Call Touch() to inherit one."); - - // Check calling context - EventSupport::EmitEvent(event, EmitMode::Blocking); - } - - void SwitchToThread(Thread *thread) - { - Assert( - m_touched && - "Default context not inherited. Call Touch() to inherit one."); - EventSupport::SwitchListenerToThread(this, thread); - } - - void Touch() - { - m_touched = true; - EventSupport::SwitchListenerToThread( - this, - Thread:: - GetCurrentThread()); - } -}; - -template -class Controller : - public Controller, - public ControllerEventHandler -{ - public: - typedef typename EventTypeList::Head EventType; - - public: - Controller() - {} - - virtual ~Controller() - {} - - virtual void SwitchToThread(Thread *thread) - { - ControllerEventHandler::SwitchToThread(thread); - Controller::SwitchToThread(thread); - } - - virtual void Touch() - { - ControllerEventHandler::Touch(); - Controller::Touch(); - } -}; - -template<> -class Controller::Type> -{ - public: - Controller() - {} - - virtual ~Controller() - {} - - virtual void SwitchToThread(Thread *thread) - { - (void)thread; - } - - virtual void Touch() - {} -}; -} -} // namespace DPL - -// Utilities -#define CONTROLLER_POST_EVENT(Name, \ - EventArg) Name##Singleton::Instance().DPL::Event \ - ::ControllerEventHandler< \ - __typeof__ EventArg>::PostEvent(EventArg) -#define CONTROLLER_POST_TIMED_EVENT(Name, EventArg, \ - DueTime) Name##Singleton::Instance().DPL:: \ - Event::ControllerEventHandler< \ - __typeof__ EventArg>::PostTimedEvent(EventArg, DueTime) -#define CONTROLLER_POST_SYNC_EVENT(Name, \ - EventArg) Name##Singleton::Instance().DPL:: \ - Event::ControllerEventHandler< \ - __typeof__ EventArg>::PostSyncEvent(EventArg) - -#endif // DPL_CONTROLLER_H diff --git a/modules_mobile/event/include/dpl/event/event_listener.h b/modules_mobile/event/include/dpl/event/event_listener.h deleted file mode 100644 index 27fdbec..0000000 --- a/modules_mobile/event/include/dpl/event/event_listener.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file event_listener.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC event listener - */ -#ifndef DPL_EVENT_LISTENER_H -#define DPL_EVENT_LISTENER_H - -#include - -namespace DPL { -namespace Event { -template -class EventListener : - private Noncopyable -{ - public: - EventListener() - {} - - virtual ~EventListener() - {} - - virtual void OnEventReceived(const EventType &event) = 0; -}; -} -} // namespace DPL - -#endif // DPL_EVENT_LISTENER_H diff --git a/modules_mobile/event/include/dpl/event/event_support.h b/modules_mobile/event/include/dpl/event/event_support.h deleted file mode 100644 index 66b5d5f..0000000 --- a/modules_mobile/event/include/dpl/event/event_support.h +++ /dev/null @@ -1,763 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file event_support.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC event support - */ -#ifndef DPL_EVENT_SUPPORT_H -#define DPL_EVENT_SUPPORT_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Event { -namespace EmitMode { -enum Type -{ - Auto, ///< If calling thread is the same as receiver's use - ///< direct call, otherwise call is queued - - Queued, ///< Call is always queued - - Blocking, ///< If calling thread is the same as receiver's use - ///< direct call, otherwise call is queued and blocking - - Deffered ///< Call is always queued for a period of time -}; -} // namespace EmitMode - -template -class EventSupport : - private Noncopyable -{ - public: - typedef EventSupport EventSupportType; - - typedef EventListener EventListenerType; - - typedef void DelegateSignature(const EventType&); - typedef std::function DelegateType; - - class EventSupportData; // Forward declaration - typedef EventSupportData *EventSupportDataPtr; - - private: - typedef typename GenericEventCall:: - template Rebind:: - Other GenericEventCallType; - - // Event listener list - typedef std::map EventListenerList; - EventListenerList m_eventListenerList; - - struct DelegateCompare - { - bool operator()(const DelegateType& a, const DelegateType& b) const - { - return a.template target() < - b.template target(); - } - }; - - // Delegate list - typedef std::map DelegateList; - DelegateList m_delegateList; - - // Event support operation mutex - Mutex m_listenerDelegateMutex; - - // Dedicated instance of thread event dispatcher - ThreadEventDispatcher m_threadEventDispatcher; - - // Guard destruction of event support in event handler - Atomic m_guardedCallInProgress; - - // Events created by this support - typedef std::list EventCallList; - EventCallList m_eventsList; - - // Events list mutex - Mutex m_eventListMutex; - - public: - class EventSupportData - { - private: - typedef void (EventSupportType::*ReceiveAbstractEventCallMethod)( - const EventType &event, - EventListenerType *eventListener, - DelegateType delegate, - WaitableEvent *synchronization); - - EventSupportType *m_eventSupport; - ReceiveAbstractEventCallMethod m_method; - typename EventCallList::iterator m_iterator; - - //TODO: Add dispatcher iterator to remove events from - // framework/thread's event queue - WaitableEvent *m_synchronization; - - Mutex m_dataMutex; - - public: - EventSupportData(EventSupportType *support, - ReceiveAbstractEventCallMethod method, - WaitableEvent *synchronization) : - m_eventSupport(support), - m_method(method), - m_synchronization(synchronization) - {} - - ~EventSupportData() - { - Mutex::ScopedLock lock(&m_dataMutex); - - if (!m_eventSupport) { - LogPedantic("EventSupport for this call does not exist"); - return; - } - - m_eventSupport->RemoveEventCall(m_iterator); - } - - // TODO: Make private and make EventSupport friend - void SetIterator(typename EventCallList::iterator iter) - { - m_iterator = iter; - } - - // This method at the end destroys this as it will not be used anymore - void CallAndDestroy(const EventType &event, - EventListenerType *listener, - DelegateType delegate) - { - { - Mutex::ScopedLock lock(&m_dataMutex); - - if (m_eventSupport != NULL) { - (*m_eventSupport.*m_method)(event, - listener, - delegate, - m_synchronization); - } else { - LogPedantic("EventSupport for this call does not " - "exist anymore. Ignored."); - } - - // releasing mutex lock - } - - // EventSupportData object is no more used. - // It can be safely destroyed now. - delete this; - } - - void Reset() - { - LogPedantic("Reseting my EventSupport"); - - Mutex::ScopedLock lock(&m_dataMutex); - m_eventSupport = NULL; - } - }; - - private: - GenericEventCallType *RegisterEventCall(const EventType &event, - EventListenerType *eventListener, - DelegateType delegate, - WaitableEvent *waitableEvent) - { - LogPedantic("Create and Register EventCall in EventSupport"); - - Mutex::ScopedLock lock(&m_eventListMutex); - - EventSupportDataPtr supportData = - new EventSupportData( - this, - &EventSupportType::ReceiveAbstractEventCall, - waitableEvent); - - GenericEventCallType *eventCall = - new GenericEventCallType(supportData, eventListener, - delegate, event); - - typename EventCallList::iterator eventCallIter = - m_eventsList.insert(m_eventsList.end(), eventCall); - - supportData->SetIterator(eventCallIter); - - return eventCall; - } - - void RemoveEventCall(typename EventCallList::iterator eventIterator) - { - Mutex::ScopedLock lock(&m_eventListMutex); - - LogPedantic("Removing event call from EventSupport"); - - m_eventsList.erase(eventIterator); - } - - // Note: Reentrant metod - void GuardedEventCall(const EventType &event, - EventListenerType *eventListener) - { - LogPedantic("Guarded event listener call..."); - - ++m_guardedCallInProgress; - - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - eventListener->OnEventReceived(event); - } - UNHANDLED_EXCEPTION_HANDLER_END - - -- m_guardedCallInProgress; - - LogPedantic("Guarded event listener finished"); - } - - // Note: Reentrant metod - void GuardedEventCall(const EventType &event, - DelegateType delegate) - { - LogPedantic("Guarded delegate call..."); - - ++m_guardedCallInProgress; - - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - delegate(event); - } - UNHANDLED_EXCEPTION_HANDLER_END - - -- m_guardedCallInProgress; - - LogPedantic("Guarded delegate call finished"); - } - - void ReceiveAbstractEventCall(const EventType &event, - EventListenerType *eventListener, - DelegateType delegate, - WaitableEvent *synchronization) - { - LogPedantic("Received abstract event call method"); - - Thread *targetThread; - - // Listener might have been removed, ensure that it still exits - if (eventListener != NULL) { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - typename EventListenerList::iterator iterator = - m_eventListenerList.find(eventListener); - - if (iterator == m_eventListenerList.end()) { - LogPedantic("Abstract event call listener disappeared." - "Event ignored."); - - // Even though, synchronize caller if needed - if (synchronization != NULL) { - synchronization->Signal(); - } - - return; - } - - // Get target thread id - targetThread = iterator->second; - } else { - // Delegate might have been removed, ensure that it still exits - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - typename DelegateList::iterator iterator = - m_delegateList.find(delegate); - - if (iterator == m_delegateList.end()) { - LogPedantic("Abstract event call delegate disappeared." - "Event ignored."); - - // Even though, synchronize caller if needed - if (synchronization != NULL) { - synchronization->Signal(); - } - - return; - } - - // Get target thread id - targetThread = iterator->second; - } - - // Ensure that we are now in proper thread now - if (targetThread != Thread::GetCurrentThread()) { - LogPedantic("Detected event dispatching ping-pong scenario"); - - // Retry if it was not synchronized - if (synchronization == NULL) { - // Cheat with event delivery - EmitEvent(event, EmitMode::Queued); - - LogPedantic("Ping-Pong: Resent as queued event"); - } else { - // There is a problem - // Developer did something nasty, and we will not clean up his - // mess - synchronization->Signal(); - - LogPedantic("### Ping-Pong: Failed to deliver synchronized" - "event in ping-pong scenario!"); - } - - return; - } - - // Guard listener code for exceptions - if (eventListener != NULL) { - GuardedEventCall(event, eventListener); - } else { - GuardedEventCall(event, delegate); - } - - // Release caller if synchronizing - if (synchronization != NULL) { - synchronization->Signal(); - } - } - - protected: - void EmitEvent(const EventType &event, - EmitMode::Type mode = EmitMode::Queued, - double dueTime = 0.0) - { - // Emit event, and retrieve later in current context to dispatch - std::unique_ptr lock( - new Mutex::ScopedLock(&m_listenerDelegateMutex)); - - // Show some info - switch (mode) { - case EmitMode::Auto: - LogPedantic("Emitting AUTO event..."); - break; - - case EmitMode::Queued: - LogPedantic("Emitting QUEUED event..."); - break; - - case EmitMode::Blocking: - LogPedantic("Emitting BLOCKING event..."); - break; - - case EmitMode::Deffered: - LogPedantic("Emitting DEFFERED event..."); - break; - - default: - break; - } - - // In some configurations there is a barrier - std::vector synchronizationBarrier; - - // Emit to all listeners - FOREACH(iterator, m_eventListenerList) - { - // Switch to proper dispatcher and emit event - AbstractEventDispatcher *dispatcher = NULL; - - if (iterator->second == NULL) { - // Send to main thread - LogPedantic("Sending event to main dispatcher"); - dispatcher = &GetMainEventDispatcherInstance(); - } else { - // Setup thread dispatcher, and send to proper thread - LogPedantic("Sending event to thread dispatcher"); - m_threadEventDispatcher.SetThread(iterator->second); - dispatcher = &m_threadEventDispatcher; - } - - // Dispatch event to abstract dispatcher - WaitableEvent *synchronization; - - // TODO: Pool synchronization objects - switch (mode) { - case EmitMode::Auto: - // Check thread - if (iterator->second == Thread::GetCurrentThread()) { - // Guard listener code for exceptions - GuardedEventCall(event, iterator->first); - } else { - // Handle non-synchronized event - dispatcher->AddEventCall( - RegisterEventCall(event, iterator->first, - DelegateType(), NULL)); - } - break; - - case EmitMode::Queued: - // Handle non-synchronized event - dispatcher->AddEventCall( - RegisterEventCall(event, iterator->first, - DelegateType(), NULL)); - - break; - - case EmitMode::Blocking: - // Check thread - if (iterator->second == Thread::GetCurrentThread()) { - // Guard listener code for exceptions - GuardedEventCall(event, iterator->first); - } else { - // New synchronization object is needed - synchronization = new WaitableEvent(); - - // Handle synchronized event - dispatcher->AddEventCall( - RegisterEventCall(event, iterator->first, - DelegateType(), synchronization)); - - // Add to barrier - synchronizationBarrier.push_back(synchronization); - } - break; - - case EmitMode::Deffered: - // Handle deffered events - Assert(dueTime >= 0.0 && "Due time must be non-negative"); - - dispatcher->AddTimedEventCall( - RegisterEventCall(event, iterator->first, - DelegateType(), NULL), dueTime); - - break; - - default: - Assert("Invalid emit mode"); - } - } - - LogPedantic("Added event to dispatchers"); - - // Emit to all delegates - FOREACH(iterator, m_delegateList) - { - // Switch to proper dispatcher and emit event - AbstractEventDispatcher *dispatcher = NULL; - - if (iterator->second == NULL) { - // Send to main thread - LogPedantic("Sending event to main dispatcher"); - dispatcher = &GetMainEventDispatcherInstance(); - } else { - // Setup thread dispatcher, and send to proper thread - LogPedantic("Sending event to thread dispatcher"); - m_threadEventDispatcher.SetThread(iterator->second); - dispatcher = &m_threadEventDispatcher; - } - - // Dispatch event to abstract dispatcher - WaitableEvent *synchronization; - - // TODO: Pool synchronization objects - switch (mode) { - case EmitMode::Auto: - // Check thread - if (iterator->second == Thread::GetCurrentThread()) { - // Guard listener code for exceptions - GuardedEventCall(event, iterator->first); - } else { - // Handle non-synchronized event - dispatcher->AddEventCall( - RegisterEventCall(event, - NULL, - iterator->first, - NULL)); - } - break; - - case EmitMode::Queued: - // Handle non-synchronized event - dispatcher->AddEventCall( - RegisterEventCall(event, - NULL, - iterator->first, - NULL)); - - break; - - case EmitMode::Blocking: - // Check thread - if (iterator->second == Thread::GetCurrentThread()) { - // Guard listener code for exceptions - GuardedEventCall(event, iterator->first); - } else { - // New synchronization object is needed - synchronization = new WaitableEvent(); - - // Handle synchronized event - dispatcher->AddEventCall( - RegisterEventCall(event, - NULL, - iterator->first, - synchronization)); - - // Add to barrier - synchronizationBarrier.push_back(synchronization); - } - break; - - case EmitMode::Deffered: - // Handle deffered events - Assert(dueTime >= 0.0 && "Due time must be non-negative"); - - dispatcher->AddTimedEventCall( - RegisterEventCall(event, - NULL, - iterator->first, - NULL), dueTime); - - break; - - default: - Assert("Invalid emit mode"); - } - } - - LogPedantic("Added event to dispatchers"); - - // Leave listeners lock in case of blocking call - if (!synchronizationBarrier.empty()) { - LogPedantic("Leaving lock due to existing barrier"); - lock.reset(); - } - - LogPedantic("Size of barrier: " << synchronizationBarrier.size()); - - // Synchronize with barrier - // TODO: Implement generic WaitForAllMultipleHandles call - while (!synchronizationBarrier.empty()) { - // Get barrier waitable handles - WaitableHandleList barrierHandles; - - FOREACH(iterator, synchronizationBarrier) - barrierHandles.push_back((*iterator)->GetHandle()); - - // Await more events - WaitableHandleIndexList indexList = - WaitForMultipleHandles(barrierHandles); - - // Remove all awaited handles - // TODO: Return handles to pool - FOREACH(iterator, indexList) - { - // Delete object - delete synchronizationBarrier[*iterator]; - - // Zero out place - synchronizationBarrier[*iterator] = NULL; - } - - // Now clean up - std::vector clearedSynchronizationBarrier; - - FOREACH(iterator, synchronizationBarrier) - { - if (*iterator == NULL) { - continue; - } - - clearedSynchronizationBarrier.push_back(*iterator); - } - - synchronizationBarrier.swap(clearedSynchronizationBarrier); - - LogPedantic("Reduced size of barrier: " - << synchronizationBarrier.size()); - } - - LogPedantic("Event emitted"); - } - - public: - EventSupport() : - m_guardedCallInProgress(false) - {} - - virtual ~EventSupport() - { - Assert(m_guardedCallInProgress == false); - - m_eventListenerList.clear(); - m_delegateList.clear(); - - Mutex::ScopedLock lock(&m_eventListMutex); - - LogPedantic("Disabling events for EventSupport"); - - FOREACH(iterator, m_eventsList) - (*iterator)->DisableEvent(); - } - - void AddListener(EventListenerType *eventListener) - { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - // Listener must not be NULL - Assert(eventListener != NULL); - - // Listener must not already exists - Assert(m_eventListenerList.find(eventListener) - == m_eventListenerList.end()); - - // Add new listener, inherit dispatcher from current context - m_eventListenerList.insert( - std::make_pair(eventListener, Thread::GetCurrentThread())); - - // Done - LogPedantic("Listener registered"); - } - - void AddListener(DelegateType delegate) - { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - // Delegate must not be empty - Assert(delegate); - - // Delegate must not already exists - Assert(m_delegateList.find(delegate) == m_delegateList.end()); - - // Add new delegate, inherit dispatcher from current context - m_delegateList.insert( - std::make_pair(delegate, Thread::GetCurrentThread())); - - // Done - LogPedantic("Delegate registered"); - } - - void RemoveListener(EventListenerType *eventListener) - { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - // Listener must not be NULL - Assert(eventListener != NULL); - - // Listener must exist - typename EventListenerList::iterator iterator = - m_eventListenerList.find(eventListener); - - Assert(iterator != m_eventListenerList.end()); - - // Remove listener from list - m_eventListenerList.erase(iterator); - LogPedantic("Listener unregistered"); - } - - void RemoveListener(DelegateType delegate) - { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - // Delegate must not be empty - Assert(delegate); - - // Delegate must exist - typename DelegateList::iterator iterator = - m_delegateList.find(delegate); - - Assert(iterator != m_delegateList.end()); - - // Remove delegate from list - m_delegateList.erase(iterator); - LogPedantic("Delegate unregistered"); - } - - void SwitchListenerToThread(EventListenerType *eventListener, - Thread *thread) - { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - // Listener must not be NULL - Assert(eventListener != NULL); - - // Listener must exist - typename EventListenerList::iterator iterator = - m_eventListenerList.find(eventListener); - - Assert(iterator != m_eventListenerList.end()); - - // Set listener thread - iterator->second = thread; - - LogPedantic("Listener switched"); - } - - void SwitchListenerToThread(DelegateType delegate, - Thread *thread) - { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - // Delegate must not be empty - Assert(!delegate.empty()); - - // Delegate must exist - typename EventListenerList::iterator iterator = - m_delegateList.find(delegate); - - Assert(iterator != m_delegateList.end()); - - // Set delegate thread - iterator->second = thread; - - LogPedantic("Delegate switched"); - } - - void SwitchAllListenersToThread(Thread *thread) - { - Mutex::ScopedLock lock(&m_listenerDelegateMutex); - - // Switch all listeners and delegates - FOREACH(iterator, m_eventListenerList) - iterator->second = thread; - - FOREACH(iterator, m_delegateList) - iterator->second = thread; - - LogPedantic("All listeners and delegates switched"); - } -}; -} -} // namespace DPL - -#endif // DPL_EVENT_SUPPORT_H diff --git a/modules_mobile/event/include/dpl/event/generic_event_call.h b/modules_mobile/event/include/dpl/event/generic_event_call.h deleted file mode 100644 index 2cdf026..0000000 --- a/modules_mobile/event/include/dpl/event/generic_event_call.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_event_call.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of generic event call - */ -#ifndef DPL_GENERIC_EVENT_CALL_H -#define DPL_GENERIC_EVENT_CALL_H - -#include - -#include -#include -#include -#include -#include - -namespace DPL { -namespace Event { -template -class GenericEventCall : - public AbstractEventCall -{ - public: - typedef EventListener EventListenerType; - typedef std::function DelegateType; - - protected: - SupportDataType m_supportData; - EventListenerType *m_eventListener; - DelegateType m_delegate; - EventType m_event; - - public: - template - struct Rebind - { - typedef GenericEventCall Other; - }; - - GenericEventCall(SupportDataType supportData, - EventListenerType *eventListener, - DelegateType delegate, - const EventType &event) : - m_supportData(supportData), - m_eventListener(eventListener), - m_delegate(delegate), - m_event(event) - {} - - virtual ~GenericEventCall() - { - Assert(m_supportData == NULL && - "Call method hasn't been called" - " (support data wasn't destroyed)"); - } - - virtual void Call() - { - LogPedantic("Calling generic event call"); - - m_supportData->CallAndDestroy(m_event, m_eventListener, m_delegate); - - // Now m_supportData points to invalid object. Marking it as NULL. - m_supportData = NULL; - - LogPedantic("Generic event called"); - } - - virtual void DisableEvent() - { - LogPedantic("Disabling this EventCall"); - m_supportData->Reset(); - - // TODO: In the future, event should be completely removed - // from the event queue (not just marked "disabled") - } -}; -} -} // namespace DPL - -#endif // DPL_GENERIC_EVENT_CALL_H diff --git a/modules_mobile/event/include/dpl/event/inter_context_delegate.h b/modules_mobile/event/include/dpl/event/inter_context_delegate.h deleted file mode 100644 index 260a6a4..0000000 --- a/modules_mobile/event/include/dpl/event/inter_context_delegate.h +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file inter_context_delegate.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file is the header file of inter context delegate - */ - -#ifndef DPL_INTER_CONTEXT_DELEGATE_H_ -#define DPL_INTER_CONTEXT_DELEGATE_H_ - -#ifndef __GXX_EXPERIMENTAL_CXX0X__ // C++11 compatibility check -# include -#else - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * - Created ICDelegate can be passed freely to other threads. - * - ICDelegate can be called just once. All following calls will be - * silently ignored. - * - When ICDelegateSupport is destroyed, all its ICDelegates - * are invalidated and safetly removed. - * - ICDelegate can be invalidated by call to disable method on it. - * - To use ICDelegate you have to do two steps: - * - * 1. Class that will be used to create delegate have to derive from templated - * class ICDelegateSupport - * - * 2. Create instance of ICDelegate by calling - * makeICDelegate and passing to it pointer to method - * - * class A : ICDelegateSupport - * { - * void methodA(int) {} - * void createDelegate() { - * ICDelegate dlg; - * dlg = makeICDelegate(&A::MethodA); - * }; - */ - -namespace DPL { -namespace Event { -//forward declaration -template -class ICDelegate; - -namespace ICD { -// This Type defines whether ICDelegate should be destroyed after the call, or -// could be reused later. -enum class Reuse -{ - Yes, No -}; -} - -namespace ICDPrivate { -// Base for all ICDSharedDatas. Needed for auto disabling and deleting of -// ICDSharedDatas. -// If ICDSharedData is disabled, delegate won't be called anymore. -class ICDSharedDataBase -{ - public: - typedef std::shared_ptr ICDSharedDataBasePtr; - typedef std::list ICDSharedDataBaseList; - - class ScopedLock : DPL::Noncopyable - { - public: - explicit ScopedLock(ICDSharedDataBasePtr helperBase) : - m_scopedLock(&helperBase->m_mutex) - {} - - private: - DPL::RecursiveMutex::ScopedLock m_scopedLock; - }; - - ICDSharedDataBase() : m_disabled(false) - {} - virtual ~ICDSharedDataBase() - {} - - bool isDisabled() const - { - return m_disabled; - } - virtual void disable() - { - m_disabled = true; - } - - void setIterator(ICDSharedDataBaseList::iterator pos) - { - m_position = pos; - } - - ICDSharedDataBaseList::iterator getIterator() const - { - return m_position; - } - - private: - bool m_disabled; - DPL::RecursiveMutex m_mutex; - ICDSharedDataBaseList::iterator m_position; -}; - -// Pure Event to remove ICDSharedData. -class DeleteICDSharedDataBaseEventCall : public DPL::Event::AbstractEventCall -{ - public: - DeleteICDSharedDataBaseEventCall( - ICDSharedDataBase::ICDSharedDataBasePtr helperBase) : - m_helperBase(helperBase) - {} - virtual void Call() - { - m_helperBase.reset(); - } - - private: - ICDSharedDataBase::ICDSharedDataBasePtr m_helperBase; -}; - -class ICDelegateSupportInterface -{ - protected: - virtual ~ICDelegateSupportInterface() - {} - virtual void unregisterICDSharedData( - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr helper) = 0; - virtual void registerICDSharedData( - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr helper) = 0; - - private: - template - friend class DPL::Event::ICDelegate; -}; -} //ICDPrivate - -// Better makeDelegate then DPL::MakeDelegate -template -FastDelegate -makeDelegate(ThisType* This, - void (ThisType::*Func)(ArgTypesList ...)) -{ - return FastDelegate(This, Func); -} - -// ICDelegate class represents delegate that can be called from -// any context (thread). The actual calling context (thread) is allways the same -// as the context in which it was created. -template -class ICDelegate -{ - public: - ICDelegate() - {} - ICDelegate(ICDPrivate::ICDelegateSupportInterface* base, - DPL::FastDelegate outerDelegate, - ICD::Reuse reuse) - { - ICDSharedData* hlp = new ICDSharedData(base, outerDelegate, reuse); - m_helper.reset(hlp); - } - - // Calling operator will pass all args passed to it to correct context and - // will call apropriate method that was registered with. - void operator()(ArgTypesList ... args) - { - Assert(m_helper); - ICDPrivate::ICDSharedDataBase::ScopedLock lock( - std::static_pointer_cast(m_helper)); - m_helper->CallDelegate(args ...); - } - - //Disable delegate (it won't be called anymore) - void disable() - { - Assert(m_helper); - ICDPrivate::ICDSharedDataBase::ScopedLock lock( - std::static_pointer_cast(m_helper)); - m_helper->disable(); - } - - protected: - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr - getRelatedICDSharedData() const - { - return std::static_pointer_cast(m_helper); - } - - private: - template - friend class ICDelegateSupport; - class ICDSharedData; - typedef std::shared_ptr ICDSharedDataPtr; - - struct PrivateEvent - { - PrivateEvent(ICDSharedDataPtr a_helper, - ArgTypesList ... arguments) : - helper(a_helper), - args(std::make_tuple(arguments ...)) - {} - - ICDSharedDataPtr helper; - std::tuple args; - }; - - typedef DPL::FastDelegate - ICDSharedDataDelegateType; - class ICDSharedData : private DPL::Event::EventSupport, - public std::enable_shared_from_this, - public ICDPrivate::ICDSharedDataBase - { - public: - ICDSharedData( - ICDPrivate::ICDelegateSupportInterface *base, - DPL::FastDelegate outerDelegate, - ICD::Reuse reuse) : - m_base(base), - m_outerDelegate(outerDelegate), - m_reuse(reuse) - { - Assert(m_base); - // lock is not needed: this object is not shared at that moment - m_subDelegate = - DPL::Event::makeDelegate(this, - &ICDSharedData::delegateForwarder); - EventSupport::AddListener(m_subDelegate); - } - - void CallDelegate(ArgTypesList ... args) - { - ICDPrivate::ICDSharedDataBase::ScopedLock lock( - std::static_pointer_cast( - this->shared_from_this())); - if (!isDisabled()) { - EmitEvent(PrivateEvent(this->shared_from_this(), - args ...)); - } - } - - virtual void disable() - { - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr ptr( - std::static_pointer_cast( - this->shared_from_this())); - ICDPrivate::ICDSharedDataBase::ScopedLock lock(ptr); - if (!isDisabled()) { - ICDPrivate::ICDSharedDataBase::disable(); - EventSupport::RemoveListener(m_subDelegate); - m_base->unregisterICDSharedData(ptr); - } - } - - private: - friend class std::shared_ptr; - ICDSharedDataDelegateType m_subDelegate; - ICDPrivate::ICDelegateSupportInterface* m_base; - DPL::FastDelegate m_outerDelegate; - ICD::Reuse m_reuse; - - void delegateForwarder(const PrivateEvent& event) - { - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr ptr( - std::static_pointer_cast(event.helper)); - ICDPrivate::ICDSharedDataBase::ScopedLock lock(ptr); - - Assert(!m_outerDelegate.empty()); - if (ptr->isDisabled()) { - LogPedantic("ICDSharedData has been disabled - call is ignored"); - } else { - DPL::Apply(m_outerDelegate, event.args); - - if (m_reuse == ICD::Reuse::Yes) { - return; - } - - disable(); - deleteICDSharedDataBase(ptr); - } - } - }; - - // Schedules helper removal. - static void deleteICDSharedDataBase( - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr helper) - { - using namespace ICDPrivate; - ICDSharedDataBase::ScopedLock lock(helper); - DeleteICDSharedDataBaseEventCall* event = - new DeleteICDSharedDataBaseEventCall(helper); - if (DPL::Thread::GetCurrentThread() == NULL) { - DPL::Event::GetMainEventDispatcherInstance().AddEventCall(event); - } else { - DPL::Event::ThreadEventDispatcher dispatcher; - dispatcher.SetThread(DPL::Thread::GetCurrentThread()); - dispatcher.AddEventCall(event); - } - } - - ICDSharedDataPtr m_helper; -}; - -template -class ICDelegateSupport : public ICDPrivate::ICDelegateSupportInterface -{ - protected: - template - ICDelegate makeICDelegate( - void (ThisType::*Func)(ArgTypesList ...), - ICD::Reuse reuse = ICD::Reuse::No) - { - ThisType* This = static_cast(this); - ICDelegate icdelegate( - This, - makeDelegate(This, Func), - reuse); - this->registerICDSharedData(icdelegate.getRelatedICDSharedData()); - return icdelegate; - } - - ICDelegateSupport() - {} - - ~ICDelegateSupport() - { - ICDPrivate::ICDSharedDataBase::ICDSharedDataBaseList list = - m_ICDSharedDatas; - FOREACH(helper, list) { - ICDPrivate::ICDSharedDataBase::ScopedLock lock( - std::static_pointer_cast(*helper)); - (*helper)->disable(); - } - m_ICDSharedDatas.clear(); - } - - private: - virtual void unregisterICDSharedData( - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr helper) - { - m_ICDSharedDatas.erase(helper->getIterator()); - } - - virtual void registerICDSharedData( - ICDPrivate::ICDSharedDataBase::ICDSharedDataBasePtr helper) - { - helper->setIterator( - m_ICDSharedDatas.insert(m_ICDSharedDatas.begin(), - helper)); - } - - private: - ICDPrivate::ICDSharedDataBase::ICDSharedDataBaseList m_ICDSharedDatas; -}; -} -} //namespace - -#endif // __GXX_EXPERIMENTAL_CXX0X__ - -#endif //DPL_INTER_CONTEXT_DELEGATE_H_ diff --git a/modules_mobile/event/include/dpl/event/model.h b/modules_mobile/event/include/dpl/event/model.h deleted file mode 100644 index b149eee..0000000 --- a/modules_mobile/event/include/dpl/event/model.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file model.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for model - */ -#ifndef DPL_MODEL_H -#define DPL_MODEL_H - -#include -#include - -namespace DPL { -namespace Event { -class Model : - public Noncopyable -{ - protected: - mutable DPL::ReadWriteMutex m_mutex; - - template - friend class PropertyBase; - - template - friend class Property; - - public: - virtual ~Model() = 0; -}; -} -} // namespace DPL - -#endif // DPL_MODEL_H diff --git a/modules_mobile/event/include/dpl/event/model_bind_to_dao.h b/modules_mobile/event/include/dpl/event/model_bind_to_dao.h deleted file mode 100644 index 2ed7e0e..0000000 --- a/modules_mobile/event/include/dpl/event/model_bind_to_dao.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file model_bind_to_dao.h - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_MODEL_BIND_TO_DAO_H_ -#define DPL_MODEL_BIND_TO_DAO_H_ - -namespace DPL { -namespace Event { -/** - * @param ObjectType type of object used as delegate argument - * @param RetType Type returned from the external function - * @param ExtArg Type of argument required by external fun - * @param getterFun Object Type method which returns value of type ExtArg - * used as argument for external function - * */ -//STATIC FUNCTION -template < - typename ObjectType, - typename ValueType, - typename ExtArg, - ExtArg(ObjectType::*argGetter) () const, - ValueType(*externalGetter) (ExtArg) - > -struct BindToDAO_Static -{ - static ValueType Get(DPL::Event::Model* obj) - { - ObjectType* instance = static_cast(obj); - - return externalGetter((instance->*argGetter)()); - } -}; - -template < - typename ObjectType, - typename ValueType, - typename ExtArg, - typename ExtObject, - ExtArg(ObjectType::*argGetter) () const, - ValueType(ExtObject::*externalGetter) () const - > -struct BindToDAO -{ - static ValueType Get(DPL::Event::Model* obj) - { - ObjectType* instance = static_cast(obj); - ExtObject extObject((instance->*argGetter)()); - return (extObject.*externalGetter)(); - } -}; -} -} - -#endif diff --git a/modules_mobile/event/include/dpl/event/property.h b/modules_mobile/event/include/dpl/event/property.h deleted file mode 100644 index 11e12dd..0000000 --- a/modules_mobile/event/include/dpl/event/property.h +++ /dev/null @@ -1,517 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file property.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for property - */ -#ifndef DPL_PROPERTY_H -#define DPL_PROPERTY_H - -#include - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Event { -/** - * Property is a class that encapsulates model's property fields. - * Its main purpose is to automate things related to model's properties - * such as: data storage, synchronization and event emitting. - * - * Property is a template of the following schema: - * - * template class Property - * - * Type is an internal type that property is encapsulating. It is required - * that the type is default-constructible and copyable. - * - * Property access rights control which operations are allowed to be - * executed on property. - * - * Property storage mode is a mode describing where and how internal data should - * be stored. - * - * Property modifiers: - * - * PropertyStorageCached: The data is stored internally as one copy. It can - * never be changed from external. - * - * PropertyStorageDynamic: The data is stored remotely and is accessed via - * provided delegates. It can change at any time - * if external mechanism changes its value. - * - * PropertyStorageDynamicCached: The data is stored internally, but only after - * it has been retrieved by delegates. The - * changed data is stored internally and also set - * remotely with delegate. After the value has - * been received from external source, it will - * never be updated externally. - * - * Property access modes: - * - * PropertyReadOnly: Property is a read-only property. - * It doesn't have Set() method. - * - * PropertyReadWrite: Property is a read-write property. It have both Get() - * and Set() methods. - * - * Examples: - * - * Note: All properties, if not specified otherwise in template arguments, - * have read-write access rights and cached data storage. - * - * Simple property with int: - * @code DPL::Property Number; - * - * A property with string: - * @code DPL::Property Name; - * - * A read-only float property: - * @code DPL::Property Gravity; - * - * A read-write string property: - * @code DPL::Property Caption; - * - * A read-write string property which is stored internally: - * @code DPL::Property Name; - * - * A read-write string property which is stored externally: - * @code DPL::Property RemoteName; - * - * A read-write string property which is stored externally, but also cached: - * @code DPL::Property CachedName; - * - * A model is an agregation of many properties. Whenever some of them change, - * an event with this change is emmited along with model handle which - * contains this property. These changes can be listened to. To achieve this, - * one have to add a delegate which contains changed property value and - * a pointer to the model. - * - * Example of a model with a property: - * - * @code - * class MyModel: public DPL::Model - * { - * public: - * DPL::Property Number1; - * DPL::Property Number2; - * DPL::Property Number3; - * - * // Read write property delegate method can be static - * static int ReadCustomValue(Model *model); - * - * // Read write property delegate method can also be method - * void WriteCustomValue(const int &value, Model *model); - * - * MyModel() - * : // Initialize property with default value and this model - * Number1(this), - * - * // Initialize property with 123 and this model - * Number2(this, 123), - * - * // Initialize property with 0 and custom read delegate and this model - * Number3(this, 0, &ReadCustomValue), - * - * // Initialize property with 7 and custom read-write delegates - * // and this model - * Number4(this, 7, &ReadCustomValue, - * DPL::MakeDelegate(this, &WriteCustomValue) - * { - * } - * }; - * - * DPL's delegate mechanism is a general solution, which is capable of - * binding various types of functions and method as a delegate and - * using them in unified way. - * - * Example of registering and unregistering for model's property changes: - * - * @code - * class SomeModel : public DPL::Model - * { - * public: - * DPL::Property Value; - * - * SomeModel() - * : Value(this) - * { - * } - * }; - * - * void ValueChanged(const int &value, Model *model) - * { - * std::cout << "Value changed to: " << value << std::endl; - * } - * - * int main() - * { - * SomeModel model; - * - * // Register a global function as property changed listener - * model.AddListener(&ValueChanged); - * [...] - * model.RemoveListener(&ValueChanged); - * - * // Register a class method as property changed listener - * class Receiver - * { - * public: - * void OnValueChanged(const int &value, Model *model) - * { - * [...] - * } - * } receiver; - * - * model.AddListener( - * DPL::MakeDelegate(&receiver, &Receiver::OnValueChanged)); - * [...] - * model.RemoveListener( - * DPL::MakeDelegate(&receiver, &Receiver::OnValueChanged)); - * } - */ -struct PropertyStorageCached {}; ///< Always use cached -struct PropertyStorageDynamic {}; ///< Always use dynamic -struct PropertyStorageDynamicCached {}; ///< Use dynamic then cache - -struct PropertyReadOnly {}; ///< Read only, not setter available -struct PropertyReadWrite {}; ///< Read and write - -template -struct PropertyEvent -{ - PropertyEvent(const Type &v, Model *s) : - value(v), - sender(s) - {} - - Type value; - Model *sender; -}; - -template -class PropertyStorageMethodDynamicBase -{ - protected: - ReadDelegateType m_readValue; - WriteDelegateType m_writeValue; - - PropertyStorageMethodDynamicBase(ReadDelegateType readValue, - WriteDelegateType writeValue) : - m_readValue(readValue), - m_writeValue(writeValue) - {} -}; - -template -class PropertyStorageMethodCachedBase -{ - protected: - mutable Type m_value; - - PropertyStorageMethodCachedBase() - {} -}; - -class PropertyStorageMethodBase -{ - protected: - explicit PropertyStorageMethodBase(Model *model) : - m_model(model) - {} - - Model *m_model; -}; - -template -class PropertyStorageMethod; - -template -class PropertyStorageMethod: - protected PropertyStorageMethodBase, - protected PropertyStorageMethodCachedBase -{ - public: - PropertyStorageMethod(Model *model, - ReadDelegateType /*readValue*/, - WriteDelegateType /*writeValue*/) : - PropertyStorageMethodBase(model) - {} - - Type Get() const - { - return this->m_value; - } - - void Set(const Type &value) - { - this->m_value = value; - } -}; - -template -class PropertyStorageMethod: - protected PropertyStorageMethodBase, - protected PropertyStorageMethodDynamicBase -{ - public: - PropertyStorageMethod(Model *model, - ReadDelegateType readValue, - WriteDelegateType writeValue) : - PropertyStorageMethodBase(model), - PropertyStorageMethodDynamicBase( - readValue, - writeValue) - {} - - Type Get() const - { - Assert(this->m_readValue); - return this->m_readValue(m_model); - } - - void Set(const Type &value) - { - Assert(this->m_writeValue); - this->m_writeValue(value, m_model); - } -}; - -template -class PropertyStorageMethod: - protected PropertyStorageMethodBase, - protected PropertyStorageMethodDynamicBase, - protected PropertyStorageMethodCachedBase -{ - private: - typedef PropertyStorageMethod ThisType; - - // These two are mutable - void OnceEnsure() const - { - this->m_value = this->m_readValue(m_model); - } - - void OnceDisable() const - {} - - protected: - mutable Once m_once; - - public: - PropertyStorageMethod(Model *model, - ReadDelegateType readValue, - WriteDelegateType writeValue) : - PropertyStorageMethodBase(model), - PropertyStorageMethodDynamicBase( - readValue, writeValue) - {} - - Type Get() const - { - Assert(this->m_readValue); - m_once.Call(std::bind(&ThisType::OnceEnsure, this)); - return this->m_value; - } - - void Set(const Type &value) - { - Assert(this->m_writeValue); - - this->m_writeValue(value, m_model); - this->m_value = value; - m_once.Call(std::bind(&ThisType::OnceDisable, this)); - } -}; - -template -class PropertyBase : - protected EventSupport > -{ - public: - typedef typename EventSupport >::EventListenerType - EventListenerType; - - typedef typename EventSupport >::DelegateType - DelegateType; - - typedef std::function - ReadDelegateType; - - typedef std::function - WriteDelegateType; - - protected: - PropertyStorageMethod m_storage; - Model *m_model; - - PropertyBase(Model *model, - ReadDelegateType readValue, - WriteDelegateType writeValue) : - m_storage(model, readValue, writeValue), - m_model(model) - {} - - public: - virtual Type Get() const - { - ReadWriteMutex::ScopedReadLock lock(&m_model->m_mutex); - return m_storage.Get(); - } - - void AddListener(DelegateType delegate) - { - EventSupport >::AddListener(delegate); - } - - void RemoveListener(DelegateType delegate) - { - EventSupport >::RemoveListener(delegate); - } -}; - -template -class Property; - -template -class Property: - public PropertyBase -{ - public: - typedef typename PropertyBase::EventListenerType - EventListenerType; - - typedef typename PropertyBase::DelegateType - DelegateType; - - typedef typename PropertyBase::ReadDelegateType - ReadDelegateType; - - typedef typename PropertyBase::WriteDelegateType - WriteDelegateType; - - public: - explicit Property(Model *model, - ReadDelegateType readValue = NULL) : - PropertyBase(model, readValue, NULL) - {} - - Property(Model *model, - const Type &value, - ReadDelegateType readValue = NULL) : - PropertyBase(model, readValue, NULL) - { - this->m_storage.Set(value); - } -}; - -template -class Property: - public PropertyBase -{ - public: - typedef typename PropertyBase::EventListenerType - EventListenerType; - - typedef typename PropertyBase::DelegateType - DelegateType; - - typedef typename PropertyBase::ReadDelegateType - ReadDelegateType; - - typedef typename PropertyBase::WriteDelegateType - WriteDelegateType; - - public: - explicit Property(Model *model, - ReadDelegateType readValue = NULL, - WriteDelegateType writeValue = NULL) : - PropertyBase(model, readValue, writeValue) - {} - - Property(Model *model, - const Type &value, - ReadDelegateType readValue = NULL, - WriteDelegateType writeValue = NULL) : - PropertyBase(model, readValue, writeValue) - { - this->m_storage.Set(value); - } - - virtual void Set(const Type &value) - { - ReadWriteMutex::ScopedWriteLock lock(&this->m_model->m_mutex); - - if (this->m_storage.Get() == value) { - return; - } - - this->m_storage.Set(value); - - this->EmitEvent(PropertyEvent(value, this->m_model), - EmitMode::Auto); - } - - void SetWithoutLock(const Type &value) - { - if (this->m_storage.Get() == value) { - return; - } - - this->m_storage.Set(value); - } -}; -} -} // namespace DPL - -#endif // DPL_PROPERTY_H diff --git a/modules_mobile/event/include/dpl/event/thread_event_dispatcher.h b/modules_mobile/event/include/dpl/event/thread_event_dispatcher.h deleted file mode 100644 index f3846a6..0000000 --- a/modules_mobile/event/include/dpl/event/thread_event_dispatcher.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file thread_event_dispatcher.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of thread event dispatcher - */ -#ifndef DPL_THREAD_EVENT_DISPATCHER_H -#define DPL_THREAD_EVENT_DISPATCHER_H - -#include -#include -#include - -namespace DPL { -namespace Event { -class ThreadEventDispatcher : - public AbstractEventDispatcher -{ - protected: - Thread *m_thread; - - static void StaticEventDelete(void *event, void *userParam); - static void StaticEventDispatch(void *event, void *userParam); - - void EventDelete(AbstractEventCall *abstractEventCall); - void EventDispatch(AbstractEventCall *abstractEventCall); - - public: - explicit ThreadEventDispatcher(); - virtual ~ThreadEventDispatcher(); - - void SetThread(Thread *thread); - - virtual void AddEventCall(AbstractEventCall *abstractEventCall); - virtual void AddTimedEventCall(AbstractEventCall *abstractEventCall, - double dueTime); -}; -} -} // namespace DPL - -#endif // DPL_THREAD_EVENT_DISPATCHER_H diff --git a/modules_mobile/event/src/abstract_event_call.cpp b/modules_mobile/event/src/abstract_event_call.cpp deleted file mode 100644 index 748b6da..0000000 --- a/modules_mobile/event/src/abstract_event_call.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_event_call.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract event call - */ -#include -#include - -namespace DPL { -namespace Event { -AbstractEventCall::AbstractEventCall() -{} - -AbstractEventCall::~AbstractEventCall() -{} -} -} // namespace DPL diff --git a/modules_mobile/event/src/abstract_event_dispatcher.cpp b/modules_mobile/event/src/abstract_event_dispatcher.cpp deleted file mode 100644 index 7c385a4..0000000 --- a/modules_mobile/event/src/abstract_event_dispatcher.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_event_dispatcher.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract event - * dispatcher - */ -#include -#include - -namespace DPL { -namespace Event { -AbstractEventDispatcher::AbstractEventDispatcher() -{} - -AbstractEventDispatcher::~AbstractEventDispatcher() -{} -} -} // namespace DPL diff --git a/modules_mobile/event/src/controller.cpp b/modules_mobile/event/src/controller.cpp deleted file mode 100644 index 337a39f..0000000 --- a/modules_mobile/event/src/controller.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file controller.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC controller - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/event/src/event_listener.cpp b/modules_mobile/event/src/event_listener.cpp deleted file mode 100644 index 5d0d382..0000000 --- a/modules_mobile/event/src/event_listener.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file event_listener.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC event listener - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/event/src/generic_event_call.cpp b/modules_mobile/event/src/generic_event_call.cpp deleted file mode 100644 index d0d6886..0000000 --- a/modules_mobile/event/src/generic_event_call.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_event_call.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of generic event call - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/event/src/inter_context_delegate.cpp b/modules_mobile/event/src/inter_context_delegate.cpp deleted file mode 100644 index 07e3885..0000000 --- a/modules_mobile/event/src/inter_context_delegate.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file inter_context_delegate.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of ICDelegate functionality - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/event/src/main_event_dispatcher.cpp b/modules_mobile/event/src/main_event_dispatcher.cpp deleted file mode 100644 index c860398..0000000 --- a/modules_mobile/event/src/main_event_dispatcher.cpp +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file main_event_dispatcher.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of main event dispatcher - * for EFL - */ -#include -#include -#include -#include -#include - -namespace DPL { -IMPLEMENT_SINGLETON(Event::MainEventDispatcher) - -namespace Event { -typedef Singleton MainEventDispatcherSingleton; - -namespace // anonymous -{ -static const pthread_t g_threadMain = pthread_self(); - -// Late EFL event handling -MainEventDispatcher *g_lateMainEventDispatcher = NULL; -} // namespace anonymous - -MainEventDispatcher::MainEventDispatcher() -{ - // Late EFL event handling - Assert(g_lateMainEventDispatcher == NULL); - g_lateMainEventDispatcher = this; - - // Increment ECORE init count to ensure we have all - // subsystems correctly set-up until main dispatcher dtor - // This is especially important when MainEventDispatcher - // is a global object destroyed no earlier than crt destroy routine - ecore_init(); - - // Add new global ECORE event - m_eventId = ecore_event_type_new(); - - LogPedantic("ECORE event class registered: " << m_eventId); - - // Register event class handler - if ((m_eventCallHandler = - ecore_event_handler_add(m_eventId, &StaticDispatchEvent, - this)) == NULL) - { - ThrowMsg(Exception::CreateFailed, "Failed to register event handler!"); - } - - // Allocate WaitableEvent - m_crossEventCallInvoker = new WaitableEvent(); - - // Register cross event handler - m_crossEventCallHandler = ecore_main_fd_handler_add( - m_crossEventCallInvoker->GetHandle(), - ECORE_FD_READ, - &StaticDispatchCrossInvoker, - this, - NULL, - NULL); - - if (m_crossEventCallHandler == NULL) { - ThrowMsg(Exception::CreateFailed, - "Failed to register cross event handler!"); - } - - LogPedantic("ECORE cross-event handler registered"); -} - -MainEventDispatcher::~MainEventDispatcher() -{ - // Remove cross event handler - ecore_main_fd_handler_del(m_crossEventCallHandler); - m_crossEventCallHandler = NULL; - LogPedantic("ECORE cross-event handler unregistered"); - - // Remove m_crossEventCallInvoker - delete m_crossEventCallInvoker; - m_crossEventCallInvoker = NULL; - - // Remove event class handler - ecore_event_handler_del(m_eventCallHandler); - m_eventCallHandler = NULL; - - // Decrement ECORE init count - // We do not need ecore routines any more - ecore_shutdown(); - - // Late EFL event handling - Assert(g_lateMainEventDispatcher == this); - g_lateMainEventDispatcher = NULL; -} - -void MainEventDispatcher::ResetCrossEventCallHandler() -{ - // Remove cross event handler - ecore_main_fd_handler_del(m_crossEventCallHandler); - m_crossEventCallHandler = NULL; - LogPedantic("ECORE cross-event handler unregistered"); - - // Re-allocate WaitableEvent - delete m_crossEventCallInvoker; - m_crossEventCallInvoker = new WaitableEvent(); - - // Register cross event handler - m_crossEventCallHandler = - ecore_main_fd_handler_add(m_crossEventCallInvoker->GetHandle(), - ECORE_FD_READ, - &StaticDispatchCrossInvoker, - this, - NULL, - NULL); - - if (m_crossEventCallHandler == NULL) { - ThrowMsg(Exception::CreateFailed, - "Failed to register cross event handler!"); - } - - LogPedantic("ECORE cross-event handler re-registered"); -} - -void MainEventDispatcher::StaticDeleteEvent(void *data, void *event) -{ - LogPedantic("Static ECORE delete event handler"); - - MainEventDispatcher *This = static_cast(data); - AbstractEventCall *abstractEventCall = - static_cast(event); - - Assert(This != NULL); - Assert(abstractEventCall != NULL); - - // Late EFL event handling - if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL event delete!"); - delete abstractEventCall; - } else { - This->DeleteEvent(abstractEventCall); - } -} - -Eina_Bool MainEventDispatcher::StaticDispatchEvent(void *data, - int type, - void *event) -{ - LogPedantic("Static ECORE dispatch event"); - - MainEventDispatcher *This = static_cast(data); - AbstractEventCall *abstractEventCall = - static_cast(event); - (void)type; - - Assert(This != NULL); - Assert(abstractEventCall != NULL); - - // Late EFL event handling - if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL event dispatch!"); - } else { - This->DispatchEvent(abstractEventCall); - } - - // Continue to handler other ECORE events - return ECORE_CALLBACK_RENEW; -} - -Eina_Bool MainEventDispatcher::StaticDispatchTimedEvent(void *data) -{ - LogPedantic("Static ECORE dispatch timed event"); - - TimedEventStruct *timedEventStruct = static_cast(data); - MainEventDispatcher *This = timedEventStruct->This; - AbstractEventCall *abstractEventCall = timedEventStruct->abstractEventCall; - delete timedEventStruct; - - Assert(This != NULL); - Assert(abstractEventCall != NULL); - - // Late EFL event handling - if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL timed event dispatch!"); - } else { - // Dispatch timed event - This->DispatchEvent(abstractEventCall); - } - - // And delete manually event, because ECORE does not - // use delete handler for timers - StaticDeleteEvent(static_cast(This), - static_cast(abstractEventCall)); - - // Do not continue timed event handlers - // This also releases ECORE timer - return ECORE_CALLBACK_CANCEL; -} - -Eina_Bool MainEventDispatcher::StaticDispatchCrossInvoker( - void *data, - Ecore_Fd_Handler * - fd_handler) -{ - LogPedantic("Static ECORE dispatch cross invoker"); - - MainEventDispatcher *This = static_cast(data); - (void)fd_handler; - - Assert(This != NULL); - - // Late EFL event handling - if (g_lateMainEventDispatcher == NULL) { - LogPedantic("WARNING: Late EFL cross invoker dispatch!"); - } else { - This->DispatchCrossInvoker(); - } - - return ECORE_CALLBACK_RENEW; -} - -void MainEventDispatcher::DeleteEvent(AbstractEventCall *abstractEventCall) -{ - LogPedantic("ECORE delete event"); - delete abstractEventCall; -} - -void MainEventDispatcher::DispatchEvent(AbstractEventCall *abstractEventCall) -{ - LogPedantic("ECORE dispatch event"); - - // Call event handler - abstractEventCall->Call(); -} - -void MainEventDispatcher::DispatchTimedEvent( - AbstractEventCall *abstractEventCall) -{ - LogPedantic("ECORE dispatch timed event"); - - // Call event handler - abstractEventCall->Call(); -} - -void MainEventDispatcher::DispatchCrossInvoker() -{ - LogPedantic("ECORE dispatch cross invoker"); - - // Steal cross events list - WrappedEventCallList stolenCrossEvents; - - // Critical section - { - m_crossEventCallInvoker->Reset(); - Mutex::ScopedLock lock(&m_crossEventCallMutex); - m_wrappedCrossEventCallList.swap(stolenCrossEvents); - } - - LogPedantic( - "Cross-thread event list stolen. Number of events: " << - stolenCrossEvents.size()); - - // Repush all stolen events - WrappedEventCallList::const_iterator eventIterator; - - for (eventIterator = stolenCrossEvents.begin(); - eventIterator != stolenCrossEvents.end(); - ++eventIterator) - { - // Unwrap events - LogPedantic("Dispatching event from invoker"); - InternalAddEvent(eventIterator->abstractEventCall, - eventIterator->timed, - eventIterator->dueTime); - } - - LogPedantic("Cross-thread events dispatched"); -} - -void MainEventDispatcher::AddEventCall(AbstractEventCall *abstractEventCall) -{ - if (pthread_equal(pthread_self(), g_threadMain)) { - LogPedantic("Main thread ECORE event push"); - InternalAddEvent(abstractEventCall, false, 0.0); - } else { - LogPedantic("Cross-thread ECORE event push"); - - // Push event to cross event list - { - Mutex::ScopedLock lock(&m_crossEventCallMutex); - m_wrappedCrossEventCallList.push_back(WrappedEventCall( - abstractEventCall, false, - 0.0)); - m_crossEventCallInvoker->Signal(); - } - - LogPedantic("Event pushed to cross-thread event list"); - } -} - -void MainEventDispatcher::AddTimedEventCall( - AbstractEventCall *abstractEventCall, - double dueTime) -{ - if (pthread_equal(pthread_self(), g_threadMain)) { - LogPedantic("Main thread timed ECORE event push"); - InternalAddEvent(abstractEventCall, true, dueTime); - } else { - LogPedantic("Cross-thread timed ECORE event push"); - - // Push event to cross event list - { - Mutex::ScopedLock lock(&m_crossEventCallMutex); - m_wrappedCrossEventCallList.push_back(WrappedEventCall( - abstractEventCall, true, - dueTime)); - m_crossEventCallInvoker->Signal(); - } - - LogPedantic("Event pushed to cross-thread event list"); - } -} - -void MainEventDispatcher::InternalAddEvent(AbstractEventCall *abstractEventCall, - bool timed, - double dueTime) -{ - LogPedantic("Adding base event"); - - if (timed == true) { - // Push timed event onto ecore stack - TimedEventStruct* eventData = new TimedEventStruct(abstractEventCall, - this); - Ecore_Timer *timedEvent = ecore_timer_add(dueTime, - &StaticDispatchTimedEvent, - eventData); - - if (timedEvent == NULL) { - delete eventData; - delete abstractEventCall; - ThrowMsg(Exception::AddTimedEventFailed, - "Failed to add ECORE timed event"); - } - - LogPedantic("Timed wrapped event added"); - } else { - // Push immediate event onto ecore stack - Ecore_Event *event = ecore_event_add(m_eventId, - abstractEventCall, - &StaticDeleteEvent, - this); - - if (event == NULL) { - delete abstractEventCall; - ThrowMsg(Exception::AddEventFailed, "Failed to add ECORE event"); - } - - LogPedantic("Wrapped event added"); - } -} - -MainEventDispatcher& GetMainEventDispatcherInstance() -{ - return MainEventDispatcherSingleton::Instance(); -} -} -} // namespace DPL diff --git a/modules_mobile/event/src/thread_event_dispatcher.cpp b/modules_mobile/event/src/thread_event_dispatcher.cpp deleted file mode 100644 index 7da99a2..0000000 --- a/modules_mobile/event/src/thread_event_dispatcher.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file thread_event_dispatcher.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of thread event dispatcher - */ -#include -#include -#include -#include - -namespace DPL { -namespace Event { -ThreadEventDispatcher::ThreadEventDispatcher() : - m_thread(NULL) -{} - -ThreadEventDispatcher::~ThreadEventDispatcher() -{} - -void ThreadEventDispatcher::SetThread(Thread *thread) -{ - m_thread = thread; -} - -void ThreadEventDispatcher::StaticEventDelete(void *event, void *userParam) -{ - AbstractEventCall *abstractEventCall = - static_cast(event); - ThreadEventDispatcher *This = - static_cast(userParam); - - LogPedantic("Received static event delete from thread"); - - Assert(abstractEventCall != NULL); - Assert(This != NULL); - - This->EventDelete(abstractEventCall); -} - -void ThreadEventDispatcher::StaticEventDispatch(void *event, void *userParam) -{ - AbstractEventCall *abstractEventCall = - static_cast(event); - ThreadEventDispatcher *This = - static_cast(userParam); - - LogPedantic("Received static event dispatch from thread"); - - Assert(abstractEventCall != NULL); - Assert(This != NULL); - - This->EventDispatch(abstractEventCall); -} - -void ThreadEventDispatcher::EventDelete(AbstractEventCall *abstractEventCall) -{ - LogPedantic("Deleting event"); - delete abstractEventCall; -} - -void ThreadEventDispatcher::EventDispatch(AbstractEventCall *abstractEventCall) -{ - LogPedantic("Dispatching event to event support"); - abstractEventCall->Call(); -} - -void ThreadEventDispatcher::AddEventCall(AbstractEventCall *abstractEventCall) -{ - // Thread must be set prior to call - Assert(m_thread != NULL); - - LogPedantic("Adding event to thread event loop"); - - // Call abstract event call in dedicated thread - m_thread->PushEvent(abstractEventCall, - &StaticEventDispatch, - &StaticEventDelete, - this); -} - -void ThreadEventDispatcher::AddTimedEventCall( - AbstractEventCall *abstractEventCall, - double dueTime) -{ - // Thread must be set prior to call - Assert(m_thread != NULL); - - LogPedantic("Adding timed event to thread event loop"); - - // Call abstract event call in dedicated thread - m_thread->PushTimedEvent(abstractEventCall, - dueTime, - &StaticEventDispatch, - &StaticEventDelete, - this); -} -} -} // namespace DPL diff --git a/modules_mobile/i18n/CMakeLists.txt b/modules_mobile/i18n/CMakeLists.txt deleted file mode 100644 index 9b1b175..0000000 --- a/modules_mobile/i18n/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -ADD_SUBDIRECTORY(dao) diff --git a/modules_mobile/i18n/dao/CMakeLists.txt b/modules_mobile/i18n/dao/CMakeLists.txt deleted file mode 100644 index c7b5ada..0000000 --- a/modules_mobile/i18n/dao/CMakeLists.txt +++ /dev/null @@ -1,59 +0,0 @@ -SET(TARGET_I18N_DAO_DB "Sqlite3DbI18n") - -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h - COMMAND ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/gen_db_md5.sh - ARGS ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h - ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/iana_db - DEPENDS ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/iana_db - ${CMAKE_SOURCE_DIR}/modules/i18n/dao/orm/gen_db_md5.sh - COMMENT "Generating WRT i18n database checksum" - ) - -ADD_CUSTOM_COMMAND( OUTPUT .wrt_i18n.db - COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt_i18n.db - COMMAND gcc -Wall -include ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm -E ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm/i18n_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/wrt_i18n_db.sql - COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.wrt_i18n.db ".read ${CMAKE_CURRENT_BINARY_DIR}/wrt_i18n_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt_i18n.db - DEPENDS ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm/i18n_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm/iana_db - ) - -ADD_CUSTOM_COMMAND( OUTPUT .wrt_i18n.db-journal - COMMAND touch - ARGS ${CMAKE_CURRENT_BINARY_DIR}/.wrt_i18n.db-journal - ) - -ADD_CUSTOM_TARGET(${TARGET_I18N_DAO_DB} ALL DEPENDS .wrt_i18n.db .wrt_i18n.db-journal) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wrt_i18n_db.sql DESTINATION share/wrt-engine/) - -############################################################################### - -SET(I18N_DAO_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/modules/i18n/dao/include - ${PROJECT_SOURCE_DIR}/modules/i18n/dao/orm - ${PROJECT_SOURCE_DIR}/modules/core/include - ${PROJECT_SOURCE_DIR}/modules/db/include - ${PROJECT_SOURCE_DIR}/modules/log/include -) - - -SET(I18N_DAO_RO_SOURCES - src/i18n_database.cpp - src/i18n_dao_read_only.cpp -) - -INCLUDE_DIRECTORIES(${I18N_DAO_INCLUDE_DIRS}) -INCLUDE_DIRECTORIES(SYSTEM ${I18N_DAO_DEPS_INCLUDE_DIRS}) - -ADD_LIBRARY(${TARGET_I18N_DAO_RO_LIB} SHARED ${I18N_DAO_RO_SOURCES}) -SET_TARGET_PROPERTIES(${TARGET_I18N_DAO_RO_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) -SET_TARGET_PROPERTIES(${TARGET_I18N_DAO_RO_LIB} PROPERTIES COMPILE_FLAGS "-include ${CMAKE_BINARY_DIR}/modules/i18n/dao/database_checksum_i18n.h") -TARGET_LINK_LIBRARIES(${TARGET_I18N_DAO_RO_LIB} ${TARGET_DPL_DB_EFL}) -ADD_DEPENDENCIES(${TARGET_I18N_DAO_RO_LIB} ${TARGET_I18N_DAO_DB}) - -INSTALL(TARGETS ${TARGET_I18N_DAO_RO_LIB} DESTINATION lib) - -INSTALL(FILES - include/wrt-commons/i18n-dao-ro/i18n_database.h - include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h - DESTINATION include/dpl-efl/wrt-commons/i18n-dao-ro -) diff --git a/modules_mobile/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h b/modules_mobile/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h deleted file mode 100644 index 7e8ef9d..0000000 --- a/modules_mobile/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_dao_read_only.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of i18n dao namespace. - * - * @file i18n_dao_read_only.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of i18n dao. - */ - -#ifndef _I18N_DAO_READ_ONLY_H_ -#define _I18N_DAO_READ_ONLY_H_ - -#include - -namespace I18n { -namespace DB { -namespace I18nDAOReadOnly { -bool IsValidSubTag(const DPL::String& tag, int type); -} // namespace I18nDAOReadOnly -} // namespace DB -} // namespace I18n - -#endif // _I18N_DAO_READ_ONLY_H_ - diff --git a/modules_mobile/i18n/dao/orm/gen_db_md5.sh b/modules_mobile/i18n/dao/orm/gen_db_md5.sh deleted file mode 100755 index 22c2530..0000000 --- a/modules_mobile/i18n/dao/orm/gen_db_md5.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -CHECKSUM=`cat ${2} ${3} 2>/dev/null | md5sum 2>/dev/null | cut -d\ -f1 2>/dev/null` -echo "#define DB_CHECKSUM DB_VERSION_${CHECKSUM}" > ${1} -echo "#define DB_CHECKSUM_STR \"DB_VERSION_${CHECKSUM}\"" >> ${1} - diff --git a/modules_mobile/i18n/dao/orm/i18n_db_definitions b/modules_mobile/i18n/dao/orm/i18n_db_definitions deleted file mode 100644 index ee94c0a..0000000 --- a/modules_mobile/i18n/dao/orm/i18n_db_definitions +++ /dev/null @@ -1,6 +0,0 @@ -DATABASE_START(i18n) - -#include "iana_db" -#include "version_db" - -DATABASE_END() diff --git a/modules_mobile/i18n/dao/orm/i18n_db_sql_generator.h b/modules_mobile/i18n/dao/orm/i18n_db_sql_generator.h deleted file mode 100644 index d8f326d..0000000 --- a/modules_mobile/i18n/dao/orm/i18n_db_sql_generator.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file i18n_db_sql_generator.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL - * input file from database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. -#include - -#include "i18n_db_definitions" diff --git a/modules_mobile/i18n/dao/orm/iana_db b/modules_mobile/i18n/dao/orm/iana_db deleted file mode 100644 index ffd41ea..0000000 --- a/modules_mobile/i18n/dao/orm/iana_db +++ /dev/null @@ -1,8957 +0,0 @@ -SQL(BEGIN IMMEDIATE TRANSACTION;) -CREATE_TABLE(iana_records) - COLUMN_NOT_NULL(REC_ID, INT,) - COLUMN_NOT_NULL(TYPE, INT,) - COLUMN(TAG, VARCHAR(256),) - COLUMN(SUBTAG, VARCHAR(256),) - COLUMN(DESCRIPTION, VARCHAR(256),) - COLUMN(ADDED, VARCHAR(256),) - COLUMN(DEPRECATED, INT,) - COLUMN(PREFERRED_VALUE, INT,) - COLUMN(PREFIX, VARCHAR(256),) - COLUMN(SUPPRESS_SCRIPT, VARCHAR(256),) - COLUMN(MACRO_LANGUAGE, VARCHAR(256),) - COLUMN(SCOPE, VARCHAR(256),) - COLUMN(COMMENTS, VARCHAR(256),) -CREATE_TABLE_END() -SQL( -INSERT INTO "iana_records" VALUES(0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1,0,NULL,'aa','afar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2,0,NULL,'ab','abkhazian','1129420800',NULL,NULL,NULL,'cyrl',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3,0,NULL,'ae','avestan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4,0,NULL,'af','afrikaans','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5,0,NULL,'ak','akan','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(6,0,NULL,'am','amharic','1129420800',NULL,NULL,NULL,'ethi',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7,0,NULL,'an','aragonese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8,0,NULL,'ar','arabic','1129420800',NULL,NULL,NULL,'arab',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(9,0,NULL,'as','assamese','1129420800',NULL,NULL,NULL,'beng',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(10,0,NULL,'av','avaric','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(11,0,NULL,'ay','aymara','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(12,0,NULL,'az','azerbaijani','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(13,0,NULL,'ba','bashkir','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(14,0,NULL,'be','belarusian','1129420800',NULL,NULL,NULL,'cyrl',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(15,0,NULL,'bg','bulgarian','1129420800',NULL,NULL,NULL,'cyrl',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(16,0,NULL,'bh','bihari languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(17,0,NULL,'bi','bislama','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(18,0,NULL,'bm','bambara','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(19,0,NULL,'bn','bengali','1129420800',NULL,NULL,NULL,'beng',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(20,0,NULL,'bo','tibetan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(21,0,NULL,'br','breton','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(22,0,NULL,'bs','bosnian','1129420800',NULL,NULL,NULL,'latn','sh',NULL,NULL); -INSERT INTO "iana_records" VALUES(23,0,NULL,'ca','catalan','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(23,0,NULL,'ca','valencian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(24,0,NULL,'ce','chechen','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(25,0,NULL,'ch','chamorro','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(26,0,NULL,'co','corsican','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(27,0,NULL,'cr','cree','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(28,0,NULL,'cs','czech','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(29,0,NULL,'cu','church slavic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(29,0,NULL,'cu','church slavonic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(29,0,NULL,'cu','old bulgarian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(29,0,NULL,'cu','old church slavonic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(29,0,NULL,'cu','old slavonic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(30,0,NULL,'cv','chuvash','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(31,0,NULL,'cy','welsh','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(32,0,NULL,'da','danish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(33,0,NULL,'de','german','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(34,0,NULL,'dv','dhivehi','1129420800',NULL,NULL,NULL,'thaa',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(34,0,NULL,'dv','divehi','1129420800',NULL,NULL,NULL,'thaa',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(34,0,NULL,'dv','maldivian','1129420800',NULL,NULL,NULL,'thaa',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(35,0,NULL,'dz','dzongkha','1129420800',NULL,NULL,NULL,'tibt',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(36,0,NULL,'ee','ewe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(37,0,NULL,'el','modern greek (1453-)','1129420800',NULL,NULL,NULL,'grek',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(38,0,NULL,'en','english','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(39,0,NULL,'eo','esperanto','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(40,0,NULL,'es','castilian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(40,0,NULL,'es','spanish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(41,0,NULL,'et','estonian','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(42,0,NULL,'eu','basque','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(43,0,NULL,'fa','persian','1129420800',NULL,NULL,NULL,'arab',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(44,0,NULL,'ff','fulah','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(45,0,NULL,'fi','finnish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(46,0,NULL,'fj','fijian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(47,0,NULL,'fo','faroese','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(48,0,NULL,'fr','french','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(49,0,NULL,'fy','western frisian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(50,0,NULL,'ga','irish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(51,0,NULL,'gd','gaelic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(51,0,NULL,'gd','scottish gaelic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(52,0,NULL,'gl','galician','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(53,0,NULL,'gn','guarani','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(54,0,NULL,'gu','gujarati','1129420800',NULL,NULL,NULL,'gujr',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(55,0,NULL,'gv','manx','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(56,0,NULL,'ha','hausa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(57,0,NULL,'he','hebrew','1129420800',NULL,NULL,NULL,'hebr',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(58,0,NULL,'hi','hindi','1129420800',NULL,NULL,NULL,'deva',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(59,0,NULL,'ho','hiri motu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(60,0,NULL,'hr','croatian','1129420800',NULL,NULL,NULL,'latn','sh',NULL,NULL); -INSERT INTO "iana_records" VALUES(61,0,NULL,'ht','haitian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(61,0,NULL,'ht','haitian creole','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(62,0,NULL,'hu','hungarian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(63,0,NULL,'hy','armenian','1129420800',NULL,NULL,NULL,'armn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(64,0,NULL,'hz','herero','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(65,0,NULL,'ia','interlingua (international auxiliary language association)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(66,0,NULL,'id','indonesian','1129420800',NULL,NULL,NULL,'latn','ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(67,0,NULL,'ie','interlingue','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(67,0,NULL,'ie','occidental','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(68,0,NULL,'ig','igbo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(69,0,NULL,'ii','nuosu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(69,0,NULL,'ii','sichuan yi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(70,0,NULL,'ik','inupiaq','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(71,0,NULL,'in','indonesian','1129420800',599616000,'id',NULL,'latn','ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(72,0,NULL,'io','ido','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(73,0,NULL,'is','icelandic','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(74,0,NULL,'it','italian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(75,0,NULL,'iu','inuktitut','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(76,0,NULL,'iw','hebrew','1129420800',599616000,'he',NULL,'hebr',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(77,0,NULL,'ja','japanese','1129420800',NULL,NULL,NULL,'jpan',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(78,0,NULL,'ji','yiddish','1129420800',599616000,'yi',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(79,0,NULL,'jv','javanese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(80,0,NULL,'jw','javanese','1129420800',997660800,'jv',NULL,NULL,NULL,NULL,'published by error in table 1 of iso 639:1988'); -INSERT INTO "iana_records" VALUES(81,0,NULL,'ka','georgian','1129420800',NULL,NULL,NULL,'geor',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(82,0,NULL,'kg','kongo','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(83,0,NULL,'ki','gikuyu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(83,0,NULL,'ki','kikuyu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(84,0,NULL,'kj','kuanyama','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(84,0,NULL,'kj','kwanyama','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(85,0,NULL,'kk','kazakh','1129420800',NULL,NULL,NULL,'cyrl',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(86,0,NULL,'kl','greenlandic','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(86,0,NULL,'kl','kalaallisut','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(87,0,NULL,'km','central khmer','1129420800',NULL,NULL,NULL,'khmr',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(88,0,NULL,'kn','kannada','1129420800',NULL,NULL,NULL,'knda',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(89,0,NULL,'ko','korean','1129420800',NULL,NULL,NULL,'kore',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(90,0,NULL,'kr','kanuri','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(91,0,NULL,'ks','kashmiri','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(92,0,NULL,'ku','kurdish','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(93,0,NULL,'kv','komi','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(94,0,NULL,'kw','cornish','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(95,0,NULL,'ky','kirghiz','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(95,0,NULL,'ky','kyrgyz','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(96,0,NULL,'la','latin','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(97,0,NULL,'lb','letzeburgesch','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(97,0,NULL,'lb','luxembourgish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(98,0,NULL,'lg','ganda','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(99,0,NULL,'li','limburgan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(99,0,NULL,'li','limburger','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(99,0,NULL,'li','limburgish','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(100,0,NULL,'ln','lingala','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(101,0,NULL,'lo','lao','1129420800',NULL,NULL,NULL,'laoo',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(102,0,NULL,'lt','lithuanian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(103,0,NULL,'lu','luba-katanga','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(104,0,NULL,'lv','latvian','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(105,0,NULL,'mg','malagasy','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(106,0,NULL,'mh','marshallese','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(107,0,NULL,'mi','maori','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(108,0,NULL,'mk','macedonian','1129420800',NULL,NULL,NULL,'cyrl',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(109,0,NULL,'ml','malayalam','1129420800',NULL,NULL,NULL,'mlym',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(110,0,NULL,'mn','mongolian','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(111,0,NULL,'mo','moldavian','1129420800',1227312000,'ro',NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(111,0,NULL,'mo','moldovan','1129420800',1227312000,'ro',NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(112,0,NULL,'mr','marathi','1129420800',NULL,NULL,NULL,'deva',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(113,0,NULL,'ms','malay (macrolanguage)','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(114,0,NULL,'mt','maltese','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(115,0,NULL,'my','burmese','1129420800',NULL,NULL,NULL,'mymr',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(116,0,NULL,'na','nauru','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(117,0,NULL,'nb','norwegian bokmål','1129420800',NULL,NULL,NULL,'latn','no',NULL,NULL); -INSERT INTO "iana_records" VALUES(118,0,NULL,'nd','north ndebele','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(119,0,NULL,'ne','nepali','1129420800',NULL,NULL,NULL,'deva',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(120,0,NULL,'ng','ndonga','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(121,0,NULL,'nl','dutch','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(121,0,NULL,'nl','flemish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(122,0,NULL,'nn','norwegian nynorsk','1129420800',NULL,NULL,NULL,'latn','no',NULL,NULL); -INSERT INTO "iana_records" VALUES(123,0,NULL,'no','norwegian','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(124,0,NULL,'nr','south ndebele','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(125,0,NULL,'nv','navaho','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(125,0,NULL,'nv','navajo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(126,0,NULL,'ny','chewa','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(126,0,NULL,'ny','chichewa','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(126,0,NULL,'ny','nyanja','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(127,0,NULL,'oc','occitan (post 1500)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(128,0,NULL,'oj','ojibwa','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(129,0,NULL,'om','oromo','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(130,0,NULL,'or','oriya','1129420800',NULL,NULL,NULL,'orya',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(131,0,NULL,'os','ossetian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(131,0,NULL,'os','ossetic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(132,0,NULL,'pa','panjabi','1129420800',NULL,NULL,NULL,'guru',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(132,0,NULL,'pa','punjabi','1129420800',NULL,NULL,NULL,'guru',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(133,0,NULL,'pi','pali','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(134,0,NULL,'pl','polish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(135,0,NULL,'ps','pashto','1129420800',NULL,NULL,NULL,'arab',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(135,0,NULL,'ps','pushto','1129420800',NULL,NULL,NULL,'arab',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(136,0,NULL,'pt','portuguese','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(137,0,NULL,'qu','quechua','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(138,0,NULL,'rm','romansh','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(139,0,NULL,'rn','rundi','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(140,0,NULL,'ro','moldavian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(140,0,NULL,'ro','moldovan','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(140,0,NULL,'ro','romanian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(141,0,NULL,'ru','russian','1129420800',NULL,NULL,NULL,'cyrl',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(142,0,NULL,'rw','kinyarwanda','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(143,0,NULL,'sa','sanskrit','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(144,0,NULL,'sc','sardinian','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(145,0,NULL,'sd','sindhi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(146,0,NULL,'se','northern sami','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(147,0,NULL,'sg','sango','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(148,0,NULL,'sh','serbo-croatian','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage','sr, hr, bs are preferred for most modern uses'); -INSERT INTO "iana_records" VALUES(149,0,NULL,'si','sinhala','1129420800',NULL,NULL,NULL,'sinh',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(149,0,NULL,'si','sinhalese','1129420800',NULL,NULL,NULL,'sinh',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(150,0,NULL,'sk','slovak','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(151,0,NULL,'sl','slovenian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(152,0,NULL,'sm','samoan','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(153,0,NULL,'sn','shona','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(154,0,NULL,'so','somali','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(155,0,NULL,'sq','albanian','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(156,0,NULL,'sr','serbian','1129420800',NULL,NULL,NULL,NULL,'sh',NULL,NULL); -INSERT INTO "iana_records" VALUES(157,0,NULL,'ss','swati','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(158,0,NULL,'st','southern sotho','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(159,0,NULL,'su','sundanese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(160,0,NULL,'sv','swedish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(161,0,NULL,'sw','swahili (macrolanguage)','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(162,0,NULL,'ta','tamil','1129420800',NULL,NULL,NULL,'taml',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(163,0,NULL,'te','telugu','1129420800',NULL,NULL,NULL,'telu',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(164,0,NULL,'tg','tajik','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(165,0,NULL,'th','thai','1129420800',NULL,NULL,NULL,'thai',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(166,0,NULL,'ti','tigrinya','1129420800',NULL,NULL,NULL,'ethi',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(167,0,NULL,'tk','turkmen','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(168,0,NULL,'tl','tagalog','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(169,0,NULL,'tn','tswana','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(170,0,NULL,'to','tonga (tonga islands)','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(171,0,NULL,'tr','turkish','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(172,0,NULL,'ts','tsonga','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(173,0,NULL,'tt','tatar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(174,0,NULL,'tw','twi','1129420800',NULL,NULL,NULL,NULL,'ak',NULL,NULL); -INSERT INTO "iana_records" VALUES(175,0,NULL,'ty','tahitian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(176,0,NULL,'ug','uighur','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(176,0,NULL,'ug','uyghur','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(177,0,NULL,'uk','ukrainian','1129420800',NULL,NULL,NULL,'cyrl',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(178,0,NULL,'ur','urdu','1129420800',NULL,NULL,NULL,'arab',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(179,0,NULL,'uz','uzbek','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(180,0,NULL,'ve','venda','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(181,0,NULL,'vi','vietnamese','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(182,0,NULL,'vo','volapük','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(183,0,NULL,'wa','walloon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(184,0,NULL,'wo','wolof','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(185,0,NULL,'xh','xhosa','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(186,0,NULL,'yi','yiddish','1129420800',NULL,NULL,NULL,'hebr',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(187,0,NULL,'yo','yoruba','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(188,0,NULL,'za','chuang','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(188,0,NULL,'za','zhuang','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(189,0,NULL,'zh','chinese','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(190,0,NULL,'zu','zulu','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(191,0,NULL,'aaa','ghotuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(192,0,NULL,'aab','alumu-tesu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(193,0,NULL,'aac','ari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(194,0,NULL,'aad','amal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(195,0,NULL,'aae','arbëreshë albanian','1248825600',NULL,NULL,NULL,NULL,'sq',NULL,NULL); -INSERT INTO "iana_records" VALUES(196,0,NULL,'aaf','aranadan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(197,0,NULL,'aag','ambrak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(198,0,NULL,'aah','abu'' arapesh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(199,0,NULL,'aai','arifama-miniafia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(200,0,NULL,'aak','ankave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(201,0,NULL,'aal','afade','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(202,0,NULL,'aam','aramanik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(203,0,NULL,'aan','anambé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(204,0,NULL,'aao','algerian saharan arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(205,0,NULL,'aap','pará arára','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(206,0,NULL,'aaq','eastern abnaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(207,0,NULL,'aas','aasáx','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(208,0,NULL,'aat','arvanitika albanian','1248825600',NULL,NULL,NULL,NULL,'sq',NULL,NULL); -INSERT INTO "iana_records" VALUES(209,0,NULL,'aau','abau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(210,0,NULL,'aav','austro-asiatic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(211,0,NULL,'aaw','solong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(212,0,NULL,'aax','mandobo atas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(213,0,NULL,'aaz','amarasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(214,0,NULL,'aba','abé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(215,0,NULL,'abb','bankon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(216,0,NULL,'abc','ambala ayta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(217,0,NULL,'abd','manide','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(218,0,NULL,'abe','western abnaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(219,0,NULL,'abf','abai sungai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(220,0,NULL,'abg','abaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(221,0,NULL,'abh','tajiki arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(222,0,NULL,'abi','abidji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(223,0,NULL,'abj','aka-bea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(224,0,NULL,'abl','lampung nyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(225,0,NULL,'abm','abanyom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(226,0,NULL,'abn','abua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(227,0,NULL,'abo','abon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(228,0,NULL,'abp','abellen ayta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(229,0,NULL,'abq','abaza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(230,0,NULL,'abr','abron','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(231,0,NULL,'abs','ambonese malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(232,0,NULL,'abt','ambulas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(233,0,NULL,'abu','abure','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(234,0,NULL,'abv','baharna arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(235,0,NULL,'abw','pal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(236,0,NULL,'abx','inabaknon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(237,0,NULL,'aby','aneme wake','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(238,0,NULL,'abz','abui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(239,0,NULL,'aca','achagua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(240,0,NULL,'acb','Áncá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(241,0,NULL,'acd','gikyode','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(242,0,NULL,'ace','achinese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(243,0,NULL,'acf','saint lucian creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(244,0,NULL,'ach','acoli','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(245,0,NULL,'aci','aka-cari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(246,0,NULL,'ack','aka-kora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(247,0,NULL,'acl','akar-bale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(248,0,NULL,'acm','mesopotamian arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(249,0,NULL,'acn','achang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(250,0,NULL,'acp','eastern acipa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(251,0,NULL,'acq','ta''izzi-adeni arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(252,0,NULL,'acr','achi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(253,0,NULL,'acs','acroá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(254,0,NULL,'act','achterhoeks','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(255,0,NULL,'acu','achuar-shiwiar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(256,0,NULL,'acv','achumawi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(257,0,NULL,'acw','hijazi arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(258,0,NULL,'acx','omani arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(259,0,NULL,'acy','cypriot arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(260,0,NULL,'acz','acheron','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(261,0,NULL,'ada','adangme','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(262,0,NULL,'adb','adabe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(263,0,NULL,'add','dzodinka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(264,0,NULL,'ade','adele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(265,0,NULL,'adf','dhofari arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(266,0,NULL,'adg','andegerebinha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(267,0,NULL,'adh','adhola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(268,0,NULL,'adi','adi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(269,0,NULL,'adj','adioukrou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(270,0,NULL,'adl','galo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(271,0,NULL,'adn','adang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(272,0,NULL,'ado','abu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(273,0,NULL,'adp','adap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(274,0,NULL,'adq','adangbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(275,0,NULL,'adr','adonara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(276,0,NULL,'ads','adamorobe sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(277,0,NULL,'adt','adnyamathanha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(278,0,NULL,'adu','aduge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(279,0,NULL,'adw','amundava','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(280,0,NULL,'adx','amdo tibetan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(281,0,NULL,'ady','adygei','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(281,0,NULL,'ady','adyghe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(282,0,NULL,'adz','adzera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(283,0,NULL,'aea','areba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(284,0,NULL,'aeb','tunisian arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(285,0,NULL,'aec','saidi arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(286,0,NULL,'aed','argentine sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(287,0,NULL,'aee','northeast pashayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(288,0,NULL,'aek','haeke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(289,0,NULL,'ael','ambele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(290,0,NULL,'aem','arem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(291,0,NULL,'aen','armenian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(292,0,NULL,'aeq','aer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(293,0,NULL,'aer','eastern arrernte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(294,0,NULL,'aes','alsea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(295,0,NULL,'aeu','akeu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(296,0,NULL,'aew','ambakich','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(297,0,NULL,'aey','amele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(298,0,NULL,'aez','aeka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(299,0,NULL,'afa','afro-asiatic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(300,0,NULL,'afb','gulf arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(301,0,NULL,'afd','andai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(302,0,NULL,'afe','putukwam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(303,0,NULL,'afg','afghan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(304,0,NULL,'afh','afrihili','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(305,0,NULL,'afi','akrukay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(306,0,NULL,'afk','nanubae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(307,0,NULL,'afn','defaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(308,0,NULL,'afo','eloyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(309,0,NULL,'afp','tapei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(310,0,NULL,'afs','afro-seminole creole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(311,0,NULL,'aft','afitti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(312,0,NULL,'afu','awutu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(313,0,NULL,'afz','obokuitai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(314,0,NULL,'aga','aguano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(315,0,NULL,'agb','legbo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(316,0,NULL,'agc','agatu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(317,0,NULL,'agd','agarabi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(318,0,NULL,'age','angal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(319,0,NULL,'agf','arguni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(320,0,NULL,'agg','angor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(321,0,NULL,'agh','ngelima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(322,0,NULL,'agi','agariya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(323,0,NULL,'agj','argobba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(324,0,NULL,'agk','isarog agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(325,0,NULL,'agl','fembe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(326,0,NULL,'agm','angaataha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(327,0,NULL,'agn','agutaynen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(328,0,NULL,'ago','tainae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(329,0,NULL,'agp','paranan','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see apf, prf'); -INSERT INTO "iana_records" VALUES(330,0,NULL,'agq','aghem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(331,0,NULL,'agr','aguaruna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(332,0,NULL,'ags','esimbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(333,0,NULL,'agt','central cagayan agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(334,0,NULL,'agu','aguacateco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(335,0,NULL,'agv','remontado dumagat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(336,0,NULL,'agw','kahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(337,0,NULL,'agx','aghul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(338,0,NULL,'agy','southern alta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(339,0,NULL,'agz','mt. iriga agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(340,0,NULL,'aha','ahanta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(341,0,NULL,'ahb','axamb','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(342,0,NULL,'ahg','qimant','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(343,0,NULL,'ahh','aghu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(344,0,NULL,'ahi','tiagbamrin aizi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(345,0,NULL,'ahk','akha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(346,0,NULL,'ahl','igo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(347,0,NULL,'ahm','mobumrin aizi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(348,0,NULL,'ahn','Àhàn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(349,0,NULL,'aho','ahom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(350,0,NULL,'ahp','aproumu aizi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(351,0,NULL,'ahr','ahirani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(352,0,NULL,'ahs','ashe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(353,0,NULL,'aht','ahtena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(354,0,NULL,'aia','arosi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(355,0,NULL,'aib','ainu (china)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(356,0,NULL,'aic','ainbai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(357,0,NULL,'aid','alngith','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(358,0,NULL,'aie','amara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(359,0,NULL,'aif','agi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(360,0,NULL,'aig','antigua and barbuda creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(361,0,NULL,'aih','ai-cham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(362,0,NULL,'aii','assyrian neo-aramaic','1248825600',NULL,NULL,NULL,NULL,'syr',NULL,NULL); -INSERT INTO "iana_records" VALUES(363,0,NULL,'aij','lishanid noshan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(364,0,NULL,'aik','ake','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(365,0,NULL,'ail','aimele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(366,0,NULL,'aim','aimol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(367,0,NULL,'ain','ainu (japan)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(368,0,NULL,'aio','aiton','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(369,0,NULL,'aip','burumakok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(370,0,NULL,'aiq','aimaq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(371,0,NULL,'air','airoran','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(372,0,NULL,'ais','nataoran amis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(373,0,NULL,'ait','arikem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(374,0,NULL,'aiw','aari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(375,0,NULL,'aix','aighon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(376,0,NULL,'aiy','ali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(377,0,NULL,'aja','aja (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(378,0,NULL,'ajg','aja (benin)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(379,0,NULL,'aji','ajië','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(380,0,NULL,'ajp','south levantine arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(381,0,NULL,'ajt','judeo-tunisian arabic','1248825600',NULL,NULL,NULL,NULL,'jrb',NULL,NULL); -INSERT INTO "iana_records" VALUES(382,0,NULL,'aju','judeo-moroccan arabic','1248825600',NULL,NULL,NULL,NULL,'jrb',NULL,NULL); -INSERT INTO "iana_records" VALUES(383,0,NULL,'ajw','ajawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(384,0,NULL,'ajz','amri karbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(385,0,NULL,'akb','batak angkola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(386,0,NULL,'akc','mpur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(387,0,NULL,'akd','ukpet-ehom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(388,0,NULL,'ake','akawaio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(389,0,NULL,'akf','akpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(390,0,NULL,'akg','anakalangu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(391,0,NULL,'akh','angal heneng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(392,0,NULL,'aki','aiome','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(393,0,NULL,'akj','aka-jeru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(394,0,NULL,'akk','akkadian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(395,0,NULL,'akl','aklanon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(396,0,NULL,'akm','aka-bo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(397,0,NULL,'ako','akurio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(398,0,NULL,'akp','siwu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(399,0,NULL,'akq','ak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(400,0,NULL,'akr','araki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(401,0,NULL,'aks','akaselem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(402,0,NULL,'akt','akolet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(403,0,NULL,'aku','akum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(404,0,NULL,'akv','akhvakh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(405,0,NULL,'akw','akwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(406,0,NULL,'akx','aka-kede','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(407,0,NULL,'aky','aka-kol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(408,0,NULL,'akz','alabama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(409,0,NULL,'ala','alago','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(410,0,NULL,'alc','qawasqar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(411,0,NULL,'ald','alladian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(412,0,NULL,'ale','aleut','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(413,0,NULL,'alf','alege','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(414,0,NULL,'alg','algonquian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(415,0,NULL,'alh','alawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(416,0,NULL,'ali','amaimon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(417,0,NULL,'alj','alangan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(418,0,NULL,'alk','alak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(419,0,NULL,'all','allar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(420,0,NULL,'alm','amblong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(421,0,NULL,'aln','gheg albanian','1248825600',NULL,NULL,NULL,NULL,'sq',NULL,NULL); -INSERT INTO "iana_records" VALUES(422,0,NULL,'alo','larike-wakasihu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(423,0,NULL,'alp','alune','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(424,0,NULL,'alq','algonquin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(425,0,NULL,'alr','alutor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(426,0,NULL,'als','tosk albanian','1248825600',NULL,NULL,NULL,NULL,'sq',NULL,NULL); -INSERT INTO "iana_records" VALUES(427,0,NULL,'alt','southern altai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(428,0,NULL,'alu','''are''are','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(429,0,NULL,'alv','atlantic-congo languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(430,0,NULL,'alw','alaba-k’abeena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(430,0,NULL,'alw','wanbasana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(431,0,NULL,'alx','amol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(432,0,NULL,'aly','alyawarr','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(433,0,NULL,'alz','alur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(434,0,NULL,'ama','amanayé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(435,0,NULL,'amb','ambo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(436,0,NULL,'amc','amahuaca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(437,0,NULL,'ame','yanesha''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(438,0,NULL,'amf','hamer-banna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(439,0,NULL,'amg','amarag','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(440,0,NULL,'ami','amis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(441,0,NULL,'amj','amdang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(442,0,NULL,'amk','ambai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(443,0,NULL,'aml','war-jaintia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(444,0,NULL,'amm','ama (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(445,0,NULL,'amn','amanab','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(446,0,NULL,'amo','amo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(447,0,NULL,'amp','alamblak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(448,0,NULL,'amq','amahai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(449,0,NULL,'amr','amarakaeri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(450,0,NULL,'ams','southern amami-oshima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(451,0,NULL,'amt','amto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(452,0,NULL,'amu','guerrero amuzgo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(453,0,NULL,'amv','ambelau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(454,0,NULL,'amw','western neo-aramaic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(455,0,NULL,'amx','anmatyerre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(456,0,NULL,'amy','ami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(457,0,NULL,'amz','atampaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(458,0,NULL,'ana','andaqui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(459,0,NULL,'anb','andoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(460,0,NULL,'anc','ngas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(461,0,NULL,'and','ansus','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(462,0,NULL,'ane','xârâcùù','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(463,0,NULL,'anf','animere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(464,0,NULL,'ang','old english (ca. 450-1100)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(465,0,NULL,'anh','nend','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(466,0,NULL,'ani','andi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(467,0,NULL,'anj','anor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(468,0,NULL,'ank','goemai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(469,0,NULL,'anl','anu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(470,0,NULL,'anm','anal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(471,0,NULL,'ann','obolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(472,0,NULL,'ano','andoque','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(473,0,NULL,'anp','angika','1141776000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(474,0,NULL,'anq','jarawa (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(475,0,NULL,'anr','andh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(476,0,NULL,'ans','anserma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(477,0,NULL,'ant','antakarinya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(478,0,NULL,'anu','anuak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(479,0,NULL,'anv','denya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(480,0,NULL,'anw','anaang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(481,0,NULL,'anx','andra-hus','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(482,0,NULL,'any','anyin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(483,0,NULL,'anz','anem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(484,0,NULL,'aoa','angolar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(485,0,NULL,'aob','abom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(486,0,NULL,'aoc','pemon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(487,0,NULL,'aod','andarum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(488,0,NULL,'aoe','angal enen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(489,0,NULL,'aof','bragat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(490,0,NULL,'aog','angoram','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(491,0,NULL,'aoh','arma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(492,0,NULL,'aoi','anindilyakwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(493,0,NULL,'aoj','mufian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(494,0,NULL,'aok','arhö','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(495,0,NULL,'aol','alor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(496,0,NULL,'aom','Ömie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(497,0,NULL,'aon','bumbita arapesh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(498,0,NULL,'aor','aore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(499,0,NULL,'aos','taikat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(500,0,NULL,'aot','a''tong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(501,0,NULL,'aox','atorada','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(502,0,NULL,'aoz','uab meto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(503,0,NULL,'apa','apache languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(504,0,NULL,'apb','sa''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(505,0,NULL,'apc','north levantine arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(506,0,NULL,'apd','sudanese arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(507,0,NULL,'ape','bukiyip','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(508,0,NULL,'apf','pahanan agta','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(509,0,NULL,'apg','ampanang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(510,0,NULL,'aph','athpariya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(511,0,NULL,'api','apiaká','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(512,0,NULL,'apj','jicarilla apache','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(513,0,NULL,'apk','kiowa apache','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(514,0,NULL,'apl','lipan apache','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(515,0,NULL,'apm','mescalero-chiricahua apache','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(516,0,NULL,'apn','apinayé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(517,0,NULL,'apo','apalik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(518,0,NULL,'app','apma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(519,0,NULL,'apq','a-pucikwar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(520,0,NULL,'apr','arop-lokep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(521,0,NULL,'aps','arop-sissano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(522,0,NULL,'apt','apatani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(523,0,NULL,'apu','apurinã','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(524,0,NULL,'apv','alapmunte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(525,0,NULL,'apw','western apache','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(526,0,NULL,'apx','aputai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(527,0,NULL,'apy','apalaí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(528,0,NULL,'apz','safeyoka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(529,0,NULL,'aqa','alacalufan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(530,0,NULL,'aqc','archi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(531,0,NULL,'aqg','arigidi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(532,0,NULL,'aql','algic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(533,0,NULL,'aqm','atohwaim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(534,0,NULL,'aqn','northern alta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(535,0,NULL,'aqp','atakapa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(536,0,NULL,'aqr','arhâ','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(537,0,NULL,'aqz','akuntsu','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(538,0,NULL,'arb','standard arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(539,0,NULL,'arc','imperial aramaic (700-300 bce)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(539,0,NULL,'arc','official aramaic (700-300 bce)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(540,0,NULL,'ard','arabana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(541,0,NULL,'are','western arrarnta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(542,0,NULL,'arh','arhuaco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(543,0,NULL,'ari','arikara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(544,0,NULL,'arj','arapaso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(545,0,NULL,'ark','arikapú','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(546,0,NULL,'arl','arabela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(547,0,NULL,'arn','mapuche','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(547,0,NULL,'arn','mapudungun','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(548,0,NULL,'aro','araona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(549,0,NULL,'arp','arapaho','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(550,0,NULL,'arq','algerian arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(551,0,NULL,'arr','karo (brazil)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(552,0,NULL,'ars','najdi arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(553,0,NULL,'art','artificial languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(554,0,NULL,'aru','arawá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(554,0,NULL,'aru','aruá (amazonas state)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(555,0,NULL,'arv','arbore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(556,0,NULL,'arw','arawak','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(557,0,NULL,'arx','aruá (rodonia state)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(558,0,NULL,'ary','moroccan arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(559,0,NULL,'arz','egyptian arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(560,0,NULL,'asa','asu (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(561,0,NULL,'asb','assiniboine','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(562,0,NULL,'asc','casuarina coast asmat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(563,0,NULL,'asd','asas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(564,0,NULL,'ase','american sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(565,0,NULL,'asf','australian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(566,0,NULL,'asg','cishingini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(567,0,NULL,'ash','abishira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(568,0,NULL,'asi','buruwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(569,0,NULL,'asj','nsari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(570,0,NULL,'ask','ashkun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(571,0,NULL,'asl','asilulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(572,0,NULL,'asn','xingú asuriní','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(573,0,NULL,'aso','dano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(574,0,NULL,'asp','algerian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(575,0,NULL,'asq','austrian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(576,0,NULL,'asr','asuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(577,0,NULL,'ass','ipulo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(578,0,NULL,'ast','asturian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(578,0,NULL,'ast','asturleonese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(578,0,NULL,'ast','bable','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(578,0,NULL,'ast','leonese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(579,0,NULL,'asu','tocantins asurini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(580,0,NULL,'asv','asoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(581,0,NULL,'asw','australian aborigines sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(582,0,NULL,'asx','muratayak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(583,0,NULL,'asy','yaosakor asmat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(584,0,NULL,'asz','as','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(585,0,NULL,'ata','pele-ata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(586,0,NULL,'atb','zaiwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(587,0,NULL,'atc','atsahuaca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(588,0,NULL,'atd','ata manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(589,0,NULL,'ate','atemble','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(590,0,NULL,'atg','ivbie north-okpela-arhe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(591,0,NULL,'ath','athapascan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(592,0,NULL,'ati','attié','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(593,0,NULL,'atj','atikamekw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(594,0,NULL,'atk','ati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(595,0,NULL,'atl','mt. iraya agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(596,0,NULL,'atm','ata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(597,0,NULL,'atn','ashtiani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(598,0,NULL,'ato','atong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(599,0,NULL,'atp','pudtol atta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(600,0,NULL,'atq','aralle-tabulahan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(601,0,NULL,'atr','waimiri-atroari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(602,0,NULL,'ats','gros ventre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(603,0,NULL,'att','pamplona atta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(604,0,NULL,'atu','reel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(605,0,NULL,'atv','northern altai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(606,0,NULL,'atw','atsugewi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(607,0,NULL,'atx','arutani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(608,0,NULL,'aty','aneityum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(609,0,NULL,'atz','arta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(610,0,NULL,'aua','asumboa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(611,0,NULL,'aub','alugu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(612,0,NULL,'auc','waorani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(613,0,NULL,'aud','anuta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(614,0,NULL,'aue','=/kx''au//''ein','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(615,0,NULL,'auf','arauan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(616,0,NULL,'aug','aguna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(617,0,NULL,'auh','aushi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(618,0,NULL,'aui','anuki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(619,0,NULL,'auj','awjilah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(620,0,NULL,'auk','heyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(621,0,NULL,'aul','aulua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(622,0,NULL,'aum','asu (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(623,0,NULL,'aun','molmo one','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(624,0,NULL,'auo','auyokawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(625,0,NULL,'aup','makayam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(626,0,NULL,'auq','anus','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(626,0,NULL,'auq','korur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(627,0,NULL,'aur','aruek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(628,0,NULL,'aus','australian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(629,0,NULL,'aut','austral','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(630,0,NULL,'auu','auye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(631,0,NULL,'auw','awyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(632,0,NULL,'aux','aurá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(633,0,NULL,'auy','awiyaana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(634,0,NULL,'auz','uzbeki arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(635,0,NULL,'avb','avau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(636,0,NULL,'avd','alviri-vidari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(637,0,NULL,'avi','avikam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(638,0,NULL,'avk','kotava','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(639,0,NULL,'avl','eastern egyptian bedawi arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(640,0,NULL,'avn','avatime','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(641,0,NULL,'avo','agavotaguerra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(642,0,NULL,'avs','aushiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(643,0,NULL,'avt','au','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(644,0,NULL,'avu','avokaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(645,0,NULL,'avv','avá-canoeiro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(646,0,NULL,'awa','awadhi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(647,0,NULL,'awb','awa (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(648,0,NULL,'awc','cicipu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(649,0,NULL,'awd','arawakan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(650,0,NULL,'awe','awetí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(651,0,NULL,'awh','awbono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(652,0,NULL,'awi','aekyom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(653,0,NULL,'awk','awabakal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(654,0,NULL,'awm','arawum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(655,0,NULL,'awn','awngi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(656,0,NULL,'awo','awak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(657,0,NULL,'awr','awera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(658,0,NULL,'aws','south awyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(659,0,NULL,'awt','araweté','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(660,0,NULL,'awu','central awyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(661,0,NULL,'awv','jair awyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(662,0,NULL,'aww','awun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(663,0,NULL,'awx','awara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(664,0,NULL,'awy','edera awyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(665,0,NULL,'axb','abipon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(666,0,NULL,'axg','mato grosso arára','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(667,0,NULL,'axk','yaka (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(668,0,NULL,'axm','middle armenian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(669,0,NULL,'axx','xaragure','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(670,0,NULL,'aya','awar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(671,0,NULL,'ayb','ayizo gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(672,0,NULL,'ayc','southern aymara','1248825600',NULL,NULL,NULL,NULL,'ay',NULL,NULL); -INSERT INTO "iana_records" VALUES(673,0,NULL,'ayd','ayabadhu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(674,0,NULL,'aye','ayere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(675,0,NULL,'ayg','ginyanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(676,0,NULL,'ayh','hadrami arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(677,0,NULL,'ayi','leyigha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(678,0,NULL,'ayk','akuku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(679,0,NULL,'ayl','libyan arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(680,0,NULL,'ayn','sanaani arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(681,0,NULL,'ayo','ayoreo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(682,0,NULL,'ayp','north mesopotamian arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(683,0,NULL,'ayq','ayi (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(684,0,NULL,'ayr','central aymara','1248825600',NULL,NULL,NULL,NULL,'ay',NULL,NULL); -INSERT INTO "iana_records" VALUES(685,0,NULL,'ays','sorsogon ayta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(686,0,NULL,'ayt','magbukun ayta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(687,0,NULL,'ayu','ayu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(688,0,NULL,'ayx','ayi (china)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(689,0,NULL,'ayy','tayabas ayta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(690,0,NULL,'ayz','mai brat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(691,0,NULL,'aza','azha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(692,0,NULL,'azb','south azerbaijani','1248825600',NULL,NULL,NULL,NULL,'az',NULL,NULL); -INSERT INTO "iana_records" VALUES(693,0,NULL,'azc','uto-aztecan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(694,0,NULL,'azg','san pedro amuzgos amuzgo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(695,0,NULL,'azj','north azerbaijani','1248825600',NULL,NULL,NULL,NULL,'az',NULL,NULL); -INSERT INTO "iana_records" VALUES(696,0,NULL,'azm','ipalapa amuzgo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(697,0,NULL,'azo','awing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(698,0,NULL,'azt','faire atta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(699,0,NULL,'azz','highland puebla nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(700,0,NULL,'baa','babatana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(701,0,NULL,'bab','bainouk-gunyuño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(702,0,NULL,'bac','badui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(703,0,NULL,'bad','banda languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(704,0,NULL,'bae','baré','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(705,0,NULL,'baf','nubaca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(706,0,NULL,'bag','tuki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(707,0,NULL,'bah','bahamas creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(708,0,NULL,'bai','bamileke languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(709,0,NULL,'baj','barakai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(710,0,NULL,'bal','baluchi','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(711,0,NULL,'ban','balinese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(712,0,NULL,'bao','waimaha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(713,0,NULL,'bap','bantawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(714,0,NULL,'bar','bavarian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(715,0,NULL,'bas','basa (cameroon)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(716,0,NULL,'bat','baltic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(717,0,NULL,'bau','bada (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(718,0,NULL,'bav','vengo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(719,0,NULL,'baw','bambili-bambui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(720,0,NULL,'bax','bamun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(721,0,NULL,'bay','batuley','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(722,0,NULL,'baz','tunen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(723,0,NULL,'bba','baatonum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(724,0,NULL,'bbb','barai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(725,0,NULL,'bbc','batak toba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(726,0,NULL,'bbd','bau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(727,0,NULL,'bbe','bangba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(728,0,NULL,'bbf','baibai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(729,0,NULL,'bbg','barama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(730,0,NULL,'bbh','bugan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(731,0,NULL,'bbi','barombi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(732,0,NULL,'bbj','ghomálá''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(733,0,NULL,'bbk','babanki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(734,0,NULL,'bbl','bats','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(735,0,NULL,'bbm','babango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(736,0,NULL,'bbn','uneapa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(737,0,NULL,'bbo','konabéré','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(737,0,NULL,'bbo','northern bobo madaré','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(738,0,NULL,'bbp','west central banda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(739,0,NULL,'bbq','bamali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(740,0,NULL,'bbr','girawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(741,0,NULL,'bbs','bakpinka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(742,0,NULL,'bbt','mburku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(743,0,NULL,'bbu','kulung (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(744,0,NULL,'bbv','karnai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(745,0,NULL,'bbw','baba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(746,0,NULL,'bbx','bubia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(747,0,NULL,'bby','befang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(748,0,NULL,'bbz','babalia creole arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(749,0,NULL,'bca','central bai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(750,0,NULL,'bcb','bainouk-samik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(751,0,NULL,'bcc','southern balochi','1248825600',NULL,NULL,NULL,NULL,'bal',NULL,NULL); -INSERT INTO "iana_records" VALUES(752,0,NULL,'bcd','north babar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(753,0,NULL,'bce','bamenyam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(754,0,NULL,'bcf','bamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(755,0,NULL,'bcg','baga binari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(756,0,NULL,'bch','bariai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(757,0,NULL,'bci','baoulé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(758,0,NULL,'bcj','bardi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(759,0,NULL,'bck','bunaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(760,0,NULL,'bcl','central bicolano','1248825600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(761,0,NULL,'bcm','bannoni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(762,0,NULL,'bcn','bali (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(763,0,NULL,'bco','kaluli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(764,0,NULL,'bcp','bali (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(765,0,NULL,'bcq','bench','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(766,0,NULL,'bcr','babine','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(767,0,NULL,'bcs','kohumono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(768,0,NULL,'bct','bendi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(769,0,NULL,'bcu','awad bing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(770,0,NULL,'bcv','shoo-minda-nye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(771,0,NULL,'bcw','bana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(772,0,NULL,'bcy','bacama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(773,0,NULL,'bcz','bainouk-gunyaamolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(774,0,NULL,'bda','bayot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(775,0,NULL,'bdb','basap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(776,0,NULL,'bdc','emberá-baudó','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(777,0,NULL,'bdd','bunama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(778,0,NULL,'bde','bade','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(779,0,NULL,'bdf','biage','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(780,0,NULL,'bdg','bonggi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(781,0,NULL,'bdh','baka (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(782,0,NULL,'bdi','burun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(783,0,NULL,'bdj','bai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(784,0,NULL,'bdk','budukh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(785,0,NULL,'bdl','indonesian bajau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(786,0,NULL,'bdm','buduma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(787,0,NULL,'bdn','baldemu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(788,0,NULL,'bdo','morom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(789,0,NULL,'bdp','bende','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(790,0,NULL,'bdq','bahnar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(791,0,NULL,'bdr','west coast bajau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(792,0,NULL,'bds','burunge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(793,0,NULL,'bdt','bokoto','1248825600',NULL,NULL,NULL,NULL,'gba',NULL,NULL); -INSERT INTO "iana_records" VALUES(794,0,NULL,'bdu','oroko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(795,0,NULL,'bdv','bodo parja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(796,0,NULL,'bdw','baham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(797,0,NULL,'bdx','budong-budong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(798,0,NULL,'bdy','bandjalang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(799,0,NULL,'bdz','badeshi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(800,0,NULL,'bea','beaver','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(801,0,NULL,'beb','bebele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(802,0,NULL,'bec','iceve-maci','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(803,0,NULL,'bed','bedoanas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(804,0,NULL,'bee','byangsi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(805,0,NULL,'bef','benabena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(806,0,NULL,'beg','belait','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(807,0,NULL,'beh','biali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(808,0,NULL,'bei','bekati''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(809,0,NULL,'bej','bedawiyet','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(809,0,NULL,'bej','beja','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(810,0,NULL,'bek','bebeli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(811,0,NULL,'bem','bemba (zambia)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(812,0,NULL,'beo','beami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(813,0,NULL,'bep','besoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(814,0,NULL,'beq','beembe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(815,0,NULL,'ber','berber languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(816,0,NULL,'bes','besme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(817,0,NULL,'bet','guiberoua béte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(818,0,NULL,'beu','blagar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(819,0,NULL,'bev','daloa bété','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(820,0,NULL,'bew','betawi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(821,0,NULL,'bex','jur modo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(822,0,NULL,'bey','beli (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(823,0,NULL,'bez','bena (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(824,0,NULL,'bfa','bari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(825,0,NULL,'bfb','pauri bareli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(826,0,NULL,'bfc','northern bai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(827,0,NULL,'bfd','bafut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(828,0,NULL,'bfe','betaf','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(828,0,NULL,'bfe','tena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(829,0,NULL,'bff','bofi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(830,0,NULL,'bfg','busang kayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(831,0,NULL,'bfh','blafe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(832,0,NULL,'bfi','british sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(833,0,NULL,'bfj','bafanji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(834,0,NULL,'bfk','ban khor sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(835,0,NULL,'bfl','banda-ndélé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(836,0,NULL,'bfm','mmen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(837,0,NULL,'bfn','bunak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(838,0,NULL,'bfo','malba birifor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(839,0,NULL,'bfp','beba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(840,0,NULL,'bfq','badaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(841,0,NULL,'bfr','bazigar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(842,0,NULL,'bfs','southern bai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(843,0,NULL,'bft','balti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(844,0,NULL,'bfu','gahri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(845,0,NULL,'bfw','bondo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(846,0,NULL,'bfx','bantayanon','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(847,0,NULL,'bfy','bagheli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(848,0,NULL,'bfz','mahasu pahari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(849,0,NULL,'bga','gwamhi-wuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(850,0,NULL,'bgb','bobongko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(851,0,NULL,'bgc','haryanvi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(852,0,NULL,'bgd','rathwi bareli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(853,0,NULL,'bge','bauria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(854,0,NULL,'bgf','bangandu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(855,0,NULL,'bgg','bugun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(856,0,NULL,'bgi','giangan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(857,0,NULL,'bgj','bangolan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(858,0,NULL,'bgk','bit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(858,0,NULL,'bgk','buxinhua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(859,0,NULL,'bgl','bo (laos)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(860,0,NULL,'bgm','baga mboteni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(861,0,NULL,'bgn','western balochi','1248825600',NULL,NULL,NULL,NULL,'bal',NULL,NULL); -INSERT INTO "iana_records" VALUES(862,0,NULL,'bgo','baga koga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(863,0,NULL,'bgp','eastern balochi','1248825600',NULL,NULL,NULL,NULL,'bal',NULL,NULL); -INSERT INTO "iana_records" VALUES(864,0,NULL,'bgq','bagri','1248825600',NULL,NULL,NULL,NULL,'raj',NULL,NULL); -INSERT INTO "iana_records" VALUES(865,0,NULL,'bgr','bawm chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(866,0,NULL,'bgs','tagabawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(867,0,NULL,'bgt','bughotu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(868,0,NULL,'bgu','mbongno','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(869,0,NULL,'bgv','warkay-bipim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(870,0,NULL,'bgw','bhatri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(871,0,NULL,'bgx','balkan gagauz turkish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(872,0,NULL,'bgy','benggoi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(873,0,NULL,'bgz','banggai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(874,0,NULL,'bha','bharia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(875,0,NULL,'bhb','bhili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(876,0,NULL,'bhc','biga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(877,0,NULL,'bhd','bhadrawahi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(878,0,NULL,'bhe','bhaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(879,0,NULL,'bhf','odiai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(880,0,NULL,'bhg','binandere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(881,0,NULL,'bhh','bukharic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(882,0,NULL,'bhi','bhilali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(883,0,NULL,'bhj','bahing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(884,0,NULL,'bhk','albay bicolano','1248825600',1268265600,NULL,NULL,NULL,'bik',NULL,'see fbl, lbl, rbl, ubl'); -INSERT INTO "iana_records" VALUES(885,0,NULL,'bhl','bimin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(886,0,NULL,'bhm','bathari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(887,0,NULL,'bhn','bohtan neo-aramaic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(888,0,NULL,'bho','bhojpuri','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(889,0,NULL,'bhp','bima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(890,0,NULL,'bhq','tukang besi south','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(891,0,NULL,'bhr','bara malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(892,0,NULL,'bhs','buwal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(893,0,NULL,'bht','bhattiyali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(894,0,NULL,'bhu','bhunjia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(895,0,NULL,'bhv','bahau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(896,0,NULL,'bhw','biak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(897,0,NULL,'bhx','bhalay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(898,0,NULL,'bhy','bhele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(899,0,NULL,'bhz','bada (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(900,0,NULL,'bia','badimaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(901,0,NULL,'bib','bissa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(902,0,NULL,'bic','bikaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(903,0,NULL,'bid','bidiyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(904,0,NULL,'bie','bepour','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(905,0,NULL,'bif','biafada','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(906,0,NULL,'big','biangai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(907,0,NULL,'bij','vaghat-ya-bijim-legeri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(908,0,NULL,'bik','bikol','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(909,0,NULL,'bil','bile','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(910,0,NULL,'bim','bimoba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(911,0,NULL,'bin','bini','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(911,0,NULL,'bin','edo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(912,0,NULL,'bio','nai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(913,0,NULL,'bip','bila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(914,0,NULL,'biq','bipi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(915,0,NULL,'bir','bisorio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(916,0,NULL,'bit','berinomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(917,0,NULL,'biu','biete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(918,0,NULL,'biv','southern birifor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(919,0,NULL,'biw','kol (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(920,0,NULL,'bix','bijori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(921,0,NULL,'biy','birhor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(922,0,NULL,'biz','baloi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(923,0,NULL,'bja','budza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(924,0,NULL,'bjb','banggarla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(925,0,NULL,'bjc','bariji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(926,0,NULL,'bjd','bandjigali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(927,0,NULL,'bje','biao-jiao mien','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(928,0,NULL,'bjf','barzani jewish neo-aramaic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(929,0,NULL,'bjg','bidyogo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(930,0,NULL,'bjh','bahinemo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(931,0,NULL,'bji','burji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(932,0,NULL,'bjj','kanauji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(933,0,NULL,'bjk','barok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(934,0,NULL,'bjl','bulu (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(935,0,NULL,'bjm','bajelani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(936,0,NULL,'bjn','banjar','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(937,0,NULL,'bjo','mid-southern banda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(938,0,NULL,'bjq','southern betsimisaraka malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(939,0,NULL,'bjr','binumarien','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(940,0,NULL,'bjs','bajan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(941,0,NULL,'bjt','balanta-ganja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(942,0,NULL,'bju','busuu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(943,0,NULL,'bjv','bedjond','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(944,0,NULL,'bjw','bakwé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(945,0,NULL,'bjx','banao itneg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(946,0,NULL,'bjy','bayali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(947,0,NULL,'bjz','baruga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(948,0,NULL,'bka','kyak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(949,0,NULL,'bkb','finallig','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see ebk, obk'); -INSERT INTO "iana_records" VALUES(950,0,NULL,'bkc','baka (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(951,0,NULL,'bkd','binukid','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(951,0,NULL,'bkd','talaandig','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(952,0,NULL,'bkf','beeke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(953,0,NULL,'bkg','buraka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(954,0,NULL,'bkh','bakoko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(955,0,NULL,'bki','baki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(956,0,NULL,'bkj','pande','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(957,0,NULL,'bkk','brokskat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(958,0,NULL,'bkl','berik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(959,0,NULL,'bkm','kom (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(960,0,NULL,'bkn','bukitan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(961,0,NULL,'bko','kwa''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(962,0,NULL,'bkp','boko (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(963,0,NULL,'bkq','bakairí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(964,0,NULL,'bkr','bakumpai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(965,0,NULL,'bks','northern sorsoganon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(966,0,NULL,'bkt','boloki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(967,0,NULL,'bku','buhid','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(968,0,NULL,'bkv','bekwarra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(969,0,NULL,'bkw','bekwil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(970,0,NULL,'bkx','baikeno','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(971,0,NULL,'bky','bokyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(972,0,NULL,'bkz','bungku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(973,0,NULL,'bla','siksika','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(974,0,NULL,'blb','bilua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(975,0,NULL,'blc','bella coola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(976,0,NULL,'bld','bolango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(977,0,NULL,'ble','balanta-kentohe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(978,0,NULL,'blf','buol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(979,0,NULL,'blg','balau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(980,0,NULL,'blh','kuwaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(981,0,NULL,'bli','bolia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(982,0,NULL,'blj','bolongan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(983,0,NULL,'blk','pa''o karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(984,0,NULL,'bll','biloxi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(985,0,NULL,'blm','beli (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(986,0,NULL,'bln','southern catanduanes bicolano','1248825600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(987,0,NULL,'blo','anii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(988,0,NULL,'blp','blablanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(989,0,NULL,'blq','baluan-pam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(990,0,NULL,'blr','blang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(991,0,NULL,'bls','balaesang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(992,0,NULL,'blt','tai dam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(993,0,NULL,'blv','bolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(994,0,NULL,'blw','balangao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(995,0,NULL,'blx','mag-indi ayta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(996,0,NULL,'bly','notre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(997,0,NULL,'blz','balantak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(998,0,NULL,'bma','lame','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(999,0,NULL,'bmb','bembe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1000,0,NULL,'bmc','biem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1001,0,NULL,'bmd','baga manduri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1002,0,NULL,'bme','limassa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1003,0,NULL,'bmf','bom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1004,0,NULL,'bmg','bamwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1005,0,NULL,'bmh','kein','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1006,0,NULL,'bmi','bagirmi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1007,0,NULL,'bmj','bote-majhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1008,0,NULL,'bmk','ghayavi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1009,0,NULL,'bml','bomboli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1010,0,NULL,'bmm','northern betsimisaraka malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(1011,0,NULL,'bmn','bina (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1012,0,NULL,'bmo','bambalang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1013,0,NULL,'bmp','bulgebi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1014,0,NULL,'bmq','bomu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1015,0,NULL,'bmr','muinane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1016,0,NULL,'bms','bilma kanuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1017,0,NULL,'bmt','biao mon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1018,0,NULL,'bmu','burum-mindik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1019,0,NULL,'bmv','bum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1020,0,NULL,'bmw','bomwali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1021,0,NULL,'bmx','baimak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1022,0,NULL,'bmy','bemba (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1023,0,NULL,'bmz','baramu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1024,0,NULL,'bna','bonerate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1025,0,NULL,'bnb','bookan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1026,0,NULL,'bnc','bontok','1248825600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(1027,0,NULL,'bnd','banda (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1028,0,NULL,'bne','bintauna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1029,0,NULL,'bnf','masiwang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1030,0,NULL,'bng','benga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1031,0,NULL,'bni','bangi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1032,0,NULL,'bnj','eastern tawbuid','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1033,0,NULL,'bnk','bierebo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1034,0,NULL,'bnl','boon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1035,0,NULL,'bnm','batanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1036,0,NULL,'bnn','bunun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1037,0,NULL,'bno','bantoanon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1038,0,NULL,'bnp','bola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1039,0,NULL,'bnq','bantik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1040,0,NULL,'bnr','butmas-tur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1041,0,NULL,'bns','bundeli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1042,0,NULL,'bnt','bantu languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1043,0,NULL,'bnu','bentong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1044,0,NULL,'bnv','beneraf','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1044,0,NULL,'bnv','bonerif','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1044,0,NULL,'bnv','edwas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1045,0,NULL,'bnw','bisis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1046,0,NULL,'bnx','bangubangu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1047,0,NULL,'bny','bintulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1048,0,NULL,'bnz','beezen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1049,0,NULL,'boa','bora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1050,0,NULL,'bob','aweer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1051,0,NULL,'boe','mundabli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1052,0,NULL,'bof','bolon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1053,0,NULL,'bog','bamako sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1054,0,NULL,'boh','boma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1055,0,NULL,'boi','barbareño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1056,0,NULL,'boj','anjam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1057,0,NULL,'bok','bonjo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1058,0,NULL,'bol','bole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1059,0,NULL,'bom','berom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1060,0,NULL,'bon','bine','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1061,0,NULL,'boo','tiemacèwè bozo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1062,0,NULL,'bop','bonkiman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1063,0,NULL,'boq','bogaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1064,0,NULL,'bor','borôro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1065,0,NULL,'bot','bongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1066,0,NULL,'bou','bondei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1067,0,NULL,'bov','tuwuli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1068,0,NULL,'bow','rema','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1069,0,NULL,'box','buamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1070,0,NULL,'boy','bodo (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1071,0,NULL,'boz','tiéyaxo bozo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1072,0,NULL,'bpa','dakaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1073,0,NULL,'bpb','barbacoas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1074,0,NULL,'bpd','banda-banda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1075,0,NULL,'bpg','bonggo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1076,0,NULL,'bph','botlikh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1077,0,NULL,'bpi','bagupi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1078,0,NULL,'bpj','binji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1079,0,NULL,'bpk','orowe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1080,0,NULL,'bpl','broome pearling lugger pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1081,0,NULL,'bpm','biyom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1082,0,NULL,'bpn','dzao min','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1083,0,NULL,'bpo','anasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1084,0,NULL,'bpp','kaure','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1085,0,NULL,'bpq','banda malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1086,0,NULL,'bpr','koronadal blaan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1087,0,NULL,'bps','sarangani blaan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1088,0,NULL,'bpt','barrow point','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1089,0,NULL,'bpu','bongu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1090,0,NULL,'bpv','bian marind','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1091,0,NULL,'bpw','bo (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1092,0,NULL,'bpx','palya bareli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1093,0,NULL,'bpy','bishnupriya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1094,0,NULL,'bpz','bilba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1095,0,NULL,'bqa','tchumbuli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1096,0,NULL,'bqb','bagusa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1097,0,NULL,'bqc','boko (benin)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1098,0,NULL,'bqd','bung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1099,0,NULL,'bqf','baga kaloum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1100,0,NULL,'bqg','bago-kusuntu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1101,0,NULL,'bqh','baima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1102,0,NULL,'bqi','bakhtiari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1103,0,NULL,'bqj','bandial','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1104,0,NULL,'bqk','banda-mbrès','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1105,0,NULL,'bql','bilakura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1106,0,NULL,'bqm','wumboko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1107,0,NULL,'bqn','bulgarian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1108,0,NULL,'bqo','balo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1109,0,NULL,'bqp','busa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1110,0,NULL,'bqq','biritai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1111,0,NULL,'bqr','burusu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1112,0,NULL,'bqs','bosngun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1113,0,NULL,'bqt','bamukumbit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1114,0,NULL,'bqu','boguru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1115,0,NULL,'bqv','begbere-ejar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1116,0,NULL,'bqw','buru (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1117,0,NULL,'bqx','baangi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1118,0,NULL,'bqy','bengkala sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1119,0,NULL,'bqz','bakaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1120,0,NULL,'bra','braj','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1121,0,NULL,'brb','lave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1122,0,NULL,'brc','berbice creole dutch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1123,0,NULL,'brd','baraamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1124,0,NULL,'brf','bera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1125,0,NULL,'brg','baure','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1126,0,NULL,'brh','brahui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1127,0,NULL,'bri','mokpwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1128,0,NULL,'brj','bieria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1129,0,NULL,'brk','birked','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1130,0,NULL,'brl','birwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1131,0,NULL,'brm','barambu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1132,0,NULL,'brn','boruca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1133,0,NULL,'bro','brokkat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1134,0,NULL,'brp','barapasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1135,0,NULL,'brq','breri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1136,0,NULL,'brr','birao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1137,0,NULL,'brs','baras','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1138,0,NULL,'brt','bitare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1139,0,NULL,'bru','eastern bru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1140,0,NULL,'brv','western bru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1141,0,NULL,'brw','bellari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1142,0,NULL,'brx','bodo (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1143,0,NULL,'bry','burui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1144,0,NULL,'brz','bilbil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1145,0,NULL,'bsa','abinomn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1146,0,NULL,'bsb','brunei bisaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1147,0,NULL,'bsc','bassari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1147,0,NULL,'bsc','oniyan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1148,0,NULL,'bse','wushi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1149,0,NULL,'bsf','bauchi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1150,0,NULL,'bsg','bashkardi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1151,0,NULL,'bsh','kati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1152,0,NULL,'bsi','bassossi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1153,0,NULL,'bsj','bangwinji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1154,0,NULL,'bsk','burushaski','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1155,0,NULL,'bsl','basa-gumna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1156,0,NULL,'bsm','busami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1157,0,NULL,'bsn','barasana-eduria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1158,0,NULL,'bso','buso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1159,0,NULL,'bsp','baga sitemu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1160,0,NULL,'bsq','bassa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1161,0,NULL,'bsr','bassa-kontagora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1162,0,NULL,'bss','akoose','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1163,0,NULL,'bst','basketo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1164,0,NULL,'bsu','bahonsuai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1165,0,NULL,'bsv','baga sobané','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1166,0,NULL,'bsw','baiso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1167,0,NULL,'bsx','yangkam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1168,0,NULL,'bsy','sabah bisaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1169,0,NULL,'bta','bata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1170,0,NULL,'btb','beti (cameroon)','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see beb, bum, bxp, eto, ewo, fan, mct'); -INSERT INTO "iana_records" VALUES(1171,0,NULL,'btc','bati (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1172,0,NULL,'btd','batak dairi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1173,0,NULL,'bte','gamo-ningi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1174,0,NULL,'btf','birgit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1175,0,NULL,'btg','gagnoa bété','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1176,0,NULL,'bth','biatah bidayuh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1177,0,NULL,'bti','burate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1178,0,NULL,'btj','bacanese malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(1179,0,NULL,'btk','batak languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1180,0,NULL,'btl','bhatola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1181,0,NULL,'btm','batak mandailing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1182,0,NULL,'btn','ratagnon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1183,0,NULL,'bto','rinconada bikol','1248825600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(1184,0,NULL,'btp','budibud','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1185,0,NULL,'btq','batek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1186,0,NULL,'btr','baetora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1187,0,NULL,'bts','batak simalungun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1188,0,NULL,'btt','bete-bendi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1189,0,NULL,'btu','batu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1190,0,NULL,'btv','bateri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1191,0,NULL,'btw','butuanon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1192,0,NULL,'btx','batak karo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1193,0,NULL,'bty','bobot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1194,0,NULL,'btz','batak alas-kluet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1195,0,NULL,'bua','buriat','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(1196,0,NULL,'bub','bua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1197,0,NULL,'buc','bushi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1198,0,NULL,'bud','ntcham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1199,0,NULL,'bue','beothuk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1200,0,NULL,'buf','bushoong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1201,0,NULL,'bug','buginese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1202,0,NULL,'buh','younuo bunu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1203,0,NULL,'bui','bongili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1204,0,NULL,'buj','basa-gurmana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1205,0,NULL,'buk','bugawac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1206,0,NULL,'bum','bulu (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1207,0,NULL,'bun','sherbro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1208,0,NULL,'buo','terei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1209,0,NULL,'bup','busoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1210,0,NULL,'buq','brem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1211,0,NULL,'bus','bokobaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1212,0,NULL,'but','bungain','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1213,0,NULL,'buu','budu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1214,0,NULL,'buv','bun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1215,0,NULL,'buw','bubi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1216,0,NULL,'bux','boghom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1217,0,NULL,'buy','bullom so','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1218,0,NULL,'buz','bukwen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1219,0,NULL,'bva','barein','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1220,0,NULL,'bvb','bube','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1221,0,NULL,'bvc','baelelea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1222,0,NULL,'bvd','baeggu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1223,0,NULL,'bve','berau malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(1224,0,NULL,'bvf','boor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1225,0,NULL,'bvg','bonkeng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1226,0,NULL,'bvh','bure','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1227,0,NULL,'bvi','belanda viri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1228,0,NULL,'bvj','baan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1229,0,NULL,'bvk','bukat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1230,0,NULL,'bvl','bolivian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1231,0,NULL,'bvm','bamunka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1232,0,NULL,'bvn','buna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1233,0,NULL,'bvo','bolgo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1234,0,NULL,'bvq','birri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1235,0,NULL,'bvr','burarra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1236,0,NULL,'bvt','bati (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1237,0,NULL,'bvu','bukit malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(1238,0,NULL,'bvv','baniva','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1239,0,NULL,'bvw','boga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1240,0,NULL,'bvx','dibole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1241,0,NULL,'bvy','baybayanon','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1242,0,NULL,'bvz','bauzi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1243,0,NULL,'bwa','bwatoo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1244,0,NULL,'bwb','namosi-naitasiri-serua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1245,0,NULL,'bwc','bwile','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1246,0,NULL,'bwd','bwaidoka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1247,0,NULL,'bwe','bwe karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1248,0,NULL,'bwf','boselewa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1249,0,NULL,'bwg','barwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1250,0,NULL,'bwh','bishuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1251,0,NULL,'bwi','baniwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1252,0,NULL,'bwj','láá láá bwamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1253,0,NULL,'bwk','bauwaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1254,0,NULL,'bwl','bwela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1255,0,NULL,'bwm','biwat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1256,0,NULL,'bwn','wunai bunu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1257,0,NULL,'bwo','borna (ethiopia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1257,0,NULL,'bwo','boro (ethiopia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1258,0,NULL,'bwp','mandobo bawah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1259,0,NULL,'bwq','southern bobo madaré','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1260,0,NULL,'bwr','bura-pabir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1261,0,NULL,'bws','bomboma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1262,0,NULL,'bwt','bafaw-balong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1263,0,NULL,'bwu','buli (ghana)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1264,0,NULL,'bww','bwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1265,0,NULL,'bwx','bu-nao bunu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1266,0,NULL,'bwy','cwi bwamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1267,0,NULL,'bwz','bwisi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1268,0,NULL,'bxa','bauro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1269,0,NULL,'bxb','belanda bor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1270,0,NULL,'bxc','molengue','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1271,0,NULL,'bxd','pela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1272,0,NULL,'bxe','birale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1273,0,NULL,'bxf','bilur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1274,0,NULL,'bxg','bangala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1275,0,NULL,'bxh','buhutu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1276,0,NULL,'bxi','pirlatapa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1277,0,NULL,'bxj','bayungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1278,0,NULL,'bxk','bukusu','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(1278,0,NULL,'bxk','lubukusu','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(1279,0,NULL,'bxl','jalkunan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1280,0,NULL,'bxm','mongolia buriat','1248825600',NULL,NULL,NULL,NULL,'bua',NULL,NULL); -INSERT INTO "iana_records" VALUES(1281,0,NULL,'bxn','burduna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1282,0,NULL,'bxo','barikanchi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1283,0,NULL,'bxp','bebil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1284,0,NULL,'bxq','beele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1285,0,NULL,'bxr','russia buriat','1248825600',NULL,NULL,NULL,NULL,'bua',NULL,NULL); -INSERT INTO "iana_records" VALUES(1286,0,NULL,'bxs','busam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1287,0,NULL,'bxu','china buriat','1248825600',NULL,NULL,NULL,NULL,'bua',NULL,NULL); -INSERT INTO "iana_records" VALUES(1288,0,NULL,'bxv','berakou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1289,0,NULL,'bxw','bankagooma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1290,0,NULL,'bxx','borna (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1291,0,NULL,'bxz','binahari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1292,0,NULL,'bya','batak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1293,0,NULL,'byb','bikya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1294,0,NULL,'byc','ubaghara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1295,0,NULL,'byd','benyadu''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1296,0,NULL,'bye','pouye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1297,0,NULL,'byf','bete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1298,0,NULL,'byg','baygo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1299,0,NULL,'byh','bhujel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1300,0,NULL,'byi','buyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1301,0,NULL,'byj','bina (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1302,0,NULL,'byk','biao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1303,0,NULL,'byl','bayono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1304,0,NULL,'bym','bidyara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1305,0,NULL,'byn','bilin','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1305,0,NULL,'byn','blin','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1306,0,NULL,'byo','biyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1307,0,NULL,'byp','bumaji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1308,0,NULL,'byq','basay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1309,0,NULL,'byr','baruya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1310,0,NULL,'bys','burak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1311,0,NULL,'byt','berti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1312,0,NULL,'byv','medumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1313,0,NULL,'byw','belhariya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1314,0,NULL,'byx','qaqet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1315,0,NULL,'byy','buya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1316,0,NULL,'byz','banaro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1317,0,NULL,'bza','bandi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1318,0,NULL,'bzb','andio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1319,0,NULL,'bzd','bribri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1320,0,NULL,'bze','jenaama bozo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1321,0,NULL,'bzf','boikin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1322,0,NULL,'bzg','babuza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1323,0,NULL,'bzh','mapos buang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1324,0,NULL,'bzi','bisu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1325,0,NULL,'bzj','belize kriol english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1326,0,NULL,'bzk','nicaragua creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1327,0,NULL,'bzl','boano (sulawesi)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1328,0,NULL,'bzm','bolondo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1329,0,NULL,'bzn','boano (maluku)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1330,0,NULL,'bzo','bozaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1331,0,NULL,'bzp','kemberano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1332,0,NULL,'bzq','buli (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1333,0,NULL,'bzr','biri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1334,0,NULL,'bzs','brazilian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1335,0,NULL,'bzt','brithenig','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1336,0,NULL,'bzu','burmeso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1337,0,NULL,'bzv','bebe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1338,0,NULL,'bzw','basa (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1339,0,NULL,'bzx','hainyaxo bozo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1340,0,NULL,'bzy','obanliku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1341,0,NULL,'bzz','evant','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1342,0,NULL,'caa','chortí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1343,0,NULL,'cab','garifuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1344,0,NULL,'cac','chuj','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1345,0,NULL,'cad','caddo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1346,0,NULL,'cae','laalaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1346,0,NULL,'cae','lehar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1347,0,NULL,'caf','southern carrier','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1348,0,NULL,'cag','nivaclé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1349,0,NULL,'cah','cahuarano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1350,0,NULL,'cai','central american indian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1351,0,NULL,'caj','chané','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1352,0,NULL,'cak','cakchiquel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1352,0,NULL,'cak','kaqchikel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1353,0,NULL,'cal','carolinian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1354,0,NULL,'cam','cemuhî','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1355,0,NULL,'can','chambri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1356,0,NULL,'cao','chácobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1357,0,NULL,'cap','chipaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1358,0,NULL,'caq','car nicobarese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1359,0,NULL,'car','galibi carib','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1360,0,NULL,'cas','tsimané','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1361,0,NULL,'cau','caucasian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1362,0,NULL,'cav','cavineña','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1363,0,NULL,'caw','callawalla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1364,0,NULL,'cax','chiquitano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1365,0,NULL,'cay','cayuga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1366,0,NULL,'caz','canichana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1367,0,NULL,'cba','chibchan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1368,0,NULL,'cbb','cabiyarí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1369,0,NULL,'cbc','carapana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1370,0,NULL,'cbd','carijona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1371,0,NULL,'cbe','chipiajes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1372,0,NULL,'cbg','chimila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1373,0,NULL,'cbh','cagua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1374,0,NULL,'cbi','chachi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1375,0,NULL,'cbj','ede cabe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1376,0,NULL,'cbk','chavacano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1377,0,NULL,'cbl','bualkhaw chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1378,0,NULL,'cbn','nyahkur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1379,0,NULL,'cbo','izora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1380,0,NULL,'cbr','cashibo-cacataibo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1381,0,NULL,'cbs','cashinahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1382,0,NULL,'cbt','chayahuita','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1383,0,NULL,'cbu','candoshi-shapra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1384,0,NULL,'cbv','cacua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1385,0,NULL,'cbw','kinabalian','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1386,0,NULL,'cby','carabayo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1387,0,NULL,'cca','cauca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1388,0,NULL,'ccc','chamicuro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1389,0,NULL,'ccd','cafundo creole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1390,0,NULL,'cce','chopi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1391,0,NULL,'ccg','samba daka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1392,0,NULL,'cch','atsam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1393,0,NULL,'ccj','kasanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1394,0,NULL,'ccl','cutchi-swahili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1395,0,NULL,'ccm','malaccan creole malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1396,0,NULL,'ccn','north caucasian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1397,0,NULL,'cco','comaltepec chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1398,0,NULL,'ccp','chakma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1399,0,NULL,'ccq','chaungtha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1400,0,NULL,'ccr','cacaopera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1401,0,NULL,'ccs','south caucasian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1402,0,NULL,'cda','choni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1403,0,NULL,'cdc','chadic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1404,0,NULL,'cdd','caddoan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1405,0,NULL,'cde','chenchu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1406,0,NULL,'cdf','chiru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1407,0,NULL,'cdg','chamari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1408,0,NULL,'cdh','chambeali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1409,0,NULL,'cdi','chodri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1410,0,NULL,'cdj','churahi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1411,0,NULL,'cdm','chepang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1412,0,NULL,'cdn','chaudangsi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1413,0,NULL,'cdo','min dong chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(1414,0,NULL,'cdr','cinda-regi-tiyal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1415,0,NULL,'cds','chadian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1416,0,NULL,'cdy','chadong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1417,0,NULL,'cdz','koda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1418,0,NULL,'cea','lower chehalis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1419,0,NULL,'ceb','cebuano','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1420,0,NULL,'ceg','chamacoco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1421,0,NULL,'cel','celtic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1422,0,NULL,'cen','cen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1423,0,NULL,'cet','centúúm','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1424,0,NULL,'cfa','dijim-bwilim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1425,0,NULL,'cfd','cara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1426,0,NULL,'cfg','como karim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1427,0,NULL,'cfm','falam chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1428,0,NULL,'cga','changriwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1429,0,NULL,'cgc','kagayanen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1430,0,NULL,'cgg','chiga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1431,0,NULL,'cgk','chocangacakha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1432,0,NULL,'chb','chibcha','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1433,0,NULL,'chc','catawba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1434,0,NULL,'chd','highland oaxaca chontal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1435,0,NULL,'chf','tabasco chontal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1436,0,NULL,'chg','chagatai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1437,0,NULL,'chh','chinook','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1438,0,NULL,'chj','ojitlán chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1439,0,NULL,'chk','chuukese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1440,0,NULL,'chl','cahuilla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1441,0,NULL,'chm','mari (russia)','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(1442,0,NULL,'chn','chinook jargon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1443,0,NULL,'cho','choctaw','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1444,0,NULL,'chp','chipewyan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1444,0,NULL,'chp','dene suline','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1445,0,NULL,'chq','quiotepec chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1446,0,NULL,'chr','cherokee','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1447,0,NULL,'cht','cholón','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1448,0,NULL,'chw','chuwabu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1449,0,NULL,'chx','chantyal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1450,0,NULL,'chy','cheyenne','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1451,0,NULL,'chz','ozumacín chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1452,0,NULL,'cia','cia-cia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1453,0,NULL,'cib','ci gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1454,0,NULL,'cic','chickasaw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1455,0,NULL,'cid','chimariko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1456,0,NULL,'cie','cineni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1457,0,NULL,'cih','chinali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1458,0,NULL,'cik','chitkuli kinnauri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1459,0,NULL,'cim','cimbrian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1460,0,NULL,'cin','cinta larga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1461,0,NULL,'cip','chiapanec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1462,0,NULL,'cir','tiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1463,0,NULL,'ciw','chippewa','1248825600',NULL,NULL,NULL,NULL,'oj',NULL,NULL); -INSERT INTO "iana_records" VALUES(1464,0,NULL,'ciy','chaima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1465,0,NULL,'cja','western cham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1466,0,NULL,'cje','chru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1467,0,NULL,'cjh','upper chehalis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1468,0,NULL,'cji','chamalal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1469,0,NULL,'cjk','chokwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1470,0,NULL,'cjm','eastern cham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1471,0,NULL,'cjn','chenapian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1472,0,NULL,'cjo','ashéninka pajonal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1473,0,NULL,'cjp','cabécar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1474,0,NULL,'cjr','chorotega','1248825600',1268265600,'mom',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1475,0,NULL,'cjs','shor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1476,0,NULL,'cjv','chuave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1477,0,NULL,'cjy','jinyu chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(1478,0,NULL,'cka','khumi awa chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1479,0,NULL,'ckb','central kurdish','1248825600',NULL,NULL,NULL,NULL,'ku',NULL,NULL); -INSERT INTO "iana_records" VALUES(1480,0,NULL,'ckh','chak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1481,0,NULL,'ckl','cibak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1482,0,NULL,'cko','anufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1483,0,NULL,'ckq','kajakse','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1484,0,NULL,'ckr','kairak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1485,0,NULL,'cks','tayo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1486,0,NULL,'ckt','chukot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1487,0,NULL,'cku','koasati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1488,0,NULL,'ckv','kavalan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1489,0,NULL,'ckx','caka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1490,0,NULL,'cky','cakfem-mushere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1491,0,NULL,'ckz','cakchiquel-quiché mixed language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1492,0,NULL,'cla','ron','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1493,0,NULL,'clc','chilcotin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1494,0,NULL,'cld','chaldean neo-aramaic','1248825600',NULL,NULL,NULL,NULL,'syr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1495,0,NULL,'cle','lealao chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1496,0,NULL,'clh','chilisso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1497,0,NULL,'cli','chakali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1498,0,NULL,'clk','idu-mishmi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1499,0,NULL,'cll','chala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1500,0,NULL,'clm','clallam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1501,0,NULL,'clo','lowland oaxaca chontal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1502,0,NULL,'clu','caluyanun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1503,0,NULL,'clw','chulym','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1504,0,NULL,'cly','eastern highland chatino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1505,0,NULL,'cma','maa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1506,0,NULL,'cmc','chamic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1507,0,NULL,'cme','cerma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1508,0,NULL,'cmg','classical mongolian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1509,0,NULL,'cmi','emberá-chamí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1510,0,NULL,'cmk','chimakum','1248825600',1268265600,'xch',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1511,0,NULL,'cml','campalagian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1512,0,NULL,'cmm','michigamea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1513,0,NULL,'cmn','mandarin chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(1514,0,NULL,'cmo','central mnong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1515,0,NULL,'cmr','mro chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1516,0,NULL,'cms','messapic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1517,0,NULL,'cmt','camtho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1518,0,NULL,'cna','changthang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1519,0,NULL,'cnb','chinbon chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1520,0,NULL,'cnc','côông','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1521,0,NULL,'cng','northern qiang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1522,0,NULL,'cnh','haka chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1523,0,NULL,'cni','asháninka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1524,0,NULL,'cnk','khumi chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1525,0,NULL,'cnl','lalana chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1526,0,NULL,'cno','con','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1527,0,NULL,'cns','central asmat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1528,0,NULL,'cnt','tepetotutla chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1529,0,NULL,'cnu','chenoua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1530,0,NULL,'cnw','ngawn chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1531,0,NULL,'cnx','middle cornish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1532,0,NULL,'coa','cocos islands malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(1533,0,NULL,'cob','chicomuceltec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1534,0,NULL,'coc','cocopa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1535,0,NULL,'cod','cocama-cocamilla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1536,0,NULL,'coe','koreguaje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1537,0,NULL,'cof','colorado','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1538,0,NULL,'cog','chong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1539,0,NULL,'coh','chichonyi-chidzihana-chikauma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1539,0,NULL,'coh','chonyi-dzihana-kauma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1540,0,NULL,'coj','cochimi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1541,0,NULL,'cok','santa teresa cora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1542,0,NULL,'col','columbia-wenatchi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1543,0,NULL,'com','comanche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1544,0,NULL,'con','cofán','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1545,0,NULL,'coo','comox','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1546,0,NULL,'cop','coptic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1547,0,NULL,'coq','coquille','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1548,0,NULL,'cot','caquinte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1549,0,NULL,'cou','wamey','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1550,0,NULL,'cov','cao miao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1551,0,NULL,'cow','cowlitz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1552,0,NULL,'cox','nanti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1553,0,NULL,'coy','coyaima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1554,0,NULL,'coz','chochotec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1555,0,NULL,'cpa','palantla chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1556,0,NULL,'cpb','ucayali-yurúa ashéninka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1557,0,NULL,'cpc','ajyíninka apurucayali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1558,0,NULL,'cpe','english-based creoles and pidgins','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1559,0,NULL,'cpf','french-based creoles and pidgins','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1560,0,NULL,'cpg','cappadocian greek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1561,0,NULL,'cpi','chinese pidgin english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1562,0,NULL,'cpn','cherepon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1563,0,NULL,'cpp','portuguese-based creoles and pidgins','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1564,0,NULL,'cps','capiznon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1565,0,NULL,'cpu','pichis ashéninka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1566,0,NULL,'cpx','pu-xian chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(1567,0,NULL,'cpy','south ucayali ashéninka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1568,0,NULL,'cqd','chuanqiandian cluster miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(1569,0,NULL,'cqu','chilean quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(1570,0,NULL,'cra','chara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1571,0,NULL,'crb','island carib','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1572,0,NULL,'crc','lonwolwol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1573,0,NULL,'crd','coeur d''alene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1574,0,NULL,'crf','caramanta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1575,0,NULL,'crg','michif','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1576,0,NULL,'crh','crimean tatar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1576,0,NULL,'crh','crimean turkish','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1577,0,NULL,'cri','sãotomense','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1578,0,NULL,'crj','southern east cree','1248825600',NULL,NULL,NULL,NULL,'cr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1579,0,NULL,'crk','plains cree','1248825600',NULL,NULL,NULL,NULL,'cr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1580,0,NULL,'crl','northern east cree','1248825600',NULL,NULL,NULL,NULL,'cr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1581,0,NULL,'crm','moose cree','1248825600',NULL,NULL,NULL,NULL,'cr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1582,0,NULL,'crn','el nayar cora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1583,0,NULL,'cro','crow','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1584,0,NULL,'crp','creoles and pidgins','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1585,0,NULL,'crq','iyo''wujwa chorote','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1586,0,NULL,'crr','carolina algonquian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1587,0,NULL,'crs','seselwa creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1588,0,NULL,'crt','iyojwa''ja chorote','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1589,0,NULL,'crv','chaura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1590,0,NULL,'crw','chrau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1591,0,NULL,'crx','carrier','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1592,0,NULL,'cry','cori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1593,0,NULL,'crz','cruzeño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1594,0,NULL,'csa','chiltepec chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1595,0,NULL,'csb','kashubian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1596,0,NULL,'csc','catalan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1596,0,NULL,'csc','lengua de señas catalana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1596,0,NULL,'csc','llengua de signes catalana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1597,0,NULL,'csd','chiangmai sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1598,0,NULL,'cse','czech sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1599,0,NULL,'csf','cuba sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1600,0,NULL,'csg','chilean sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1601,0,NULL,'csh','asho chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1602,0,NULL,'csi','coast miwok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1603,0,NULL,'csk','jola-kasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1604,0,NULL,'csl','chinese sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1605,0,NULL,'csm','central sierra miwok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1606,0,NULL,'csn','colombian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1607,0,NULL,'cso','sochiapam chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1607,0,NULL,'cso','sochiapan chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1608,0,NULL,'csq','croatia sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1609,0,NULL,'csr','costa rican sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1610,0,NULL,'css','southern ohlone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1611,0,NULL,'cst','northern ohlone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1612,0,NULL,'csu','central sudanic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1613,0,NULL,'csw','swampy cree','1248825600',NULL,NULL,NULL,NULL,'cr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1614,0,NULL,'csy','siyin chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1615,0,NULL,'csz','coos','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1616,0,NULL,'cta','tataltepec chatino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1617,0,NULL,'ctc','chetco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1618,0,NULL,'ctd','tedim chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1619,0,NULL,'cte','tepinapa chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1620,0,NULL,'ctg','chittagonian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1621,0,NULL,'ctl','tlacoatzintepec chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1622,0,NULL,'ctm','chitimacha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1623,0,NULL,'ctn','chhintange','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1624,0,NULL,'cto','emberá-catío','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1625,0,NULL,'ctp','western highland chatino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1626,0,NULL,'cts','northern catanduanes bicolano','1248825600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(1627,0,NULL,'ctt','wayanad chetti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1628,0,NULL,'ctu','chol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1629,0,NULL,'ctz','zacatepec chatino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1630,0,NULL,'cua','cua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1631,0,NULL,'cub','cubeo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1632,0,NULL,'cuc','usila chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1633,0,NULL,'cug','cung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1634,0,NULL,'cuh','chuka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1634,0,NULL,'cuh','gichuka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1635,0,NULL,'cui','cuiba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1636,0,NULL,'cuj','mashco piro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1637,0,NULL,'cuk','san blas kuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1638,0,NULL,'cul','culina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1638,0,NULL,'cul','kulina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1639,0,NULL,'cum','cumeral','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1640,0,NULL,'cuo','cumanagoto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1641,0,NULL,'cup','cupeño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1642,0,NULL,'cuq','cun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1643,0,NULL,'cur','chhulung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1644,0,NULL,'cus','cushitic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1645,0,NULL,'cut','teutila cuicatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1646,0,NULL,'cuu','tai ya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1647,0,NULL,'cuv','cuvok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1648,0,NULL,'cuw','chukwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1649,0,NULL,'cux','tepeuxila cuicatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1650,0,NULL,'cvg','chug','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1651,0,NULL,'cvn','valle nacional chinantec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1652,0,NULL,'cwa','kabwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1653,0,NULL,'cwb','maindo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1654,0,NULL,'cwd','woods cree','1248825600',NULL,NULL,NULL,NULL,'cr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1655,0,NULL,'cwe','kwere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1656,0,NULL,'cwg','cheq wong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1656,0,NULL,'cwg','chewong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1657,0,NULL,'cwt','kuwaataay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1658,0,NULL,'cya','nopala chatino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1659,0,NULL,'cyb','cayubaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1660,0,NULL,'cyo','cuyonon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1661,0,NULL,'czh','huizhou chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(1662,0,NULL,'czk','knaanic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1663,0,NULL,'czn','zenzontepec chatino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1664,0,NULL,'czo','min zhong chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(1665,0,NULL,'czt','zotung chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1666,0,NULL,'daa','dangaléat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1667,0,NULL,'dac','dambi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1668,0,NULL,'dad','marik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1669,0,NULL,'dae','duupa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1670,0,NULL,'daf','dan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1671,0,NULL,'dag','dagbani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1672,0,NULL,'dah','gwahatike','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1673,0,NULL,'dai','day','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1674,0,NULL,'daj','dar fur daju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1675,0,NULL,'dak','dakota','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1676,0,NULL,'dal','dahalo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1677,0,NULL,'dam','damakawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1678,0,NULL,'dao','daai chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1679,0,NULL,'dap','nisi (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1680,0,NULL,'daq','dandami maria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1681,0,NULL,'dar','dargwa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1682,0,NULL,'das','daho-doo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1683,0,NULL,'dau','dar sila daju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1684,0,NULL,'dav','dawida','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1684,0,NULL,'dav','taita','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1685,0,NULL,'daw','davawenyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1686,0,NULL,'dax','dayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1687,0,NULL,'day','land dayak languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1688,0,NULL,'daz','dao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1689,0,NULL,'dba','bangi me','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1690,0,NULL,'dbb','deno','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1691,0,NULL,'dbd','dadiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1692,0,NULL,'dbe','dabe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1693,0,NULL,'dbf','edopi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1694,0,NULL,'dbg','dogul dom dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1695,0,NULL,'dbi','doka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1696,0,NULL,'dbj','ida''an','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1697,0,NULL,'dbl','dyirbal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1698,0,NULL,'dbm','duguri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1699,0,NULL,'dbn','duriankere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1700,0,NULL,'dbo','dulbu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1701,0,NULL,'dbp','duwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1702,0,NULL,'dbq','daba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1703,0,NULL,'dbr','dabarre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1704,0,NULL,'dbu','bondum dom dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1705,0,NULL,'dbv','dungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1706,0,NULL,'dby','dibiyaso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1707,0,NULL,'dcc','deccan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1708,0,NULL,'dcr','negerhollands','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1709,0,NULL,'ddd','dongotono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1710,0,NULL,'dde','doondo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1711,0,NULL,'ddg','fataluku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1712,0,NULL,'ddi','west goodenough','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1713,0,NULL,'ddj','jaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1714,0,NULL,'ddn','dendi (benin)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1715,0,NULL,'ddo','dido','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1716,0,NULL,'dds','donno so dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1717,0,NULL,'ddw','dawera-daweloor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1718,0,NULL,'dec','dagik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1719,0,NULL,'ded','dedua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1720,0,NULL,'dee','dewoin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1721,0,NULL,'def','dezfuli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1722,0,NULL,'deg','degema','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1723,0,NULL,'deh','dehwari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1724,0,NULL,'dei','demisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1725,0,NULL,'dek','dek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1726,0,NULL,'del','delaware','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(1727,0,NULL,'dem','dem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1728,0,NULL,'den','slave (athapascan)','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(1729,0,NULL,'dep','pidgin delaware','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1730,0,NULL,'deq','dendi (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1731,0,NULL,'der','deori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1732,0,NULL,'des','desano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1733,0,NULL,'dev','domung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1734,0,NULL,'dez','dengese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1735,0,NULL,'dga','southern dagaare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1736,0,NULL,'dgb','bunoge dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1737,0,NULL,'dgc','casiguran dumagat agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1738,0,NULL,'dgd','dagaari dioula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1739,0,NULL,'dge','degenan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1740,0,NULL,'dgg','doga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1741,0,NULL,'dgh','dghwede','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1742,0,NULL,'dgi','northern dagara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1743,0,NULL,'dgk','dagba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1744,0,NULL,'dgn','dagoman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1745,0,NULL,'dgo','dogri (individual language)','1248825600',NULL,NULL,NULL,NULL,'doi',NULL,NULL); -INSERT INTO "iana_records" VALUES(1746,0,NULL,'dgr','dogrib','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1747,0,NULL,'dgs','dogoso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1748,0,NULL,'dgu','degaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1749,0,NULL,'dgx','doghoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1750,0,NULL,'dgz','daga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1751,0,NULL,'dha','dhanwar (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1752,0,NULL,'dhd','dhundari','1248825600',NULL,NULL,NULL,NULL,'mwr',NULL,NULL); -INSERT INTO "iana_records" VALUES(1753,0,NULL,'dhg','dhangu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1754,0,NULL,'dhi','dhimal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1755,0,NULL,'dhl','dhalandji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1756,0,NULL,'dhm','zemba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1757,0,NULL,'dhn','dhanki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1758,0,NULL,'dho','dhodia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1759,0,NULL,'dhr','dhargari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1760,0,NULL,'dhs','dhaiso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1761,0,NULL,'dhu','dhurga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1762,0,NULL,'dhv','dehu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1763,0,NULL,'dhw','dhanwar (nepal)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1764,0,NULL,'dia','dia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1765,0,NULL,'dib','south central dinka','1248825600',NULL,NULL,NULL,NULL,'din',NULL,NULL); -INSERT INTO "iana_records" VALUES(1766,0,NULL,'dic','lakota dida','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1767,0,NULL,'did','didinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1768,0,NULL,'dif','dieri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1769,0,NULL,'dig','chidigo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1769,0,NULL,'dig','digo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1770,0,NULL,'dih','kumiai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1771,0,NULL,'dii','dimbong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1772,0,NULL,'dij','dai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1773,0,NULL,'dik','southwestern dinka','1248825600',NULL,NULL,NULL,NULL,'din',NULL,NULL); -INSERT INTO "iana_records" VALUES(1774,0,NULL,'dil','dilling','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1775,0,NULL,'dim','dime','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1776,0,NULL,'din','dinka','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(1777,0,NULL,'dio','dibo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1778,0,NULL,'dip','northeastern dinka','1248825600',NULL,NULL,NULL,NULL,'din',NULL,NULL); -INSERT INTO "iana_records" VALUES(1779,0,NULL,'diq','dimli (individual language)','1248825600',NULL,NULL,NULL,NULL,'zza',NULL,NULL); -INSERT INTO "iana_records" VALUES(1780,0,NULL,'dir','dirim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1781,0,NULL,'dis','dimasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1782,0,NULL,'dit','dirari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1783,0,NULL,'diu','diriku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1784,0,NULL,'diw','northwestern dinka','1248825600',NULL,NULL,NULL,NULL,'din',NULL,NULL); -INSERT INTO "iana_records" VALUES(1785,0,NULL,'dix','dixon reef','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1786,0,NULL,'diy','diuwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1787,0,NULL,'diz','ding','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1788,0,NULL,'djb','djinba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1789,0,NULL,'djc','dar daju daju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1790,0,NULL,'djd','djamindjung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1791,0,NULL,'dje','zarma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1792,0,NULL,'djf','djangun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1793,0,NULL,'dji','djinang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1794,0,NULL,'djj','djeebbana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1795,0,NULL,'djk','businenge tongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1795,0,NULL,'djk','eastern maroon creole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1795,0,NULL,'djk','nenge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1796,0,NULL,'djl','djiwarli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1797,0,NULL,'djm','jamsay dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1798,0,NULL,'djn','djauan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1799,0,NULL,'djo','jangkang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1800,0,NULL,'djr','djambarrpuyngu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1801,0,NULL,'dju','kapriman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1802,0,NULL,'djw','djawi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1803,0,NULL,'dka','dakpakha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1804,0,NULL,'dkk','dakka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1805,0,NULL,'dkl','kolum so dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1806,0,NULL,'dkr','kuijau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1807,0,NULL,'dks','southeastern dinka','1248825600',NULL,NULL,NULL,NULL,'din',NULL,NULL); -INSERT INTO "iana_records" VALUES(1808,0,NULL,'dkx','mazagway','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1809,0,NULL,'dlg','dolgan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1810,0,NULL,'dlm','dalmatian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1811,0,NULL,'dln','darlong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1812,0,NULL,'dma','duma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1813,0,NULL,'dmc','dimir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1814,0,NULL,'dme','dugwor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1815,0,NULL,'dmg','upper kinabatangan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1816,0,NULL,'dmk','domaaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1817,0,NULL,'dml','dameli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1818,0,NULL,'dmm','dama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1819,0,NULL,'dmn','mande languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1820,0,NULL,'dmo','kemezung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1821,0,NULL,'dmr','east damar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1822,0,NULL,'dms','dampelas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1823,0,NULL,'dmu','dubu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1823,0,NULL,'dmu','tebi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1824,0,NULL,'dmv','dumpas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1825,0,NULL,'dmx','dema','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1826,0,NULL,'dmy','demta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1826,0,NULL,'dmy','sowari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1827,0,NULL,'dna','upper grand valley dani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1828,0,NULL,'dnd','daonda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1829,0,NULL,'dne','ndendeule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1830,0,NULL,'dng','dungan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1831,0,NULL,'dni','lower grand valley dani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1832,0,NULL,'dnk','dengka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1833,0,NULL,'dnn','dzùùngoo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1834,0,NULL,'dnr','danaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1835,0,NULL,'dnt','mid grand valley dani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1836,0,NULL,'dnu','danau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1837,0,NULL,'dnw','western dani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1838,0,NULL,'dny','dení','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1839,0,NULL,'doa','dom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1840,0,NULL,'dob','dobu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1841,0,NULL,'doc','northern dong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1842,0,NULL,'doe','doe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1843,0,NULL,'dof','domu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1844,0,NULL,'doh','dong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1845,0,NULL,'doi','dogri (macrolanguage)','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(1846,0,NULL,'dok','dondo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1847,0,NULL,'dol','doso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1848,0,NULL,'don','toura (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1849,0,NULL,'doo','dongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1850,0,NULL,'dop','lukpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1851,0,NULL,'doq','dominican sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1852,0,NULL,'dor','dori''o','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1853,0,NULL,'dos','dogosé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1854,0,NULL,'dot','dass','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1855,0,NULL,'dov','dombe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1856,0,NULL,'dow','doyayo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1857,0,NULL,'dox','bussa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1858,0,NULL,'doy','dompo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1859,0,NULL,'doz','dorze','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1860,0,NULL,'dpp','papar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1861,0,NULL,'dra','dravidian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1862,0,NULL,'drb','dair','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1863,0,NULL,'drd','darmiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1864,0,NULL,'dre','dolpo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1865,0,NULL,'drg','rungus','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1866,0,NULL,'drh','darkhat','1248825600',1268265600,'khk',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1867,0,NULL,'dri','c''lela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1868,0,NULL,'drl','darling','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1869,0,NULL,'drn','west damar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1870,0,NULL,'dro','daro-matu melanau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1871,0,NULL,'drq','dura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1872,0,NULL,'drr','dororo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1873,0,NULL,'drs','gedeo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1874,0,NULL,'drt','drents','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1875,0,NULL,'dru','rukai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1876,0,NULL,'drw','darwazi','1248825600',1268265600,'prs',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1877,0,NULL,'dry','darai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1878,0,NULL,'dsb','lower sorbian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1879,0,NULL,'dse','dutch sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1880,0,NULL,'dsh','daasanach','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1881,0,NULL,'dsi','disa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1882,0,NULL,'dsl','danish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1883,0,NULL,'dsn','dusner','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1884,0,NULL,'dso','desiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1885,0,NULL,'dsq','tadaksahak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1886,0,NULL,'dta','daur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1887,0,NULL,'dtb','labuk-kinabatangan kadazan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1888,0,NULL,'dti','ana tinga dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1889,0,NULL,'dtk','tene kan dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1890,0,NULL,'dtm','tomo kan dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1891,0,NULL,'dtp','central dusun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1892,0,NULL,'dtr','lotud','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1893,0,NULL,'dts','toro so dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1894,0,NULL,'dtt','toro tegu dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1895,0,NULL,'dtu','tebul ure dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1896,0,NULL,'dua','duala','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1897,0,NULL,'dub','dubli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1898,0,NULL,'duc','duna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1899,0,NULL,'dud','hun-saare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1900,0,NULL,'due','umiray dumaget agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1901,0,NULL,'duf','dumbea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1902,0,NULL,'dug','chiduruma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1902,0,NULL,'dug','duruma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1903,0,NULL,'duh','dungra bhil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1904,0,NULL,'dui','dumun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1905,0,NULL,'duj','dhuwal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1906,0,NULL,'duk','duduela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1907,0,NULL,'dul','alabat island agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1908,0,NULL,'dum','middle dutch (ca. 1050-1350)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1909,0,NULL,'dun','dusun deyah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1910,0,NULL,'duo','dupaninan agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1911,0,NULL,'dup','duano','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(1912,0,NULL,'duq','dusun malang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1913,0,NULL,'dur','dii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1914,0,NULL,'dus','dumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1915,0,NULL,'duu','drung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1916,0,NULL,'duv','duvle','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1917,0,NULL,'duw','dusun witu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1918,0,NULL,'dux','duungooma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1919,0,NULL,'duy','dicamay agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1920,0,NULL,'duz','duli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1921,0,NULL,'dva','duau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1922,0,NULL,'dwa','diri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1923,0,NULL,'dwl','walo kumbe dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1924,0,NULL,'dwr','dawro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1925,0,NULL,'dws','dutton world speedwords','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1926,0,NULL,'dww','dawawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1927,0,NULL,'dya','dyan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1928,0,NULL,'dyb','dyaberdyaber','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1929,0,NULL,'dyd','dyugun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1930,0,NULL,'dyg','villa viciosa agta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1931,0,NULL,'dyi','djimini senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1932,0,NULL,'dym','yanda dom dogon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1933,0,NULL,'dyn','dyangadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1934,0,NULL,'dyo','jola-fonyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1935,0,NULL,'dyu','dyula','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1936,0,NULL,'dyy','dyaabugay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1937,0,NULL,'dza','tunzu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1938,0,NULL,'dzd','daza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1939,0,NULL,'dzg','dazaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1940,0,NULL,'dzl','dzalakha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1941,0,NULL,'dzn','dzando','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1942,0,NULL,'ebg','ebughu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1943,0,NULL,'ebk','eastern bontok','1268265600',NULL,NULL,NULL,NULL,'bnc',NULL,NULL); -INSERT INTO "iana_records" VALUES(1944,0,NULL,'ebo','teke-ebo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1945,0,NULL,'ebr','ebrié','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1946,0,NULL,'ebu','embu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1946,0,NULL,'ebu','kiembu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1947,0,NULL,'ecr','eteocretan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1948,0,NULL,'ecs','ecuadorian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1949,0,NULL,'ecy','eteocypriot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1950,0,NULL,'eee','e','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1951,0,NULL,'efa','efai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1952,0,NULL,'efe','efe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1953,0,NULL,'efi','efik','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1954,0,NULL,'ega','ega','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1955,0,NULL,'egl','emilian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1956,0,NULL,'ego','eggon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1957,0,NULL,'egx','egyptian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(1958,0,NULL,'egy','egyptian (ancient)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1959,0,NULL,'ehu','ehueun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1960,0,NULL,'eip','eipomek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1961,0,NULL,'eit','eitiep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1962,0,NULL,'eiv','askopan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1963,0,NULL,'eja','ejamat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1964,0,NULL,'eka','ekajuk','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1965,0,NULL,'eke','ekit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1966,0,NULL,'ekg','ekari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1967,0,NULL,'eki','eki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1968,0,NULL,'ekk','standard estonian','1248825600',NULL,NULL,NULL,NULL,'et',NULL,NULL); -INSERT INTO "iana_records" VALUES(1969,0,NULL,'ekl','kol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1970,0,NULL,'ekm','elip','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1971,0,NULL,'eko','koti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1972,0,NULL,'ekp','ekpeye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1973,0,NULL,'ekr','yace','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1974,0,NULL,'eky','eastern kayah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1975,0,NULL,'ele','elepi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1976,0,NULL,'elh','el hugeirat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1977,0,NULL,'eli','nding','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1978,0,NULL,'elk','elkei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1979,0,NULL,'elm','eleme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1980,0,NULL,'elo','el molo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1981,0,NULL,'elp','elpaputih','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1982,0,NULL,'elu','elu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1983,0,NULL,'elx','elamite','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1984,0,NULL,'ema','emai-iuleha-ora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1985,0,NULL,'emb','embaloh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1986,0,NULL,'eme','emerillon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1987,0,NULL,'emg','eastern meohang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1988,0,NULL,'emi','mussau-emira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1989,0,NULL,'emk','eastern maninkakan','1248825600',NULL,NULL,NULL,NULL,'man',NULL,NULL); -INSERT INTO "iana_records" VALUES(1990,0,NULL,'emm','mamulique','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1991,0,NULL,'emn','eman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1992,0,NULL,'emo','emok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1993,0,NULL,'emp','northern emberá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1994,0,NULL,'ems','pacific gulf yupik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1995,0,NULL,'emu','eastern muria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1996,0,NULL,'emw','emplawas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1997,0,NULL,'emx','erromintxela','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1998,0,NULL,'emy','epigraphic mayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(1999,0,NULL,'ena','apali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2000,0,NULL,'enb','markweeta','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(2001,0,NULL,'enc','en','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2002,0,NULL,'end','ende','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2003,0,NULL,'enf','forest enets','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2004,0,NULL,'enh','tundra enets','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2005,0,NULL,'enm','middle english (1100-1500)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2006,0,NULL,'enn','engenni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2007,0,NULL,'eno','enggano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2008,0,NULL,'enq','enga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2009,0,NULL,'enr','emem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2009,0,NULL,'enr','emumu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2010,0,NULL,'enu','enu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2011,0,NULL,'env','enwan (edu state)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2012,0,NULL,'enw','enwan (akwa ibom state)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2013,0,NULL,'eot','beti (côte d''ivoire)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2014,0,NULL,'epi','epie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2015,0,NULL,'era','eravallan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2016,0,NULL,'erg','sie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2017,0,NULL,'erh','eruwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2018,0,NULL,'eri','ogea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2019,0,NULL,'erk','south efate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2020,0,NULL,'ero','horpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2021,0,NULL,'err','erre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2022,0,NULL,'ers','ersu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2023,0,NULL,'ert','eritai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2024,0,NULL,'erw','erokwanas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2025,0,NULL,'ese','ese ejja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2026,0,NULL,'esh','eshtehardi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2027,0,NULL,'esi','north alaskan inupiatun','1248825600',NULL,NULL,NULL,NULL,'ik',NULL,NULL); -INSERT INTO "iana_records" VALUES(2028,0,NULL,'esk','northwest alaska inupiatun','1248825600',NULL,NULL,NULL,NULL,'ik',NULL,NULL); -INSERT INTO "iana_records" VALUES(2029,0,NULL,'esl','egypt sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2030,0,NULL,'esm','esuma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2031,0,NULL,'esn','salvadoran sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2032,0,NULL,'eso','estonian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2033,0,NULL,'esq','esselen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2034,0,NULL,'ess','central siberian yupik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2035,0,NULL,'esu','central yupik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2036,0,NULL,'esx','eskimo-aleut languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2037,0,NULL,'etb','etebi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2038,0,NULL,'etc','etchemin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2039,0,NULL,'eth','ethiopian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2040,0,NULL,'etn','eton (vanuatu)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2041,0,NULL,'eto','eton (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2042,0,NULL,'etr','edolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2043,0,NULL,'ets','yekhee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2044,0,NULL,'ett','etruscan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2045,0,NULL,'etu','ejagham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2046,0,NULL,'etx','eten','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2047,0,NULL,'etz','semimi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2048,0,NULL,'euq','basque (family)','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2049,0,NULL,'eve','even','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2050,0,NULL,'evh','uvbie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2051,0,NULL,'evn','evenki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2052,0,NULL,'ewo','ewondo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2053,0,NULL,'ext','extremaduran','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2054,0,NULL,'eya','eyak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2055,0,NULL,'eyo','keiyo','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(2056,0,NULL,'eze','uzekwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2057,0,NULL,'faa','fasu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2058,0,NULL,'fab','fa d''ambu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2059,0,NULL,'fad','wagi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2060,0,NULL,'faf','fagani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2061,0,NULL,'fag','finongan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2062,0,NULL,'fah','baissa fali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2063,0,NULL,'fai','faiwol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2064,0,NULL,'faj','faita','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2065,0,NULL,'fak','fang (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2066,0,NULL,'fal','south fali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2067,0,NULL,'fam','fam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2068,0,NULL,'fan','fang (equatorial guinea)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2069,0,NULL,'fap','palor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2070,0,NULL,'far','fataleka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2071,0,NULL,'fat','fanti','1129420800',NULL,NULL,NULL,NULL,'ak',NULL,NULL); -INSERT INTO "iana_records" VALUES(2072,0,NULL,'fau','fayu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2073,0,NULL,'fax','fala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2074,0,NULL,'fay','southwestern fars','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2075,0,NULL,'faz','northwestern fars','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2076,0,NULL,'fbl','west albay bikol','1268265600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(2077,0,NULL,'fcs','quebec sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2078,0,NULL,'fer','feroge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2079,0,NULL,'ffi','foia foia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2080,0,NULL,'ffm','maasina fulfulde','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2081,0,NULL,'fgr','fongoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2082,0,NULL,'fia','nobiin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2083,0,NULL,'fie','fyer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2084,0,NULL,'fil','filipino','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2084,0,NULL,'fil','pilipino','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2085,0,NULL,'fip','fipa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2086,0,NULL,'fir','firan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2087,0,NULL,'fit','tornedalen finnish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2088,0,NULL,'fiu','finno-ugrian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2089,0,NULL,'fiw','fiwaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2090,0,NULL,'fkv','kven finnish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2091,0,NULL,'fla','kalispel-pend d''oreille','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2092,0,NULL,'flh','foau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2093,0,NULL,'fli','fali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2094,0,NULL,'fll','north fali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2095,0,NULL,'fln','flinders island','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2096,0,NULL,'flr','fuliiru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2097,0,NULL,'fly','tsotsitaal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2098,0,NULL,'fmp','fe''fe''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2099,0,NULL,'fmu','far western muria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2100,0,NULL,'fng','fanagalo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2101,0,NULL,'fni','fania','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2102,0,NULL,'fod','foodo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2103,0,NULL,'foi','foi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2104,0,NULL,'fom','foma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2105,0,NULL,'fon','fon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2106,0,NULL,'for','fore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2107,0,NULL,'fos','siraya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2108,0,NULL,'fox','formosan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2109,0,NULL,'fpe','fernando po creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2110,0,NULL,'fqs','fas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2111,0,NULL,'frc','cajun french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2112,0,NULL,'frd','fordata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2113,0,NULL,'frk','frankish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2114,0,NULL,'frm','middle french (ca. 1400-1600)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2115,0,NULL,'fro','old french (842-ca. 1400)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2116,0,NULL,'frp','arpitan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2116,0,NULL,'frp','francoprovençal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2117,0,NULL,'frq','forak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2118,0,NULL,'frr','northern frisian','1141776000',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2119,0,NULL,'frs','eastern frisian','1141776000',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2120,0,NULL,'frt','fortsenal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2121,0,NULL,'fse','finnish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2122,0,NULL,'fsl','french sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2123,0,NULL,'fss','finland-swedish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2123,0,NULL,'fss','finlandssvenskt teckenspråk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2123,0,NULL,'fss','suomenruotsalainen viittomakieli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2124,0,NULL,'fub','adamawa fulfulde','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2125,0,NULL,'fuc','pulaar','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2126,0,NULL,'fud','east futuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2127,0,NULL,'fue','borgu fulfulde','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2128,0,NULL,'fuf','pular','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2129,0,NULL,'fuh','western niger fulfulde','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2130,0,NULL,'fui','bagirmi fulfulde','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2131,0,NULL,'fuj','ko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2132,0,NULL,'fum','fum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2133,0,NULL,'fun','fulniô','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2134,0,NULL,'fuq','central-eastern niger fulfulde','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2135,0,NULL,'fur','friulian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2136,0,NULL,'fut','futuna-aniwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2137,0,NULL,'fuu','furu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2138,0,NULL,'fuv','nigerian fulfulde','1248825600',NULL,NULL,NULL,NULL,'ff',NULL,NULL); -INSERT INTO "iana_records" VALUES(2139,0,NULL,'fuy','fuyug','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2140,0,NULL,'fvr','fur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2141,0,NULL,'fwa','fwâi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2142,0,NULL,'fwe','fwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2143,0,NULL,'gaa','ga','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2144,0,NULL,'gab','gabri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2145,0,NULL,'gac','mixed great andamanese','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2146,0,NULL,'gad','gaddang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2147,0,NULL,'gae','guarequena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2148,0,NULL,'gaf','gende','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2149,0,NULL,'gag','gagauz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2150,0,NULL,'gah','alekano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2151,0,NULL,'gai','borei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2152,0,NULL,'gaj','gadsup','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2153,0,NULL,'gak','gamkonora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2154,0,NULL,'gal','galoli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2155,0,NULL,'gam','kandawo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2156,0,NULL,'gan','gan chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(2157,0,NULL,'gao','gants','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2158,0,NULL,'gap','gal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2159,0,NULL,'gaq','gata''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2160,0,NULL,'gar','galeya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2161,0,NULL,'gas','adiwasi garasia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2162,0,NULL,'gat','kenati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2163,0,NULL,'gau','mudhili gadaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2164,0,NULL,'gav','gabutamon','1248825600',1268265600,'dev',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2165,0,NULL,'gaw','nobonob','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2166,0,NULL,'gax','borana-arsi-guji oromo','1248825600',NULL,NULL,NULL,NULL,'om',NULL,NULL); -INSERT INTO "iana_records" VALUES(2167,0,NULL,'gay','gayo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2168,0,NULL,'gaz','west central oromo','1248825600',NULL,NULL,NULL,NULL,'om',NULL,NULL); -INSERT INTO "iana_records" VALUES(2169,0,NULL,'gba','gbaya (central african republic)','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(2170,0,NULL,'gbb','kaytetye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2171,0,NULL,'gbc','garawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2172,0,NULL,'gbd','karadjeri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2173,0,NULL,'gbe','niksek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2174,0,NULL,'gbf','gaikundi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2175,0,NULL,'gbg','gbanziri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2176,0,NULL,'gbh','defi gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2177,0,NULL,'gbi','galela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2178,0,NULL,'gbj','bodo gadaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2179,0,NULL,'gbk','gaddi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2180,0,NULL,'gbl','gamit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2181,0,NULL,'gbm','garhwali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2182,0,NULL,'gbn','mo''da','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2183,0,NULL,'gbo','northern grebo','1248825600',NULL,NULL,NULL,NULL,'grb',NULL,NULL); -INSERT INTO "iana_records" VALUES(2184,0,NULL,'gbp','gbaya-bossangoa','1248825600',NULL,NULL,NULL,NULL,'gba',NULL,NULL); -INSERT INTO "iana_records" VALUES(2185,0,NULL,'gbq','gbaya-bozoum','1248825600',NULL,NULL,NULL,NULL,'gba',NULL,NULL); -INSERT INTO "iana_records" VALUES(2186,0,NULL,'gbr','gbagyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2187,0,NULL,'gbs','gbesi gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2188,0,NULL,'gbu','gagadu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2189,0,NULL,'gbv','gbanu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2190,0,NULL,'gbx','eastern xwla gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2191,0,NULL,'gby','gbari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2192,0,NULL,'gbz','zoroastrian dari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2193,0,NULL,'gcc','mali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2194,0,NULL,'gcd','ganggalida','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2195,0,NULL,'gce','galice','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2196,0,NULL,'gcf','guadeloupean creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2197,0,NULL,'gcl','grenadian creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2198,0,NULL,'gcn','gaina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2199,0,NULL,'gcr','guianese creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2200,0,NULL,'gct','colonia tovar german','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2201,0,NULL,'gda','gade lohar','1248825600',NULL,NULL,NULL,NULL,'raj',NULL,NULL); -INSERT INTO "iana_records" VALUES(2202,0,NULL,'gdb','pottangi ollar gadaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2203,0,NULL,'gdc','gugu badhun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2204,0,NULL,'gdd','gedaged','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2205,0,NULL,'gde','gude','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2206,0,NULL,'gdf','guduf-gava','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2207,0,NULL,'gdg','ga''dang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2208,0,NULL,'gdh','gadjerawang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2209,0,NULL,'gdi','gundi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2210,0,NULL,'gdj','gurdjar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2211,0,NULL,'gdk','gadang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2212,0,NULL,'gdl','dirasha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2213,0,NULL,'gdm','laal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2214,0,NULL,'gdn','umanakaina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2215,0,NULL,'gdo','ghodoberi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2216,0,NULL,'gdq','mehri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2217,0,NULL,'gdr','wipi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2218,0,NULL,'gdu','gudu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2219,0,NULL,'gdx','godwari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2220,0,NULL,'gea','geruma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2221,0,NULL,'geb','kire','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2222,0,NULL,'gec','gboloo grebo','1248825600',NULL,NULL,NULL,NULL,'grb',NULL,NULL); -INSERT INTO "iana_records" VALUES(2223,0,NULL,'ged','gade','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2224,0,NULL,'geg','gengle','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2225,0,NULL,'geh','hutterisch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2225,0,NULL,'geh','hutterite german','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2226,0,NULL,'gei','gebe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2227,0,NULL,'gej','gen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2228,0,NULL,'gek','yiwom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2229,0,NULL,'gel','kag-fer-jiir-koor-ror-us-zuksun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2230,0,NULL,'gem','germanic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2231,0,NULL,'geq','geme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2232,0,NULL,'ges','geser-gorom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2233,0,NULL,'gew','gera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2234,0,NULL,'gex','garre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2235,0,NULL,'gey','enya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2236,0,NULL,'gez','geez','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2237,0,NULL,'gfk','patpatar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2238,0,NULL,'gft','gafat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2239,0,NULL,'gga','gao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2240,0,NULL,'ggb','gbii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2241,0,NULL,'ggd','gugadj','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2242,0,NULL,'gge','guragone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2243,0,NULL,'ggg','gurgula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2244,0,NULL,'ggk','kungarakany','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2245,0,NULL,'ggl','ganglau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2246,0,NULL,'ggn','eastern gurung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2247,0,NULL,'ggo','southern gondi','1248825600',NULL,NULL,NULL,NULL,'gon',NULL,NULL); -INSERT INTO "iana_records" VALUES(2248,0,NULL,'ggr','aghu tharnggalu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2249,0,NULL,'ggt','gitua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2250,0,NULL,'ggu','gagu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2251,0,NULL,'ggw','gogodala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2252,0,NULL,'gha','ghadamès','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2253,0,NULL,'ghc','hiberno-scottish gaelic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2254,0,NULL,'ghe','southern ghale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2255,0,NULL,'ghh','northern ghale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2256,0,NULL,'ghk','geko karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2257,0,NULL,'ghl','ghulfan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2258,0,NULL,'ghn','ghanongga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2259,0,NULL,'gho','ghomara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2260,0,NULL,'ghr','ghera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2261,0,NULL,'ghs','guhu-samane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2262,0,NULL,'ght','kutang ghale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2263,0,NULL,'gia','kitja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2264,0,NULL,'gib','gibanawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2265,0,NULL,'gic','gail','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2266,0,NULL,'gid','gidar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2267,0,NULL,'gig','goaria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2268,0,NULL,'gil','gilbertese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2269,0,NULL,'gim','gimi (eastern highlands)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2270,0,NULL,'gin','hinukh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2271,0,NULL,'gio','gelao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2272,0,NULL,'gip','gimi (west new britain)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2273,0,NULL,'giq','green gelao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2274,0,NULL,'gir','red gelao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2275,0,NULL,'gis','north giziga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2276,0,NULL,'git','gitxsan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2277,0,NULL,'giw','white gelao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2278,0,NULL,'gix','gilima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2279,0,NULL,'giy','giyug','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2280,0,NULL,'giz','south giziga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2281,0,NULL,'gji','geji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2282,0,NULL,'gjk','kachi koli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2283,0,NULL,'gjn','gonja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2284,0,NULL,'gju','gujari','1248825600',NULL,NULL,NULL,NULL,'raj',NULL,NULL); -INSERT INTO "iana_records" VALUES(2285,0,NULL,'gka','guya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2286,0,NULL,'gke','ndai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2287,0,NULL,'gkn','gokana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2288,0,NULL,'gkp','guinea kpelle','1248825600',NULL,NULL,NULL,NULL,'kpe',NULL,NULL); -INSERT INTO "iana_records" VALUES(2289,0,NULL,'glc','bon gula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2290,0,NULL,'gld','nanai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2291,0,NULL,'glh','northwest pashayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2292,0,NULL,'gli','guliguli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2293,0,NULL,'glj','gula iro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2294,0,NULL,'glk','gilaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2295,0,NULL,'glo','galambu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2296,0,NULL,'glr','glaro-twabo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2297,0,NULL,'glu','gula (chad)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2298,0,NULL,'glw','glavda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2299,0,NULL,'gly','gule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2300,0,NULL,'gma','gambera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2301,0,NULL,'gmb','gula''alaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2302,0,NULL,'gmd','mághdì','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2303,0,NULL,'gme','east germanic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2304,0,NULL,'gmh','middle high german (ca. 1050-1500)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2305,0,NULL,'gml','middle low german','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2306,0,NULL,'gmm','gbaya-mbodomo','1248825600',NULL,NULL,NULL,NULL,'gba',NULL,NULL); -INSERT INTO "iana_records" VALUES(2307,0,NULL,'gmn','gimnime','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2308,0,NULL,'gmq','north germanic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2309,0,NULL,'gmu','gumalu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2310,0,NULL,'gmv','gamo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2311,0,NULL,'gmw','west germanic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2312,0,NULL,'gmx','magoma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2313,0,NULL,'gmy','mycenaean greek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2314,0,NULL,'gna','kaansa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2315,0,NULL,'gnb','gangte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2316,0,NULL,'gnc','guanche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2317,0,NULL,'gnd','zulgo-gemzek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2318,0,NULL,'gne','ganang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2319,0,NULL,'gng','ngangam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2320,0,NULL,'gnh','lere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2321,0,NULL,'gni','gooniyandi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2322,0,NULL,'gnk','//gana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2323,0,NULL,'gnl','gangulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2324,0,NULL,'gnm','ginuman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2325,0,NULL,'gnn','gumatj','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2326,0,NULL,'gno','northern gondi','1248825600',NULL,NULL,NULL,NULL,'gon',NULL,NULL); -INSERT INTO "iana_records" VALUES(2327,0,NULL,'gnq','gana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2328,0,NULL,'gnr','gureng gureng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2329,0,NULL,'gnt','guntai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2330,0,NULL,'gnu','gnau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2331,0,NULL,'gnw','western bolivian guaraní','1248825600',NULL,NULL,NULL,NULL,'gn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2332,0,NULL,'gnz','ganzi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2333,0,NULL,'goa','guro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2334,0,NULL,'gob','playero','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2335,0,NULL,'goc','gorakor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2336,0,NULL,'god','godié','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2337,0,NULL,'goe','gongduk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2338,0,NULL,'gof','gofa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2339,0,NULL,'gog','gogo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2340,0,NULL,'goh','old high german (ca. 750-1050)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2341,0,NULL,'goi','gobasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2342,0,NULL,'goj','gowlan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2343,0,NULL,'gok','gowli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2344,0,NULL,'gol','gola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2345,0,NULL,'gom','goan konkani','1248825600',NULL,NULL,NULL,NULL,'kok',NULL,NULL); -INSERT INTO "iana_records" VALUES(2346,0,NULL,'gon','gondi','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(2347,0,NULL,'goo','gone dau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2348,0,NULL,'gop','yeretuar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2349,0,NULL,'goq','gorap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2350,0,NULL,'gor','gorontalo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2351,0,NULL,'gos','gronings','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2352,0,NULL,'got','gothic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2353,0,NULL,'gou','gavar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2354,0,NULL,'gow','gorowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2355,0,NULL,'gox','gobu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2356,0,NULL,'goy','goundo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2357,0,NULL,'goz','gozarkhani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2358,0,NULL,'gpa','gupa-abawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2359,0,NULL,'gpn','taiap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2360,0,NULL,'gqa','ga''anda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2361,0,NULL,'gqi','guiqiong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2362,0,NULL,'gqn','guana (brazil)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2363,0,NULL,'gqr','gor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2364,0,NULL,'gra','rajput garasia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2365,0,NULL,'grb','grebo','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(2366,0,NULL,'grc','ancient greek (to 1453)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2367,0,NULL,'grd','guruntum-mbaaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2368,0,NULL,'grg','madi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2369,0,NULL,'grh','gbiri-niragu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2370,0,NULL,'gri','ghari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2371,0,NULL,'grj','southern grebo','1248825600',NULL,NULL,NULL,NULL,'grb',NULL,NULL); -INSERT INTO "iana_records" VALUES(2372,0,NULL,'grk','greek languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2373,0,NULL,'grm','kota marudu talantang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2374,0,NULL,'gro','groma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2375,0,NULL,'grq','gorovu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2376,0,NULL,'grr','taznatit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2377,0,NULL,'grs','gresi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2378,0,NULL,'grt','garo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2379,0,NULL,'gru','kistane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2380,0,NULL,'grv','central grebo','1248825600',NULL,NULL,NULL,NULL,'grb',NULL,NULL); -INSERT INTO "iana_records" VALUES(2381,0,NULL,'grw','gweda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2382,0,NULL,'grx','guriaso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2383,0,NULL,'gry','barclayville grebo','1248825600',NULL,NULL,NULL,NULL,'grb',NULL,NULL); -INSERT INTO "iana_records" VALUES(2384,0,NULL,'grz','guramalum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2385,0,NULL,'gse','ghanaian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2386,0,NULL,'gsg','german sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2387,0,NULL,'gsl','gusilay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2388,0,NULL,'gsm','guatemalan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2389,0,NULL,'gsn','gusan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2390,0,NULL,'gso','southwest gbaya','1248825600',NULL,NULL,NULL,NULL,'gba',NULL,NULL); -INSERT INTO "iana_records" VALUES(2391,0,NULL,'gsp','wasembo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2392,0,NULL,'gss','greek sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2393,0,NULL,'gsw','alemannic','1141776000',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2393,0,NULL,'gsw','alsatian','1141776000',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2393,0,NULL,'gsw','swiss german','1141776000',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2394,0,NULL,'gta','guató','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2395,0,NULL,'gti','gbati-ri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2396,0,NULL,'gua','shiki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2397,0,NULL,'gub','guajajára','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2398,0,NULL,'guc','wayuu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2399,0,NULL,'gud','yocoboué dida','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2400,0,NULL,'gue','gurinji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2401,0,NULL,'guf','gupapuyngu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2402,0,NULL,'gug','paraguayan guaraní','1248825600',NULL,NULL,NULL,NULL,'gn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2403,0,NULL,'guh','guahibo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2404,0,NULL,'gui','eastern bolivian guaraní','1248825600',NULL,NULL,NULL,NULL,'gn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2405,0,NULL,'guk','gumuz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2406,0,NULL,'gul','sea island creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2407,0,NULL,'gum','guambiano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2408,0,NULL,'gun','mbyá guaraní','1248825600',NULL,NULL,NULL,NULL,'gn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2409,0,NULL,'guo','guayabero','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2410,0,NULL,'gup','gunwinggu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2411,0,NULL,'guq','aché','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2412,0,NULL,'gur','farefare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2413,0,NULL,'gus','guinean sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2414,0,NULL,'gut','maléku jaíka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2415,0,NULL,'guu','yanomamö','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2416,0,NULL,'guv','gey','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2417,0,NULL,'guw','gun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2418,0,NULL,'gux','gourmanchéma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2419,0,NULL,'guz','ekegusii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2419,0,NULL,'guz','gusii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2420,0,NULL,'gva','guana (paraguay)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2421,0,NULL,'gvc','guanano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2422,0,NULL,'gve','duwet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2423,0,NULL,'gvf','golin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2424,0,NULL,'gvj','guajá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2425,0,NULL,'gvl','gulay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2426,0,NULL,'gvm','gurmana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2427,0,NULL,'gvn','kuku-yalanji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2428,0,NULL,'gvo','gavião do jiparaná','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2429,0,NULL,'gvp','pará gavião','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2430,0,NULL,'gvr','western gurung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2431,0,NULL,'gvs','gumawana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2432,0,NULL,'gvy','guyani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2433,0,NULL,'gwa','mbato','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2434,0,NULL,'gwb','gwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2435,0,NULL,'gwc','kalami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2436,0,NULL,'gwd','gawwada','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2437,0,NULL,'gwe','gweno','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2438,0,NULL,'gwf','gowro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2439,0,NULL,'gwg','moo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2440,0,NULL,'gwi','gwichʼin','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2441,0,NULL,'gwj','/gwi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2442,0,NULL,'gwn','gwandara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2443,0,NULL,'gwr','gwere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2444,0,NULL,'gwt','gawar-bati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2445,0,NULL,'gwu','guwamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2446,0,NULL,'gww','kwini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2447,0,NULL,'gwx','gua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2448,0,NULL,'gxx','wè southern','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2449,0,NULL,'gya','northwest gbaya','1248825600',NULL,NULL,NULL,NULL,'gba',NULL,NULL); -INSERT INTO "iana_records" VALUES(2450,0,NULL,'gyb','garus','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2451,0,NULL,'gyd','kayardild','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2452,0,NULL,'gye','gyem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2453,0,NULL,'gyf','gungabula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2454,0,NULL,'gyg','gbayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2455,0,NULL,'gyi','gyele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2456,0,NULL,'gyl','gayil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2457,0,NULL,'gym','ngäbere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2458,0,NULL,'gyn','guyanese creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2459,0,NULL,'gyr','guarayu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2460,0,NULL,'gyy','gunya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2461,0,NULL,'gza','ganza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2462,0,NULL,'gzi','gazi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2463,0,NULL,'gzn','gane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2464,0,NULL,'haa','han','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2465,0,NULL,'hab','hanoi sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2466,0,NULL,'hac','gurani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2467,0,NULL,'had','hatam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2468,0,NULL,'hae','eastern oromo','1248825600',NULL,NULL,NULL,NULL,'om',NULL,NULL); -INSERT INTO "iana_records" VALUES(2469,0,NULL,'haf','haiphong sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2470,0,NULL,'hag','hanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2471,0,NULL,'hah','hahon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2472,0,NULL,'hai','haida','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(2473,0,NULL,'haj','hajong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2474,0,NULL,'hak','hakka chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(2475,0,NULL,'hal','halang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2476,0,NULL,'ham','hewa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2477,0,NULL,'han','hangaza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2478,0,NULL,'hao','hakö','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2479,0,NULL,'hap','hupla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2480,0,NULL,'haq','ha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2481,0,NULL,'har','harari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2482,0,NULL,'has','haisla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2483,0,NULL,'hav','havu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2484,0,NULL,'haw','hawaiian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2485,0,NULL,'hax','southern haida','1248825600',NULL,NULL,NULL,NULL,'hai',NULL,NULL); -INSERT INTO "iana_records" VALUES(2486,0,NULL,'hay','haya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2487,0,NULL,'haz','hazaragi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2488,0,NULL,'hba','hamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2489,0,NULL,'hbb','huba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2490,0,NULL,'hbn','heiban','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2491,0,NULL,'hbo','ancient hebrew','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2492,0,NULL,'hbu','habu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2493,0,NULL,'hca','andaman creole hindi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2494,0,NULL,'hch','huichol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2495,0,NULL,'hdn','northern haida','1248825600',NULL,NULL,NULL,NULL,'hai',NULL,NULL); -INSERT INTO "iana_records" VALUES(2496,0,NULL,'hds','honduras sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2497,0,NULL,'hdy','hadiyya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2498,0,NULL,'hea','northern qiandong miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2499,0,NULL,'hed','herdé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2500,0,NULL,'heg','helong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2501,0,NULL,'heh','hehe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2502,0,NULL,'hei','heiltsuk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2503,0,NULL,'hem','hemba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2504,0,NULL,'hgm','hai//om','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2505,0,NULL,'hgw','haigwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2506,0,NULL,'hhi','hoia hoia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2507,0,NULL,'hhr','kerak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2508,0,NULL,'hhy','hoyahoya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2509,0,NULL,'hia','lamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2510,0,NULL,'hib','hibito','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2511,0,NULL,'hid','hidatsa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2512,0,NULL,'hif','fiji hindi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2513,0,NULL,'hig','kamwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2514,0,NULL,'hih','pamosu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2515,0,NULL,'hii','hinduri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2516,0,NULL,'hij','hijuk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2517,0,NULL,'hik','seit-kaitetu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2518,0,NULL,'hil','hiligaynon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2519,0,NULL,'him','himachali languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2519,0,NULL,'him','western pahari languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2520,0,NULL,'hio','tsoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2521,0,NULL,'hir','himarimã','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2522,0,NULL,'hit','hittite','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2523,0,NULL,'hiw','hiw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2524,0,NULL,'hix','hixkaryána','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2525,0,NULL,'hji','haji','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(2526,0,NULL,'hka','kahe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2527,0,NULL,'hke','hunde','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2528,0,NULL,'hkk','hunjara-kaina ke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2529,0,NULL,'hks','heung kong sau yue','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2529,0,NULL,'hks','hong kong sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2530,0,NULL,'hla','halia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2531,0,NULL,'hlb','halbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2532,0,NULL,'hld','halang doan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2533,0,NULL,'hle','hlersu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2534,0,NULL,'hlt','nga la','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2535,0,NULL,'hlu','hieroglyphic luwian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2536,0,NULL,'hma','southern mashan hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2536,0,NULL,'hma','southern mashan miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2537,0,NULL,'hmb','humburi senni songhay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2538,0,NULL,'hmc','central huishui hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2538,0,NULL,'hmc','central huishui miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2539,0,NULL,'hmd','a-hmaos','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2539,0,NULL,'hmd','da-hua miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2539,0,NULL,'hmd','large flowery miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2540,0,NULL,'hme','eastern huishui hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2540,0,NULL,'hme','eastern huishui miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2541,0,NULL,'hmf','hmong don','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2542,0,NULL,'hmg','southwestern guiyang hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2543,0,NULL,'hmh','southwestern huishui hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2543,0,NULL,'hmh','southwestern huishui miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2544,0,NULL,'hmi','northern huishui hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2544,0,NULL,'hmi','northern huishui miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2545,0,NULL,'hmj','ge','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2545,0,NULL,'hmj','gejia','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2546,0,NULL,'hmk','maek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2547,0,NULL,'hml','luopohe hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2547,0,NULL,'hml','luopohe miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2548,0,NULL,'hmm','central mashan hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2548,0,NULL,'hmm','central mashan miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2549,0,NULL,'hmn','hmong','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(2549,0,NULL,'hmn','mong','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(2550,0,NULL,'hmp','northern mashan hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2550,0,NULL,'hmp','northern mashan miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2551,0,NULL,'hmq','eastern qiandong miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2552,0,NULL,'hmr','hmar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2553,0,NULL,'hms','southern qiandong miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2554,0,NULL,'hmt','hamtai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2555,0,NULL,'hmu','hamap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2556,0,NULL,'hmv','hmong dô','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2557,0,NULL,'hmw','western mashan hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2557,0,NULL,'hmw','western mashan miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2558,0,NULL,'hmx','hmong-mien languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2559,0,NULL,'hmy','southern guiyang hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2559,0,NULL,'hmy','southern guiyang miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2560,0,NULL,'hmz','hmong shua','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2560,0,NULL,'hmz','sinicized miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2561,0,NULL,'hna','mina (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2562,0,NULL,'hnd','southern hindko','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(2563,0,NULL,'hne','chhattisgarhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2564,0,NULL,'hnh','//ani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2565,0,NULL,'hni','hani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2566,0,NULL,'hnj','hmong njua','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2566,0,NULL,'hnj','mong leng','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2566,0,NULL,'hnj','mong njua','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2567,0,NULL,'hnn','hanunoo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2568,0,NULL,'hno','northern hindko','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(2569,0,NULL,'hns','caribbean hindustani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2570,0,NULL,'hnu','hung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2571,0,NULL,'hoa','hoava','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2572,0,NULL,'hob','mari (madang province)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2573,0,NULL,'hoc','ho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2574,0,NULL,'hod','holma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2575,0,NULL,'hoe','horom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2576,0,NULL,'hoh','hobyót','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2577,0,NULL,'hoi','holikachuk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2578,0,NULL,'hoj','hadothi','1248825600',NULL,NULL,NULL,NULL,'raj',NULL,NULL); -INSERT INTO "iana_records" VALUES(2579,0,NULL,'hok','hokan languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2580,0,NULL,'hol','holu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2581,0,NULL,'hom','homa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2582,0,NULL,'hoo','holoholo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2583,0,NULL,'hop','hopi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2584,0,NULL,'hor','horo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2585,0,NULL,'hos','ho chi minh city sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2586,0,NULL,'hot','hote','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2586,0,NULL,'hot','malê','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2587,0,NULL,'hov','hovongan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2588,0,NULL,'how','honi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2589,0,NULL,'hoy','holiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2590,0,NULL,'hoz','hozo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2591,0,NULL,'hpo','hpon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2592,0,NULL,'hps','hawai''i pidgin sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2593,0,NULL,'hra','hrangkhol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2594,0,NULL,'hre','hre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2595,0,NULL,'hrk','haruku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2596,0,NULL,'hrm','horned miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2597,0,NULL,'hro','haroi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2598,0,NULL,'hrr','horuru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2599,0,NULL,'hrt','hértevin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2600,0,NULL,'hru','hruso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2601,0,NULL,'hrx','hunsrik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2602,0,NULL,'hrz','harzani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2603,0,NULL,'hsb','upper sorbian','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2604,0,NULL,'hsh','hungarian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2605,0,NULL,'hsl','hausa sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2606,0,NULL,'hsn','xiang chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(2607,0,NULL,'hss','harsusi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2608,0,NULL,'hti','hoti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2609,0,NULL,'hto','minica huitoto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2610,0,NULL,'hts','hadza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2611,0,NULL,'htu','hitu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2612,0,NULL,'htx','middle hittite','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2613,0,NULL,'hub','huambisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2614,0,NULL,'huc','=/hua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2615,0,NULL,'hud','huaulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2616,0,NULL,'hue','san francisco del mar huave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2617,0,NULL,'huf','humene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2618,0,NULL,'hug','huachipaeri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2619,0,NULL,'huh','huilliche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2620,0,NULL,'hui','huli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2621,0,NULL,'huj','northern guiyang hmong','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2621,0,NULL,'huj','northern guiyang miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(2622,0,NULL,'huk','hulung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2623,0,NULL,'hul','hula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2624,0,NULL,'hum','hungana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2625,0,NULL,'huo','hu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2626,0,NULL,'hup','hupa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2627,0,NULL,'huq','tsat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2628,0,NULL,'hur','halkomelem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2629,0,NULL,'hus','huastec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2630,0,NULL,'hut','humla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2631,0,NULL,'huu','murui huitoto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2632,0,NULL,'huv','san mateo del mar huave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2633,0,NULL,'huw','hukumina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2634,0,NULL,'hux','nüpode huitoto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2635,0,NULL,'huy','hulaulá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2636,0,NULL,'huz','hunzib','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2637,0,NULL,'hvc','haitian vodoun culture language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2638,0,NULL,'hve','san dionisio del mar huave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2639,0,NULL,'hvk','haveke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2640,0,NULL,'hvn','sabu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2641,0,NULL,'hvv','santa maría del mar huave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2642,0,NULL,'hwa','wané','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2643,0,NULL,'hwc','hawai''i creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2644,0,NULL,'hwo','hwana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2645,0,NULL,'hya','hya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2646,0,NULL,'hyx','armenian (family)','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2647,0,NULL,'iai','iaai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2648,0,NULL,'ian','iatmul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2649,0,NULL,'iap','iapama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2650,0,NULL,'iar','purari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2651,0,NULL,'iba','iban','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2652,0,NULL,'ibb','ibibio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2653,0,NULL,'ibd','iwaidja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2654,0,NULL,'ibe','akpes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2655,0,NULL,'ibg','ibanag','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2656,0,NULL,'ibi','ibilo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2657,0,NULL,'ibl','ibaloi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2658,0,NULL,'ibm','agoi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2659,0,NULL,'ibn','ibino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2660,0,NULL,'ibr','ibuoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2661,0,NULL,'ibu','ibu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2662,0,NULL,'iby','ibani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2663,0,NULL,'ica','ede ica','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2664,0,NULL,'ich','etkywan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2665,0,NULL,'icl','icelandic sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2666,0,NULL,'icr','islander creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2667,0,NULL,'ida','idakho-isukha-tiriki','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(2667,0,NULL,'ida','luidakho-luisukha-lutirichi','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(2668,0,NULL,'idb','indo-portuguese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2669,0,NULL,'idc','idon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2670,0,NULL,'idd','ede idaca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2671,0,NULL,'ide','idere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2672,0,NULL,'idi','idi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2673,0,NULL,'idr','indri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2674,0,NULL,'ids','idesa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2675,0,NULL,'idt','idaté','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2676,0,NULL,'idu','idoma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2677,0,NULL,'ifa','amganad ifugao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2678,0,NULL,'ifb','ayangan ifugao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2678,0,NULL,'ifb','batad ifugao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2679,0,NULL,'ife','ifè','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2680,0,NULL,'iff','ifo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2681,0,NULL,'ifk','tuwali ifugao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2682,0,NULL,'ifm','teke-fuumu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2683,0,NULL,'ifu','mayoyao ifugao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2684,0,NULL,'ify','keley-i kallahan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2685,0,NULL,'igb','ebira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2686,0,NULL,'ige','igede','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2687,0,NULL,'igg','igana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2688,0,NULL,'igl','igala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2689,0,NULL,'igm','kanggape','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2690,0,NULL,'ign','ignaciano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2691,0,NULL,'igo','isebe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2692,0,NULL,'igs','interglossa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2693,0,NULL,'igw','igwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2694,0,NULL,'ihb','iha based pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2695,0,NULL,'ihi','ihievbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2696,0,NULL,'ihp','iha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2697,0,NULL,'iir','indo-iranian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2698,0,NULL,'ijc','izon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2699,0,NULL,'ije','biseni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2700,0,NULL,'ijj','ede ije','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2701,0,NULL,'ijn','kalabari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2702,0,NULL,'ijo','ijo languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2703,0,NULL,'ijs','southeast ijo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2704,0,NULL,'ike','eastern canadian inuktitut','1248825600',NULL,NULL,NULL,NULL,'iu',NULL,NULL); -INSERT INTO "iana_records" VALUES(2705,0,NULL,'iki','iko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2706,0,NULL,'ikk','ika','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2707,0,NULL,'ikl','ikulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2708,0,NULL,'iko','olulumo-ikom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2709,0,NULL,'ikp','ikpeshi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2710,0,NULL,'ikt','western canadian inuktitut','1248825600',NULL,NULL,NULL,NULL,'iu',NULL,NULL); -INSERT INTO "iana_records" VALUES(2711,0,NULL,'ikv','iku-gora-ankwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2712,0,NULL,'ikw','ikwere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2713,0,NULL,'ikx','ik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2714,0,NULL,'ikz','ikizu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2715,0,NULL,'ila','ile ape','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2716,0,NULL,'ilb','ila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2717,0,NULL,'ilg','garig-ilgar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2718,0,NULL,'ili','ili turki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2719,0,NULL,'ilk','ilongot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2720,0,NULL,'ill','iranun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2721,0,NULL,'ilo','iloko','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2722,0,NULL,'ils','international sign','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2723,0,NULL,'ilu','ili''uun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2724,0,NULL,'ilv','ilue','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2725,0,NULL,'ilw','talur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2726,0,NULL,'ima','mala malasar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2727,0,NULL,'ime','imeraguen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2728,0,NULL,'imi','anamgura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2729,0,NULL,'iml','miluk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2730,0,NULL,'imn','imonda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2731,0,NULL,'imo','imbongu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2732,0,NULL,'imr','imroing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2733,0,NULL,'ims','marsian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2734,0,NULL,'imy','milyan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2735,0,NULL,'inb','inga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2736,0,NULL,'inc','indic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2737,0,NULL,'ine','indo-european languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2738,0,NULL,'ing','degexit''an','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2739,0,NULL,'inh','ingush','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2740,0,NULL,'inj','jungle inga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2741,0,NULL,'inl','indonesian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2742,0,NULL,'inm','minaean','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2743,0,NULL,'inn','isinai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2744,0,NULL,'ino','inoke-yate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2745,0,NULL,'inp','iñapari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2746,0,NULL,'ins','indian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2747,0,NULL,'int','intha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2748,0,NULL,'inz','ineseño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2749,0,NULL,'ior','inor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2750,0,NULL,'iou','tuma-irumu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2751,0,NULL,'iow','iowa-oto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2752,0,NULL,'ipi','ipili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2753,0,NULL,'ipo','ipiko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2754,0,NULL,'iqu','iquito','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2755,0,NULL,'ira','iranian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2756,0,NULL,'ire','iresim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2757,0,NULL,'irh','irarutu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2758,0,NULL,'iri','irigwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2759,0,NULL,'irk','iraqw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2760,0,NULL,'irn','irántxe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2761,0,NULL,'iro','iroquoian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2762,0,NULL,'irr','ir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2763,0,NULL,'iru','irula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2764,0,NULL,'irx','kamberau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2765,0,NULL,'iry','iraya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2766,0,NULL,'isa','isabi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2767,0,NULL,'isc','isconahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2768,0,NULL,'isd','isnag','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2769,0,NULL,'ise','italian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2770,0,NULL,'isg','irish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2771,0,NULL,'ish','esan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2772,0,NULL,'isi','nkem-nkum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2773,0,NULL,'isk','ishkashimi','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2774,0,NULL,'ism','masimasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2775,0,NULL,'isn','isanzu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2776,0,NULL,'iso','isoko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2777,0,NULL,'isr','israeli sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2778,0,NULL,'ist','istriot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2779,0,NULL,'isu','isu (menchum division)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2780,0,NULL,'itb','binongan itneg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2781,0,NULL,'itc','italic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2782,0,NULL,'ite','itene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2783,0,NULL,'iti','inlaod itneg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2784,0,NULL,'itk','judeo-italian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2785,0,NULL,'itl','itelmen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2786,0,NULL,'itm','itu mbon uzo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2787,0,NULL,'ito','itonama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2788,0,NULL,'itr','iteri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2789,0,NULL,'its','isekiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2790,0,NULL,'itt','maeng itneg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2791,0,NULL,'itv','itawit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2792,0,NULL,'itw','ito','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2793,0,NULL,'itx','itik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2794,0,NULL,'ity','moyadan itneg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2795,0,NULL,'itz','itzá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2796,0,NULL,'ium','iu mien','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2797,0,NULL,'ivb','ibatan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2798,0,NULL,'ivv','ivatan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2799,0,NULL,'iwk','i-wak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2800,0,NULL,'iwm','iwam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2801,0,NULL,'iwo','iwur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2802,0,NULL,'iws','sepik iwam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2803,0,NULL,'ixc','ixcatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2804,0,NULL,'ixl','ixil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2805,0,NULL,'iya','iyayu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2806,0,NULL,'iyo','mesaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2807,0,NULL,'iyx','yaka (congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2808,0,NULL,'izh','ingrian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2809,0,NULL,'izi','izi-ezaa-ikwo-mgbo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2810,0,NULL,'izr','izere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2811,0,NULL,'jaa','jamamadí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2812,0,NULL,'jab','hyam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2813,0,NULL,'jac','jakalteko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2813,0,NULL,'jac','popti''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2814,0,NULL,'jad','jahanka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2815,0,NULL,'jae','yabem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2816,0,NULL,'jaf','jara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2817,0,NULL,'jah','jah hut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2818,0,NULL,'jaj','zazao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2819,0,NULL,'jak','jakun','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(2820,0,NULL,'jal','yalahatan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2821,0,NULL,'jam','jamaican creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2822,0,NULL,'jao','yanyuwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2823,0,NULL,'jaq','yaqay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2824,0,NULL,'jar','jarawa (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2825,0,NULL,'jas','new caledonian javanese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2826,0,NULL,'jat','jakati','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(2827,0,NULL,'jau','yaur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2828,0,NULL,'jax','jambi malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(2829,0,NULL,'jay','yan-nhangu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2830,0,NULL,'jaz','jawe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2831,0,NULL,'jbe','judeo-berber','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2832,0,NULL,'jbj','arandai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2833,0,NULL,'jbn','nafusi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2834,0,NULL,'jbo','lojban','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2835,0,NULL,'jbr','jofotek-bromnya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2836,0,NULL,'jbt','jabutí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2837,0,NULL,'jbu','jukun takum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2838,0,NULL,'jcs','jamaican country sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2839,0,NULL,'jct','krymchak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2840,0,NULL,'jda','jad','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2841,0,NULL,'jdg','jadgali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2842,0,NULL,'jdt','judeo-tat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2843,0,NULL,'jeb','jebero','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2844,0,NULL,'jee','jerung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2845,0,NULL,'jeg','jeng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2846,0,NULL,'jeh','jeh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2847,0,NULL,'jei','yei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2848,0,NULL,'jek','jeri kuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2849,0,NULL,'jel','yelmek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2850,0,NULL,'jen','dza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2851,0,NULL,'jer','jere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2852,0,NULL,'jet','manem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2853,0,NULL,'jeu','jonkor bourmataguil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2854,0,NULL,'jgb','ngbee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2855,0,NULL,'jge','judeo-georgian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2856,0,NULL,'jgo','ngomba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2857,0,NULL,'jhi','jehai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2858,0,NULL,'jhs','jhankot sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2859,0,NULL,'jia','jina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2860,0,NULL,'jib','jibu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2861,0,NULL,'jic','tol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2862,0,NULL,'jid','bu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2863,0,NULL,'jie','jilbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2864,0,NULL,'jig','djingili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2865,0,NULL,'jih','shangzhai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2866,0,NULL,'jii','jiiddu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2867,0,NULL,'jil','jilim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2868,0,NULL,'jim','jimi (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2869,0,NULL,'jio','jiamao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2870,0,NULL,'jiq','guanyinqiao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2871,0,NULL,'jit','jita','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2872,0,NULL,'jiu','youle jinuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2873,0,NULL,'jiv','shuar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2874,0,NULL,'jiy','buyuan jinuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2875,0,NULL,'jko','kubo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2876,0,NULL,'jku','labir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2877,0,NULL,'jle','ngile','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2878,0,NULL,'jls','jamaican sign language','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2879,0,NULL,'jma','dima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2880,0,NULL,'jmb','zumbun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2881,0,NULL,'jmc','machame','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2882,0,NULL,'jmd','yamdena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2883,0,NULL,'jmi','jimi (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2884,0,NULL,'jml','jumli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2885,0,NULL,'jmn','makuri naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2886,0,NULL,'jmr','kamara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2887,0,NULL,'jms','mashi (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2888,0,NULL,'jmx','western juxtlahuaca mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2889,0,NULL,'jna','jangshung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2890,0,NULL,'jnd','jandavra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2891,0,NULL,'jng','yangman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2892,0,NULL,'jni','janji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2893,0,NULL,'jnj','yemsa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2894,0,NULL,'jnl','rawat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2895,0,NULL,'jns','jaunsari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2896,0,NULL,'job','joba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2897,0,NULL,'jod','wojenaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2898,0,NULL,'jor','jorá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2899,0,NULL,'jos','jordanian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2900,0,NULL,'jow','jowulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2901,0,NULL,'jpa','jewish palestinian aramaic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2902,0,NULL,'jpr','judeo-persian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2903,0,NULL,'jpx','japanese (family)','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2904,0,NULL,'jqr','jaqaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2905,0,NULL,'jra','jarai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2906,0,NULL,'jrb','judeo-arabic','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(2907,0,NULL,'jrr','jiru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2908,0,NULL,'jrt','jorto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2909,0,NULL,'jru','japrería','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2910,0,NULL,'jsl','japanese sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2911,0,NULL,'jua','júma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2912,0,NULL,'jub','wannu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2913,0,NULL,'juc','jurchen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2914,0,NULL,'jud','worodougou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2915,0,NULL,'juh','hõne','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2916,0,NULL,'juk','wapan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2917,0,NULL,'jul','jirel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2918,0,NULL,'jum','jumjum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2919,0,NULL,'jun','juang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2920,0,NULL,'juo','jiba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2921,0,NULL,'jup','hupdë','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2922,0,NULL,'jur','jurúna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2923,0,NULL,'jus','jumla sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2924,0,NULL,'jut','jutish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2925,0,NULL,'juu','ju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2926,0,NULL,'juw','wãpha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2927,0,NULL,'juy','juray','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2928,0,NULL,'jvd','javindo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2929,0,NULL,'jvn','caribbean javanese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2930,0,NULL,'jwi','jwira-pepesa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2931,0,NULL,'jya','jiarong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2932,0,NULL,'jye','judeo-yemeni arabic','1248825600',NULL,NULL,NULL,NULL,'jrb',NULL,NULL); -INSERT INTO "iana_records" VALUES(2933,0,NULL,'jyy','jaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2934,0,NULL,'kaa','kara-kalpak','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2935,0,NULL,'kab','kabyle','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2936,0,NULL,'kac','jingpho','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2936,0,NULL,'kac','kachin','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2937,0,NULL,'kad','kadara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2938,0,NULL,'kae','ketangalan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2939,0,NULL,'kaf','katso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2940,0,NULL,'kag','kajaman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2941,0,NULL,'kah','kara (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2942,0,NULL,'kai','karekare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2943,0,NULL,'kaj','jju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2944,0,NULL,'kak','kayapa kallahan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2945,0,NULL,'kam','kamba (kenya)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2946,0,NULL,'kao','xaasongaxango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2947,0,NULL,'kap','bezhta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2948,0,NULL,'kaq','capanahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2949,0,NULL,'kar','karen languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(2950,0,NULL,'kav','katukína','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2951,0,NULL,'kaw','kawi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2952,0,NULL,'kax','kao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2953,0,NULL,'kay','kamayurá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2954,0,NULL,'kba','kalarko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2955,0,NULL,'kbb','kaxuiâna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2956,0,NULL,'kbc','kadiwéu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2957,0,NULL,'kbd','kabardian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2958,0,NULL,'kbe','kanju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2959,0,NULL,'kbf','kakauhua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2960,0,NULL,'kbg','khamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2961,0,NULL,'kbh','camsá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2962,0,NULL,'kbi','kaptiau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2963,0,NULL,'kbj','kari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2964,0,NULL,'kbk','grass koiari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2965,0,NULL,'kbl','kanembu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2966,0,NULL,'kbm','iwal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2967,0,NULL,'kbn','kare (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2968,0,NULL,'kbo','keliko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2969,0,NULL,'kbp','kabiyè','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2970,0,NULL,'kbq','kamano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2971,0,NULL,'kbr','kafa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2972,0,NULL,'kbs','kande','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2973,0,NULL,'kbt','abadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2974,0,NULL,'kbu','kabutra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2975,0,NULL,'kbv','dera (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2976,0,NULL,'kbw','kaiep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2977,0,NULL,'kbx','ap ma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2978,0,NULL,'kby','manga kanuri','1248825600',NULL,NULL,NULL,NULL,'kr',NULL,NULL); -INSERT INTO "iana_records" VALUES(2979,0,NULL,'kbz','duhwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2980,0,NULL,'kca','khanty','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2981,0,NULL,'kcb','kawacha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2982,0,NULL,'kcc','lubila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2983,0,NULL,'kcd','ngkâlmpw kanum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2984,0,NULL,'kce','kaivi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2985,0,NULL,'kcf','ukaan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2986,0,NULL,'kcg','tyap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2987,0,NULL,'kch','vono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2988,0,NULL,'kci','kamantan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2989,0,NULL,'kcj','kobiana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2990,0,NULL,'kck','kalanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2991,0,NULL,'kcl','kela (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2992,0,NULL,'kcm','gula (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2993,0,NULL,'kcn','nubi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2994,0,NULL,'kco','kinalakna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2995,0,NULL,'kcp','kanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2996,0,NULL,'kcq','kamo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2997,0,NULL,'kcr','katla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2998,0,NULL,'kcs','koenoem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(2999,0,NULL,'kct','kaian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3000,0,NULL,'kcu','kami (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3001,0,NULL,'kcv','kete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3002,0,NULL,'kcw','kabwari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3003,0,NULL,'kcx','kachama-ganjule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3004,0,NULL,'kcy','korandje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3005,0,NULL,'kcz','konongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3006,0,NULL,'kda','worimi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3007,0,NULL,'kdc','kutu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3008,0,NULL,'kdd','yankunytjatjara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3009,0,NULL,'kde','makonde','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3010,0,NULL,'kdf','mamusi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3011,0,NULL,'kdg','seba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3012,0,NULL,'kdh','tem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3013,0,NULL,'kdi','kumam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3014,0,NULL,'kdj','karamojong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3015,0,NULL,'kdk','numee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3016,0,NULL,'kdl','tsikimba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3017,0,NULL,'kdm','kagoma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3018,0,NULL,'kdn','kunda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3019,0,NULL,'kdo','kordofanian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(3020,0,NULL,'kdp','kaningdon-nindem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3021,0,NULL,'kdq','koch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3022,0,NULL,'kdr','karaim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3023,0,NULL,'kdt','kuy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3024,0,NULL,'kdu','kadaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3025,0,NULL,'kdv','kado','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3026,0,NULL,'kdw','koneraw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3027,0,NULL,'kdx','kam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3028,0,NULL,'kdy','keder','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3028,0,NULL,'kdy','keijar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3029,0,NULL,'kdz','kwaja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3030,0,NULL,'kea','kabuverdianu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3031,0,NULL,'keb','kélé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3032,0,NULL,'kec','keiga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3033,0,NULL,'ked','kerewe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3034,0,NULL,'kee','eastern keres','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3035,0,NULL,'kef','kpessi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3036,0,NULL,'keg','tese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3037,0,NULL,'keh','keak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3038,0,NULL,'kei','kei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3039,0,NULL,'kej','kadar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3040,0,NULL,'kek','kekchí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3041,0,NULL,'kel','kela (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3042,0,NULL,'kem','kemak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3043,0,NULL,'ken','kenyang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3044,0,NULL,'keo','kakwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3045,0,NULL,'kep','kaikadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3046,0,NULL,'keq','kamar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3047,0,NULL,'ker','kera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3048,0,NULL,'kes','kugbo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3049,0,NULL,'ket','ket','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3050,0,NULL,'keu','akebu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3051,0,NULL,'kev','kanikkaran','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3052,0,NULL,'kew','west kewa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3053,0,NULL,'kex','kukna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3054,0,NULL,'key','kupia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3055,0,NULL,'kez','kukele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3056,0,NULL,'kfa','kodava','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3057,0,NULL,'kfb','northwestern kolami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3058,0,NULL,'kfc','konda-dora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3059,0,NULL,'kfd','korra koraga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3060,0,NULL,'kfe','kota (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3061,0,NULL,'kff','koya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3062,0,NULL,'kfg','kudiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3063,0,NULL,'kfh','kurichiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3064,0,NULL,'kfi','kannada kurumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3065,0,NULL,'kfj','kemiehua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3066,0,NULL,'kfk','kinnauri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3067,0,NULL,'kfl','kung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3068,0,NULL,'kfm','khunsari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3069,0,NULL,'kfn','kuk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3070,0,NULL,'kfo','koro (côte d''ivoire)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3071,0,NULL,'kfp','korwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3072,0,NULL,'kfq','korku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3073,0,NULL,'kfr','kachchi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3074,0,NULL,'kfs','bilaspuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3075,0,NULL,'kft','kanjari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3076,0,NULL,'kfu','katkari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3077,0,NULL,'kfv','kurmukar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3078,0,NULL,'kfw','kharam naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3079,0,NULL,'kfx','kullu pahari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3080,0,NULL,'kfy','kumaoni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3081,0,NULL,'kfz','koromfé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3082,0,NULL,'kga','koyaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3083,0,NULL,'kgb','kawe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3084,0,NULL,'kgc','kasseng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3085,0,NULL,'kgd','kataang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3086,0,NULL,'kge','komering','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3087,0,NULL,'kgf','kube','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3088,0,NULL,'kgg','kusunda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3089,0,NULL,'kgh','upper tanudan kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3090,0,NULL,'kgi','selangor sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3091,0,NULL,'kgj','gamale kham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3092,0,NULL,'kgk','kaiwá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3093,0,NULL,'kgl','kunggari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3094,0,NULL,'kgm','karipúna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3095,0,NULL,'kgn','karingani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3096,0,NULL,'kgo','krongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3097,0,NULL,'kgp','kaingang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3098,0,NULL,'kgq','kamoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3099,0,NULL,'kgr','abun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3100,0,NULL,'kgs','kumbainggar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3101,0,NULL,'kgt','somyev','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3102,0,NULL,'kgu','kobol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3103,0,NULL,'kgv','karas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3104,0,NULL,'kgw','karon dori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3105,0,NULL,'kgx','kamaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3106,0,NULL,'kgy','kyerung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3107,0,NULL,'kha','khasi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,'as of 2008-04-21 this subtag does not include lyngngam; see lyg'); -INSERT INTO "iana_records" VALUES(3108,0,NULL,'khb','lü','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3109,0,NULL,'khc','tukang besi north','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3110,0,NULL,'khd','bädi kanum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3111,0,NULL,'khe','korowai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3112,0,NULL,'khf','khuen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3113,0,NULL,'khg','khams tibetan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3114,0,NULL,'khh','kehu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3115,0,NULL,'khi','khoisan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(3116,0,NULL,'khj','kuturmi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3117,0,NULL,'khk','halh mongolian','1248825600',NULL,NULL,NULL,NULL,'mn',NULL,NULL); -INSERT INTO "iana_records" VALUES(3118,0,NULL,'khl','lusi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3119,0,NULL,'khn','khandesi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3120,0,NULL,'kho','khotanese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3120,0,NULL,'kho','sakan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3121,0,NULL,'khp','kapauri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3121,0,NULL,'khp','kapori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3122,0,NULL,'khq','koyra chiini songhay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3123,0,NULL,'khr','kharia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3124,0,NULL,'khs','kasua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3125,0,NULL,'kht','khamti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3126,0,NULL,'khu','nkhumbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3127,0,NULL,'khv','khvarshi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3128,0,NULL,'khw','khowar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3129,0,NULL,'khx','kanu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3130,0,NULL,'khy','kele (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3131,0,NULL,'khz','keapara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3132,0,NULL,'kia','kim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3133,0,NULL,'kib','koalib','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3134,0,NULL,'kic','kickapoo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3135,0,NULL,'kid','koshin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3136,0,NULL,'kie','kibet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3137,0,NULL,'kif','eastern parbate kham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3138,0,NULL,'kig','kimaama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3138,0,NULL,'kig','kimaghima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3139,0,NULL,'kih','kilmeri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3140,0,NULL,'kii','kitsai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3141,0,NULL,'kij','kilivila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3142,0,NULL,'kil','kariya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3143,0,NULL,'kim','karagas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3144,0,NULL,'kio','kiowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3145,0,NULL,'kip','sheshi kham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3146,0,NULL,'kiq','kosadle','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3146,0,NULL,'kiq','kosare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3147,0,NULL,'kis','kis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3148,0,NULL,'kit','agob','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3149,0,NULL,'kiu','kirmanjki (individual language)','1248825600',NULL,NULL,NULL,NULL,'zza',NULL,NULL); -INSERT INTO "iana_records" VALUES(3150,0,NULL,'kiv','kimbu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3151,0,NULL,'kiw','northeast kiwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3152,0,NULL,'kix','khiamniungan naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3153,0,NULL,'kiy','kirikiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3154,0,NULL,'kiz','kisi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3155,0,NULL,'kja','mlap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3156,0,NULL,'kjb','kanjobal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3156,0,NULL,'kjb','q''anjob''al','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3157,0,NULL,'kjc','coastal konjo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3158,0,NULL,'kjd','southern kiwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3159,0,NULL,'kje','kisar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3160,0,NULL,'kjf','khalaj','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3161,0,NULL,'kjg','khmu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3162,0,NULL,'kjh','khakas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3163,0,NULL,'kji','zabana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3164,0,NULL,'kjj','khinalugh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3165,0,NULL,'kjk','highland konjo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3166,0,NULL,'kjl','western parbate kham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3167,0,NULL,'kjm','kháng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3168,0,NULL,'kjn','kunjen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3169,0,NULL,'kjo','harijan kinnauri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3170,0,NULL,'kjp','pwo eastern karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3171,0,NULL,'kjq','western keres','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3172,0,NULL,'kjr','kurudu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3173,0,NULL,'kjs','east kewa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3174,0,NULL,'kjt','phrae pwo karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3175,0,NULL,'kju','kashaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3176,0,NULL,'kjx','ramopa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3177,0,NULL,'kjy','erave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3178,0,NULL,'kjz','bumthangkha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3179,0,NULL,'kka','kakanda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3180,0,NULL,'kkb','kwerisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3181,0,NULL,'kkc','odoodee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3182,0,NULL,'kkd','kinuku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3183,0,NULL,'kke','kakabe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3184,0,NULL,'kkf','kalaktang monpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3185,0,NULL,'kkg','mabaka valley kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3186,0,NULL,'kkh','khün','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3187,0,NULL,'kki','kagulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3188,0,NULL,'kkj','kako','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3189,0,NULL,'kkk','kokota','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3190,0,NULL,'kkl','kosarek yale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3191,0,NULL,'kkm','kiong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3192,0,NULL,'kkn','kon keu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3193,0,NULL,'kko','karko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3194,0,NULL,'kkp','gugubera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3195,0,NULL,'kkq','kaiku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3196,0,NULL,'kkr','kir-balar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3197,0,NULL,'kks','giiwo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3198,0,NULL,'kkt','koi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3199,0,NULL,'kku','tumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3200,0,NULL,'kkv','kangean','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3201,0,NULL,'kkw','teke-kukuya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3202,0,NULL,'kkx','kohin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3203,0,NULL,'kky','guguyimidjir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3204,0,NULL,'kkz','kaska','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3205,0,NULL,'kla','klamath-modoc','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3206,0,NULL,'klb','kiliwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3207,0,NULL,'klc','kolbila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3208,0,NULL,'kld','gamilaraay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3209,0,NULL,'kle','kulung (nepal)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3210,0,NULL,'klf','kendeje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3211,0,NULL,'klg','tagakaulo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3212,0,NULL,'klh','weliki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3213,0,NULL,'kli','kalumpang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3214,0,NULL,'klj','turkic khalaj','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3215,0,NULL,'klk','kono (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3216,0,NULL,'kll','kagan kalagan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3217,0,NULL,'klm','migum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3218,0,NULL,'kln','kalenjin','1248825600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(3219,0,NULL,'klo','kapya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3220,0,NULL,'klp','kamasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3221,0,NULL,'klq','rumu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3222,0,NULL,'klr','khaling','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3223,0,NULL,'kls','kalasha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3224,0,NULL,'klt','nukna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3225,0,NULL,'klu','klao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3226,0,NULL,'klv','maskelynes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3227,0,NULL,'klw','lindu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3228,0,NULL,'klx','koluwawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3229,0,NULL,'kly','kalao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3230,0,NULL,'klz','kabola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3231,0,NULL,'kma','konni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3232,0,NULL,'kmb','kimbundu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3233,0,NULL,'kmc','southern dong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3234,0,NULL,'kmd','majukayang kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3235,0,NULL,'kme','bakole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3236,0,NULL,'kmf','kare (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3237,0,NULL,'kmg','kâte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3238,0,NULL,'kmh','kalam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3239,0,NULL,'kmi','kami (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3240,0,NULL,'kmj','kumarbhag paharia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3241,0,NULL,'kmk','limos kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3242,0,NULL,'kml','lower tanudan kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3243,0,NULL,'kmm','kom (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3244,0,NULL,'kmn','awtuw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3245,0,NULL,'kmo','kwoma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3246,0,NULL,'kmp','gimme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3247,0,NULL,'kmq','kwama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3248,0,NULL,'kmr','northern kurdish','1248825600',NULL,NULL,NULL,NULL,'ku',NULL,NULL); -INSERT INTO "iana_records" VALUES(3249,0,NULL,'kms','kamasau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3250,0,NULL,'kmt','kemtuik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3251,0,NULL,'kmu','kanite','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3252,0,NULL,'kmv','karipúna creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3253,0,NULL,'kmw','komo (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3254,0,NULL,'kmx','waboda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3255,0,NULL,'kmy','koma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3256,0,NULL,'kmz','khorasani turkish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3257,0,NULL,'kna','dera (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3258,0,NULL,'knb','lubuagan kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3259,0,NULL,'knc','central kanuri','1248825600',NULL,NULL,NULL,NULL,'kr',NULL,NULL); -INSERT INTO "iana_records" VALUES(3260,0,NULL,'knd','konda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3261,0,NULL,'kne','kankanaey','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3262,0,NULL,'knf','mankanya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3263,0,NULL,'kng','koongo','1248825600',NULL,NULL,NULL,NULL,'kg',NULL,NULL); -INSERT INTO "iana_records" VALUES(3264,0,NULL,'kni','kanufi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3265,0,NULL,'knj','western kanjobal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3266,0,NULL,'knk','kuranko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3267,0,NULL,'knl','keninjal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3268,0,NULL,'knm','kanamarí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3269,0,NULL,'knn','konkani (individual language)','1248825600',NULL,NULL,NULL,NULL,'kok',NULL,NULL); -INSERT INTO "iana_records" VALUES(3270,0,NULL,'kno','kono (sierra leone)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3271,0,NULL,'knp','kwanja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3272,0,NULL,'knq','kintaq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3273,0,NULL,'knr','kaningra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3274,0,NULL,'kns','kensiu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3275,0,NULL,'knt','panoan katukína','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3276,0,NULL,'knu','kono (guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3277,0,NULL,'knv','tabo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3278,0,NULL,'knw','kung-ekoka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3279,0,NULL,'knx','kendayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3279,0,NULL,'knx','salako','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3280,0,NULL,'kny','kanyok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3281,0,NULL,'knz','kalamsé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3282,0,NULL,'koa','konomala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3283,0,NULL,'koc','kpati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3284,0,NULL,'kod','kodi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3285,0,NULL,'koe','kacipo-balesi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3286,0,NULL,'kof','kubi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3287,0,NULL,'kog','cogui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3287,0,NULL,'kog','kogi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3288,0,NULL,'koh','koyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3289,0,NULL,'koi','komi-permyak','1248825600',NULL,NULL,NULL,NULL,'kv',NULL,NULL); -INSERT INTO "iana_records" VALUES(3290,0,NULL,'koj','sara dunjo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3291,0,NULL,'kok','konkani (macrolanguage)','1129420800',NULL,NULL,NULL,'deva',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(3292,0,NULL,'kol','kol (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3293,0,NULL,'koo','konzo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3294,0,NULL,'kop','kwato','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3295,0,NULL,'koq','kota (gabon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3296,0,NULL,'kos','kosraean','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3297,0,NULL,'kot','lagwan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3298,0,NULL,'kou','koke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3299,0,NULL,'kov','kudu-camo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3300,0,NULL,'kow','kugama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3301,0,NULL,'kox','coxima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3302,0,NULL,'koy','koyukon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3303,0,NULL,'koz','korak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3304,0,NULL,'kpa','kutto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3305,0,NULL,'kpb','mullu kurumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3306,0,NULL,'kpc','curripaco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3307,0,NULL,'kpd','koba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3308,0,NULL,'kpe','kpelle','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(3309,0,NULL,'kpf','komba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3310,0,NULL,'kpg','kapingamarangi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3311,0,NULL,'kph','kplang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3312,0,NULL,'kpi','kofei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3313,0,NULL,'kpj','karajá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3314,0,NULL,'kpk','kpan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3315,0,NULL,'kpl','kpala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3316,0,NULL,'kpm','koho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3317,0,NULL,'kpn','kepkiriwát','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3318,0,NULL,'kpo','ikposo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3319,0,NULL,'kpp','paku karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3320,0,NULL,'kpq','korupun-sela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3321,0,NULL,'kpr','korafe-yegha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3322,0,NULL,'kps','tehit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3323,0,NULL,'kpt','karata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3324,0,NULL,'kpu','kafoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3325,0,NULL,'kpv','komi-zyrian','1248825600',NULL,NULL,NULL,NULL,'kv',NULL,NULL); -INSERT INTO "iana_records" VALUES(3326,0,NULL,'kpw','kobon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3327,0,NULL,'kpx','mountain koiali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3328,0,NULL,'kpy','koryak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3329,0,NULL,'kpz','kupsabiny','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3330,0,NULL,'kqa','mum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3331,0,NULL,'kqb','kovai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3332,0,NULL,'kqc','doromu-koki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3333,0,NULL,'kqd','koy sanjaq surat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3334,0,NULL,'kqe','kalagan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3335,0,NULL,'kqf','kakabai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3336,0,NULL,'kqg','khe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3337,0,NULL,'kqh','kisankasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3338,0,NULL,'kqi','koitabu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3339,0,NULL,'kqj','koromira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3340,0,NULL,'kqk','kotafon gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3341,0,NULL,'kql','kyenele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3342,0,NULL,'kqm','khisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3343,0,NULL,'kqn','kaonde','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3344,0,NULL,'kqo','eastern krahn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3345,0,NULL,'kqp','kimré','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3346,0,NULL,'kqq','krenak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3347,0,NULL,'kqr','kimaragang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3348,0,NULL,'kqs','northern kissi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3349,0,NULL,'kqt','klias river kadazan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3350,0,NULL,'kqu','seroa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3351,0,NULL,'kqv','okolod','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3352,0,NULL,'kqw','kandas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3353,0,NULL,'kqx','mser','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3354,0,NULL,'kqy','koorete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3355,0,NULL,'kqz','korana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3356,0,NULL,'kra','kumhali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3357,0,NULL,'krb','karkin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3358,0,NULL,'krc','karachay-balkar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3359,0,NULL,'krd','kairui-midiki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3360,0,NULL,'kre','panará','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3361,0,NULL,'krf','koro (vanuatu)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3362,0,NULL,'krh','kurama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3363,0,NULL,'kri','krio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3364,0,NULL,'krj','kinaray-a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3365,0,NULL,'krk','kerek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3366,0,NULL,'krl','karelian','1141776000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3367,0,NULL,'krm','krim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3368,0,NULL,'krn','sapo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3369,0,NULL,'kro','kru languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(3370,0,NULL,'krp','korop','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3371,0,NULL,'krr','kru''ng 2','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3372,0,NULL,'krs','gbaya (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3373,0,NULL,'krt','tumari kanuri','1248825600',NULL,NULL,NULL,NULL,'kr',NULL,NULL); -INSERT INTO "iana_records" VALUES(3374,0,NULL,'kru','kurukh','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3375,0,NULL,'krv','kavet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3376,0,NULL,'krw','western krahn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3377,0,NULL,'krx','karon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3378,0,NULL,'kry','kryts','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3379,0,NULL,'krz','sota kanum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3380,0,NULL,'ksa','shuwa-zamani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3381,0,NULL,'ksb','shambala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3382,0,NULL,'ksc','southern kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3383,0,NULL,'ksd','kuanua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3384,0,NULL,'kse','kuni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3385,0,NULL,'ksf','bafia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3386,0,NULL,'ksg','kusaghe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3387,0,NULL,'ksh','kölsch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3388,0,NULL,'ksi','i''saka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3388,0,NULL,'ksi','krisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3389,0,NULL,'ksj','uare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3390,0,NULL,'ksk','kansa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3391,0,NULL,'ksl','kumalu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3392,0,NULL,'ksm','kumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3393,0,NULL,'ksn','kasiguranin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3394,0,NULL,'kso','kofa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3395,0,NULL,'ksp','kaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3396,0,NULL,'ksq','kwaami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3397,0,NULL,'ksr','borong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3398,0,NULL,'kss','southern kisi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3399,0,NULL,'kst','winyé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3400,0,NULL,'ksu','khamyang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3401,0,NULL,'ksv','kusu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3402,0,NULL,'ksw','s''gaw karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3403,0,NULL,'ksx','kedang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3404,0,NULL,'ksy','kharia thar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3405,0,NULL,'ksz','kodaku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3406,0,NULL,'kta','katua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3407,0,NULL,'ktb','kambaata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3408,0,NULL,'ktc','kholok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3409,0,NULL,'ktd','kokata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3410,0,NULL,'kte','nubri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3411,0,NULL,'ktf','kwami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3412,0,NULL,'ktg','kalkutung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3413,0,NULL,'kth','karanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3414,0,NULL,'kti','north muyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3415,0,NULL,'ktj','plapo krumen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3416,0,NULL,'ktk','kaniet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3417,0,NULL,'ktl','koroshi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3418,0,NULL,'ktm','kurti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3419,0,NULL,'ktn','karitiâna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3420,0,NULL,'kto','kuot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3421,0,NULL,'ktp','kaduo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3422,0,NULL,'ktq','katabaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3423,0,NULL,'ktr','kota marudu tinagas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3424,0,NULL,'kts','south muyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3425,0,NULL,'ktt','ketum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3426,0,NULL,'ktu','kituba (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3427,0,NULL,'ktv','eastern katu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3428,0,NULL,'ktw','kato','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3429,0,NULL,'ktx','kaxararí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3430,0,NULL,'kty','kango (bas-uélé district)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3431,0,NULL,'ktz','ju/''hoan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3432,0,NULL,'kub','kutep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3433,0,NULL,'kuc','kwinsu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3434,0,NULL,'kud','''auhelawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3435,0,NULL,'kue','kuman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3436,0,NULL,'kuf','western katu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3437,0,NULL,'kug','kupa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3438,0,NULL,'kuh','kushi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3439,0,NULL,'kui','kuikúro-kalapálo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3440,0,NULL,'kuj','kuria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3441,0,NULL,'kuk','kepo''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3442,0,NULL,'kul','kulere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3443,0,NULL,'kum','kumyk','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3444,0,NULL,'kun','kunama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3445,0,NULL,'kuo','kumukio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3446,0,NULL,'kup','kunimaipa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3447,0,NULL,'kuq','karipuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3448,0,NULL,'kus','kusaal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3449,0,NULL,'kut','kutenai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3450,0,NULL,'kuu','upper kuskokwim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3451,0,NULL,'kuv','kur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3452,0,NULL,'kuw','kpagua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3453,0,NULL,'kux','kukatja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3454,0,NULL,'kuy','kuuku-ya''u','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3455,0,NULL,'kuz','kunza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3456,0,NULL,'kva','bagvalal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3457,0,NULL,'kvb','kubu','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(3458,0,NULL,'kvc','kove','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3459,0,NULL,'kvd','kui (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3460,0,NULL,'kve','kalabakan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3461,0,NULL,'kvf','kabalai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3462,0,NULL,'kvg','kuni-boazi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3463,0,NULL,'kvh','komodo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3464,0,NULL,'kvi','kwang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3465,0,NULL,'kvj','psikye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3466,0,NULL,'kvk','korean sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3467,0,NULL,'kvl','brek karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3468,0,NULL,'kvm','kendem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3469,0,NULL,'kvn','border kuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3470,0,NULL,'kvo','dobel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3471,0,NULL,'kvp','kompane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3472,0,NULL,'kvq','geba karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3473,0,NULL,'kvr','kerinci','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(3474,0,NULL,'kvs','kunggara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3475,0,NULL,'kvt','lahta karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3476,0,NULL,'kvu','yinbaw karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3477,0,NULL,'kvv','kola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3478,0,NULL,'kvw','wersing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3479,0,NULL,'kvx','parkari koli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3480,0,NULL,'kvy','yintale karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3481,0,NULL,'kvz','tsakwambo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3481,0,NULL,'kvz','tsaukambo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3482,0,NULL,'kwa','dâw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3483,0,NULL,'kwb','kwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3484,0,NULL,'kwc','likwala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3485,0,NULL,'kwd','kwaio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3486,0,NULL,'kwe','kwerba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3487,0,NULL,'kwf','kwara''ae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3488,0,NULL,'kwg','sara kaba deme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3489,0,NULL,'kwh','kowiai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3490,0,NULL,'kwi','awa-cuaiquer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3491,0,NULL,'kwj','kwanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3492,0,NULL,'kwk','kwakiutl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3493,0,NULL,'kwl','kofyar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3494,0,NULL,'kwm','kwambi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3495,0,NULL,'kwn','kwangali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3496,0,NULL,'kwo','kwomtari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3497,0,NULL,'kwp','kodia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3498,0,NULL,'kwq','kwak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3499,0,NULL,'kwr','kwer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3500,0,NULL,'kws','kwese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3501,0,NULL,'kwt','kwesten','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3502,0,NULL,'kwu','kwakum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3503,0,NULL,'kwv','sara kaba náà','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3504,0,NULL,'kww','kwinti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3505,0,NULL,'kwx','khirwar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3506,0,NULL,'kwy','san salvador kongo','1248825600',NULL,NULL,NULL,NULL,'kg',NULL,NULL); -INSERT INTO "iana_records" VALUES(3507,0,NULL,'kwz','kwadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3508,0,NULL,'kxa','kairiru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3509,0,NULL,'kxb','krobu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3510,0,NULL,'kxc','khonso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3510,0,NULL,'kxc','konso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3511,0,NULL,'kxd','brunei','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(3512,0,NULL,'kxe','kakihum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3513,0,NULL,'kxf','manumanaw karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3514,0,NULL,'kxh','karo (ethiopia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3515,0,NULL,'kxi','keningau murut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3516,0,NULL,'kxj','kulfa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3517,0,NULL,'kxk','zayein karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3518,0,NULL,'kxl','nepali kurux','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3519,0,NULL,'kxm','northern khmer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3520,0,NULL,'kxn','kanowit-tanjong melanau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3521,0,NULL,'kxo','kanoé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3522,0,NULL,'kxp','wadiyara koli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3523,0,NULL,'kxq','smärky kanum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3524,0,NULL,'kxr','koro (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3525,0,NULL,'kxs','kangjia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3526,0,NULL,'kxt','koiwat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3527,0,NULL,'kxu','kui (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3528,0,NULL,'kxv','kuvi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3529,0,NULL,'kxw','konai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3530,0,NULL,'kxx','likuba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3531,0,NULL,'kxy','kayong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3532,0,NULL,'kxz','kerewo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3533,0,NULL,'kya','kwaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3534,0,NULL,'kyb','butbut kalinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3535,0,NULL,'kyc','kyaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3536,0,NULL,'kyd','karey','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3537,0,NULL,'kye','krache','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3538,0,NULL,'kyf','kouya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3539,0,NULL,'kyg','keyagana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3540,0,NULL,'kyh','karok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3541,0,NULL,'kyi','kiput','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3542,0,NULL,'kyj','karao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3543,0,NULL,'kyk','kamayo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3544,0,NULL,'kyl','kalapuya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3545,0,NULL,'kym','kpatili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3546,0,NULL,'kyn','northern binukidnon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3547,0,NULL,'kyo','kelon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3548,0,NULL,'kyp','kang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3549,0,NULL,'kyq','kenga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3550,0,NULL,'kyr','kuruáya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3551,0,NULL,'kys','baram kayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3552,0,NULL,'kyt','kayagar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3553,0,NULL,'kyu','western kayah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3554,0,NULL,'kyv','kayort','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3555,0,NULL,'kyw','kudmali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3556,0,NULL,'kyx','rapoisi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3557,0,NULL,'kyy','kambaira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3558,0,NULL,'kyz','kayabí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3559,0,NULL,'kza','western karaboro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3560,0,NULL,'kzb','kaibobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3561,0,NULL,'kzc','bondoukou kulango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3562,0,NULL,'kzd','kadai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3563,0,NULL,'kze','kosena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3564,0,NULL,'kzf','da''a kaili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3565,0,NULL,'kzg','kikai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3566,0,NULL,'kzh','kenuzi-dongola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3567,0,NULL,'kzi','kelabit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3568,0,NULL,'kzj','coastal kadazan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3569,0,NULL,'kzk','kazukuru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3570,0,NULL,'kzl','kayeli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3571,0,NULL,'kzm','kais','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3572,0,NULL,'kzn','kokola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3573,0,NULL,'kzo','kaningi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3574,0,NULL,'kzp','kaidipang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3575,0,NULL,'kzq','kaike','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3576,0,NULL,'kzr','karang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3577,0,NULL,'kzs','sugut dusun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3578,0,NULL,'kzt','tambunan dusun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3579,0,NULL,'kzu','kayupulau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3580,0,NULL,'kzv','komyandaret','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3581,0,NULL,'kzw','karirí-xocó','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3582,0,NULL,'kzx','kamarian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3583,0,NULL,'kzy','kango (tshopo district)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3584,0,NULL,'kzz','kalabra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3585,0,NULL,'laa','southern subanen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3586,0,NULL,'lab','linear a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3587,0,NULL,'lac','lacandon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3588,0,NULL,'lad','ladino','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3589,0,NULL,'lae','pattani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3590,0,NULL,'laf','lafofa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3591,0,NULL,'lag','langi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3592,0,NULL,'lah','lahnda','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(3593,0,NULL,'lai','lambya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3594,0,NULL,'laj','lango (uganda)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3595,0,NULL,'lak','laka (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3596,0,NULL,'lal','lalia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3597,0,NULL,'lam','lamba','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3598,0,NULL,'lan','laru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3599,0,NULL,'lap','laka (chad)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3600,0,NULL,'laq','qabiao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3601,0,NULL,'lar','larteh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3602,0,NULL,'las','lama (togo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3603,0,NULL,'lau','laba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3604,0,NULL,'law','lauje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3605,0,NULL,'lax','tiwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3606,0,NULL,'lay','lama (myanmar)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3607,0,NULL,'laz','aribwatsa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3608,0,NULL,'lba','lui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3609,0,NULL,'lbb','label','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3610,0,NULL,'lbc','lakkia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3611,0,NULL,'lbe','lak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3612,0,NULL,'lbf','tinani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3613,0,NULL,'lbg','laopang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3614,0,NULL,'lbi','la''bi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3615,0,NULL,'lbj','ladakhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3616,0,NULL,'lbk','central bontok','1268265600',NULL,NULL,NULL,NULL,'bnc',NULL,NULL); -INSERT INTO "iana_records" VALUES(3617,0,NULL,'lbl','libon bikol','1268265600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(3618,0,NULL,'lbm','lodhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3619,0,NULL,'lbn','lamet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3620,0,NULL,'lbo','laven','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3621,0,NULL,'lbq','wampar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3622,0,NULL,'lbr','northern lorung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3623,0,NULL,'lbs','libyan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3624,0,NULL,'lbt','lachi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3625,0,NULL,'lbu','labu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3626,0,NULL,'lbv','lavatbura-lamusong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3627,0,NULL,'lbw','tolaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3628,0,NULL,'lbx','lawangan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3629,0,NULL,'lby','lamu-lamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3630,0,NULL,'lbz','lardil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3631,0,NULL,'lcc','legenyem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3632,0,NULL,'lcd','lola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3633,0,NULL,'lce','loncong','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(3634,0,NULL,'lcf','lubu','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(3635,0,NULL,'lch','luchazi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3636,0,NULL,'lcl','lisela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3637,0,NULL,'lcm','tungag','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3638,0,NULL,'lcp','western lawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3639,0,NULL,'lcq','luhu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3640,0,NULL,'lcs','lisabata-nuniali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3641,0,NULL,'ldb','idun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3642,0,NULL,'ldd','luri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3643,0,NULL,'ldg','lenyima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3644,0,NULL,'ldh','lamja-dengsa-tola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3645,0,NULL,'ldi','laari','1248825600',NULL,NULL,NULL,NULL,'kg',NULL,NULL); -INSERT INTO "iana_records" VALUES(3646,0,NULL,'ldj','lemoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3647,0,NULL,'ldk','leelau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3648,0,NULL,'ldl','kaan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3649,0,NULL,'ldm','landoma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3650,0,NULL,'ldn','láadan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3651,0,NULL,'ldo','loo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3652,0,NULL,'ldp','tso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3653,0,NULL,'ldq','lufu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3654,0,NULL,'lea','lega-shabunda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3655,0,NULL,'leb','lala-bisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3656,0,NULL,'lec','leco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3657,0,NULL,'led','lendu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3658,0,NULL,'lee','lyélé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3659,0,NULL,'lef','lelemi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3660,0,NULL,'leg','lengua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3661,0,NULL,'leh','lenje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3662,0,NULL,'lei','lemio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3663,0,NULL,'lej','lengola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3664,0,NULL,'lek','leipon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3665,0,NULL,'lel','lele (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3666,0,NULL,'lem','nomaande','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3667,0,NULL,'len','lenca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3668,0,NULL,'leo','leti (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3669,0,NULL,'lep','lepcha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3670,0,NULL,'leq','lembena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3671,0,NULL,'ler','lenkau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3672,0,NULL,'les','lese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3673,0,NULL,'let','lesing-gelimi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3674,0,NULL,'leu','kara (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3675,0,NULL,'lev','lamma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3676,0,NULL,'lew','ledo kaili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3677,0,NULL,'lex','luang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3678,0,NULL,'ley','lemolang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3679,0,NULL,'lez','lezghian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3680,0,NULL,'lfa','lefa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3681,0,NULL,'lfn','lingua franca nova','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3682,0,NULL,'lga','lungga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3683,0,NULL,'lgb','laghu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3684,0,NULL,'lgg','lugbara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3685,0,NULL,'lgh','laghuu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3686,0,NULL,'lgi','lengilu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3687,0,NULL,'lgk','lingarak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3687,0,NULL,'lgk','neverver','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3688,0,NULL,'lgl','wala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3689,0,NULL,'lgm','lega-mwenga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3690,0,NULL,'lgn','opuuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3691,0,NULL,'lgq','logba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3692,0,NULL,'lgr','lengo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3693,0,NULL,'lgt','pahi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3694,0,NULL,'lgu','longgu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3695,0,NULL,'lgz','ligenza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3696,0,NULL,'lha','laha (viet nam)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3697,0,NULL,'lhh','laha (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3698,0,NULL,'lhi','lahu shi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3699,0,NULL,'lhl','lahul lohar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3700,0,NULL,'lhm','lhomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3701,0,NULL,'lhn','lahanan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3702,0,NULL,'lhp','lhokpu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3703,0,NULL,'lhs','mlahsö','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3704,0,NULL,'lht','lo-toga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3705,0,NULL,'lhu','lahu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3706,0,NULL,'lia','west-central limba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3707,0,NULL,'lib','likum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3708,0,NULL,'lic','hlai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3709,0,NULL,'lid','nyindrou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3710,0,NULL,'lie','likila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3711,0,NULL,'lif','limbu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3712,0,NULL,'lig','ligbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3713,0,NULL,'lih','lihir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3714,0,NULL,'lii','lingkhim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3715,0,NULL,'lij','ligurian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3716,0,NULL,'lik','lika','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3717,0,NULL,'lil','lillooet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3718,0,NULL,'lio','liki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3719,0,NULL,'lip','sekpele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3720,0,NULL,'liq','libido','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3721,0,NULL,'lir','liberian english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3722,0,NULL,'lis','lisu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3723,0,NULL,'liu','logorik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3724,0,NULL,'liv','liv','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3725,0,NULL,'liw','col','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(3726,0,NULL,'lix','liabuku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3727,0,NULL,'liy','banda-bambari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3728,0,NULL,'liz','libinza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3729,0,NULL,'lje','rampi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3730,0,NULL,'lji','laiyolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3731,0,NULL,'ljl','li''o','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3732,0,NULL,'ljp','lampung api','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3733,0,NULL,'lka','lakalei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3734,0,NULL,'lkb','kabras','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3734,0,NULL,'lkb','lukabaras','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3735,0,NULL,'lkc','kucong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3736,0,NULL,'lkd','lakondê','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3737,0,NULL,'lke','kenyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3738,0,NULL,'lkh','lakha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3739,0,NULL,'lki','laki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3740,0,NULL,'lkj','remun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3741,0,NULL,'lkl','laeko-libuat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3742,0,NULL,'lkn','lakon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3742,0,NULL,'lkn','vure','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3743,0,NULL,'lko','khayo','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3743,0,NULL,'lko','olukhayo','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3744,0,NULL,'lkr','päri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3745,0,NULL,'lks','kisa','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3745,0,NULL,'lks','olushisa','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3746,0,NULL,'lkt','lakota','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3747,0,NULL,'lky','lokoya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3748,0,NULL,'lla','lala-roba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3749,0,NULL,'llb','lolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3750,0,NULL,'llc','lele (guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3751,0,NULL,'lld','ladin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3752,0,NULL,'lle','lele (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3753,0,NULL,'llf','hermit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3754,0,NULL,'llg','lole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3755,0,NULL,'llh','lamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3756,0,NULL,'lli','teke-laali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3757,0,NULL,'llk','lelak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3758,0,NULL,'lll','lilau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3759,0,NULL,'llm','lasalimu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3760,0,NULL,'lln','lele (chad)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3761,0,NULL,'llo','khlor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3762,0,NULL,'llp','north efate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3763,0,NULL,'llq','lolak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3764,0,NULL,'lls','lithuanian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3765,0,NULL,'llu','lau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3766,0,NULL,'llx','lauan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3767,0,NULL,'lma','east limba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3768,0,NULL,'lmb','merei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3769,0,NULL,'lmc','limilngan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3770,0,NULL,'lmd','lumun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3771,0,NULL,'lme','pévé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3772,0,NULL,'lmf','south lembata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3773,0,NULL,'lmg','lamogai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3774,0,NULL,'lmh','lambichhong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3775,0,NULL,'lmi','lombi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3776,0,NULL,'lmj','west lembata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3777,0,NULL,'lmk','lamkang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3778,0,NULL,'lml','hano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3779,0,NULL,'lmm','lamam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3780,0,NULL,'lmn','lambadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3781,0,NULL,'lmo','lombard','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3782,0,NULL,'lmp','limbum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3783,0,NULL,'lmq','lamatuka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3784,0,NULL,'lmr','lamalera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3785,0,NULL,'lmu','lamenu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3786,0,NULL,'lmv','lomaiviti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3787,0,NULL,'lmw','lake miwok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3788,0,NULL,'lmx','laimbue','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3789,0,NULL,'lmy','lamboya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3790,0,NULL,'lmz','lumbee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3791,0,NULL,'lna','langbashe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3792,0,NULL,'lnb','mbalanhu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3793,0,NULL,'lnd','lun bawang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3793,0,NULL,'lnd','lundayeh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3794,0,NULL,'lng','langobardic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3795,0,NULL,'lnh','lanoh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3796,0,NULL,'lni','daantanai''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3797,0,NULL,'lnj','leningitij','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3798,0,NULL,'lnl','south central banda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3799,0,NULL,'lnm','langam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3800,0,NULL,'lnn','lorediakarkar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3801,0,NULL,'lno','lango (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3802,0,NULL,'lns','lamnso''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3803,0,NULL,'lnu','longuda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3804,0,NULL,'lnz','lonzo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3805,0,NULL,'loa','loloda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3806,0,NULL,'lob','lobi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3807,0,NULL,'loc','inonhan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3808,0,NULL,'loe','saluan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3809,0,NULL,'lof','logol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3810,0,NULL,'log','logo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3811,0,NULL,'loh','narim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3812,0,NULL,'loi','loma (côte d''ivoire)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3813,0,NULL,'loj','lou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3814,0,NULL,'lok','loko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3815,0,NULL,'lol','mongo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3816,0,NULL,'lom','loma (liberia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3817,0,NULL,'lon','malawi lomwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3818,0,NULL,'loo','lombo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3819,0,NULL,'lop','lopa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3820,0,NULL,'loq','lobala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3821,0,NULL,'lor','téén','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3822,0,NULL,'los','loniu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3823,0,NULL,'lot','otuho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3824,0,NULL,'lou','louisiana creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3825,0,NULL,'lov','lopi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3826,0,NULL,'low','tampias lobu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3827,0,NULL,'lox','loun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3828,0,NULL,'loy','lowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3829,0,NULL,'loz','lozi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3830,0,NULL,'lpa','lelepa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3831,0,NULL,'lpe','lepki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3832,0,NULL,'lpn','long phuri naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3833,0,NULL,'lpo','lipo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3834,0,NULL,'lpx','lopit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3835,0,NULL,'lra','rara bakati''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3836,0,NULL,'lrc','northern luri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3837,0,NULL,'lre','laurentian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3838,0,NULL,'lrg','laragia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3839,0,NULL,'lri','marachi','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3839,0,NULL,'lri','olumarachi','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3840,0,NULL,'lrk','loarki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3841,0,NULL,'lrl','lari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3842,0,NULL,'lrm','marama','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3842,0,NULL,'lrm','olumarama','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3843,0,NULL,'lrn','lorang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3844,0,NULL,'lro','laro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3845,0,NULL,'lrr','southern lorung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3846,0,NULL,'lrt','larantuka malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3847,0,NULL,'lrv','larevat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3848,0,NULL,'lrz','lemerig','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3849,0,NULL,'lsa','lasgerdi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3850,0,NULL,'lsd','lishana deni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3851,0,NULL,'lse','lusengo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3852,0,NULL,'lsg','lyons sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3853,0,NULL,'lsh','lish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3854,0,NULL,'lsi','lashi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3855,0,NULL,'lsl','latvian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3856,0,NULL,'lsm','olusamia','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3856,0,NULL,'lsm','saamia','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3857,0,NULL,'lso','laos sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3858,0,NULL,'lsp','lengua de señas panameñas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3858,0,NULL,'lsp','panamanian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3859,0,NULL,'lsr','aruop','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3860,0,NULL,'lss','lasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3861,0,NULL,'lst','trinidad and tobago sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3862,0,NULL,'lsy','mauritian sign language','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3863,0,NULL,'ltc','late middle chinese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3864,0,NULL,'ltg','latgalian','1268265600',NULL,NULL,NULL,NULL,'lv',NULL,NULL); -INSERT INTO "iana_records" VALUES(3865,0,NULL,'lti','leti (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3866,0,NULL,'ltn','latundê','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3867,0,NULL,'lto','olutsotso','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3867,0,NULL,'lto','tsotso','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3868,0,NULL,'lts','lutachoni','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3868,0,NULL,'lts','tachoni','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3869,0,NULL,'ltu','latu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3870,0,NULL,'lua','luba-lulua','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3871,0,NULL,'luc','aringa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3872,0,NULL,'lud','ludian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3873,0,NULL,'lue','luvale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3874,0,NULL,'luf','laua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3875,0,NULL,'lui','luiseno','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3876,0,NULL,'luj','luna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3877,0,NULL,'luk','lunanakha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3878,0,NULL,'lul','olu''bo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3879,0,NULL,'lum','luimbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3880,0,NULL,'lun','lunda','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3881,0,NULL,'luo','dholuo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3881,0,NULL,'luo','luo (kenya and tanzania)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3882,0,NULL,'lup','lumbu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3883,0,NULL,'luq','lucumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3884,0,NULL,'lur','laura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3885,0,NULL,'lus','lushai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3886,0,NULL,'lut','lushootseed','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3887,0,NULL,'luu','lumba-yakkha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3888,0,NULL,'luv','luwati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3889,0,NULL,'luw','luo (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3890,0,NULL,'luy','luyia','1248825600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(3890,0,NULL,'luy','oluluyia','1248825600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(3891,0,NULL,'luz','southern luri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3892,0,NULL,'lva','maku''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3893,0,NULL,'lvk','lavukaleve','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3894,0,NULL,'lvs','standard latvian','1268265600',NULL,NULL,NULL,NULL,'lv',NULL,NULL); -INSERT INTO "iana_records" VALUES(3895,0,NULL,'lvu','levuka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3896,0,NULL,'lwa','lwalu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3897,0,NULL,'lwe','lewo eleng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3898,0,NULL,'lwg','oluwanga','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3898,0,NULL,'lwg','wanga','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(3899,0,NULL,'lwh','white lachi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3900,0,NULL,'lwl','eastern lawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3901,0,NULL,'lwm','laomian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3902,0,NULL,'lwo','luwo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3903,0,NULL,'lwt','lewotobi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3904,0,NULL,'lww','lewo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3905,0,NULL,'lya','layakha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3906,0,NULL,'lyg','lyngngam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3907,0,NULL,'lyn','luyana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3908,0,NULL,'lzh','literary chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(3909,0,NULL,'lzl','litzlitz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3910,0,NULL,'lzn','leinong naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3911,0,NULL,'lzz','laz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3912,0,NULL,'maa','san jerónimo tecóatl mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3913,0,NULL,'mab','yutanduchi mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3914,0,NULL,'mad','madurese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3915,0,NULL,'mae','bo-rukul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3916,0,NULL,'maf','mafa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3917,0,NULL,'mag','magahi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3918,0,NULL,'mai','maithili','1129420800',NULL,NULL,NULL,'deva',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3919,0,NULL,'maj','jalapa de díaz mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3920,0,NULL,'mak','makasar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3921,0,NULL,'mam','mam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3922,0,NULL,'man','mandingo','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(3923,0,NULL,'map','austronesian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(3924,0,NULL,'maq','chiquihuitlán mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3925,0,NULL,'mas','masai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3926,0,NULL,'mat','san francisco matlatzinca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3927,0,NULL,'mau','huautla mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3928,0,NULL,'mav','sateré-mawé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3929,0,NULL,'maw','mampruli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3930,0,NULL,'max','north moluccan malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(3931,0,NULL,'maz','central mazahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3932,0,NULL,'mba','higaonon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3933,0,NULL,'mbb','western bukidnon manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3934,0,NULL,'mbc','macushi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3935,0,NULL,'mbd','dibabawon manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3936,0,NULL,'mbe','molale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3937,0,NULL,'mbf','baba malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3938,0,NULL,'mbh','mangseng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3939,0,NULL,'mbi','ilianen manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3940,0,NULL,'mbj','nadëb','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3941,0,NULL,'mbk','malol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3942,0,NULL,'mbl','maxakalí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3943,0,NULL,'mbm','ombamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3944,0,NULL,'mbn','macaguán','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3945,0,NULL,'mbo','mbo (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3946,0,NULL,'mbp','malayo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3947,0,NULL,'mbq','maisin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3948,0,NULL,'mbr','nukak makú','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3949,0,NULL,'mbs','sarangani manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3950,0,NULL,'mbt','matigsalug manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3951,0,NULL,'mbu','mbula-bwazza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3952,0,NULL,'mbv','mbulungish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3953,0,NULL,'mbw','maring','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3954,0,NULL,'mbx','mari (east sepik province)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3955,0,NULL,'mby','memoni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3956,0,NULL,'mbz','amoltepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3957,0,NULL,'mca','maca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3958,0,NULL,'mcb','machiguenga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3959,0,NULL,'mcc','bitur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3960,0,NULL,'mcd','sharanahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3961,0,NULL,'mce','itundujia mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3962,0,NULL,'mcf','matsés','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3963,0,NULL,'mcg','mapoyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3964,0,NULL,'mch','maquiritari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3965,0,NULL,'mci','mese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3966,0,NULL,'mcj','mvanip','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3967,0,NULL,'mck','mbunda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3968,0,NULL,'mcl','macaguaje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3969,0,NULL,'mcm','malaccan creole portuguese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3970,0,NULL,'mcn','masana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3971,0,NULL,'mco','coatlán mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3972,0,NULL,'mcp','makaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3973,0,NULL,'mcq','ese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3974,0,NULL,'mcr','menya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3975,0,NULL,'mcs','mambai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3976,0,NULL,'mct','mengisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3977,0,NULL,'mcu','cameroon mambila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3978,0,NULL,'mcv','minanibai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3979,0,NULL,'mcw','mawa (chad)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3980,0,NULL,'mcx','mpiemo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3981,0,NULL,'mcy','south watut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3982,0,NULL,'mcz','mawan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3983,0,NULL,'mda','mada (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3984,0,NULL,'mdb','morigi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3985,0,NULL,'mdc','male (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3986,0,NULL,'mdd','mbum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3987,0,NULL,'mde','maba (chad)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3988,0,NULL,'mdf','moksha','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3989,0,NULL,'mdg','massalat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3990,0,NULL,'mdh','maguindanaon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3991,0,NULL,'mdi','mamvu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3992,0,NULL,'mdj','mangbetu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3993,0,NULL,'mdk','mangbutu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3994,0,NULL,'mdl','maltese sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3995,0,NULL,'mdm','mayogo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3996,0,NULL,'mdn','mbati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3997,0,NULL,'mdp','mbala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3998,0,NULL,'mdq','mbole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(3999,0,NULL,'mdr','mandar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4000,0,NULL,'mds','maria (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4001,0,NULL,'mdt','mbere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4002,0,NULL,'mdu','mboko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4003,0,NULL,'mdv','santa lucía monteverde mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4004,0,NULL,'mdw','mbosi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4005,0,NULL,'mdx','dizin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4006,0,NULL,'mdy','male (ethiopia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4007,0,NULL,'mdz','suruí do pará','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4008,0,NULL,'mea','menka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4009,0,NULL,'meb','ikobi-mena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4010,0,NULL,'mec','mara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4011,0,NULL,'med','melpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4012,0,NULL,'mee','mengen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4013,0,NULL,'mef','megam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4014,0,NULL,'meg','mea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4015,0,NULL,'meh','southwestern tlaxiaco mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4016,0,NULL,'mei','midob','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4017,0,NULL,'mej','meyah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4018,0,NULL,'mek','mekeo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4019,0,NULL,'mel','central melanau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4020,0,NULL,'mem','mangala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4021,0,NULL,'men','mende (sierra leone)','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4022,0,NULL,'meo','kedah malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(4023,0,NULL,'mep','miriwung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4024,0,NULL,'meq','merey','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4025,0,NULL,'mer','meru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4026,0,NULL,'mes','masmaje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4027,0,NULL,'met','mato','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4028,0,NULL,'meu','motu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4029,0,NULL,'mev','mann','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4030,0,NULL,'mew','maaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4031,0,NULL,'mey','hassaniyya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4032,0,NULL,'mez','menominee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4033,0,NULL,'mfa','pattani malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(4034,0,NULL,'mfb','bangka','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(4035,0,NULL,'mfc','mba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4036,0,NULL,'mfd','mendankwe-nkwen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4037,0,NULL,'mfe','morisyen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4038,0,NULL,'mff','naki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4039,0,NULL,'mfg','mixifore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4040,0,NULL,'mfh','matal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4041,0,NULL,'mfi','wandala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4042,0,NULL,'mfj','mefele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4043,0,NULL,'mfk','north mofu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4044,0,NULL,'mfl','putai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4045,0,NULL,'mfm','marghi south','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4046,0,NULL,'mfn','cross river mbembe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4047,0,NULL,'mfo','mbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4048,0,NULL,'mfp','makassar malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4049,0,NULL,'mfq','moba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4050,0,NULL,'mfr','marithiel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4051,0,NULL,'mfs','mexican sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4052,0,NULL,'mft','mokerang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4053,0,NULL,'mfu','mbwela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4054,0,NULL,'mfv','mandjak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4055,0,NULL,'mfw','mulaha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4056,0,NULL,'mfx','melo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4057,0,NULL,'mfy','mayo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4058,0,NULL,'mfz','mabaan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4059,0,NULL,'mga','middle irish (900-1200)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4060,0,NULL,'mgb','mararit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4061,0,NULL,'mgc','morokodo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4062,0,NULL,'mgd','moru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4063,0,NULL,'mge','mango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4064,0,NULL,'mgf','maklew','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4065,0,NULL,'mgg','mpongmpong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4066,0,NULL,'mgh','makhuwa-meetto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4067,0,NULL,'mgi','lijili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4068,0,NULL,'mgj','abureni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4069,0,NULL,'mgk','mawes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4070,0,NULL,'mgl','maleu-kilenge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4071,0,NULL,'mgm','mambae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4072,0,NULL,'mgn','mbangi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4073,0,NULL,'mgo','meta''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4074,0,NULL,'mgp','eastern magar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4075,0,NULL,'mgq','malila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4076,0,NULL,'mgr','mambwe-lungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4077,0,NULL,'mgs','manda (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4078,0,NULL,'mgt','mongol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4079,0,NULL,'mgu','mailu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4080,0,NULL,'mgv','matengo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4081,0,NULL,'mgw','matumbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4082,0,NULL,'mgx','omati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4083,0,NULL,'mgy','mbunga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4084,0,NULL,'mgz','mbugwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4085,0,NULL,'mha','manda (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4086,0,NULL,'mhb','mahongwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4087,0,NULL,'mhc','mocho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4088,0,NULL,'mhd','mbugu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4089,0,NULL,'mhe','besisi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4089,0,NULL,'mhe','mah meri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4090,0,NULL,'mhf','mamaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4091,0,NULL,'mhg','margu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4092,0,NULL,'mhh','maskoy pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4093,0,NULL,'mhi','ma''di','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4094,0,NULL,'mhj','mogholi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4095,0,NULL,'mhk','mungaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4096,0,NULL,'mhl','mauwake','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4097,0,NULL,'mhm','makhuwa-moniga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4098,0,NULL,'mhn','mócheno','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4099,0,NULL,'mho','mashi (zambia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4100,0,NULL,'mhp','balinese malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4101,0,NULL,'mhq','mandan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4102,0,NULL,'mhr','eastern mari','1248825600',NULL,NULL,NULL,NULL,'chm',NULL,NULL); -INSERT INTO "iana_records" VALUES(4103,0,NULL,'mhs','buru (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4104,0,NULL,'mht','mandahuaca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4105,0,NULL,'mhu','darang deng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4105,0,NULL,'mhu','digaro-mishmi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4106,0,NULL,'mhw','mbukushu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4107,0,NULL,'mhx','lhaovo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4107,0,NULL,'mhx','maru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4108,0,NULL,'mhy','ma''anyan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4109,0,NULL,'mhz','mor (mor islands)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4110,0,NULL,'mia','miami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4111,0,NULL,'mib','atatláhuca mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4112,0,NULL,'mic','mi''kmaq','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4112,0,NULL,'mic','micmac','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4113,0,NULL,'mid','mandaic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4114,0,NULL,'mie','ocotepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4115,0,NULL,'mif','mofu-gudur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4116,0,NULL,'mig','san miguel el grande mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4117,0,NULL,'mih','chayuco mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4118,0,NULL,'mii','chigmecatitlán mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4119,0,NULL,'mij','abar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4120,0,NULL,'mik','mikasuki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4121,0,NULL,'mil','peñoles mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4122,0,NULL,'mim','alacatlatzala mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4123,0,NULL,'min','minangkabau','1129420800',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(4124,0,NULL,'mio','pinotepa nacional mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4125,0,NULL,'mip','apasco-apoala mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4126,0,NULL,'miq','mískito','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4127,0,NULL,'mir','isthmus mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4128,0,NULL,'mis','uncoded languages','1129420800',NULL,NULL,NULL,NULL,NULL,'special',NULL); -INSERT INTO "iana_records" VALUES(4129,0,NULL,'mit','southern puebla mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4130,0,NULL,'miu','cacaloxtepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4131,0,NULL,'miw','akoye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4132,0,NULL,'mix','mixtepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4133,0,NULL,'miy','ayutla mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4134,0,NULL,'miz','coatzospan mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4135,0,NULL,'mja','mahei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4136,0,NULL,'mjc','san juan colorado mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4137,0,NULL,'mjd','northwest maidu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4138,0,NULL,'mje','muskum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4139,0,NULL,'mjg','tu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4140,0,NULL,'mjh','mwera (nyasa)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4141,0,NULL,'mji','kim mun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4142,0,NULL,'mjj','mawak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4143,0,NULL,'mjk','matukar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4144,0,NULL,'mjl','mandeali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4145,0,NULL,'mjm','medebur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4146,0,NULL,'mjn','ma (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4147,0,NULL,'mjo','malankuravan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4148,0,NULL,'mjp','malapandaram','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4149,0,NULL,'mjq','malaryan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4150,0,NULL,'mjr','malavedan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4151,0,NULL,'mjs','miship','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4152,0,NULL,'mjt','sauria paharia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4153,0,NULL,'mju','manna-dora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4154,0,NULL,'mjv','mannan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4155,0,NULL,'mjw','karbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4156,0,NULL,'mjx','mahali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4157,0,NULL,'mjy','mahican','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4158,0,NULL,'mjz','majhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4159,0,NULL,'mka','mbre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4160,0,NULL,'mkb','mal paharia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4161,0,NULL,'mkc','siliput','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4162,0,NULL,'mke','mawchi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4163,0,NULL,'mkf','miya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4164,0,NULL,'mkg','mak (china)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4165,0,NULL,'mkh','mon-khmer languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4166,0,NULL,'mki','dhatki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4167,0,NULL,'mkj','mokilese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4168,0,NULL,'mkk','byep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4169,0,NULL,'mkl','mokole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4170,0,NULL,'mkm','moklen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4171,0,NULL,'mkn','kupang malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4172,0,NULL,'mko','mingang doso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4173,0,NULL,'mkp','moikodi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4174,0,NULL,'mkq','bay miwok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4175,0,NULL,'mkr','malas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4176,0,NULL,'mks','silacayoapan mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4177,0,NULL,'mkt','vamale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4178,0,NULL,'mku','konyanka maninka','1248825600',NULL,NULL,NULL,NULL,'man',NULL,NULL); -INSERT INTO "iana_records" VALUES(4179,0,NULL,'mkv','mafea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4180,0,NULL,'mkw','kituba (congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4181,0,NULL,'mkx','kinamiging manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4182,0,NULL,'mky','east makian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4183,0,NULL,'mkz','makasae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4184,0,NULL,'mla','malo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4185,0,NULL,'mlb','mbule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4186,0,NULL,'mlc','cao lan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4187,0,NULL,'mld','malakhel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4188,0,NULL,'mle','manambu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4189,0,NULL,'mlf','mal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4190,0,NULL,'mlh','mape','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4191,0,NULL,'mli','malimpung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4192,0,NULL,'mlj','miltu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4193,0,NULL,'mlk','ilwana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4193,0,NULL,'mlk','kiwilwana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4194,0,NULL,'mll','malua bay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4195,0,NULL,'mlm','mulam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4196,0,NULL,'mln','malango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4197,0,NULL,'mlo','mlomp','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4198,0,NULL,'mlp','bargam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4199,0,NULL,'mlq','western maninkakan','1248825600',NULL,NULL,NULL,NULL,'man',NULL,NULL); -INSERT INTO "iana_records" VALUES(4200,0,NULL,'mlr','vame','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4201,0,NULL,'mls','masalit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4202,0,NULL,'mlu','to''abaita','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4203,0,NULL,'mlv','motlav','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4203,0,NULL,'mlv','mwotlap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4204,0,NULL,'mlw','moloko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4205,0,NULL,'mlx','malfaxal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4205,0,NULL,'mlx','naha''ai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4206,0,NULL,'mlz','malaynon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4207,0,NULL,'mma','mama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4208,0,NULL,'mmb','momina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4209,0,NULL,'mmc','michoacán mazahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4210,0,NULL,'mmd','maonan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4211,0,NULL,'mme','mae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4212,0,NULL,'mmf','mundat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4213,0,NULL,'mmg','north ambrym','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4214,0,NULL,'mmh','mehináku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4215,0,NULL,'mmi','musar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4216,0,NULL,'mmj','majhwar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4217,0,NULL,'mmk','mukha-dora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4218,0,NULL,'mml','man met','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4219,0,NULL,'mmm','maii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4220,0,NULL,'mmn','mamanwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4221,0,NULL,'mmo','mangga buang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4222,0,NULL,'mmp','siawi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4223,0,NULL,'mmq','musak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4224,0,NULL,'mmr','western xiangxi miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(4225,0,NULL,'mmt','malalamai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4226,0,NULL,'mmu','mmaala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4227,0,NULL,'mmv','miriti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4228,0,NULL,'mmw','emae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4229,0,NULL,'mmx','madak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4230,0,NULL,'mmy','migaama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4231,0,NULL,'mmz','mabaale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4232,0,NULL,'mna','mbula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4233,0,NULL,'mnb','muna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4234,0,NULL,'mnc','manchu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4235,0,NULL,'mnd','mondé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4236,0,NULL,'mne','naba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4237,0,NULL,'mnf','mundani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4238,0,NULL,'mng','eastern mnong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4239,0,NULL,'mnh','mono (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4240,0,NULL,'mni','manipuri','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4241,0,NULL,'mnj','munji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4242,0,NULL,'mnk','mandinka','1248825600',NULL,NULL,NULL,NULL,'man',NULL,NULL); -INSERT INTO "iana_records" VALUES(4243,0,NULL,'mnl','tiale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4244,0,NULL,'mnm','mapena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4245,0,NULL,'mnn','southern mnong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4246,0,NULL,'mno','manobo languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4247,0,NULL,'mnp','min bei chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(4248,0,NULL,'mnq','minriq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4249,0,NULL,'mnr','mono (usa)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4250,0,NULL,'mns','mansi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4251,0,NULL,'mnt','maykulan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4252,0,NULL,'mnu','mer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4253,0,NULL,'mnv','rennell-bellona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4254,0,NULL,'mnw','mon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4255,0,NULL,'mnx','manikion','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4256,0,NULL,'mny','manyawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4257,0,NULL,'mnz','moni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4258,0,NULL,'moa','mwan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4259,0,NULL,'moc','mocoví','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4260,0,NULL,'mod','mobilian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4261,0,NULL,'moe','montagnais','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4262,0,NULL,'mof','mohegan-montauk-narragansett','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see xnt, xpq'); -INSERT INTO "iana_records" VALUES(4263,0,NULL,'mog','mongondow','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4264,0,NULL,'moh','mohawk','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4265,0,NULL,'moi','mboi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4266,0,NULL,'moj','monzombo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4267,0,NULL,'mok','morori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4268,0,NULL,'mom','mangue','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4269,0,NULL,'moo','monom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4270,0,NULL,'mop','mopán maya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4271,0,NULL,'moq','mor (bomberai peninsula)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4272,0,NULL,'mor','moro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4273,0,NULL,'mos','mossi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4274,0,NULL,'mot','barí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4275,0,NULL,'mou','mogum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4276,0,NULL,'mov','mohave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4277,0,NULL,'mow','moi (congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4278,0,NULL,'mox','molima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4279,0,NULL,'moy','shekkacho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4280,0,NULL,'moz','mukulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4281,0,NULL,'mpa','mpoto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4282,0,NULL,'mpb','mullukmulluk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4283,0,NULL,'mpc','mangarayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4284,0,NULL,'mpd','machinere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4285,0,NULL,'mpe','majang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4286,0,NULL,'mpg','marba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4287,0,NULL,'mph','maung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4288,0,NULL,'mpi','mpade','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4289,0,NULL,'mpj','martu wangka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4290,0,NULL,'mpk','mbara (chad)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4291,0,NULL,'mpl','middle watut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4292,0,NULL,'mpm','yosondúa mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4293,0,NULL,'mpn','mindiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4294,0,NULL,'mpo','miu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4295,0,NULL,'mpp','migabac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4296,0,NULL,'mpq','matís','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4297,0,NULL,'mpr','vangunu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4298,0,NULL,'mps','dadibi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4299,0,NULL,'mpt','mian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4300,0,NULL,'mpu','makuráp','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4301,0,NULL,'mpv','mungkip','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4302,0,NULL,'mpw','mapidian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4303,0,NULL,'mpx','misima-paneati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4304,0,NULL,'mpy','mapia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4305,0,NULL,'mpz','mpi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4306,0,NULL,'mqa','maba (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4307,0,NULL,'mqb','mbuko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4308,0,NULL,'mqc','mangole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4309,0,NULL,'mqe','matepi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4310,0,NULL,'mqf','momuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4311,0,NULL,'mqg','kota bangun kutai malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(4312,0,NULL,'mqh','tlazoyaltepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4313,0,NULL,'mqi','mariri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4314,0,NULL,'mqj','mamasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4315,0,NULL,'mqk','rajah kabunsuwan manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4316,0,NULL,'mql','mbelime','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4317,0,NULL,'mqm','south marquesan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4318,0,NULL,'mqn','moronene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4319,0,NULL,'mqo','modole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4320,0,NULL,'mqp','manipa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4321,0,NULL,'mqq','minokok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4322,0,NULL,'mqr','mander','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4323,0,NULL,'mqs','west makian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4324,0,NULL,'mqt','mok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4325,0,NULL,'mqu','mandari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4326,0,NULL,'mqv','mosimo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4327,0,NULL,'mqw','murupi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4328,0,NULL,'mqx','mamuju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4329,0,NULL,'mqy','manggarai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4330,0,NULL,'mqz','malasanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4331,0,NULL,'mra','mlabri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4332,0,NULL,'mrb','marino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4333,0,NULL,'mrc','maricopa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4334,0,NULL,'mrd','western magar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4335,0,NULL,'mre','martha''s vineyard sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4336,0,NULL,'mrf','elseng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4337,0,NULL,'mrg','miri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4338,0,NULL,'mrh','mara chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4339,0,NULL,'mrj','western mari','1248825600',NULL,NULL,NULL,NULL,'chm',NULL,NULL); -INSERT INTO "iana_records" VALUES(4340,0,NULL,'mrk','hmwaveke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4341,0,NULL,'mrl','mortlockese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4342,0,NULL,'mrm','merlav','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4342,0,NULL,'mrm','mwerlap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4343,0,NULL,'mrn','cheke holo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4344,0,NULL,'mro','mru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4345,0,NULL,'mrp','morouas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4346,0,NULL,'mrq','north marquesan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4347,0,NULL,'mrr','maria (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4348,0,NULL,'mrs','maragus','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4349,0,NULL,'mrt','marghi central','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4350,0,NULL,'mru','mono (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4351,0,NULL,'mrv','mangareva','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4352,0,NULL,'mrw','maranao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4353,0,NULL,'mrx','dineor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4353,0,NULL,'mrx','maremgi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4354,0,NULL,'mry','mandaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4355,0,NULL,'mrz','marind','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4356,0,NULL,'msb','masbatenyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4357,0,NULL,'msc','sankaran maninka','1248825600',NULL,NULL,NULL,NULL,'man',NULL,NULL); -INSERT INTO "iana_records" VALUES(4358,0,NULL,'msd','yucatec maya sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4359,0,NULL,'mse','musey','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4360,0,NULL,'msf','mekwei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4361,0,NULL,'msg','moraid','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4362,0,NULL,'msh','masikoro malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(4363,0,NULL,'msi','sabah malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(4364,0,NULL,'msj','ma (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4365,0,NULL,'msk','mansaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4366,0,NULL,'msl','molof','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4366,0,NULL,'msl','poule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4367,0,NULL,'msm','agusan manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4368,0,NULL,'msn','vurës','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4369,0,NULL,'mso','mombum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4370,0,NULL,'msp','maritsauá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4371,0,NULL,'msq','caac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4372,0,NULL,'msr','mongolian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4373,0,NULL,'mss','west masela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4374,0,NULL,'mst','cataelano mandaya','1248825600',1268265600,'mry',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4375,0,NULL,'msu','musom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4376,0,NULL,'msv','maslam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4377,0,NULL,'msw','mansoanka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4378,0,NULL,'msx','moresada','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4379,0,NULL,'msy','aruamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4380,0,NULL,'msz','momare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4381,0,NULL,'mta','cotabato manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4382,0,NULL,'mtb','anyin morofo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4383,0,NULL,'mtc','munit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4384,0,NULL,'mtd','mualang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4385,0,NULL,'mte','mono (solomon islands)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4386,0,NULL,'mtf','murik (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4387,0,NULL,'mtg','una','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4388,0,NULL,'mth','munggui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4389,0,NULL,'mti','maiwa (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4390,0,NULL,'mtj','moskona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4391,0,NULL,'mtk','mbe''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4392,0,NULL,'mtl','montol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4393,0,NULL,'mtm','mator','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4394,0,NULL,'mtn','matagalpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4395,0,NULL,'mto','totontepec mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4396,0,NULL,'mtp','wichí lhamtés nocten','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4397,0,NULL,'mtq','muong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4398,0,NULL,'mtr','mewari','1248825600',NULL,NULL,NULL,NULL,'mwr',NULL,NULL); -INSERT INTO "iana_records" VALUES(4399,0,NULL,'mts','yora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4400,0,NULL,'mtt','mota','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4401,0,NULL,'mtu','tututepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4402,0,NULL,'mtv','asaro''o','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4403,0,NULL,'mtw','southern binukidnon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4404,0,NULL,'mtx','tidaá mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4405,0,NULL,'mty','nabi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4406,0,NULL,'mua','mundang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4407,0,NULL,'mub','mubi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4408,0,NULL,'muc','mbu''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4409,0,NULL,'mud','mednyj aleut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4410,0,NULL,'mue','media lengua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4411,0,NULL,'mug','musgu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4412,0,NULL,'muh','mündü','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4413,0,NULL,'mui','musi','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(4414,0,NULL,'muj','mabire','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4415,0,NULL,'muk','mugom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4416,0,NULL,'mul','multiple languages','1129420800',NULL,NULL,NULL,NULL,NULL,'special',NULL); -INSERT INTO "iana_records" VALUES(4417,0,NULL,'mum','maiwala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4418,0,NULL,'mun','munda languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4419,0,NULL,'muo','nyong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4420,0,NULL,'mup','malvi','1248825600',NULL,NULL,NULL,NULL,'raj',NULL,NULL); -INSERT INTO "iana_records" VALUES(4421,0,NULL,'muq','eastern xiangxi miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(4422,0,NULL,'mur','murle','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4423,0,NULL,'mus','creek','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4424,0,NULL,'mut','western muria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4425,0,NULL,'muu','yaaku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4426,0,NULL,'muv','muthuvan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4427,0,NULL,'mux','bo-ung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4428,0,NULL,'muy','muyang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4429,0,NULL,'muz','mursi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4430,0,NULL,'mva','manam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4431,0,NULL,'mvb','mattole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4432,0,NULL,'mvd','mamboru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4433,0,NULL,'mve','marwari (pakistan)','1248825600',NULL,NULL,NULL,NULL,'mwr',NULL,NULL); -INSERT INTO "iana_records" VALUES(4434,0,NULL,'mvf','peripheral mongolian','1248825600',NULL,NULL,NULL,NULL,'mn',NULL,NULL); -INSERT INTO "iana_records" VALUES(4435,0,NULL,'mvg','yucuañe mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4436,0,NULL,'mvh','mire','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4437,0,NULL,'mvi','miyako','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4438,0,NULL,'mvk','mekmek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4439,0,NULL,'mvl','mbara (australia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4440,0,NULL,'mvm','muya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4441,0,NULL,'mvn','minaveha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4442,0,NULL,'mvo','marovo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4443,0,NULL,'mvp','duri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4444,0,NULL,'mvq','moere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4445,0,NULL,'mvr','marau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4446,0,NULL,'mvs','massep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4447,0,NULL,'mvt','mpotovoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4448,0,NULL,'mvu','marfa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4449,0,NULL,'mvv','tagal murut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4450,0,NULL,'mvw','machinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4451,0,NULL,'mvx','meoswar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4452,0,NULL,'mvy','indus kohistani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4453,0,NULL,'mvz','mesqan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4454,0,NULL,'mwa','mwatebu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4455,0,NULL,'mwb','juwal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4456,0,NULL,'mwc','are','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4457,0,NULL,'mwd','mudbura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4458,0,NULL,'mwe','mwera (chimwera)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4459,0,NULL,'mwf','murrinh-patha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4460,0,NULL,'mwg','aiklep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4461,0,NULL,'mwh','mouk-aria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4462,0,NULL,'mwi','labo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4462,0,NULL,'mwi','ninde','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4463,0,NULL,'mwj','maligo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4464,0,NULL,'mwk','kita maninkakan','1248825600',NULL,NULL,NULL,NULL,'man',NULL,NULL); -INSERT INTO "iana_records" VALUES(4465,0,NULL,'mwl','mirandese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4466,0,NULL,'mwm','sar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4467,0,NULL,'mwn','nyamwanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4468,0,NULL,'mwo','central maewo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4469,0,NULL,'mwp','kala lagaw ya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4470,0,NULL,'mwq','mün chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4471,0,NULL,'mwr','marwari','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(4472,0,NULL,'mws','mwimbi-muthambi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4473,0,NULL,'mwt','moken','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4474,0,NULL,'mwu','mittu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4475,0,NULL,'mwv','mentawai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4476,0,NULL,'mww','hmong daw','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(4477,0,NULL,'mwx','mediak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4478,0,NULL,'mwy','mosiro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4479,0,NULL,'mwz','moingi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4480,0,NULL,'mxa','northwest oaxaca mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4481,0,NULL,'mxb','tezoatlán mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4482,0,NULL,'mxc','manyika','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4483,0,NULL,'mxd','modang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4484,0,NULL,'mxe','mele-fila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4485,0,NULL,'mxf','malgbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4486,0,NULL,'mxg','mbangala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4487,0,NULL,'mxh','mvuba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4488,0,NULL,'mxi','mozarabic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4489,0,NULL,'mxj','geman deng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4489,0,NULL,'mxj','miju-mishmi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4490,0,NULL,'mxk','monumbo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4491,0,NULL,'mxl','maxi gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4492,0,NULL,'mxm','meramera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4493,0,NULL,'mxn','moi (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4494,0,NULL,'mxo','mbowe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4495,0,NULL,'mxp','tlahuitoltepec mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4496,0,NULL,'mxq','juquila mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4497,0,NULL,'mxr','murik (malaysia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4498,0,NULL,'mxs','huitepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4499,0,NULL,'mxt','jamiltepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4500,0,NULL,'mxu','mada (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4501,0,NULL,'mxv','metlatónoc mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4502,0,NULL,'mxw','namo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4503,0,NULL,'mxx','mahou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4503,0,NULL,'mxx','mawukakan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4504,0,NULL,'mxy','southeastern nochixtlán mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4505,0,NULL,'mxz','central masela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4506,0,NULL,'myb','mbay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4507,0,NULL,'myc','mayeka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4508,0,NULL,'myd','maramba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4509,0,NULL,'mye','myene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4510,0,NULL,'myf','bambassi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4511,0,NULL,'myg','manta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4512,0,NULL,'myh','makah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4513,0,NULL,'myi','mina (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4514,0,NULL,'myj','mangayat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4515,0,NULL,'myk','mamara senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4516,0,NULL,'myl','moma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4517,0,NULL,'mym','me''en','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4518,0,NULL,'myn','mayan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4519,0,NULL,'myo','anfillo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4520,0,NULL,'myp','pirahã','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4521,0,NULL,'myq','forest maninka','1248825600',NULL,NULL,NULL,NULL,'man',NULL,NULL); -INSERT INTO "iana_records" VALUES(4522,0,NULL,'myr','muniche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4523,0,NULL,'mys','mesmes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4524,0,NULL,'myt','sangab mandaya','1248825600',1268265600,'mry',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4525,0,NULL,'myu','mundurukú','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4526,0,NULL,'myv','erzya','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4527,0,NULL,'myw','muyuw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4528,0,NULL,'myx','masaaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4529,0,NULL,'myy','macuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4530,0,NULL,'myz','classical mandaic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4531,0,NULL,'mza','santa maría zacatepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4532,0,NULL,'mzb','tumzabt','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4533,0,NULL,'mzc','madagascar sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4534,0,NULL,'mzd','malimba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4535,0,NULL,'mze','morawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4536,0,NULL,'mzg','monastic sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4537,0,NULL,'mzh','wichí lhamtés güisnay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4538,0,NULL,'mzi','ixcatlán mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4539,0,NULL,'mzj','manya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4540,0,NULL,'mzk','nigeria mambila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4541,0,NULL,'mzl','mazatlán mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4542,0,NULL,'mzm','mumuye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4543,0,NULL,'mzn','mazanderani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4544,0,NULL,'mzo','matipuhy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4545,0,NULL,'mzp','movima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4546,0,NULL,'mzq','mori atas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4547,0,NULL,'mzr','marúbo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4548,0,NULL,'mzs','macanese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4549,0,NULL,'mzt','mintil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4550,0,NULL,'mzu','inapang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4551,0,NULL,'mzv','manza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4552,0,NULL,'mzw','deg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4553,0,NULL,'mzx','mawayana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4554,0,NULL,'mzy','mozambican sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4555,0,NULL,'mzz','maiadomu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4556,0,NULL,'naa','namla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4557,0,NULL,'nab','southern nambikuára','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4558,0,NULL,'nac','narak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4559,0,NULL,'nad','nijadali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4560,0,NULL,'nae','naka''ela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4561,0,NULL,'naf','nabak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4562,0,NULL,'nag','naga pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4563,0,NULL,'nah','nahuatl languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4564,0,NULL,'nai','north american indian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4565,0,NULL,'naj','nalu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4566,0,NULL,'nak','nakanai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4567,0,NULL,'nal','nalik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4568,0,NULL,'nam','nangikurrunggurr','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4569,0,NULL,'nan','min nan chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(4570,0,NULL,'nao','naaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4571,0,NULL,'nap','neapolitan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4572,0,NULL,'naq','nama (namibia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4573,0,NULL,'nar','iguta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4574,0,NULL,'nas','naasioi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4575,0,NULL,'nat','hungworo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4576,0,NULL,'naw','nawuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4577,0,NULL,'nax','nakwi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4578,0,NULL,'nay','narrinyeri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4579,0,NULL,'naz','coatepec nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4580,0,NULL,'nba','nyemba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4581,0,NULL,'nbb','ndoe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4582,0,NULL,'nbc','chang naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4583,0,NULL,'nbd','ngbinda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4584,0,NULL,'nbe','konyak naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4585,0,NULL,'nbf','naxi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4586,0,NULL,'nbg','nagarchal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4587,0,NULL,'nbh','ngamo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4588,0,NULL,'nbi','mao naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4589,0,NULL,'nbj','ngarinman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4590,0,NULL,'nbk','nake','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4591,0,NULL,'nbm','ngbaka ma''bo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4592,0,NULL,'nbn','kuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4593,0,NULL,'nbo','nkukoli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4594,0,NULL,'nbp','nnam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4595,0,NULL,'nbq','nggem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4596,0,NULL,'nbr','numana-nunku-gbantu-numbu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4597,0,NULL,'nbs','namibian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4598,0,NULL,'nbt','na','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4599,0,NULL,'nbu','rongmei naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4600,0,NULL,'nbv','ngamambo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4601,0,NULL,'nbw','southern ngbandi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4602,0,NULL,'nbx','ngura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4603,0,NULL,'nby','ningera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4604,0,NULL,'nca','iyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4605,0,NULL,'ncb','central nicobarese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4606,0,NULL,'ncc','ponam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4607,0,NULL,'ncd','nachering','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4608,0,NULL,'nce','yale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4609,0,NULL,'ncf','notsi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4610,0,NULL,'ncg','nisga''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4611,0,NULL,'nch','central huasteca nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4612,0,NULL,'nci','classical nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4613,0,NULL,'ncj','northern puebla nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4614,0,NULL,'nck','nakara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4615,0,NULL,'ncl','michoacán nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4616,0,NULL,'ncm','nambo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4617,0,NULL,'ncn','nauna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4618,0,NULL,'nco','sibe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4619,0,NULL,'ncp','ndaktup','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4620,0,NULL,'ncr','ncane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4621,0,NULL,'ncs','nicaraguan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4622,0,NULL,'nct','chothe naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4623,0,NULL,'ncu','chumburung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4624,0,NULL,'ncx','central puebla nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4625,0,NULL,'ncz','natchez','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4626,0,NULL,'nda','ndasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4627,0,NULL,'ndb','kenswei nsei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4628,0,NULL,'ndc','ndau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4629,0,NULL,'ndd','nde-nsele-nta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4630,0,NULL,'ndf','nadruvian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4631,0,NULL,'ndg','ndengereko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4632,0,NULL,'ndh','ndali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4633,0,NULL,'ndi','samba leko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4634,0,NULL,'ndj','ndamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4635,0,NULL,'ndk','ndaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4636,0,NULL,'ndl','ndolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4637,0,NULL,'ndm','ndam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4638,0,NULL,'ndn','ngundi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4639,0,NULL,'ndp','ndo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4640,0,NULL,'ndq','ndombe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4641,0,NULL,'ndr','ndoola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4642,0,NULL,'nds','low german','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4642,0,NULL,'nds','low saxon','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4643,0,NULL,'ndt','ndunga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4644,0,NULL,'ndu','dugun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4645,0,NULL,'ndv','ndut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4646,0,NULL,'ndw','ndobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4647,0,NULL,'ndx','nduga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4648,0,NULL,'ndy','lutos','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4649,0,NULL,'ndz','ndogo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4650,0,NULL,'nea','eastern ngad''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4651,0,NULL,'neb','toura (côte d''ivoire)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4652,0,NULL,'nec','nedebang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4653,0,NULL,'ned','nde-gbite','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4654,0,NULL,'nee','kumak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4655,0,NULL,'nef','nefamese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4656,0,NULL,'neg','negidal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4657,0,NULL,'neh','nyenkha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4658,0,NULL,'nei','neo-hittite','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4659,0,NULL,'nej','neko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4660,0,NULL,'nek','neku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4661,0,NULL,'nem','nemi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4662,0,NULL,'nen','nengone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4663,0,NULL,'neo','ná-meo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4664,0,NULL,'neq','north central mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4665,0,NULL,'ner','yahadian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4666,0,NULL,'nes','bhoti kinnauri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4667,0,NULL,'net','nete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4668,0,NULL,'nev','nyaheun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4669,0,NULL,'new','nepal bhasa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4669,0,NULL,'new','newari','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4670,0,NULL,'nex','neme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4671,0,NULL,'ney','neyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4672,0,NULL,'nez','nez perce','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4673,0,NULL,'nfa','dhao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4674,0,NULL,'nfd','ahwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4675,0,NULL,'nfl','ayiwo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4675,0,NULL,'nfl','Äiwoo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4676,0,NULL,'nfr','nafaanra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4677,0,NULL,'nfu','mfumte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4678,0,NULL,'nga','ngbaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4679,0,NULL,'ngb','northern ngbandi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4680,0,NULL,'ngc','ngombe (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4681,0,NULL,'ngd','ngando (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4682,0,NULL,'nge','ngemba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4683,0,NULL,'ngf','trans-new guinea languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4684,0,NULL,'ngg','ngbaka manza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4685,0,NULL,'ngh','n/u','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4686,0,NULL,'ngi','ngizim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4687,0,NULL,'ngj','ngie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4688,0,NULL,'ngk','ngalkbun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4689,0,NULL,'ngl','lomwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4690,0,NULL,'ngm','ngatik men''s creole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4691,0,NULL,'ngn','ngwo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4692,0,NULL,'ngo','ngoni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4693,0,NULL,'ngp','ngulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4694,0,NULL,'ngq','ngoreme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4694,0,NULL,'ngq','ngurimi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4695,0,NULL,'ngr','nagu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4695,0,NULL,'ngr','nanggu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4696,0,NULL,'ngs','gvoko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4697,0,NULL,'ngt','ngeq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4698,0,NULL,'ngu','guerrero nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4699,0,NULL,'ngv','nagumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4700,0,NULL,'ngw','ngwaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4701,0,NULL,'ngx','nggwahyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4702,0,NULL,'ngy','tibea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4703,0,NULL,'ngz','ngungwel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4704,0,NULL,'nha','nhanda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4705,0,NULL,'nhb','beng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4706,0,NULL,'nhc','tabasco nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4707,0,NULL,'nhd','ava guaraní','1248825600',NULL,NULL,NULL,NULL,'gn',NULL,NULL); -INSERT INTO "iana_records" VALUES(4707,0,NULL,'nhd','chiripá','1248825600',NULL,NULL,NULL,NULL,'gn',NULL,NULL); -INSERT INTO "iana_records" VALUES(4708,0,NULL,'nhe','eastern huasteca nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4709,0,NULL,'nhf','nhuwala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4710,0,NULL,'nhg','tetelcingo nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4711,0,NULL,'nhh','nahari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4712,0,NULL,'nhi','zacatlán-ahuacatlán-tepetzintla nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4713,0,NULL,'nhk','isthmus-cosoleacaque nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4714,0,NULL,'nhm','morelos nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4715,0,NULL,'nhn','central nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4716,0,NULL,'nho','takuu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4717,0,NULL,'nhp','isthmus-pajapan nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4718,0,NULL,'nhq','huaxcaleca nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4719,0,NULL,'nhr','naro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4720,0,NULL,'nht','ometepec nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4721,0,NULL,'nhu','noone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4722,0,NULL,'nhv','temascaltepec nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4723,0,NULL,'nhw','western huasteca nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4724,0,NULL,'nhx','isthmus-mecayapan nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4725,0,NULL,'nhy','northern oaxaca nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4726,0,NULL,'nhz','santa maría la alta nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4727,0,NULL,'nia','nias','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4728,0,NULL,'nib','nakama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4729,0,NULL,'nic','niger-kordofanian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4730,0,NULL,'nid','ngandi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4731,0,NULL,'nie','niellim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4732,0,NULL,'nif','nek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4733,0,NULL,'nig','ngalakan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4734,0,NULL,'nih','nyiha (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4735,0,NULL,'nii','nii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4736,0,NULL,'nij','ngaju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4737,0,NULL,'nik','southern nicobarese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4738,0,NULL,'nil','nila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4739,0,NULL,'nim','nilamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4740,0,NULL,'nin','ninzo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4741,0,NULL,'nio','nganasan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4742,0,NULL,'niq','nandi','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(4743,0,NULL,'nir','nimboran','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4744,0,NULL,'nis','nimi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4745,0,NULL,'nit','southeastern kolami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4746,0,NULL,'niu','niuean','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4747,0,NULL,'niv','gilyak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4748,0,NULL,'niw','nimo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4749,0,NULL,'nix','hema','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4750,0,NULL,'niy','ngiti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4751,0,NULL,'niz','ningil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4752,0,NULL,'nja','nzanyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4753,0,NULL,'njb','nocte naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4754,0,NULL,'njd','ndonde hamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4755,0,NULL,'njh','lotha naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4756,0,NULL,'nji','gudanji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4757,0,NULL,'njj','njen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4758,0,NULL,'njl','njalgulgule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4759,0,NULL,'njm','angami naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4760,0,NULL,'njn','liangmai naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4761,0,NULL,'njo','ao naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4762,0,NULL,'njr','njerep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4763,0,NULL,'njs','nisa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4764,0,NULL,'njt','ndyuka-trio pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4765,0,NULL,'nju','ngadjunmaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4766,0,NULL,'njx','kunyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4767,0,NULL,'njy','njyem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4768,0,NULL,'nka','nkoya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4769,0,NULL,'nkb','khoibu naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4770,0,NULL,'nkc','nkongho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4771,0,NULL,'nkd','koireng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4772,0,NULL,'nke','duke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4773,0,NULL,'nkf','inpui naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4774,0,NULL,'nkg','nekgini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4775,0,NULL,'nkh','khezha naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4776,0,NULL,'nki','thangal naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4777,0,NULL,'nkj','nakai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4778,0,NULL,'nkk','nokuku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4779,0,NULL,'nkm','namat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4780,0,NULL,'nkn','nkangala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4781,0,NULL,'nko','nkonya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4782,0,NULL,'nkp','niuatoputapu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4783,0,NULL,'nkq','nkami','1271376000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4784,0,NULL,'nkr','nukuoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4785,0,NULL,'nks','north asmat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4786,0,NULL,'nkt','nyika (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4787,0,NULL,'nku','bouna kulango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4788,0,NULL,'nkv','nyika (malawi and zambia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4789,0,NULL,'nkw','nkutu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4790,0,NULL,'nkx','nkoroo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4791,0,NULL,'nkz','nkari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4792,0,NULL,'nla','ngombale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4793,0,NULL,'nlc','nalca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4794,0,NULL,'nle','east nyala','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(4795,0,NULL,'nlg','gela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4796,0,NULL,'nli','grangali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4797,0,NULL,'nlj','nyali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4798,0,NULL,'nlk','ninia yali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4799,0,NULL,'nll','nihali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4800,0,NULL,'nln','durango nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4801,0,NULL,'nlo','ngul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4802,0,NULL,'nlr','ngarla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4803,0,NULL,'nlu','nchumbulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4804,0,NULL,'nlv','orizaba nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4805,0,NULL,'nlx','nahali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4806,0,NULL,'nly','nyamal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4807,0,NULL,'nlz','nalögo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4808,0,NULL,'nma','maram naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4809,0,NULL,'nmb','big nambas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4809,0,NULL,'nmb','v''ënen taut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4810,0,NULL,'nmc','ngam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4811,0,NULL,'nmd','ndumu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4812,0,NULL,'nme','mzieme naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4813,0,NULL,'nmf','tangkhul naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4814,0,NULL,'nmg','kwasio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4815,0,NULL,'nmh','monsang naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4816,0,NULL,'nmi','nyam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4817,0,NULL,'nmj','ngombe (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4818,0,NULL,'nmk','namakura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4819,0,NULL,'nml','ndemli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4820,0,NULL,'nmm','manangba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4821,0,NULL,'nmn','!xóõ','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4822,0,NULL,'nmo','moyon naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4823,0,NULL,'nmp','nimanbur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4824,0,NULL,'nmq','nambya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4825,0,NULL,'nmr','nimbari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4826,0,NULL,'nms','letemboi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4827,0,NULL,'nmt','namonuito','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4828,0,NULL,'nmu','northeast maidu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4829,0,NULL,'nmv','ngamini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4830,0,NULL,'nmw','nimoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4831,0,NULL,'nmx','nama (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4832,0,NULL,'nmy','namuyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4833,0,NULL,'nmz','nawdm','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4834,0,NULL,'nna','nyangumarta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4835,0,NULL,'nnb','nande','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4836,0,NULL,'nnc','nancere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4837,0,NULL,'nnd','west ambae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4838,0,NULL,'nne','ngandyera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4839,0,NULL,'nnf','ngaing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4840,0,NULL,'nng','maring naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4841,0,NULL,'nnh','ngiemboon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4842,0,NULL,'nni','north nuaulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4843,0,NULL,'nnj','nyangatom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4844,0,NULL,'nnk','nankina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4845,0,NULL,'nnl','northern rengma naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4846,0,NULL,'nnm','namia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4847,0,NULL,'nnn','ngete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4848,0,NULL,'nnp','wancho naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4849,0,NULL,'nnq','ngindo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4850,0,NULL,'nnr','narungga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4851,0,NULL,'nns','ningye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4852,0,NULL,'nnt','nanticoke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4853,0,NULL,'nnu','dwang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4854,0,NULL,'nnv','nugunu (australia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4855,0,NULL,'nnw','southern nuni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4856,0,NULL,'nnx','ngong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4857,0,NULL,'nny','nyangga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4858,0,NULL,'nnz','nda''nda''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4859,0,NULL,'noa','woun meu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4860,0,NULL,'noc','nuk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4861,0,NULL,'nod','northern thai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4862,0,NULL,'noe','nimadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4863,0,NULL,'nof','nomane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4864,0,NULL,'nog','nogai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4865,0,NULL,'noh','nomu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4866,0,NULL,'noi','noiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4867,0,NULL,'noj','nonuya','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4868,0,NULL,'nok','nooksack','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4869,0,NULL,'nom','nocamán','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4870,0,NULL,'non','old norse','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4871,0,NULL,'noo','nootka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4872,0,NULL,'nop','numanggang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4873,0,NULL,'noq','ngongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4874,0,NULL,'nos','eastern nisu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4875,0,NULL,'not','nomatsiguenga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4876,0,NULL,'nou','ewage-notu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4877,0,NULL,'nov','novial','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4878,0,NULL,'now','nyambo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4879,0,NULL,'noy','noy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4880,0,NULL,'noz','nayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4881,0,NULL,'npa','nar phu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4882,0,NULL,'npb','nupbikha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4883,0,NULL,'nph','phom naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4884,0,NULL,'npl','southeastern puebla nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4885,0,NULL,'npn','mondropolon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4886,0,NULL,'npo','pochuri naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4887,0,NULL,'nps','nipsan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4888,0,NULL,'npu','puimei naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4889,0,NULL,'npy','napu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4890,0,NULL,'nqg','southern nago','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4891,0,NULL,'nqk','kura ede nago','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4892,0,NULL,'nqm','ndom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4893,0,NULL,'nqn','nen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4894,0,NULL,'nqo','n''ko','1149465600',NULL,NULL,NULL,'nkoo',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4894,0,NULL,'nqo','n’ko','1149465600',NULL,NULL,NULL,'nkoo',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4895,0,NULL,'nra','ngom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4896,0,NULL,'nrb','nara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4897,0,NULL,'nrc','noric','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4898,0,NULL,'nre','southern rengma naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4899,0,NULL,'nrg','narango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4900,0,NULL,'nri','chokri naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4901,0,NULL,'nrl','ngarluma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4902,0,NULL,'nrm','narom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4903,0,NULL,'nrn','norn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4904,0,NULL,'nrp','north picene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4905,0,NULL,'nrr','norra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4906,0,NULL,'nrt','northern kalapuya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4907,0,NULL,'nrx','ngurmbur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4908,0,NULL,'nrz','lala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4909,0,NULL,'nsa','sangtam naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4910,0,NULL,'nsc','nshi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4911,0,NULL,'nsd','southern nisu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4912,0,NULL,'nse','nsenga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4913,0,NULL,'nsg','ngasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4914,0,NULL,'nsh','ngoshie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4915,0,NULL,'nsi','nigerian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4916,0,NULL,'nsk','naskapi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4917,0,NULL,'nsl','norwegian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4918,0,NULL,'nsm','sumi naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4919,0,NULL,'nsn','nehan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4920,0,NULL,'nso','northern sotho','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4920,0,NULL,'nso','pedi','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4920,0,NULL,'nso','sepedi','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4921,0,NULL,'nsp','nepalese sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4922,0,NULL,'nsq','northern sierra miwok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4923,0,NULL,'nsr','maritime sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4924,0,NULL,'nss','nali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4925,0,NULL,'nst','tase naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4926,0,NULL,'nsu','sierra negra nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4927,0,NULL,'nsv','southwestern nisu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4928,0,NULL,'nsw','navut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4929,0,NULL,'nsx','nsongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4930,0,NULL,'nsy','nasal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4931,0,NULL,'nsz','nisenan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4932,0,NULL,'nte','nathembo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4933,0,NULL,'nti','natioro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4934,0,NULL,'ntj','ngaanyatjarra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4935,0,NULL,'ntk','ikoma-nata-isenye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4936,0,NULL,'ntm','nateni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4937,0,NULL,'nto','ntomba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4938,0,NULL,'ntp','northern tepehuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4939,0,NULL,'ntr','delo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4940,0,NULL,'nts','natagaimas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4941,0,NULL,'ntu','natügu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4942,0,NULL,'ntw','nottoway','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4943,0,NULL,'nty','mantsi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4944,0,NULL,'ntz','natanzi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4945,0,NULL,'nua','yuaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4946,0,NULL,'nub','nubian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(4947,0,NULL,'nuc','nukuini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4948,0,NULL,'nud','ngala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4949,0,NULL,'nue','ngundu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4950,0,NULL,'nuf','nusu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4951,0,NULL,'nug','nungali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4952,0,NULL,'nuh','ndunda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4953,0,NULL,'nui','ngumbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4954,0,NULL,'nuj','nyole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4955,0,NULL,'nul','nusa laut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4956,0,NULL,'num','niuafo''ou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4957,0,NULL,'nun','nung (myanmar)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4958,0,NULL,'nuo','nguôn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4959,0,NULL,'nup','nupe-nupe-tako','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4960,0,NULL,'nuq','nukumanu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4961,0,NULL,'nur','nukuria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4962,0,NULL,'nus','nuer','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4963,0,NULL,'nut','nung (viet nam)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4964,0,NULL,'nuu','ngbundu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4965,0,NULL,'nuv','northern nuni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4966,0,NULL,'nuw','nguluwan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4967,0,NULL,'nux','mehek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4968,0,NULL,'nuy','nunggubuyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4969,0,NULL,'nuz','tlamacazapa nahuatl','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4970,0,NULL,'nvh','nasarian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4971,0,NULL,'nvm','namiae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4972,0,NULL,'nwa','nawathinehena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4973,0,NULL,'nwb','nyabwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4974,0,NULL,'nwc','classical nepal bhasa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4974,0,NULL,'nwc','classical newari','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4974,0,NULL,'nwc','old newari','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4975,0,NULL,'nwe','ngwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4976,0,NULL,'nwi','southwest tanna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4977,0,NULL,'nwm','nyamusa-molo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4978,0,NULL,'nwr','nawaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4979,0,NULL,'nwx','middle newar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4980,0,NULL,'nwy','nottoway-meherrin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4981,0,NULL,'nxa','nauete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4982,0,NULL,'nxd','ngando (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4983,0,NULL,'nxe','nage','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4984,0,NULL,'nxg','ngad''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4985,0,NULL,'nxi','nindi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4986,0,NULL,'nxl','south nuaulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4987,0,NULL,'nxm','numidian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4988,0,NULL,'nxn','ngawun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4989,0,NULL,'nxr','ninggerum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4990,0,NULL,'nxu','narau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4991,0,NULL,'nxx','nafri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4992,0,NULL,'nyb','nyangbo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4993,0,NULL,'nyc','nyanga-li','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4994,0,NULL,'nyd','nyore','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(4994,0,NULL,'nyd','olunyole','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(4995,0,NULL,'nye','nyengo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4996,0,NULL,'nyf','giryama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4996,0,NULL,'nyf','kigiryama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4997,0,NULL,'nyg','nyindu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4998,0,NULL,'nyh','nyigina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(4999,0,NULL,'nyi','ama (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5000,0,NULL,'nyj','nyanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5001,0,NULL,'nyk','nyaneka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5002,0,NULL,'nyl','nyeu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5003,0,NULL,'nym','nyamwezi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5004,0,NULL,'nyn','nyankole','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5005,0,NULL,'nyo','nyoro','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5006,0,NULL,'nyp','nyang''i','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5007,0,NULL,'nyq','nayini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5008,0,NULL,'nyr','nyiha (malawi)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5009,0,NULL,'nys','nyunga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5010,0,NULL,'nyt','nyawaygi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5011,0,NULL,'nyu','nyungwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5012,0,NULL,'nyv','nyulnyul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5013,0,NULL,'nyw','nyaw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5014,0,NULL,'nyx','nganyaywana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5015,0,NULL,'nyy','nyakyusa-ngonde','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5016,0,NULL,'nza','tigon mbembe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5017,0,NULL,'nzb','njebi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5018,0,NULL,'nzi','nzima','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5019,0,NULL,'nzk','nzakara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5020,0,NULL,'nzm','zeme naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5021,0,NULL,'nzs','new zealand sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5022,0,NULL,'nzu','teke-nzikou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5023,0,NULL,'nzy','nzakambay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5024,0,NULL,'nzz','nanga dama dogon','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5025,0,NULL,'oaa','orok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5026,0,NULL,'oac','oroch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5027,0,NULL,'oar','ancient aramaic (up to 700 bce)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5027,0,NULL,'oar','old aramaic (up to 700 bce)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5028,0,NULL,'oav','old avar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5029,0,NULL,'obi','obispeño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5030,0,NULL,'obk','southern bontok','1268265600',NULL,NULL,NULL,NULL,'bnc',NULL,NULL); -INSERT INTO "iana_records" VALUES(5031,0,NULL,'obl','oblo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5032,0,NULL,'obm','moabite','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5033,0,NULL,'obo','obo manobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5034,0,NULL,'obr','old burmese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5035,0,NULL,'obt','old breton','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5036,0,NULL,'obu','obulom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5037,0,NULL,'oca','ocaina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5038,0,NULL,'och','old chinese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5039,0,NULL,'oco','old cornish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5040,0,NULL,'ocu','atzingo matlatzinca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5041,0,NULL,'oda','odut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5042,0,NULL,'odk','od','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5043,0,NULL,'odt','old dutch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5044,0,NULL,'odu','odual','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5045,0,NULL,'ofo','ofo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5046,0,NULL,'ofs','old frisian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5047,0,NULL,'ofu','efutop','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5048,0,NULL,'ogb','ogbia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5049,0,NULL,'ogc','ogbah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5050,0,NULL,'oge','old georgian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5051,0,NULL,'ogg','ogbogolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5052,0,NULL,'ogo','khana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5053,0,NULL,'ogu','ogbronuagum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5054,0,NULL,'oht','old hittite','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5055,0,NULL,'ohu','old hungarian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5056,0,NULL,'oia','oirata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5057,0,NULL,'oin','inebu one','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5058,0,NULL,'ojb','northwestern ojibwa','1248825600',NULL,NULL,NULL,NULL,'oj',NULL,NULL); -INSERT INTO "iana_records" VALUES(5059,0,NULL,'ojc','central ojibwa','1248825600',NULL,NULL,NULL,NULL,'oj',NULL,NULL); -INSERT INTO "iana_records" VALUES(5060,0,NULL,'ojg','eastern ojibwa','1248825600',NULL,NULL,NULL,NULL,'oj',NULL,NULL); -INSERT INTO "iana_records" VALUES(5061,0,NULL,'ojp','old japanese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5062,0,NULL,'ojs','severn ojibwa','1248825600',NULL,NULL,NULL,NULL,'oj',NULL,NULL); -INSERT INTO "iana_records" VALUES(5063,0,NULL,'ojv','ontong java','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5064,0,NULL,'ojw','western ojibwa','1248825600',NULL,NULL,NULL,NULL,'oj',NULL,NULL); -INSERT INTO "iana_records" VALUES(5065,0,NULL,'oka','okanagan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5066,0,NULL,'okb','okobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5067,0,NULL,'okd','okodia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5068,0,NULL,'oke','okpe (southwestern edo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5069,0,NULL,'okh','koresh-e rostam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5070,0,NULL,'oki','okiek','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(5071,0,NULL,'okj','oko-juwoi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5072,0,NULL,'okk','kwamtim one','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5073,0,NULL,'okl','old kentish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5074,0,NULL,'okm','middle korean (10th-16th cent.)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5075,0,NULL,'okn','oki-no-erabu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5076,0,NULL,'oko','old korean (3rd-9th cent.)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5077,0,NULL,'okr','kirike','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5078,0,NULL,'oks','oko-eni-osayen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5079,0,NULL,'oku','oku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5080,0,NULL,'okv','orokaiva','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5081,0,NULL,'okx','okpe (northwestern edo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5082,0,NULL,'ola','walungge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5083,0,NULL,'old','mochi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5084,0,NULL,'ole','olekha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5085,0,NULL,'olm','oloma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5086,0,NULL,'olo','livvi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5087,0,NULL,'olr','olrat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5088,0,NULL,'oma','omaha-ponca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5089,0,NULL,'omb','east ambae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5090,0,NULL,'omc','mochica','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5091,0,NULL,'ome','omejes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5092,0,NULL,'omg','omagua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5093,0,NULL,'omi','omi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5094,0,NULL,'omk','omok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5095,0,NULL,'oml','ombo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5096,0,NULL,'omn','minoan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5097,0,NULL,'omo','utarmbung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5098,0,NULL,'omp','old manipuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5099,0,NULL,'omq','oto-manguean languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5100,0,NULL,'omr','old marathi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5101,0,NULL,'omt','omotik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5102,0,NULL,'omu','omurano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5103,0,NULL,'omv','omotic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5104,0,NULL,'omw','south tairora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5105,0,NULL,'omx','old mon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5106,0,NULL,'ona','ona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5107,0,NULL,'onb','lingao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5108,0,NULL,'one','oneida','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5109,0,NULL,'ong','olo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5110,0,NULL,'oni','onin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5111,0,NULL,'onj','onjob','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5112,0,NULL,'onk','kabore one','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5113,0,NULL,'onn','onobasulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5114,0,NULL,'ono','onondaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5115,0,NULL,'onp','sartang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5116,0,NULL,'onr','northern one','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5117,0,NULL,'ons','ono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5118,0,NULL,'ont','ontenu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5119,0,NULL,'onu','unua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5120,0,NULL,'onw','old nubian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5121,0,NULL,'onx','onin based pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5122,0,NULL,'ood','tohono o''odham','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5123,0,NULL,'oog','ong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5124,0,NULL,'oon','Önge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5125,0,NULL,'oor','oorlams','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5126,0,NULL,'oos','old ossetic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5127,0,NULL,'opa','okpamheri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5128,0,NULL,'opk','kopkaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5129,0,NULL,'opm','oksapmin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5130,0,NULL,'opo','opao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5131,0,NULL,'opt','opata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5132,0,NULL,'opy','ofayé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5133,0,NULL,'ora','oroha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5134,0,NULL,'orc','orma','1248825600',NULL,NULL,NULL,NULL,'om',NULL,NULL); -INSERT INTO "iana_records" VALUES(5135,0,NULL,'ore','orejón','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5136,0,NULL,'org','oring','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5137,0,NULL,'orh','oroqen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5138,0,NULL,'orn','orang kanaq','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(5139,0,NULL,'oro','orokolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5140,0,NULL,'orr','oruma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5141,0,NULL,'ors','orang seletar','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(5142,0,NULL,'ort','adivasi oriya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5143,0,NULL,'oru','ormuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5144,0,NULL,'orv','old russian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5145,0,NULL,'orw','oro win','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5146,0,NULL,'orx','oro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5147,0,NULL,'orz','ormu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5148,0,NULL,'osa','osage','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5149,0,NULL,'osc','oscan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5150,0,NULL,'osi','osing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5151,0,NULL,'oso','ososo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5152,0,NULL,'osp','old spanish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5153,0,NULL,'ost','osatu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5154,0,NULL,'osu','southern one','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5155,0,NULL,'osx','old saxon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5156,0,NULL,'ota','ottoman turkish (1500-1928)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5157,0,NULL,'otb','old tibetan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5158,0,NULL,'otd','ot danum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5159,0,NULL,'ote','mezquital otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5160,0,NULL,'oti','oti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5161,0,NULL,'otk','old turkish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5162,0,NULL,'otl','tilapa otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5163,0,NULL,'otm','eastern highland otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5164,0,NULL,'otn','tenango otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5165,0,NULL,'oto','otomian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5166,0,NULL,'otq','querétaro otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5167,0,NULL,'otr','otoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5168,0,NULL,'ots','estado de méxico otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5169,0,NULL,'ott','temoaya otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5170,0,NULL,'otu','otuke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5171,0,NULL,'otw','ottawa','1248825600',NULL,NULL,NULL,NULL,'oj',NULL,NULL); -INSERT INTO "iana_records" VALUES(5172,0,NULL,'otx','texcatepec otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5173,0,NULL,'oty','old tamil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5174,0,NULL,'otz','ixtenco otomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5175,0,NULL,'oua','tagargrent','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5176,0,NULL,'oub','glio-oubi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5177,0,NULL,'oue','ounge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5178,0,NULL,'oui','old uighur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5179,0,NULL,'oum','ouma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5180,0,NULL,'oun','!o!ung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5181,0,NULL,'owi','owiniga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5182,0,NULL,'owl','old welsh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5183,0,NULL,'oyb','oy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5184,0,NULL,'oyd','oyda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5185,0,NULL,'oym','wayampi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5186,0,NULL,'oyy','oya''oya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5187,0,NULL,'ozm','koonzime','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5188,0,NULL,'paa','papuan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5189,0,NULL,'pab','parecís','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5190,0,NULL,'pac','pacoh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5191,0,NULL,'pad','paumarí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5192,0,NULL,'pae','pagibete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5193,0,NULL,'paf','paranawát','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5194,0,NULL,'pag','pangasinan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5195,0,NULL,'pah','tenharim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5196,0,NULL,'pai','pe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5197,0,NULL,'pak','parakanã','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5198,0,NULL,'pal','pahlavi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5199,0,NULL,'pam','kapampangan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5199,0,NULL,'pam','pampanga','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5200,0,NULL,'pao','northern paiute','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5201,0,NULL,'pap','papiamento','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5202,0,NULL,'paq','parya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5203,0,NULL,'par','panamint','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5203,0,NULL,'par','timbisha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5204,0,NULL,'pas','papasena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5205,0,NULL,'pat','papitalai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5206,0,NULL,'pau','palauan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5207,0,NULL,'pav','pakaásnovos','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5208,0,NULL,'paw','pawnee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5209,0,NULL,'pax','pankararé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5210,0,NULL,'pay','pech','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5211,0,NULL,'paz','pankararú','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5212,0,NULL,'pbb','páez','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5213,0,NULL,'pbc','patamona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5214,0,NULL,'pbe','mezontla popoloca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5215,0,NULL,'pbf','coyotepec popoloca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5216,0,NULL,'pbg','paraujano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5217,0,NULL,'pbh','e''ñapa woromaipu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5218,0,NULL,'pbi','parkwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5219,0,NULL,'pbl','mak (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5220,0,NULL,'pbn','kpasam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5221,0,NULL,'pbo','papel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5222,0,NULL,'pbp','badyara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5223,0,NULL,'pbr','pangwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5224,0,NULL,'pbs','central pame','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5225,0,NULL,'pbt','southern pashto','1248825600',NULL,NULL,NULL,NULL,'ps',NULL,NULL); -INSERT INTO "iana_records" VALUES(5226,0,NULL,'pbu','northern pashto','1248825600',NULL,NULL,NULL,NULL,'ps',NULL,NULL); -INSERT INTO "iana_records" VALUES(5227,0,NULL,'pbv','pnar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5228,0,NULL,'pby','pyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5229,0,NULL,'pbz','palu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5230,0,NULL,'pca','santa inés ahuatempan popoloca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5231,0,NULL,'pcb','pear','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5232,0,NULL,'pcc','bouyei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5233,0,NULL,'pcd','picard','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5234,0,NULL,'pce','ruching palaung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5235,0,NULL,'pcf','paliyan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5236,0,NULL,'pcg','paniya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5237,0,NULL,'pch','pardhan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5238,0,NULL,'pci','duruwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5239,0,NULL,'pcj','parenga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5240,0,NULL,'pck','paite chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5241,0,NULL,'pcl','pardhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5242,0,NULL,'pcm','nigerian pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5243,0,NULL,'pcn','piti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5244,0,NULL,'pcp','pacahuara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5245,0,NULL,'pcr','panang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5246,0,NULL,'pcw','pyapun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5247,0,NULL,'pda','anam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5248,0,NULL,'pdc','pennsylvania german','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5249,0,NULL,'pdi','pa di','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5250,0,NULL,'pdn','fedan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5250,0,NULL,'pdn','podena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5251,0,NULL,'pdo','padoe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5252,0,NULL,'pdt','plautdietsch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5253,0,NULL,'pdu','kayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5254,0,NULL,'pea','peranakan indonesian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5255,0,NULL,'peb','eastern pomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5256,0,NULL,'ped','mala (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5257,0,NULL,'pee','taje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5258,0,NULL,'pef','northeastern pomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5259,0,NULL,'peg','pengo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5260,0,NULL,'peh','bonan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5261,0,NULL,'pei','chichimeca-jonaz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5262,0,NULL,'pej','northern pomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5263,0,NULL,'pek','penchal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5264,0,NULL,'pel','pekal','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(5265,0,NULL,'pem','phende','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5266,0,NULL,'peo','old persian (ca. 600-400 b.c.)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5267,0,NULL,'pep','kunja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5268,0,NULL,'peq','southern pomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5269,0,NULL,'pes','iranian persian','1248825600',NULL,NULL,NULL,NULL,'fa',NULL,NULL); -INSERT INTO "iana_records" VALUES(5270,0,NULL,'pev','pémono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5271,0,NULL,'pex','petats','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5272,0,NULL,'pey','petjo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5273,0,NULL,'pez','eastern penan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5274,0,NULL,'pfa','pááfang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5275,0,NULL,'pfe','peere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5276,0,NULL,'pfl','pfaelzisch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5277,0,NULL,'pga','sudanese creole arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(5278,0,NULL,'pgg','pangwali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5279,0,NULL,'pgi','pagi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5280,0,NULL,'pgk','rerep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5281,0,NULL,'pgn','paelignian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5282,0,NULL,'pgs','pangseng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5283,0,NULL,'pgu','pagu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5284,0,NULL,'pgy','pongyong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5285,0,NULL,'pha','pa-hng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5286,0,NULL,'phd','phudagi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5287,0,NULL,'phg','phuong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5288,0,NULL,'phh','phukha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5289,0,NULL,'phi','philippine languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5290,0,NULL,'phk','phake','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5291,0,NULL,'phl','palula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5291,0,NULL,'phl','phalura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5292,0,NULL,'phm','phimbi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5293,0,NULL,'phn','phoenician','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5294,0,NULL,'pho','phunoi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5295,0,NULL,'phq','phana''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5296,0,NULL,'phr','pahari-potwari','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(5297,0,NULL,'pht','phu thai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5298,0,NULL,'phu','phuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5299,0,NULL,'phv','pahlavani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5300,0,NULL,'phw','phangduwali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5301,0,NULL,'pia','pima bajo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5302,0,NULL,'pib','yine','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5303,0,NULL,'pic','pinji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5304,0,NULL,'pid','piaroa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5305,0,NULL,'pie','piro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5306,0,NULL,'pif','pingelapese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5307,0,NULL,'pig','pisabo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5308,0,NULL,'pih','pitcairn-norfolk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5309,0,NULL,'pii','pini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5310,0,NULL,'pij','pijao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5311,0,NULL,'pil','yom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5312,0,NULL,'pim','powhatan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5313,0,NULL,'pin','piame','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5314,0,NULL,'pio','piapoco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5315,0,NULL,'pip','pero','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5316,0,NULL,'pir','piratapuyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5317,0,NULL,'pis','pijin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5318,0,NULL,'pit','pitta pitta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5319,0,NULL,'piu','pintupi-luritja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5320,0,NULL,'piv','pileni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5320,0,NULL,'piv','vaeakau-taumako','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5321,0,NULL,'piw','pimbwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5322,0,NULL,'pix','piu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5323,0,NULL,'piy','piya-kwonci','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5324,0,NULL,'piz','pije','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5325,0,NULL,'pjt','pitjantjatjara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5326,0,NULL,'pka','ardhamāgadhī prākrit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5327,0,NULL,'pkb','kipfokomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5327,0,NULL,'pkb','pokomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5328,0,NULL,'pkc','paekche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5329,0,NULL,'pkg','pak-tong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5330,0,NULL,'pkh','pankhu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5331,0,NULL,'pkn','pakanha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5332,0,NULL,'pko','pökoot','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(5333,0,NULL,'pkp','pukapuka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5334,0,NULL,'pkr','attapady kurumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5335,0,NULL,'pks','pakistan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5336,0,NULL,'pkt','maleng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5337,0,NULL,'pku','paku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5338,0,NULL,'pla','miani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5339,0,NULL,'plb','polonombauk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5340,0,NULL,'plc','central palawano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5341,0,NULL,'pld','polari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5342,0,NULL,'ple','palu''e','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5343,0,NULL,'plf','central malayo-polynesian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5344,0,NULL,'plg','pilagá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5345,0,NULL,'plh','paulohi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5346,0,NULL,'plj','polci','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5347,0,NULL,'plk','kohistani shina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5348,0,NULL,'pll','shwe palaung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5349,0,NULL,'pln','palenquero','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5350,0,NULL,'plo','oluta popoluca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5351,0,NULL,'plp','palpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5352,0,NULL,'plq','palaic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5353,0,NULL,'plr','palaka senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5354,0,NULL,'pls','san marcos tlalcoyalco popoloca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5355,0,NULL,'plt','plateau malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(5356,0,NULL,'plu','palikúr','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5357,0,NULL,'plv','southwest palawano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5358,0,NULL,'plw','brooke''s point palawano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5359,0,NULL,'ply','bolyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5360,0,NULL,'plz','paluan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5361,0,NULL,'pma','paama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5362,0,NULL,'pmb','pambia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5363,0,NULL,'pmc','palumata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5364,0,NULL,'pme','pwaamei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5365,0,NULL,'pmf','pamona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5366,0,NULL,'pmh','māhārāṣṭri prākrit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5367,0,NULL,'pmi','northern pumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5368,0,NULL,'pmj','southern pumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5369,0,NULL,'pmk','pamlico','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5370,0,NULL,'pml','lingua franca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5371,0,NULL,'pmm','pomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5372,0,NULL,'pmn','pam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5373,0,NULL,'pmo','pom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5374,0,NULL,'pmq','northern pame','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5375,0,NULL,'pmr','paynamar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5376,0,NULL,'pms','piemontese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5377,0,NULL,'pmt','tuamotuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5378,0,NULL,'pmu','mirpur panjabi','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(5379,0,NULL,'pmw','plains miwok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5380,0,NULL,'pmx','poumei naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5381,0,NULL,'pmy','papuan malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5382,0,NULL,'pmz','southern pame','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5383,0,NULL,'pna','punan bah-biau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5384,0,NULL,'pnb','western panjabi','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(5385,0,NULL,'pnc','pannei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5386,0,NULL,'pne','western penan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5387,0,NULL,'png','pongu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5388,0,NULL,'pnh','penrhyn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5389,0,NULL,'pni','aoheng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5390,0,NULL,'pnm','punan batu 1','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5391,0,NULL,'pnn','pinai-hagahai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5392,0,NULL,'pno','panobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5393,0,NULL,'pnp','pancana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5394,0,NULL,'pnq','pana (burkina faso)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5395,0,NULL,'pnr','panim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5396,0,NULL,'pns','ponosakan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5397,0,NULL,'pnt','pontic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5398,0,NULL,'pnu','jiongnai bunu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5399,0,NULL,'pnv','pinigura','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5400,0,NULL,'pnw','panytyima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5401,0,NULL,'pnx','phong-kniang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5402,0,NULL,'pny','pinyin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,'a niger-congo language spoken in cameroon; not to be confused with the pinyin romanization systems used for chinese and tibetan'); -INSERT INTO "iana_records" VALUES(5403,0,NULL,'pnz','pana (central african republic)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5404,0,NULL,'poc','poqomam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5405,0,NULL,'pod','ponares','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5406,0,NULL,'poe','san juan atzingo popoloca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5407,0,NULL,'pof','poke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5408,0,NULL,'pog','potiguára','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5409,0,NULL,'poh','poqomchi''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5410,0,NULL,'poi','highland popoluca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5411,0,NULL,'pok','pokangá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5412,0,NULL,'pom','southeastern pomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5413,0,NULL,'pon','pohnpeian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5414,0,NULL,'poo','central pomo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5415,0,NULL,'pop','pwapwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5416,0,NULL,'poq','texistepec popoluca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5417,0,NULL,'pos','sayula popoluca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5418,0,NULL,'pot','potawatomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5419,0,NULL,'pov','upper guinea crioulo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5420,0,NULL,'pow','san felipe otlaltepec popoloca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5421,0,NULL,'pox','polabian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5422,0,NULL,'poy','pogolo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5423,0,NULL,'poz','malayo-polynesian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5424,0,NULL,'ppa','pao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5425,0,NULL,'ppe','papi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5426,0,NULL,'ppi','paipai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5427,0,NULL,'ppk','uma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5428,0,NULL,'ppl','nicarao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5428,0,NULL,'ppl','pipil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5429,0,NULL,'ppm','papuma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5430,0,NULL,'ppn','papapana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5431,0,NULL,'ppo','folopa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5432,0,NULL,'ppp','pelende','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5433,0,NULL,'ppq','pei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5434,0,NULL,'ppr','piru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5435,0,NULL,'pps','san luís temalacayuca popoloca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5436,0,NULL,'ppt','pare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5437,0,NULL,'ppu','papora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5438,0,NULL,'pqa','pa''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5439,0,NULL,'pqe','eastern malayo-polynesian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5440,0,NULL,'pqm','malecite-passamaquoddy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5441,0,NULL,'pqw','western malayo-polynesian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5442,0,NULL,'pra','prakrit languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5443,0,NULL,'prb','lua''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5444,0,NULL,'prc','parachi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5445,0,NULL,'prd','parsi-dari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5446,0,NULL,'pre','principense','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5447,0,NULL,'prf','paranan','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5448,0,NULL,'prg','prussian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5449,0,NULL,'prh','porohanon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5450,0,NULL,'pri','paicî','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5451,0,NULL,'prk','parauk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5452,0,NULL,'prl','peruvian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5453,0,NULL,'prm','kibiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5454,0,NULL,'prn','prasuni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5455,0,NULL,'pro','old occitan (to 1500)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5455,0,NULL,'pro','old provençal (to 1500)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5456,0,NULL,'prp','parsi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5457,0,NULL,'prq','ashéninka perené','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5458,0,NULL,'prr','puri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5459,0,NULL,'prs','afghan persian','1248825600',NULL,NULL,NULL,NULL,'fa',NULL,NULL); -INSERT INTO "iana_records" VALUES(5459,0,NULL,'prs','dari','1248825600',NULL,NULL,NULL,NULL,'fa',NULL,NULL); -INSERT INTO "iana_records" VALUES(5460,0,NULL,'prt','phai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5461,0,NULL,'pru','puragi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5462,0,NULL,'prw','parawen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5463,0,NULL,'prx','purik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5464,0,NULL,'pry','pray 3','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5465,0,NULL,'prz','providencia sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5466,0,NULL,'psa','asue awyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5467,0,NULL,'psc','persian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5468,0,NULL,'psd','plains indian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5469,0,NULL,'pse','central malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(5470,0,NULL,'psg','penang sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5471,0,NULL,'psh','southwest pashayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5472,0,NULL,'psi','southeast pashayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5473,0,NULL,'psl','puerto rican sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5474,0,NULL,'psm','pauserna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5475,0,NULL,'psn','panasuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5476,0,NULL,'pso','polish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5477,0,NULL,'psp','philippine sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5478,0,NULL,'psq','pasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5479,0,NULL,'psr','portuguese sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5480,0,NULL,'pss','kaulong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5481,0,NULL,'pst','central pashto','1248825600',NULL,NULL,NULL,NULL,'ps',NULL,NULL); -INSERT INTO "iana_records" VALUES(5482,0,NULL,'psu','sauraseni prākrit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5483,0,NULL,'psw','port sandwich','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5484,0,NULL,'psy','piscataway','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5485,0,NULL,'pta','pai tavytera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5486,0,NULL,'pth','pataxó hã-ha-hãe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5487,0,NULL,'pti','pintiini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5488,0,NULL,'ptn','patani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5489,0,NULL,'pto','zo''é','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5490,0,NULL,'ptp','patep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5491,0,NULL,'ptr','piamatsina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5492,0,NULL,'ptt','enrekang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5493,0,NULL,'ptu','bambam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5494,0,NULL,'ptv','port vato','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5495,0,NULL,'ptw','pentlatch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5496,0,NULL,'pty','pathiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5497,0,NULL,'pua','western highland purepecha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5498,0,NULL,'pub','purum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5499,0,NULL,'puc','punan merap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5500,0,NULL,'pud','punan aput','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5501,0,NULL,'pue','puelche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5502,0,NULL,'puf','punan merah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5503,0,NULL,'pug','phuie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5504,0,NULL,'pui','puinave','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5505,0,NULL,'puj','punan tubu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5506,0,NULL,'puk','pu ko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5507,0,NULL,'pum','puma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5508,0,NULL,'puo','puoc','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5509,0,NULL,'pup','pulabu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5510,0,NULL,'puq','puquina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5511,0,NULL,'pur','puruborá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5512,0,NULL,'put','putoh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5513,0,NULL,'puu','punu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5514,0,NULL,'puw','puluwatese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5515,0,NULL,'pux','puare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5516,0,NULL,'puy','purisimeño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5517,0,NULL,'puz','purum naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5518,0,NULL,'pwa','pawaia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5519,0,NULL,'pwb','panawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5520,0,NULL,'pwg','gapapaiwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5521,0,NULL,'pwm','molbog','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5522,0,NULL,'pwn','paiwan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5523,0,NULL,'pwo','pwo western karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5524,0,NULL,'pwr','powari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5525,0,NULL,'pww','pwo northern karen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5526,0,NULL,'pxm','quetzaltepec mixe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5527,0,NULL,'pye','pye krumen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5528,0,NULL,'pym','fyam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5529,0,NULL,'pyn','poyanáwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5530,0,NULL,'pys','lengua de señas del paraguay','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5530,0,NULL,'pys','paraguayan sign language','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5531,0,NULL,'pyu','puyuma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5532,0,NULL,'pyx','pyu (myanmar)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5533,0,NULL,'pyy','pyen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5534,0,NULL,'pzn','para naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5535,0,NULL,'qaa..qtz','private use','1129420800',NULL,NULL,NULL,NULL,NULL,'private-use',NULL); -INSERT INTO "iana_records" VALUES(5536,0,NULL,'qua','quapaw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5537,0,NULL,'qub','huallaga huánuco quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5538,0,NULL,'quc','k''iche''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5538,0,NULL,'quc','quiché','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5539,0,NULL,'qud','calderón highland quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5540,0,NULL,'quf','lambayeque quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5541,0,NULL,'qug','chimborazo highland quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5542,0,NULL,'quh','south bolivian quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5543,0,NULL,'qui','quileute','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5544,0,NULL,'quk','chachapoyas quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5545,0,NULL,'qul','north bolivian quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5546,0,NULL,'qum','sipacapense','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5547,0,NULL,'qun','quinault','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5548,0,NULL,'qup','southern pastaza quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5549,0,NULL,'quq','quinqui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5550,0,NULL,'qur','yanahuanca pasco quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5551,0,NULL,'qus','santiago del estero quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5552,0,NULL,'quv','sacapulteco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5553,0,NULL,'quw','tena lowland quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5554,0,NULL,'qux','yauyos quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5555,0,NULL,'quy','ayacucho quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5556,0,NULL,'quz','cusco quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5557,0,NULL,'qva','ambo-pasco quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5558,0,NULL,'qvc','cajamarca quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5559,0,NULL,'qve','eastern apurímac quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5560,0,NULL,'qvh','huamalíes-dos de mayo huánuco quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5561,0,NULL,'qvi','imbabura highland quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5562,0,NULL,'qvj','loja highland quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5563,0,NULL,'qvl','cajatambo north lima quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5564,0,NULL,'qvm','margos-yarowilca-lauricocha quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5565,0,NULL,'qvn','north junín quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5566,0,NULL,'qvo','napo lowland quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5567,0,NULL,'qvp','pacaraos quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5568,0,NULL,'qvs','san martín quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5569,0,NULL,'qvw','huaylla wanca quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5570,0,NULL,'qvy','queyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5571,0,NULL,'qvz','northern pastaza quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5572,0,NULL,'qwa','corongo ancash quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5573,0,NULL,'qwc','classical quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5574,0,NULL,'qwe','quechuan (family)','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5575,0,NULL,'qwh','huaylas ancash quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5576,0,NULL,'qwm','kuman (russia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5577,0,NULL,'qws','sihuas ancash quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5578,0,NULL,'qwt','kwalhioqua-tlatskanai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5579,0,NULL,'qxa','chiquián ancash quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5580,0,NULL,'qxc','chincha quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5581,0,NULL,'qxh','panao huánuco quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5582,0,NULL,'qxl','salasaca highland quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5583,0,NULL,'qxn','northern conchucos ancash quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5584,0,NULL,'qxo','southern conchucos ancash quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5585,0,NULL,'qxp','puno quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5586,0,NULL,'qxq','qashqa''i','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5587,0,NULL,'qxr','cañar highland quichua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5588,0,NULL,'qxs','southern qiang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5589,0,NULL,'qxt','santa ana de tusi pasco quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5590,0,NULL,'qxu','arequipa-la unión quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5591,0,NULL,'qxw','jauja wanca quechua','1248825600',NULL,NULL,NULL,NULL,'qu',NULL,NULL); -INSERT INTO "iana_records" VALUES(5592,0,NULL,'qya','quenya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5593,0,NULL,'qyp','quiripi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5594,0,NULL,'raa','dungmali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5595,0,NULL,'rab','camling','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5596,0,NULL,'rac','rasawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5597,0,NULL,'rad','rade','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5598,0,NULL,'raf','western meohang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5599,0,NULL,'rag','logooli','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(5599,0,NULL,'rag','lulogooli','1248825600',NULL,NULL,NULL,NULL,'luy',NULL,NULL); -INSERT INTO "iana_records" VALUES(5600,0,NULL,'rah','rabha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5601,0,NULL,'rai','ramoaaina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5602,0,NULL,'raj','rajasthani','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(5603,0,NULL,'rak','tulu-bohuai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5604,0,NULL,'ral','ralte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5605,0,NULL,'ram','canela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5606,0,NULL,'ran','riantana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5607,0,NULL,'rao','rao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5608,0,NULL,'rap','rapanui','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5609,0,NULL,'raq','saam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5610,0,NULL,'rar','cook islands maori','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5610,0,NULL,'rar','rarotongan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5611,0,NULL,'ras','tegali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5612,0,NULL,'rat','razajerdi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5613,0,NULL,'rau','raute','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5614,0,NULL,'rav','sampang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5615,0,NULL,'raw','rawang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5616,0,NULL,'rax','rang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5617,0,NULL,'ray','rapa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5618,0,NULL,'raz','rahambuu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5619,0,NULL,'rbb','rumai palaung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5620,0,NULL,'rbk','northern bontok','1268265600',NULL,NULL,NULL,NULL,'bnc',NULL,NULL); -INSERT INTO "iana_records" VALUES(5621,0,NULL,'rbl','miraya bikol','1268265600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(5622,0,NULL,'rcf','réunion creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5623,0,NULL,'rdb','rudbari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5624,0,NULL,'rea','rerau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5625,0,NULL,'reb','rembong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5626,0,NULL,'ree','rejang kayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5627,0,NULL,'reg','kara (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5628,0,NULL,'rei','reli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5629,0,NULL,'rej','rejang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5630,0,NULL,'rel','rendille','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5631,0,NULL,'rem','remo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5632,0,NULL,'ren','rengao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5633,0,NULL,'rer','rer bare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5634,0,NULL,'res','reshe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5635,0,NULL,'ret','retta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5636,0,NULL,'rey','reyesano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5637,0,NULL,'rga','roria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5638,0,NULL,'rge','romano-greek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5639,0,NULL,'rgk','rangkas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5640,0,NULL,'rgn','romagnol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5641,0,NULL,'rgr','resígaro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5642,0,NULL,'rgs','southern roglai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5643,0,NULL,'rgu','ringgou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5644,0,NULL,'rhg','rohingya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5645,0,NULL,'rhp','yahang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5646,0,NULL,'ria','riang (india)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5647,0,NULL,'rie','rien','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5648,0,NULL,'rif','tarifit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5649,0,NULL,'ril','riang (myanmar)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5650,0,NULL,'rim','nyaturu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5651,0,NULL,'rin','nungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5652,0,NULL,'rir','ribun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5653,0,NULL,'rit','ritarungo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5654,0,NULL,'riu','riung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5655,0,NULL,'rjg','rajong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5656,0,NULL,'rji','raji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5657,0,NULL,'rjs','rajbanshi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5658,0,NULL,'rka','kraol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5659,0,NULL,'rkb','rikbaktsa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5660,0,NULL,'rkh','rakahanga-manihiki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5661,0,NULL,'rki','rakhine','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5662,0,NULL,'rkm','marka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5663,0,NULL,'rkt','kamta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5663,0,NULL,'rkt','rangpuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5664,0,NULL,'rma','rama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5665,0,NULL,'rmb','rembarunga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5666,0,NULL,'rmc','carpathian romani','1248825600',NULL,NULL,NULL,NULL,'rom',NULL,NULL); -INSERT INTO "iana_records" VALUES(5667,0,NULL,'rmd','traveller danish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5668,0,NULL,'rme','angloromani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5669,0,NULL,'rmf','kalo finnish romani','1248825600',NULL,NULL,NULL,NULL,'rom',NULL,NULL); -INSERT INTO "iana_records" VALUES(5670,0,NULL,'rmg','traveller norwegian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5671,0,NULL,'rmh','murkim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5672,0,NULL,'rmi','lomavren','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5673,0,NULL,'rmk','romkun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5674,0,NULL,'rml','baltic romani','1248825600',NULL,NULL,NULL,NULL,'rom',NULL,NULL); -INSERT INTO "iana_records" VALUES(5675,0,NULL,'rmm','roma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5676,0,NULL,'rmn','balkan romani','1248825600',NULL,NULL,NULL,NULL,'rom',NULL,NULL); -INSERT INTO "iana_records" VALUES(5677,0,NULL,'rmo','sinte romani','1248825600',NULL,NULL,NULL,NULL,'rom',NULL,NULL); -INSERT INTO "iana_records" VALUES(5678,0,NULL,'rmp','rempi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5679,0,NULL,'rmq','caló','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5680,0,NULL,'rmr','caló','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see emx, rmq'); -INSERT INTO "iana_records" VALUES(5681,0,NULL,'rms','romanian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5682,0,NULL,'rmt','domari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5683,0,NULL,'rmu','tavringer romani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5684,0,NULL,'rmv','romanova','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5685,0,NULL,'rmw','welsh romani','1248825600',NULL,NULL,NULL,NULL,'rom',NULL,NULL); -INSERT INTO "iana_records" VALUES(5686,0,NULL,'rmx','romam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5687,0,NULL,'rmy','vlax romani','1248825600',NULL,NULL,NULL,NULL,'rom',NULL,NULL); -INSERT INTO "iana_records" VALUES(5688,0,NULL,'rmz','marma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5689,0,NULL,'rna','runa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5690,0,NULL,'rnd','ruund','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5691,0,NULL,'rng','ronga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5692,0,NULL,'rnl','ranglong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5693,0,NULL,'rnn','roon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5694,0,NULL,'rnp','rongpo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5695,0,NULL,'rnw','rungwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5696,0,NULL,'roa','romance languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5697,0,NULL,'rob','tae''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5698,0,NULL,'roc','cacgia roglai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5699,0,NULL,'rod','rogo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5700,0,NULL,'roe','ronji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5701,0,NULL,'rof','rombo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5702,0,NULL,'rog','northern roglai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5703,0,NULL,'rol','romblomanon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5704,0,NULL,'rom','romany','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(5705,0,NULL,'roo','rotokas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5706,0,NULL,'rop','kriol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5707,0,NULL,'ror','rongga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5708,0,NULL,'rou','runga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5709,0,NULL,'row','dela-oenale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5710,0,NULL,'rpn','repanbitip','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5711,0,NULL,'rpt','rapting','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5712,0,NULL,'rri','ririo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5713,0,NULL,'rro','waima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5714,0,NULL,'rsb','romano-serbian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5715,0,NULL,'rsi','rennellese sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5716,0,NULL,'rsl','russian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5717,0,NULL,'rth','ratahan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5718,0,NULL,'rtm','rotuman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5719,0,NULL,'rtw','rathawi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5720,0,NULL,'rub','gungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5721,0,NULL,'ruc','ruuli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5722,0,NULL,'rue','rusyn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5723,0,NULL,'ruf','luguru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5724,0,NULL,'rug','roviana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5725,0,NULL,'ruh','ruga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5726,0,NULL,'rui','rufiji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5727,0,NULL,'ruk','che','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5728,0,NULL,'ruo','istro romanian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5729,0,NULL,'rup','aromanian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5729,0,NULL,'rup','arumanian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5729,0,NULL,'rup','macedo-romanian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5730,0,NULL,'ruq','megleno romanian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5731,0,NULL,'rut','rutul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5732,0,NULL,'ruu','lanas lobu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5733,0,NULL,'ruy','mala (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5734,0,NULL,'ruz','ruma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5735,0,NULL,'rwa','rawo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5736,0,NULL,'rwk','rwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5737,0,NULL,'rwm','amba (uganda)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5738,0,NULL,'rwo','rawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5739,0,NULL,'rwr','marwari (india)','1248825600',NULL,NULL,NULL,NULL,'mwr',NULL,NULL); -INSERT INTO "iana_records" VALUES(5740,0,NULL,'ryn','northern amami-oshima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5741,0,NULL,'rys','yaeyama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5742,0,NULL,'ryu','central okinawan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5743,0,NULL,'saa','saba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5744,0,NULL,'sab','buglere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5745,0,NULL,'sac','meskwaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5746,0,NULL,'sad','sandawe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5747,0,NULL,'sae','sabanê','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5748,0,NULL,'saf','safaliba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5749,0,NULL,'sah','yakut','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5750,0,NULL,'sai','south american indian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5751,0,NULL,'saj','sahu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5752,0,NULL,'sak','sake','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5753,0,NULL,'sal','salishan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5754,0,NULL,'sam','samaritan aramaic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5755,0,NULL,'sao','sause','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5756,0,NULL,'sap','sanapaná','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5757,0,NULL,'saq','samburu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5758,0,NULL,'sar','saraveca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5759,0,NULL,'sas','sasak','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5760,0,NULL,'sat','santali','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5761,0,NULL,'sau','saleman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5762,0,NULL,'sav','saafi-saafi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5763,0,NULL,'saw','sawi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5764,0,NULL,'sax','sa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5765,0,NULL,'say','saya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5766,0,NULL,'saz','saurashtra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5767,0,NULL,'sba','ngambay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5768,0,NULL,'sbb','simbo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5769,0,NULL,'sbc','kele (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5770,0,NULL,'sbd','southern samo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5771,0,NULL,'sbe','saliba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5772,0,NULL,'sbf','shabo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5773,0,NULL,'sbg','seget','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5774,0,NULL,'sbh','sori-harengan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5775,0,NULL,'sbi','seti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5776,0,NULL,'sbj','surbakhal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5777,0,NULL,'sbk','safwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5778,0,NULL,'sbl','botolan sambal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5779,0,NULL,'sbm','sagala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5780,0,NULL,'sbn','sindhi bhil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5781,0,NULL,'sbo','sabüm','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5782,0,NULL,'sbp','sangu (tanzania)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5783,0,NULL,'sbq','sileibi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5784,0,NULL,'sbr','sembakung murut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5785,0,NULL,'sbs','subiya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5786,0,NULL,'sbt','kimki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5787,0,NULL,'sbu','stod bhoti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5788,0,NULL,'sbv','sabine','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5789,0,NULL,'sbw','simba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5790,0,NULL,'sbx','seberuang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5791,0,NULL,'sby','soli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5792,0,NULL,'sbz','sara kaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5793,0,NULL,'sca','sansu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5794,0,NULL,'scb','chut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5795,0,NULL,'sce','dongxiang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5796,0,NULL,'scf','san miguel creole french','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5797,0,NULL,'scg','sanggau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5798,0,NULL,'sch','sakachep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5799,0,NULL,'sci','sri lankan creole malay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5800,0,NULL,'sck','sadri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5801,0,NULL,'scl','shina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5802,0,NULL,'scn','sicilian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5803,0,NULL,'sco','scots','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5804,0,NULL,'scp','helambu sherpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5805,0,NULL,'scq','sa''och','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5806,0,NULL,'scs','north slavey','1248825600',NULL,NULL,NULL,NULL,'den',NULL,NULL); -INSERT INTO "iana_records" VALUES(5807,0,NULL,'scu','shumcho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5808,0,NULL,'scv','sheni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5809,0,NULL,'scw','sha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5810,0,NULL,'scx','sicel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5811,0,NULL,'sda','toraja-sa''dan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5812,0,NULL,'sdb','shabak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5813,0,NULL,'sdc','sassarese sardinian','1248825600',NULL,NULL,NULL,NULL,'sc',NULL,NULL); -INSERT INTO "iana_records" VALUES(5814,0,NULL,'sde','surubu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5815,0,NULL,'sdf','sarli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5816,0,NULL,'sdg','savi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5817,0,NULL,'sdh','southern kurdish','1248825600',NULL,NULL,NULL,NULL,'ku',NULL,NULL); -INSERT INTO "iana_records" VALUES(5818,0,NULL,'sdj','suundi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5819,0,NULL,'sdk','sos kundi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5820,0,NULL,'sdl','saudi arabian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5821,0,NULL,'sdm','semandang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5822,0,NULL,'sdn','gallurese sardinian','1248825600',NULL,NULL,NULL,NULL,'sc',NULL,NULL); -INSERT INTO "iana_records" VALUES(5823,0,NULL,'sdo','bukar-sadung bidayuh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5824,0,NULL,'sdp','sherdukpen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5825,0,NULL,'sdr','oraon sadri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5826,0,NULL,'sds','sened','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5827,0,NULL,'sdt','shuadit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5828,0,NULL,'sdu','sarudu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5829,0,NULL,'sdv','eastern sudanic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5830,0,NULL,'sdx','sibu melanau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5831,0,NULL,'sdz','sallands','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5832,0,NULL,'sea','semai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5833,0,NULL,'seb','shempire senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5834,0,NULL,'sec','sechelt','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5835,0,NULL,'sed','sedang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5836,0,NULL,'see','seneca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5837,0,NULL,'sef','cebaara senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5838,0,NULL,'seg','segeju','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5839,0,NULL,'seh','sena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5840,0,NULL,'sei','seri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5841,0,NULL,'sej','sene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5842,0,NULL,'sek','sekani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5843,0,NULL,'sel','selkup','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5844,0,NULL,'sem','semitic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5845,0,NULL,'sen','nanerigé sénoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5846,0,NULL,'seo','suarmin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5847,0,NULL,'sep','sìcìté sénoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5848,0,NULL,'seq','senara sénoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5849,0,NULL,'ser','serrano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5850,0,NULL,'ses','koyraboro senni songhai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5851,0,NULL,'set','sentani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5852,0,NULL,'seu','serui-laut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5853,0,NULL,'sev','nyarafolo senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5854,0,NULL,'sew','sewa bay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5855,0,NULL,'sey','secoya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5856,0,NULL,'sez','senthang chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5857,0,NULL,'sfb','french belgian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5857,0,NULL,'sfb','langue des signes de belgique francophone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5858,0,NULL,'sfm','small flowery miao','1248825600',NULL,NULL,NULL,NULL,'hmn',NULL,NULL); -INSERT INTO "iana_records" VALUES(5859,0,NULL,'sfs','south african sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5860,0,NULL,'sfw','sehwi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5861,0,NULL,'sga','old irish (to 900)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5862,0,NULL,'sgb','mag-antsi ayta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5863,0,NULL,'sgc','kipsigis','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(5864,0,NULL,'sgd','surigaonon','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5865,0,NULL,'sge','segai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5866,0,NULL,'sgg','swiss-german sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5867,0,NULL,'sgh','shughni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5868,0,NULL,'sgi','suga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5869,0,NULL,'sgk','sangkong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5870,0,NULL,'sgl','sanglechi-ishkashimi','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see isk, sgy'); -INSERT INTO "iana_records" VALUES(5871,0,NULL,'sgm','singa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5872,0,NULL,'sgn','sign languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5873,0,NULL,'sgo','songa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5874,0,NULL,'sgp','singpho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5875,0,NULL,'sgr','sangisari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5876,0,NULL,'sgt','brokpake','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5877,0,NULL,'sgu','salas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5878,0,NULL,'sgw','sebat bet gurage','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5879,0,NULL,'sgx','sierra leone sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5880,0,NULL,'sgy','sanglechi','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5881,0,NULL,'sgz','sursurunga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5882,0,NULL,'sha','shall-zwall','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5883,0,NULL,'shb','ninam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5884,0,NULL,'shc','sonde','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5885,0,NULL,'shd','kundal shahi','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5886,0,NULL,'she','sheko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5887,0,NULL,'shg','shua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5888,0,NULL,'shh','shoshoni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5889,0,NULL,'shi','tachelhit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5890,0,NULL,'shj','shatt','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5891,0,NULL,'shk','shilluk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5892,0,NULL,'shl','shendu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5893,0,NULL,'shm','shahrudi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5894,0,NULL,'shn','shan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5895,0,NULL,'sho','shanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5896,0,NULL,'shp','shipibo-conibo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5897,0,NULL,'shq','sala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5898,0,NULL,'shr','shi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5899,0,NULL,'shs','shuswap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5900,0,NULL,'sht','shasta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5901,0,NULL,'shu','chadian arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(5902,0,NULL,'shv','shehri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5903,0,NULL,'shw','shwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5904,0,NULL,'shx','she','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5905,0,NULL,'shy','tachawit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5906,0,NULL,'shz','syenara senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5907,0,NULL,'sia','akkala sami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5908,0,NULL,'sib','sebop','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5909,0,NULL,'sid','sidamo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5910,0,NULL,'sie','simaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5911,0,NULL,'sif','siamou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5912,0,NULL,'sig','paasaal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5913,0,NULL,'sih','zire','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5914,0,NULL,'sii','shom peng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5915,0,NULL,'sij','numbami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5916,0,NULL,'sik','sikiana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5917,0,NULL,'sil','tumulung sisaala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5918,0,NULL,'sim','mende (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5919,0,NULL,'sio','siouan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5920,0,NULL,'sip','sikkimese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5921,0,NULL,'siq','sonia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5922,0,NULL,'sir','siri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5923,0,NULL,'sis','siuslaw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5924,0,NULL,'sit','sino-tibetan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5925,0,NULL,'siu','sinagen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5926,0,NULL,'siv','sumariup','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5927,0,NULL,'siw','siwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5928,0,NULL,'six','sumau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5929,0,NULL,'siy','sivandi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5930,0,NULL,'siz','siwi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5931,0,NULL,'sja','epena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5932,0,NULL,'sjb','sajau basap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5933,0,NULL,'sjd','kildin sami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5934,0,NULL,'sje','pite sami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5935,0,NULL,'sjg','assangori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5936,0,NULL,'sjk','kemi sami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5937,0,NULL,'sjl','miji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5937,0,NULL,'sjl','sajalong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5938,0,NULL,'sjm','mapun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5939,0,NULL,'sjn','sindarin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5940,0,NULL,'sjo','xibe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5941,0,NULL,'sjp','surjapuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5942,0,NULL,'sjr','siar-lak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5943,0,NULL,'sjs','senhaja de srair','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5944,0,NULL,'sjt','ter sami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5945,0,NULL,'sju','ume sami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5946,0,NULL,'sjw','shawnee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5947,0,NULL,'ska','skagit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5948,0,NULL,'skb','saek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5949,0,NULL,'skc','sauk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5950,0,NULL,'skd','southern sierra miwok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5951,0,NULL,'ske','seke (vanuatu)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5952,0,NULL,'skf','sakirabiá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5953,0,NULL,'skg','sakalava malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(5954,0,NULL,'skh','sikule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5955,0,NULL,'ski','sika','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5956,0,NULL,'skj','seke (nepal)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5957,0,NULL,'skk','sok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5958,0,NULL,'skm','sakam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5959,0,NULL,'skn','kolibugan subanon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5960,0,NULL,'sko','seko tengah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5961,0,NULL,'skp','sekapan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5962,0,NULL,'skq','sininkere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5963,0,NULL,'skr','seraiki','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(5964,0,NULL,'sks','maia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5965,0,NULL,'skt','sakata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5966,0,NULL,'sku','sakao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5967,0,NULL,'skv','skou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5968,0,NULL,'skw','skepi creole dutch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5969,0,NULL,'skx','seko padang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5970,0,NULL,'sky','sikaiana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5971,0,NULL,'skz','sekar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5972,0,NULL,'sla','slavic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(5973,0,NULL,'slc','sáliba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5974,0,NULL,'sld','sissala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5975,0,NULL,'sle','sholaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5976,0,NULL,'slf','swiss-italian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5977,0,NULL,'slg','selungai murut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5978,0,NULL,'slh','southern puget sound salish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5979,0,NULL,'sli','lower silesian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5980,0,NULL,'slj','salumá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5981,0,NULL,'sll','salt-yui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5982,0,NULL,'slm','pangutaran sama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5983,0,NULL,'sln','salinan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5984,0,NULL,'slp','lamaholot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5985,0,NULL,'slq','salchuq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5986,0,NULL,'slr','salar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5987,0,NULL,'sls','singapore sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5988,0,NULL,'slt','sila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5989,0,NULL,'slu','selaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5990,0,NULL,'slw','sialum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5991,0,NULL,'slx','salampasu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5992,0,NULL,'sly','selayar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5993,0,NULL,'slz','ma''ya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5994,0,NULL,'sma','southern sami','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5995,0,NULL,'smb','simbari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5996,0,NULL,'smc','som','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5997,0,NULL,'smd','sama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5998,0,NULL,'smf','auwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(5999,0,NULL,'smg','simbali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6000,0,NULL,'smh','samei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6001,0,NULL,'smi','sami languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6002,0,NULL,'smj','lule sami','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6003,0,NULL,'smk','bolinao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6004,0,NULL,'sml','central sama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6005,0,NULL,'smm','musasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6006,0,NULL,'smn','inari sami','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6007,0,NULL,'smp','samaritan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6008,0,NULL,'smq','samo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6009,0,NULL,'smr','simeulue','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6010,0,NULL,'sms','skolt sami','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6011,0,NULL,'smt','simte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6012,0,NULL,'smu','somray','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6013,0,NULL,'smv','samvedi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6014,0,NULL,'smw','sumbawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6015,0,NULL,'smx','samba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6016,0,NULL,'smy','semnani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6017,0,NULL,'smz','simeku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6018,0,NULL,'snb','sebuyau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6019,0,NULL,'snc','sinaugoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6020,0,NULL,'sne','bau bidayuh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6021,0,NULL,'snf','noon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6022,0,NULL,'sng','sanga (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6023,0,NULL,'snh','shinabo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6024,0,NULL,'sni','sensi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6025,0,NULL,'snj','riverain sango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6026,0,NULL,'snk','soninke','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6027,0,NULL,'snl','sangil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6028,0,NULL,'snm','southern ma''di','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6029,0,NULL,'snn','siona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6030,0,NULL,'sno','snohomish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6031,0,NULL,'snp','siane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6032,0,NULL,'snq','sangu (gabon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6033,0,NULL,'snr','sihan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6034,0,NULL,'sns','nahavaq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6034,0,NULL,'sns','south west bay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6035,0,NULL,'snu','senggi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6035,0,NULL,'snu','viid','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6036,0,NULL,'snv','sa''ban','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6037,0,NULL,'snw','selee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6038,0,NULL,'snx','sam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6039,0,NULL,'sny','saniyo-hiyewe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6040,0,NULL,'snz','sinsauru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6041,0,NULL,'soa','thai song','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6042,0,NULL,'sob','sobei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6043,0,NULL,'soc','so (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6044,0,NULL,'sod','songoora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6045,0,NULL,'soe','songomeno','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6046,0,NULL,'sog','sogdian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6047,0,NULL,'soh','aka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6048,0,NULL,'soi','sonha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6049,0,NULL,'soj','soi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6050,0,NULL,'sok','sokoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6051,0,NULL,'sol','solos','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6052,0,NULL,'son','songhai languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6053,0,NULL,'soo','songo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6054,0,NULL,'sop','songe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6055,0,NULL,'soq','kanasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6056,0,NULL,'sor','somrai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6057,0,NULL,'sos','seeku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6058,0,NULL,'sou','southern thai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6059,0,NULL,'sov','sonsorol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6060,0,NULL,'sow','sowanda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6061,0,NULL,'sox','so (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6062,0,NULL,'soy','miyobe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6063,0,NULL,'soz','temi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6064,0,NULL,'spb','sepa (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6065,0,NULL,'spc','sapé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6066,0,NULL,'spd','saep','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6067,0,NULL,'spe','sepa (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6068,0,NULL,'spg','sian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6069,0,NULL,'spi','saponi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6070,0,NULL,'spk','sengo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6071,0,NULL,'spl','selepet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6072,0,NULL,'spm','sepen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6073,0,NULL,'spo','spokane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6074,0,NULL,'spp','supyire senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6075,0,NULL,'spq','loreto-ucayali spanish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6076,0,NULL,'spr','saparua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6077,0,NULL,'sps','saposa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6078,0,NULL,'spt','spiti bhoti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6079,0,NULL,'spu','sapuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6080,0,NULL,'spx','south picene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6081,0,NULL,'spy','sabaot','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(6082,0,NULL,'sqa','shama-sambuga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6083,0,NULL,'sqh','shau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6084,0,NULL,'sqj','albanian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6085,0,NULL,'sqm','suma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6086,0,NULL,'sqn','susquehannock','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6087,0,NULL,'sqo','sorkhei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6088,0,NULL,'sqq','sou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6089,0,NULL,'sqr','siculo arabic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6090,0,NULL,'sqs','sri lankan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6091,0,NULL,'sqt','soqotri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6092,0,NULL,'squ','squamish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6093,0,NULL,'sra','saruga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6094,0,NULL,'srb','sora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6095,0,NULL,'src','logudorese sardinian','1248825600',NULL,NULL,NULL,NULL,'sc',NULL,NULL); -INSERT INTO "iana_records" VALUES(6096,0,NULL,'sre','sara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6097,0,NULL,'srf','nafi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6098,0,NULL,'srg','sulod','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6099,0,NULL,'srh','sarikoli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6100,0,NULL,'sri','siriano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6101,0,NULL,'srk','serudung murut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6102,0,NULL,'srl','isirawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6103,0,NULL,'srm','saramaccan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6104,0,NULL,'srn','sranan tongo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6105,0,NULL,'sro','campidanese sardinian','1248825600',NULL,NULL,NULL,NULL,'sc',NULL,NULL); -INSERT INTO "iana_records" VALUES(6106,0,NULL,'srq','sirionó','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6107,0,NULL,'srr','serer','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6108,0,NULL,'srs','sarsi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6109,0,NULL,'srt','sauri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6110,0,NULL,'sru','suruí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6111,0,NULL,'srv','southern sorsoganon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6112,0,NULL,'srw','serua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6113,0,NULL,'srx','sirmauri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6114,0,NULL,'sry','sera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6115,0,NULL,'srz','shahmirzadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6116,0,NULL,'ssa','nilo-saharan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6117,0,NULL,'ssb','southern sama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6118,0,NULL,'ssc','suba-simbiti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6119,0,NULL,'ssd','siroi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6120,0,NULL,'sse','balangingi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6120,0,NULL,'sse','bangingih sama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6121,0,NULL,'ssf','thao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6122,0,NULL,'ssg','seimat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6123,0,NULL,'ssh','shihhi arabic','1248825600',NULL,NULL,NULL,NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(6124,0,NULL,'ssi','sansi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6125,0,NULL,'ssj','sausi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6126,0,NULL,'ssk','sunam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6127,0,NULL,'ssl','western sisaala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6128,0,NULL,'ssm','semnam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6129,0,NULL,'ssn','waata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6130,0,NULL,'sso','sissano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6131,0,NULL,'ssp','spanish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6132,0,NULL,'ssq','so''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6133,0,NULL,'ssr','swiss-french sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6134,0,NULL,'sss','sô','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6135,0,NULL,'sst','sinasina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6136,0,NULL,'ssu','susuami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6137,0,NULL,'ssv','shark bay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6138,0,NULL,'ssx','samberigi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6139,0,NULL,'ssy','saho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6140,0,NULL,'ssz','sengseng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6141,0,NULL,'sta','settla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6142,0,NULL,'stb','northern subanen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6143,0,NULL,'std','sentinel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6144,0,NULL,'ste','liana-seti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6145,0,NULL,'stf','seta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6146,0,NULL,'stg','trieng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6147,0,NULL,'sth','shelta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6148,0,NULL,'sti','bulo stieng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6149,0,NULL,'stj','matya samo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6150,0,NULL,'stk','arammba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6151,0,NULL,'stl','stellingwerfs','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6152,0,NULL,'stm','setaman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6153,0,NULL,'stn','owa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6154,0,NULL,'sto','stoney','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6155,0,NULL,'stp','southeastern tepehuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6156,0,NULL,'stq','saterfriesisch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6157,0,NULL,'str','straits salish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6158,0,NULL,'sts','shumashti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6159,0,NULL,'stt','budeh stieng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6160,0,NULL,'stu','samtao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6161,0,NULL,'stv','silt''e','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6162,0,NULL,'stw','satawalese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6163,0,NULL,'sua','sulka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6164,0,NULL,'sub','suku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6165,0,NULL,'suc','western subanon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6166,0,NULL,'sue','suena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6167,0,NULL,'sug','suganga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6168,0,NULL,'sui','suki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6169,0,NULL,'suj','shubi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6170,0,NULL,'suk','sukuma','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6171,0,NULL,'sul','surigaonon','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see sgd, tgn'); -INSERT INTO "iana_records" VALUES(6172,0,NULL,'sum','sumo-mayangna','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see ulw, yan'); -INSERT INTO "iana_records" VALUES(6173,0,NULL,'suq','suri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6174,0,NULL,'sur','mwaghavul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6175,0,NULL,'sus','susu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6176,0,NULL,'sut','subtiaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6177,0,NULL,'suv','sulung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6178,0,NULL,'suw','sumbwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6179,0,NULL,'sux','sumerian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6180,0,NULL,'suy','suyá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6181,0,NULL,'suz','sunwar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6182,0,NULL,'sva','svan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6183,0,NULL,'svb','ulau-suain','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6184,0,NULL,'svc','vincentian creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6185,0,NULL,'sve','serili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6186,0,NULL,'svk','slovakian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6187,0,NULL,'svr','savara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6188,0,NULL,'svs','savosavo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6189,0,NULL,'svx','skalvian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6190,0,NULL,'swb','maore comorian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6191,0,NULL,'swc','congo swahili','1248825600',NULL,NULL,NULL,NULL,'sw',NULL,NULL); -INSERT INTO "iana_records" VALUES(6192,0,NULL,'swf','sere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6193,0,NULL,'swg','swabian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6194,0,NULL,'swh','kiswahili','1248825600',NULL,NULL,NULL,NULL,'sw',NULL,NULL); -INSERT INTO "iana_records" VALUES(6194,0,NULL,'swh','swahili (individual language)','1248825600',NULL,NULL,NULL,NULL,'sw',NULL,NULL); -INSERT INTO "iana_records" VALUES(6195,0,NULL,'swi','sui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6196,0,NULL,'swj','sira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6197,0,NULL,'swk','malawi sena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6198,0,NULL,'swl','swedish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6199,0,NULL,'swm','samosa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6200,0,NULL,'swn','sawknah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6201,0,NULL,'swo','shanenawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6202,0,NULL,'swp','suau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6203,0,NULL,'swq','sharwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6204,0,NULL,'swr','saweru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6205,0,NULL,'sws','seluwasan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6206,0,NULL,'swt','sawila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6207,0,NULL,'swu','suwawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6208,0,NULL,'swv','shekhawati','1248825600',NULL,NULL,NULL,NULL,'mwr',NULL,NULL); -INSERT INTO "iana_records" VALUES(6209,0,NULL,'sww','sowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6210,0,NULL,'swx','suruahá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6211,0,NULL,'swy','sarua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6212,0,NULL,'sxb','suba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6213,0,NULL,'sxc','sicanian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6214,0,NULL,'sxe','sighu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6215,0,NULL,'sxg','shixing','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6216,0,NULL,'sxk','southern kalapuya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6217,0,NULL,'sxl','selian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6218,0,NULL,'sxm','samre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6219,0,NULL,'sxn','sangir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6220,0,NULL,'sxo','sorothaptic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6221,0,NULL,'sxr','saaroa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6222,0,NULL,'sxs','sasaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6223,0,NULL,'sxu','upper saxon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6224,0,NULL,'sxw','saxwe gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6225,0,NULL,'sya','siang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6226,0,NULL,'syb','central subanen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6227,0,NULL,'syc','classical syriac','1175558400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6228,0,NULL,'syd','samoyedic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6229,0,NULL,'syi','seki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6230,0,NULL,'syk','sukur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6231,0,NULL,'syl','sylheti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6232,0,NULL,'sym','maya samo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6233,0,NULL,'syn','senaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6234,0,NULL,'syo','suoy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6235,0,NULL,'syr','syriac','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(6236,0,NULL,'sys','sinyar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6237,0,NULL,'syw','kagate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6238,0,NULL,'syy','al-sayyid bedouin sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6239,0,NULL,'sza','semelai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6240,0,NULL,'szb','ngalum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6241,0,NULL,'szc','semaq beri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6242,0,NULL,'szd','seru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6243,0,NULL,'sze','seze','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6244,0,NULL,'szg','sengele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6245,0,NULL,'szl','silesian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6246,0,NULL,'szn','sula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6247,0,NULL,'szp','suabo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6248,0,NULL,'szv','isu (fako division)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6249,0,NULL,'szw','sawai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6250,0,NULL,'taa','lower tanana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6251,0,NULL,'tab','tabassaran','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6252,0,NULL,'tac','lowland tarahumara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6253,0,NULL,'tad','tause','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6254,0,NULL,'tae','tariana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6255,0,NULL,'taf','tapirapé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6256,0,NULL,'tag','tagoi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6257,0,NULL,'tai','tai languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6258,0,NULL,'taj','eastern tamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6259,0,NULL,'tak','tala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6260,0,NULL,'tal','tal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6261,0,NULL,'tan','tangale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6262,0,NULL,'tao','yami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6263,0,NULL,'tap','taabwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6264,0,NULL,'taq','tamasheq','1248825600',NULL,NULL,NULL,NULL,'tmh',NULL,NULL); -INSERT INTO "iana_records" VALUES(6265,0,NULL,'tar','central tarahumara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6266,0,NULL,'tas','tay boi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6267,0,NULL,'tau','upper tanana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6268,0,NULL,'tav','tatuyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6269,0,NULL,'taw','tai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6270,0,NULL,'tax','tamki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6271,0,NULL,'tay','atayal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6272,0,NULL,'taz','tocho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6273,0,NULL,'tba','aikanã','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6274,0,NULL,'tbb','tapeba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6275,0,NULL,'tbc','takia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6276,0,NULL,'tbd','kaki ae','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6277,0,NULL,'tbe','tanimbili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6278,0,NULL,'tbf','mandara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6279,0,NULL,'tbg','north tairora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6280,0,NULL,'tbh','thurawal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6281,0,NULL,'tbi','gaam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6282,0,NULL,'tbj','tiang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6283,0,NULL,'tbk','calamian tagbanwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6284,0,NULL,'tbl','tboli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6285,0,NULL,'tbm','tagbu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6286,0,NULL,'tbn','barro negro tunebo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6287,0,NULL,'tbo','tawala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6288,0,NULL,'tbp','diebroud','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6288,0,NULL,'tbp','taworta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6289,0,NULL,'tbq','tibeto-burman languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6290,0,NULL,'tbr','tumtum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6291,0,NULL,'tbs','tanguat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6292,0,NULL,'tbt','tembo (kitembo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6293,0,NULL,'tbu','tubar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6294,0,NULL,'tbv','tobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6295,0,NULL,'tbw','tagbanwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6296,0,NULL,'tbx','kapin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6297,0,NULL,'tby','tabaru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6298,0,NULL,'tbz','ditammari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6299,0,NULL,'tca','ticuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6300,0,NULL,'tcb','tanacross','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6301,0,NULL,'tcc','datooga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6302,0,NULL,'tcd','tafi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6303,0,NULL,'tce','southern tutchone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6304,0,NULL,'tcf','malinaltepec me''phaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6304,0,NULL,'tcf','malinaltepec tlapanec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6305,0,NULL,'tcg','tamagario','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6306,0,NULL,'tch','turks and caicos creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6307,0,NULL,'tci','wára','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6308,0,NULL,'tck','tchitchege','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6309,0,NULL,'tcl','taman (myanmar)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6310,0,NULL,'tcm','tanahmerah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6311,0,NULL,'tcn','tichurong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6312,0,NULL,'tco','taungyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6313,0,NULL,'tcp','tawr chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6314,0,NULL,'tcq','kaiy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6315,0,NULL,'tcs','torres strait creole','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6316,0,NULL,'tct','t''en','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6317,0,NULL,'tcu','southeastern tarahumara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6318,0,NULL,'tcw','tecpatlán totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6319,0,NULL,'tcx','toda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6320,0,NULL,'tcy','tulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6321,0,NULL,'tcz','thado chin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6322,0,NULL,'tda','tagdal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6323,0,NULL,'tdb','panchpargania','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6324,0,NULL,'tdc','emberá-tadó','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6325,0,NULL,'tdd','tai nüa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6326,0,NULL,'tde','tiranige diga dogon','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6327,0,NULL,'tdf','talieng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6328,0,NULL,'tdg','western tamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6329,0,NULL,'tdh','thulung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6330,0,NULL,'tdi','tomadino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6331,0,NULL,'tdj','tajio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6332,0,NULL,'tdk','tambas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6333,0,NULL,'tdl','sur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6334,0,NULL,'tdn','tondano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6335,0,NULL,'tdo','teme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6336,0,NULL,'tdq','tita','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6337,0,NULL,'tdr','todrah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6338,0,NULL,'tds','doutai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6339,0,NULL,'tdt','tetun dili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6340,0,NULL,'tdu','tempasuk dusun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6341,0,NULL,'tdv','toro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6342,0,NULL,'tdx','tandroy-mahafaly malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(6343,0,NULL,'tdy','tadyawan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6344,0,NULL,'tea','temiar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6345,0,NULL,'teb','tetete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6346,0,NULL,'tec','terik','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(6347,0,NULL,'ted','tepo krumen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6348,0,NULL,'tee','huehuetla tepehua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6349,0,NULL,'tef','teressa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6350,0,NULL,'teg','teke-tege','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6351,0,NULL,'teh','tehuelche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6352,0,NULL,'tei','torricelli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6353,0,NULL,'tek','ibali teke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6354,0,NULL,'tem','timne','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6355,0,NULL,'ten','tama (colombia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6356,0,NULL,'teo','teso','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6357,0,NULL,'tep','tepecano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6358,0,NULL,'teq','temein','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6359,0,NULL,'ter','tereno','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6360,0,NULL,'tes','tengger','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6361,0,NULL,'tet','tetum','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6362,0,NULL,'teu','soo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6363,0,NULL,'tev','teor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6364,0,NULL,'tew','tewa (usa)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6365,0,NULL,'tex','tennet','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6366,0,NULL,'tey','tulishi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6367,0,NULL,'tfi','tofin gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6368,0,NULL,'tfn','tanaina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6369,0,NULL,'tfo','tefaro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6370,0,NULL,'tfr','teribe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6371,0,NULL,'tft','ternate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6372,0,NULL,'tga','sagalla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6373,0,NULL,'tgb','tobilung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6374,0,NULL,'tgc','tigak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6375,0,NULL,'tgd','ciwogai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6376,0,NULL,'tge','eastern gorkha tamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6377,0,NULL,'tgf','chalikha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6378,0,NULL,'tgg','tangga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6379,0,NULL,'tgh','tobagonian creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6380,0,NULL,'tgi','lawunuia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6381,0,NULL,'tgn','tandaganon','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6382,0,NULL,'tgo','sudest','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6383,0,NULL,'tgp','tangoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6384,0,NULL,'tgq','tring','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6385,0,NULL,'tgr','tareng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6386,0,NULL,'tgs','nume','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6387,0,NULL,'tgt','central tagbanwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6388,0,NULL,'tgu','tanggu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6389,0,NULL,'tgv','tingui-boto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6390,0,NULL,'tgw','tagwana senoufo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6391,0,NULL,'tgx','tagish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6392,0,NULL,'tgy','togoyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6393,0,NULL,'thc','tai hang tong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6394,0,NULL,'thd','thayore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6395,0,NULL,'the','chitwania tharu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6396,0,NULL,'thf','thangmi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6397,0,NULL,'thh','northern tarahumara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6398,0,NULL,'thi','tai long','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6399,0,NULL,'thk','kitharaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6399,0,NULL,'thk','tharaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6400,0,NULL,'thl','dangaura tharu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6401,0,NULL,'thm','aheu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6402,0,NULL,'thn','thachanadan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6403,0,NULL,'thp','thompson','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6404,0,NULL,'thq','kochila tharu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6405,0,NULL,'thr','rana tharu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6406,0,NULL,'ths','thakali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6407,0,NULL,'tht','tahltan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6408,0,NULL,'thu','thuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6409,0,NULL,'thv','tahaggart tamahaq','1248825600',NULL,NULL,NULL,NULL,'tmh',NULL,NULL); -INSERT INTO "iana_records" VALUES(6410,0,NULL,'thw','thudam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6411,0,NULL,'thx','the','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6412,0,NULL,'thy','tha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6413,0,NULL,'thz','tayart tamajeq','1248825600',NULL,NULL,NULL,NULL,'tmh',NULL,NULL); -INSERT INTO "iana_records" VALUES(6414,0,NULL,'tia','tidikelt tamazight','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6415,0,NULL,'tic','tira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6416,0,NULL,'tid','tidong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6417,0,NULL,'tie','tingal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6418,0,NULL,'tif','tifal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6419,0,NULL,'tig','tigre','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6420,0,NULL,'tih','timugon murut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6421,0,NULL,'tii','tiene','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6422,0,NULL,'tij','tilung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6423,0,NULL,'tik','tikar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6424,0,NULL,'til','tillamook','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6425,0,NULL,'tim','timbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6426,0,NULL,'tin','tindi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6427,0,NULL,'tio','teop','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6428,0,NULL,'tip','trimuris','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6429,0,NULL,'tiq','tiéfo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6430,0,NULL,'tis','masadiit itneg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6431,0,NULL,'tit','tinigua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6432,0,NULL,'tiu','adasen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6433,0,NULL,'tiv','tiv','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6434,0,NULL,'tiw','tiwi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6435,0,NULL,'tix','southern tiwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6436,0,NULL,'tiy','tiruray','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6437,0,NULL,'tiz','tai hongjin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6438,0,NULL,'tja','tajuasohn','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6439,0,NULL,'tjg','tunjung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6440,0,NULL,'tji','northern tujia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6441,0,NULL,'tjm','timucua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6442,0,NULL,'tjn','tonjon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6443,0,NULL,'tjo','temacine tamazight','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6444,0,NULL,'tjs','southern tujia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6445,0,NULL,'tju','tjurruru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6446,0,NULL,'tka','truká','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6447,0,NULL,'tkb','buksa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6448,0,NULL,'tkd','tukudede','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6449,0,NULL,'tke','takwane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6450,0,NULL,'tkf','tukumanféd','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6451,0,NULL,'tkk','takpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6452,0,NULL,'tkl','tokelau','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6453,0,NULL,'tkm','takelma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6454,0,NULL,'tkn','toku-no-shima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6455,0,NULL,'tkp','tikopia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6456,0,NULL,'tkq','tee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6457,0,NULL,'tkr','tsakhur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6458,0,NULL,'tks','takestani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6459,0,NULL,'tkt','kathoriya tharu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6460,0,NULL,'tku','upper necaxa totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6461,0,NULL,'tkw','teanu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6462,0,NULL,'tkx','tangko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6463,0,NULL,'tkz','takua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6464,0,NULL,'tla','southwestern tepehuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6465,0,NULL,'tlb','tobelo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6466,0,NULL,'tlc','yecuatla totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6467,0,NULL,'tld','talaud','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6468,0,NULL,'tlf','telefol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6469,0,NULL,'tlg','tofanma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6470,0,NULL,'tlh','klingon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6470,0,NULL,'tlh','tlhingan-hol','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6471,0,NULL,'tli','tlingit','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6472,0,NULL,'tlj','talinga-bwisi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6473,0,NULL,'tlk','taloki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6474,0,NULL,'tll','tetela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6475,0,NULL,'tlm','tolomako','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6476,0,NULL,'tln','talondo''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6477,0,NULL,'tlo','talodi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6478,0,NULL,'tlp','filomena mata-coahuitlán totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6479,0,NULL,'tlq','tai loi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6480,0,NULL,'tlr','talise','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6481,0,NULL,'tls','tambotalo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6482,0,NULL,'tlt','teluti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6483,0,NULL,'tlu','tulehu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6484,0,NULL,'tlv','taliabu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6485,0,NULL,'tlw','south wemale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6486,0,NULL,'tlx','khehek','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6487,0,NULL,'tly','talysh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6488,0,NULL,'tma','tama (chad)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6489,0,NULL,'tmb','avava','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6489,0,NULL,'tmb','katbol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6490,0,NULL,'tmc','tumak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6491,0,NULL,'tmd','haruai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6492,0,NULL,'tme','tremembé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6493,0,NULL,'tmf','toba-maskoy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6494,0,NULL,'tmg','ternateño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6495,0,NULL,'tmh','tamashek','1129420800',NULL,NULL,NULL,'latn',NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(6496,0,NULL,'tmi','tutuba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6497,0,NULL,'tmj','samarokena','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6498,0,NULL,'tmk','northwestern tamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6499,0,NULL,'tml','tamnim citak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6500,0,NULL,'tmm','tai thanh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6501,0,NULL,'tmn','taman (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6502,0,NULL,'tmo','temoq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6503,0,NULL,'tmp','tai mène','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6504,0,NULL,'tmq','tumleo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6505,0,NULL,'tmr','jewish babylonian aramaic (ca. 200-1200 ce)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6506,0,NULL,'tms','tima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6507,0,NULL,'tmt','tasmate','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6508,0,NULL,'tmu','iau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6509,0,NULL,'tmv','tembo (motembo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6510,0,NULL,'tmw','temuan','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(6511,0,NULL,'tmy','tami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6512,0,NULL,'tmz','tamanaku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6513,0,NULL,'tna','tacana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6514,0,NULL,'tnb','western tunebo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6515,0,NULL,'tnc','tanimuca-retuarã','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6516,0,NULL,'tnd','angosturas tunebo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6517,0,NULL,'tne','tinoc kallahan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6518,0,NULL,'tnf','tangshewi','1248825600',1268265600,'prs',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6519,0,NULL,'tng','tobanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6520,0,NULL,'tnh','maiani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6521,0,NULL,'tni','tandia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6522,0,NULL,'tnk','kwamera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6523,0,NULL,'tnl','lenakel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6524,0,NULL,'tnm','tabla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6525,0,NULL,'tnn','north tanna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6526,0,NULL,'tno','toromono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6527,0,NULL,'tnp','whitesands','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6528,0,NULL,'tnq','taino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6529,0,NULL,'tnr','bedik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6530,0,NULL,'tns','tenis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6531,0,NULL,'tnt','tontemboan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6532,0,NULL,'tnu','tay khang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6533,0,NULL,'tnv','tangchangya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6534,0,NULL,'tnw','tonsawang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6535,0,NULL,'tnx','tanema','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6536,0,NULL,'tny','tongwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6537,0,NULL,'tnz','tonga (thailand)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6538,0,NULL,'tob','toba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6539,0,NULL,'toc','coyutla totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6540,0,NULL,'tod','toma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6541,0,NULL,'toe','tomedes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6542,0,NULL,'tof','gizrra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6543,0,NULL,'tog','tonga (nyasa)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6544,0,NULL,'toh','gitonga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6545,0,NULL,'toi','tonga (zambia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6546,0,NULL,'toj','tojolabal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6547,0,NULL,'tol','tolowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6548,0,NULL,'tom','tombulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6549,0,NULL,'too','xicotepec de juárez totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6550,0,NULL,'top','papantla totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6551,0,NULL,'toq','toposa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6552,0,NULL,'tor','togbo-vara banda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6553,0,NULL,'tos','highland totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6554,0,NULL,'tou','tho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6555,0,NULL,'tov','upper taromi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6556,0,NULL,'tow','jemez','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6557,0,NULL,'tox','tobian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6558,0,NULL,'toy','topoiyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6559,0,NULL,'toz','to','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6560,0,NULL,'tpa','taupota','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6561,0,NULL,'tpc','azoyú me''phaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6561,0,NULL,'tpc','azoyú tlapanec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6562,0,NULL,'tpe','tippera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6563,0,NULL,'tpf','tarpia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6564,0,NULL,'tpg','kula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6565,0,NULL,'tpi','tok pisin','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6566,0,NULL,'tpj','tapieté','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6567,0,NULL,'tpk','tupinikin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6568,0,NULL,'tpl','tlacoapa me''phaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6568,0,NULL,'tpl','tlacoapa tlapanec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6569,0,NULL,'tpm','tampulma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6570,0,NULL,'tpn','tupinambá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6571,0,NULL,'tpo','tai pao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6572,0,NULL,'tpp','pisaflores tepehua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6573,0,NULL,'tpq','tukpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6574,0,NULL,'tpr','tuparí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6575,0,NULL,'tpt','tlachichilco tepehua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6576,0,NULL,'tpu','tampuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6577,0,NULL,'tpv','tanapag','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6578,0,NULL,'tpw','tupí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6579,0,NULL,'tpx','acatepec me''phaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6579,0,NULL,'tpx','acatepec tlapanec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6580,0,NULL,'tpy','trumai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6581,0,NULL,'tpz','tinputz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6582,0,NULL,'tqb','tembé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6583,0,NULL,'tql','lehali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6584,0,NULL,'tqm','turumsa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6585,0,NULL,'tqn','tenino','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6586,0,NULL,'tqo','toaripi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6587,0,NULL,'tqp','tomoip','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6588,0,NULL,'tqq','tunni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6589,0,NULL,'tqr','torona','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6590,0,NULL,'tqt','western totonac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6591,0,NULL,'tqu','touo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6592,0,NULL,'tqw','tonkawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6593,0,NULL,'tra','tirahi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6594,0,NULL,'trb','terebu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6595,0,NULL,'trc','copala triqui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6596,0,NULL,'trd','turi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6597,0,NULL,'tre','east tarangan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6598,0,NULL,'trf','trinidadian creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6599,0,NULL,'trg','lishán didán','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6600,0,NULL,'trh','turaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6601,0,NULL,'tri','trió','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6602,0,NULL,'trj','toram','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6603,0,NULL,'trk','turkic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6604,0,NULL,'trl','traveller scottish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6605,0,NULL,'trm','tregami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6606,0,NULL,'trn','trinitario','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6607,0,NULL,'tro','tarao naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6608,0,NULL,'trp','kok borok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6609,0,NULL,'trq','san martín itunyoso triqui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6610,0,NULL,'trr','taushiro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6611,0,NULL,'trs','chicahuaxtla triqui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6612,0,NULL,'trt','tunggare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6613,0,NULL,'tru','turoyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6614,0,NULL,'trv','taroko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6615,0,NULL,'trw','torwali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6616,0,NULL,'trx','tringgus-sembaan bidayuh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6617,0,NULL,'try','turung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6618,0,NULL,'trz','torá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6619,0,NULL,'tsa','tsaangi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6620,0,NULL,'tsb','tsamai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6621,0,NULL,'tsc','tswa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6622,0,NULL,'tsd','tsakonian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6623,0,NULL,'tse','tunisian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6624,0,NULL,'tsf','southwestern tamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6625,0,NULL,'tsg','tausug','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6626,0,NULL,'tsh','tsuvan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6627,0,NULL,'tsi','tsimshian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6628,0,NULL,'tsj','tshangla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6629,0,NULL,'tsk','tseku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6630,0,NULL,'tsl','ts''ün-lao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6631,0,NULL,'tsm','turkish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6631,0,NULL,'tsm','türk İşaret dili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6632,0,NULL,'tsp','northern toussian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6633,0,NULL,'tsq','thai sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6634,0,NULL,'tsr','akei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6635,0,NULL,'tss','taiwan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6636,0,NULL,'tsu','tsou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6637,0,NULL,'tsv','tsogo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6638,0,NULL,'tsw','tsishingini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6639,0,NULL,'tsx','mubami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6640,0,NULL,'tsy','tebul sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6641,0,NULL,'tsz','purepecha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6642,0,NULL,'tta','tutelo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6643,0,NULL,'ttb','gaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6644,0,NULL,'ttc','tektiteko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6645,0,NULL,'ttd','tauade','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6646,0,NULL,'tte','bwanabwana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6647,0,NULL,'ttf','tuotomb','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6648,0,NULL,'ttg','tutong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6649,0,NULL,'tth','upper ta''oih','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6650,0,NULL,'tti','tobati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6651,0,NULL,'ttj','tooro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6652,0,NULL,'ttk','totoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6653,0,NULL,'ttl','totela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6654,0,NULL,'ttm','northern tutchone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6655,0,NULL,'ttn','towei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6656,0,NULL,'tto','lower ta''oih','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6657,0,NULL,'ttp','tombelala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6658,0,NULL,'ttq','tawallammat tamajaq','1248825600',NULL,NULL,NULL,NULL,'tmh',NULL,NULL); -INSERT INTO "iana_records" VALUES(6659,0,NULL,'ttr','tera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6660,0,NULL,'tts','northeastern thai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6661,0,NULL,'ttt','muslim tat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6662,0,NULL,'ttu','torau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6663,0,NULL,'ttv','titan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6664,0,NULL,'ttw','long wat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6665,0,NULL,'tty','sikaritai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6666,0,NULL,'ttz','tsum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6667,0,NULL,'tua','wiarumus','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6668,0,NULL,'tub','tübatulabal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6669,0,NULL,'tuc','mutu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6670,0,NULL,'tud','tuxá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6671,0,NULL,'tue','tuyuca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6672,0,NULL,'tuf','central tunebo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6673,0,NULL,'tug','tunia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6674,0,NULL,'tuh','taulil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6675,0,NULL,'tui','tupuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6676,0,NULL,'tuj','tugutil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6677,0,NULL,'tul','tula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6678,0,NULL,'tum','tumbuka','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6679,0,NULL,'tun','tunica','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6680,0,NULL,'tuo','tucano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6681,0,NULL,'tup','tupi languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6682,0,NULL,'tuq','tedaga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6683,0,NULL,'tus','tuscarora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6684,0,NULL,'tut','altaic languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6685,0,NULL,'tuu','tututni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6686,0,NULL,'tuv','turkana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6687,0,NULL,'tuw','tungus languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6688,0,NULL,'tux','tuxináwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6689,0,NULL,'tuy','tugen','1248825600',NULL,NULL,NULL,NULL,'kln',NULL,NULL); -INSERT INTO "iana_records" VALUES(6690,0,NULL,'tuz','turka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6691,0,NULL,'tva','vaghua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6692,0,NULL,'tvd','tsuvadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6693,0,NULL,'tve','te''un','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6694,0,NULL,'tvk','southeast ambrym','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6695,0,NULL,'tvl','tuvalu','1129420800',NULL,NULL,NULL,'latn',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6696,0,NULL,'tvm','tela-masbuar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6697,0,NULL,'tvn','tavoyan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6698,0,NULL,'tvo','tidore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6699,0,NULL,'tvs','taveta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6700,0,NULL,'tvt','tutsa naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6701,0,NULL,'tvw','sedoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6702,0,NULL,'tvy','timor pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6703,0,NULL,'twa','twana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6704,0,NULL,'twb','western tawbuid','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6705,0,NULL,'twc','teshenawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6706,0,NULL,'twd','twents','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6707,0,NULL,'twe','tewa (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6708,0,NULL,'twf','northern tiwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6709,0,NULL,'twg','tereweng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6710,0,NULL,'twh','tai dón','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6711,0,NULL,'twl','tawara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6712,0,NULL,'twm','tawang monpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6713,0,NULL,'twn','twendi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6714,0,NULL,'two','tswapong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6715,0,NULL,'twp','ere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6716,0,NULL,'twq','tasawaq','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6717,0,NULL,'twr','southwestern tarahumara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6718,0,NULL,'twt','turiwára','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6719,0,NULL,'twu','termanu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6720,0,NULL,'tww','tuwari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6721,0,NULL,'twx','tewe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6722,0,NULL,'twy','tawoyan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6723,0,NULL,'txa','tombonuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6724,0,NULL,'txb','tokharian b','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6725,0,NULL,'txc','tsetsaut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6726,0,NULL,'txe','totoli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6727,0,NULL,'txg','tangut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6728,0,NULL,'txh','thracian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6729,0,NULL,'txi','ikpeng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6730,0,NULL,'txm','tomini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6731,0,NULL,'txn','west tarangan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6732,0,NULL,'txo','toto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6733,0,NULL,'txq','tii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6734,0,NULL,'txr','tartessian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6735,0,NULL,'txs','tonsea','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6736,0,NULL,'txt','citak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6737,0,NULL,'txu','kayapó','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6738,0,NULL,'txx','tatana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6739,0,NULL,'txy','tanosy malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(6740,0,NULL,'tya','tauya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6741,0,NULL,'tye','kyenga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6742,0,NULL,'tyh','o''du','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6743,0,NULL,'tyi','teke-tsaayi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6744,0,NULL,'tyj','tai do','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6745,0,NULL,'tyl','thu lao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6746,0,NULL,'tyn','kombai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6747,0,NULL,'typ','thaypan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6748,0,NULL,'tyr','tai daeng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6749,0,NULL,'tys','tày sa pa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6750,0,NULL,'tyt','tày tac','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6751,0,NULL,'tyu','kua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6752,0,NULL,'tyv','tuvinian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6753,0,NULL,'tyx','teke-tyee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6754,0,NULL,'tyz','tày','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6755,0,NULL,'tza','tanzanian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6756,0,NULL,'tzh','tzeltal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6757,0,NULL,'tzj','tz''utujil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6758,0,NULL,'tzm','central atlas tamazight','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6759,0,NULL,'tzn','tugun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6760,0,NULL,'tzo','tzotzil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6761,0,NULL,'tzx','tabriak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6762,0,NULL,'uam','uamué','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6763,0,NULL,'uan','kuan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6764,0,NULL,'uar','tairuma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6765,0,NULL,'uba','ubang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6766,0,NULL,'ubi','ubi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6767,0,NULL,'ubl','buhi''non bikol','1268265600',NULL,NULL,NULL,NULL,'bik',NULL,NULL); -INSERT INTO "iana_records" VALUES(6768,0,NULL,'ubr','ubir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6769,0,NULL,'ubu','umbu-ungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6770,0,NULL,'uby','ubykh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6771,0,NULL,'uda','uda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6772,0,NULL,'ude','udihe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6773,0,NULL,'udg','muduga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6774,0,NULL,'udi','udi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6775,0,NULL,'udj','ujir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6776,0,NULL,'udl','wuzlam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6777,0,NULL,'udm','udmurt','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6778,0,NULL,'udu','uduk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6779,0,NULL,'ues','kioko','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6780,0,NULL,'ufi','ufim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6781,0,NULL,'uga','ugaritic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6782,0,NULL,'ugb','kuku-ugbanh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6783,0,NULL,'uge','ughele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6784,0,NULL,'ugn','ugandan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6785,0,NULL,'ugo','ugong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6786,0,NULL,'ugy','uruguayan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6787,0,NULL,'uha','uhami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6788,0,NULL,'uhn','damal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6789,0,NULL,'uis','uisai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6790,0,NULL,'uiv','iyive','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6791,0,NULL,'uji','tanjijili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6792,0,NULL,'uka','kaburi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6793,0,NULL,'ukg','ukuriguma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6794,0,NULL,'ukh','ukhwejo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6795,0,NULL,'ukl','ukrainian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6796,0,NULL,'ukp','ukpe-bayobiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6797,0,NULL,'ukq','ukwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6798,0,NULL,'uks','kaapor sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6798,0,NULL,'uks','urubú-kaapor sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6799,0,NULL,'uku','ukue','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6800,0,NULL,'ukw','ukwuani-aboh-ndoni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6801,0,NULL,'ula','fungwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6802,0,NULL,'ulb','ulukwumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6803,0,NULL,'ulc','ulch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6804,0,NULL,'ulf','afra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6804,0,NULL,'ulf','usku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6805,0,NULL,'uli','ulithian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6806,0,NULL,'ulk','meriam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6807,0,NULL,'ull','ullatan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6808,0,NULL,'ulm','ulumanda''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6809,0,NULL,'uln','unserdeutsch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6810,0,NULL,'ulu','uma'' lung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6811,0,NULL,'ulw','ulwa','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6812,0,NULL,'uma','umatilla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6813,0,NULL,'umb','umbundu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6814,0,NULL,'umc','marrucinian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6815,0,NULL,'umd','umbindhamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6816,0,NULL,'umg','umbuygamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6817,0,NULL,'umi','ukit','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6818,0,NULL,'umm','umon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6819,0,NULL,'umn','makyan naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6820,0,NULL,'umo','umotína','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6821,0,NULL,'ump','umpila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6822,0,NULL,'umr','umbugarla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6823,0,NULL,'ums','pendau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6824,0,NULL,'umu','munsee','1248825600',NULL,NULL,NULL,NULL,'del',NULL,NULL); -INSERT INTO "iana_records" VALUES(6825,0,NULL,'una','north watut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6826,0,NULL,'und','undetermined','1129420800',NULL,NULL,NULL,NULL,NULL,'special',NULL); -INSERT INTO "iana_records" VALUES(6827,0,NULL,'une','uneme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6828,0,NULL,'ung','ngarinyin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6829,0,NULL,'unk','enawené-nawé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6830,0,NULL,'unm','unami','1248825600',NULL,NULL,NULL,NULL,'del',NULL,NULL); -INSERT INTO "iana_records" VALUES(6831,0,NULL,'unp','worora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6832,0,NULL,'unr','mundari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6833,0,NULL,'unx','munda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6834,0,NULL,'unz','unde kaili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6835,0,NULL,'uok','uokha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6836,0,NULL,'upi','umeda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6837,0,NULL,'upv','uripiv-wala-rano-atchin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6838,0,NULL,'ura','urarina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6839,0,NULL,'urb','kaapor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6839,0,NULL,'urb','urubú-kaapor','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6840,0,NULL,'urc','urningangg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6841,0,NULL,'ure','uru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6842,0,NULL,'urf','uradhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6843,0,NULL,'urg','urigina','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6844,0,NULL,'urh','urhobo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6845,0,NULL,'uri','urim','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6846,0,NULL,'urj','uralic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6847,0,NULL,'urk','urak lawoi''','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(6848,0,NULL,'url','urali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6849,0,NULL,'urm','urapmin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6850,0,NULL,'urn','uruangnirin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6851,0,NULL,'uro','ura (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6852,0,NULL,'urp','uru-pa-in','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6853,0,NULL,'urr','lehalurup','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6853,0,NULL,'urr','löyöp','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6854,0,NULL,'urt','urat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6855,0,NULL,'uru','urumi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6856,0,NULL,'urv','uruava','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6857,0,NULL,'urw','sop','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6858,0,NULL,'urx','urimo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6859,0,NULL,'ury','orya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6860,0,NULL,'urz','uru-eu-wau-wau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6861,0,NULL,'usa','usarufa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6862,0,NULL,'ush','ushojo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6863,0,NULL,'usi','usui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6864,0,NULL,'usk','usaghade','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6865,0,NULL,'usp','uspanteco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6866,0,NULL,'usu','uya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6867,0,NULL,'uta','otank','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6868,0,NULL,'ute','ute-southern paiute','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6869,0,NULL,'utp','amba (solomon islands)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6870,0,NULL,'utr','etulo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6871,0,NULL,'utu','utu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6872,0,NULL,'uum','urum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6873,0,NULL,'uun','kulon-pazeh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6874,0,NULL,'uur','ura (vanuatu)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6875,0,NULL,'uuu','u','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6876,0,NULL,'uve','west uvean','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6877,0,NULL,'uvh','uri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6878,0,NULL,'uvl','lote','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6879,0,NULL,'uwa','kuku-uwanh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6880,0,NULL,'uya','doko-uyanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6881,0,NULL,'uzn','northern uzbek','1248825600',NULL,NULL,NULL,NULL,'uz',NULL,NULL); -INSERT INTO "iana_records" VALUES(6882,0,NULL,'uzs','southern uzbek','1248825600',NULL,NULL,NULL,NULL,'uz',NULL,NULL); -INSERT INTO "iana_records" VALUES(6883,0,NULL,'vaa','vaagri booli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6884,0,NULL,'vae','vale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6885,0,NULL,'vaf','vafsi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6886,0,NULL,'vag','vagla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6887,0,NULL,'vah','varhadi-nagpuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6888,0,NULL,'vai','vai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6889,0,NULL,'vaj','vasekela bushman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6890,0,NULL,'val','vehes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6891,0,NULL,'vam','vanimo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6892,0,NULL,'van','valman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6893,0,NULL,'vao','vao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6894,0,NULL,'vap','vaiphei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6895,0,NULL,'var','huarijio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6896,0,NULL,'vas','vasavi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6897,0,NULL,'vau','vanuma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6898,0,NULL,'vav','varli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6899,0,NULL,'vay','wayu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6900,0,NULL,'vbb','southeast babar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6901,0,NULL,'vbk','southwestern bontok','1268265600',NULL,NULL,NULL,NULL,'bnc',NULL,NULL); -INSERT INTO "iana_records" VALUES(6902,0,NULL,'vec','venetian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6903,0,NULL,'ved','veddah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6904,0,NULL,'vel','veluws','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6905,0,NULL,'vem','vemgo-mabas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6906,0,NULL,'veo','ventureño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6907,0,NULL,'vep','veps','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6908,0,NULL,'ver','mom jango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6909,0,NULL,'vgr','vaghri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6910,0,NULL,'vgt','flemish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6910,0,NULL,'vgt','vlaamse gebarentaal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6911,0,NULL,'vic','virgin islands creole english','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6912,0,NULL,'vid','vidunda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6913,0,NULL,'vif','vili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6914,0,NULL,'vig','viemo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6915,0,NULL,'vil','vilela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6916,0,NULL,'vin','vinza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6917,0,NULL,'vis','vishavan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6918,0,NULL,'vit','viti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6919,0,NULL,'viv','iduna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6920,0,NULL,'vka','kariyarra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6921,0,NULL,'vki','ija-zuba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6922,0,NULL,'vkj','kujarge','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6923,0,NULL,'vkk','kaur','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(6924,0,NULL,'vkl','kulisusu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6925,0,NULL,'vkm','kamakan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6926,0,NULL,'vko','kodeoha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6927,0,NULL,'vkp','korlai creole portuguese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6928,0,NULL,'vkt','tenggarong kutai malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(6929,0,NULL,'vku','kurrama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6930,0,NULL,'vlp','valpei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6931,0,NULL,'vls','vlaams','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6932,0,NULL,'vma','martuyhunira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6933,0,NULL,'vmb','mbabaram','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6934,0,NULL,'vmc','juxtlahuaca mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6935,0,NULL,'vmd','mudu koraga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6936,0,NULL,'vme','east masela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6937,0,NULL,'vmf','mainfränkisch','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6938,0,NULL,'vmg','minigir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6939,0,NULL,'vmh','maraghei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6940,0,NULL,'vmi','miwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6941,0,NULL,'vmj','ixtayutla mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6942,0,NULL,'vmk','makhuwa-shirima','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6943,0,NULL,'vml','malgana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6944,0,NULL,'vmm','mitlatongo mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6945,0,NULL,'vmp','soyaltepec mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6946,0,NULL,'vmq','soyaltepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6947,0,NULL,'vmr','marenje','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6948,0,NULL,'vms','moksela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6949,0,NULL,'vmu','muluridyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6950,0,NULL,'vmv','valley maidu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6951,0,NULL,'vmw','makhuwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6952,0,NULL,'vmx','tamazola mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6953,0,NULL,'vmy','ayautla mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6954,0,NULL,'vmz','mazatlán mazatec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6955,0,NULL,'vnk','lovono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6955,0,NULL,'vnk','vano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6956,0,NULL,'vnm','neve''ei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6956,0,NULL,'vnm','vinmavis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6957,0,NULL,'vnp','vunapu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6958,0,NULL,'vor','voro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6959,0,NULL,'vot','votic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6960,0,NULL,'vra','vera''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6961,0,NULL,'vro','võro','1248825600',NULL,NULL,NULL,NULL,'et',NULL,NULL); -INSERT INTO "iana_records" VALUES(6962,0,NULL,'vrs','varisi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6963,0,NULL,'vrt','banam bay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6963,0,NULL,'vrt','burmbar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6964,0,NULL,'vsi','moldova sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6965,0,NULL,'vsl','venezuelan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6966,0,NULL,'vsv','llengua de signes valenciana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6966,0,NULL,'vsv','valencian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6967,0,NULL,'vto','vitou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6968,0,NULL,'vum','vumbu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6969,0,NULL,'vun','vunjo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6970,0,NULL,'vut','vute','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6971,0,NULL,'vwa','awa (china)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6972,0,NULL,'waa','walla walla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6973,0,NULL,'wab','wab','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6974,0,NULL,'wac','wasco-wishram','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6975,0,NULL,'wad','wandamen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6976,0,NULL,'wae','walser','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6977,0,NULL,'waf','wakoná','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6978,0,NULL,'wag','wa''ema','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6979,0,NULL,'wah','watubela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6980,0,NULL,'wai','wares','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6981,0,NULL,'waj','waffa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6982,0,NULL,'wak','wakashan languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(6983,0,NULL,'wal','wolaitta','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6983,0,NULL,'wal','wolaytta','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6984,0,NULL,'wam','wampanoag','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6985,0,NULL,'wan','wan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6986,0,NULL,'wao','wappo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6987,0,NULL,'wap','wapishana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6988,0,NULL,'waq','wageman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6989,0,NULL,'war','waray (philippines)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6990,0,NULL,'was','washo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6991,0,NULL,'wat','kaninuwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6992,0,NULL,'wau','waurá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6993,0,NULL,'wav','waka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6994,0,NULL,'waw','waiwai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6995,0,NULL,'wax','watam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6996,0,NULL,'way','wayana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6997,0,NULL,'waz','wampur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6998,0,NULL,'wba','warao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(6999,0,NULL,'wbb','wabo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7000,0,NULL,'wbe','waritai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7001,0,NULL,'wbf','wara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7002,0,NULL,'wbh','wanda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7003,0,NULL,'wbi','vwanji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7004,0,NULL,'wbj','alagwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7005,0,NULL,'wbk','waigali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7006,0,NULL,'wbl','wakhi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7007,0,NULL,'wbm','wa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7008,0,NULL,'wbp','warlpiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7009,0,NULL,'wbq','waddar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7010,0,NULL,'wbr','wagdi','1248825600',NULL,NULL,NULL,NULL,'raj',NULL,NULL); -INSERT INTO "iana_records" VALUES(7011,0,NULL,'wbt','wanman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7012,0,NULL,'wbv','wajarri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7013,0,NULL,'wbw','woi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7014,0,NULL,'wca','yanomámi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7015,0,NULL,'wci','waci gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7016,0,NULL,'wdd','wandji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7017,0,NULL,'wdg','wadaginam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7018,0,NULL,'wdj','wadjiginy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7019,0,NULL,'wdu','wadjigu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7020,0,NULL,'wea','wewaw','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7021,0,NULL,'wec','wè western','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7022,0,NULL,'wed','wedau','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7023,0,NULL,'weh','weh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7024,0,NULL,'wei','were','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7025,0,NULL,'wem','weme gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7026,0,NULL,'wen','sorbian languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7027,0,NULL,'weo','north wemale','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7028,0,NULL,'wep','westphalien','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7029,0,NULL,'wer','weri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7030,0,NULL,'wes','cameroon pidgin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7031,0,NULL,'wet','perai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7032,0,NULL,'weu','welaung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7033,0,NULL,'wew','wejewa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7034,0,NULL,'wfg','yafi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7034,0,NULL,'wfg','zorop','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7035,0,NULL,'wga','wagaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7036,0,NULL,'wgb','wagawaga','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7037,0,NULL,'wgg','wangganguru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7038,0,NULL,'wgi','wahgi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7039,0,NULL,'wgo','waigeo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7040,0,NULL,'wgw','wagawaga','1248825600',1268265600,NULL,NULL,NULL,NULL,NULL,'see wgb, ylb'); -INSERT INTO "iana_records" VALUES(7041,0,NULL,'wgy','warrgamay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7042,0,NULL,'wha','manusela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7043,0,NULL,'whg','north wahgi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7044,0,NULL,'whk','wahau kenyah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7045,0,NULL,'whu','wahau kayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7046,0,NULL,'wib','southern toussian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7047,0,NULL,'wic','wichita','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7048,0,NULL,'wie','wik-epa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7049,0,NULL,'wif','wik-keyangan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7050,0,NULL,'wig','wik-ngathana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7051,0,NULL,'wih','wik-me''anha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7052,0,NULL,'wii','minidien','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7053,0,NULL,'wij','wik-iiyanh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7054,0,NULL,'wik','wikalkan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7055,0,NULL,'wil','wilawila','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7056,0,NULL,'wim','wik-mungkan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7057,0,NULL,'win','ho-chunk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7058,0,NULL,'wir','wiraféd','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7059,0,NULL,'wit','wintu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7060,0,NULL,'wiu','wiru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7061,0,NULL,'wiv','muduapa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7062,0,NULL,'wiw','wirangu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7063,0,NULL,'wiy','wiyot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7064,0,NULL,'wja','waja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7065,0,NULL,'wji','warji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7066,0,NULL,'wka','kw''adza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7067,0,NULL,'wkb','kumbaran','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7068,0,NULL,'wkd','mo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7068,0,NULL,'wkd','wakde','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7069,0,NULL,'wkl','kalanadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7070,0,NULL,'wku','kunduvadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7071,0,NULL,'wkw','wakawaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7072,0,NULL,'wla','walio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7073,0,NULL,'wlc','mwali comorian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7074,0,NULL,'wle','wolane','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7075,0,NULL,'wlg','kunbarlang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7076,0,NULL,'wli','waioli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7077,0,NULL,'wlk','wailaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7078,0,NULL,'wll','wali (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7079,0,NULL,'wlm','middle welsh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7080,0,NULL,'wlo','wolio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7081,0,NULL,'wlr','wailapa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7082,0,NULL,'wls','wallisian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7083,0,NULL,'wlu','wuliwuli','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7084,0,NULL,'wlv','wichí lhamtés vejoz','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7085,0,NULL,'wlw','walak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7086,0,NULL,'wlx','wali (ghana)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7087,0,NULL,'wly','waling','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7088,0,NULL,'wma','mawa (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7089,0,NULL,'wmb','wambaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7090,0,NULL,'wmc','wamas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7091,0,NULL,'wmd','mamaindé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7092,0,NULL,'wme','wambule','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7093,0,NULL,'wmh','waima''a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7094,0,NULL,'wmi','wamin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7095,0,NULL,'wmm','maiwa (indonesia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7096,0,NULL,'wmn','waamwang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7097,0,NULL,'wmo','wom (papua new guinea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7098,0,NULL,'wms','wambon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7099,0,NULL,'wmt','walmajarri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7100,0,NULL,'wmw','mwani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7101,0,NULL,'wmx','womo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7102,0,NULL,'wnb','wanambre','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7103,0,NULL,'wnc','wantoat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7104,0,NULL,'wnd','wandarang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7105,0,NULL,'wne','waneci','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7106,0,NULL,'wng','wanggom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7107,0,NULL,'wni','ndzwani comorian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7108,0,NULL,'wnk','wanukaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7109,0,NULL,'wnm','wanggamala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7110,0,NULL,'wno','wano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7111,0,NULL,'wnp','wanap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7112,0,NULL,'wnu','usan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7113,0,NULL,'woa','tyaraity','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7114,0,NULL,'wob','wè northern','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7115,0,NULL,'woc','wogeo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7116,0,NULL,'wod','wolani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7117,0,NULL,'woe','woleaian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7118,0,NULL,'wof','gambian wolof','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7119,0,NULL,'wog','wogamusin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7120,0,NULL,'woi','kamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7121,0,NULL,'wok','longto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7122,0,NULL,'wom','wom (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7123,0,NULL,'won','wongo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7124,0,NULL,'woo','manombai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7125,0,NULL,'wor','woria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7126,0,NULL,'wos','hanga hundi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7127,0,NULL,'wow','wawonii','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7128,0,NULL,'woy','weyto','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7129,0,NULL,'wpc','maco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7130,0,NULL,'wra','warapu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7131,0,NULL,'wrb','warluwara','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7132,0,NULL,'wrd','warduji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7133,0,NULL,'wrg','warungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7134,0,NULL,'wrh','wiradhuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7135,0,NULL,'wri','wariyangga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7136,0,NULL,'wrl','warlmanpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7137,0,NULL,'wrm','warumungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7138,0,NULL,'wrn','warnang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7139,0,NULL,'wrp','waropen','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7140,0,NULL,'wrr','wardaman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7141,0,NULL,'wrs','waris','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7142,0,NULL,'wru','waru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7143,0,NULL,'wrv','waruna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7144,0,NULL,'wrw','gugu warra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7145,0,NULL,'wrx','wae rana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7146,0,NULL,'wry','merwari','1248825600',NULL,NULL,NULL,NULL,'mwr',NULL,NULL); -INSERT INTO "iana_records" VALUES(7147,0,NULL,'wrz','waray (australia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7148,0,NULL,'wsa','warembori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7149,0,NULL,'wsi','wusi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7150,0,NULL,'wsk','waskia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7151,0,NULL,'wsr','owenia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7152,0,NULL,'wss','wasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7153,0,NULL,'wsu','wasu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7154,0,NULL,'wsv','wotapuri-katarqalai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7155,0,NULL,'wtf','dumpu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7156,0,NULL,'wti','berta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7157,0,NULL,'wtk','watakataui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7158,0,NULL,'wtm','mewati','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7159,0,NULL,'wtw','wotu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7160,0,NULL,'wua','wikngenchera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7161,0,NULL,'wub','wunambal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7162,0,NULL,'wud','wudu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7163,0,NULL,'wuh','wutunhua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7164,0,NULL,'wul','silimo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7165,0,NULL,'wum','wumbvu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7166,0,NULL,'wun','bungu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7167,0,NULL,'wur','wurrugu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7168,0,NULL,'wut','wutung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7169,0,NULL,'wuu','wu chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7170,0,NULL,'wuv','wuvulu-aua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7171,0,NULL,'wux','wulna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7172,0,NULL,'wuy','wauyai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7173,0,NULL,'wwa','waama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7174,0,NULL,'wwo','dorig','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7174,0,NULL,'wwo','wetamut','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7175,0,NULL,'wwr','warrwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7176,0,NULL,'www','wawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7177,0,NULL,'wxa','waxianghua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7178,0,NULL,'wya','wyandot','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7179,0,NULL,'wyb','wangaaybuwan-ngiyambaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7180,0,NULL,'wym','wymysorys','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7181,0,NULL,'wyr','wayoró','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7182,0,NULL,'wyy','western fijian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7183,0,NULL,'xaa','andalusian arabic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7184,0,NULL,'xab','sambe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7185,0,NULL,'xac','kachari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7186,0,NULL,'xad','adai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7187,0,NULL,'xae','aequian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7188,0,NULL,'xag','aghwan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7189,0,NULL,'xai','kaimbé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7190,0,NULL,'xal','kalmyk','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7190,0,NULL,'xal','oirat','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7191,0,NULL,'xam','/xam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7192,0,NULL,'xan','xamtanga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7193,0,NULL,'xao','khao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7194,0,NULL,'xap','apalachee','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7195,0,NULL,'xaq','aquitanian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7196,0,NULL,'xar','karami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7197,0,NULL,'xas','kamas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7198,0,NULL,'xat','katawixi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7199,0,NULL,'xau','kauwera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7200,0,NULL,'xav','xavánte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7201,0,NULL,'xaw','kawaiisu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7202,0,NULL,'xay','kayan mahakam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7203,0,NULL,'xba','kamba (brazil)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7204,0,NULL,'xbb','lower burdekin','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7205,0,NULL,'xbc','bactrian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7206,0,NULL,'xbi','kombio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7207,0,NULL,'xbm','middle breton','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7208,0,NULL,'xbn','kenaboi','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7209,0,NULL,'xbo','bolgarian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7210,0,NULL,'xbr','kambera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7211,0,NULL,'xbw','kambiwá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7212,0,NULL,'xbx','kabixí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7213,0,NULL,'xcb','cumbric','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7214,0,NULL,'xcc','camunic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7215,0,NULL,'xce','celtiberian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7216,0,NULL,'xcg','cisalpine gaulish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7217,0,NULL,'xch','chemakum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7217,0,NULL,'xch','chimakum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7218,0,NULL,'xcl','classical armenian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7219,0,NULL,'xcm','comecrudo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7220,0,NULL,'xcn','cotoname','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7221,0,NULL,'xco','chorasmian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7222,0,NULL,'xcr','carian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7223,0,NULL,'xct','classical tibetan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7224,0,NULL,'xcu','curonian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7225,0,NULL,'xcv','chuvantsy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7226,0,NULL,'xcw','coahuilteco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7227,0,NULL,'xcy','cayuse','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7228,0,NULL,'xdc','dacian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7229,0,NULL,'xdm','edomite','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7230,0,NULL,'xdy','malayic dayak','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7231,0,NULL,'xeb','eblan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7232,0,NULL,'xed','hdi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7233,0,NULL,'xeg','//xegwi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7234,0,NULL,'xel','kelo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7235,0,NULL,'xem','kembayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7236,0,NULL,'xep','epi-olmec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7237,0,NULL,'xer','xerénte','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7238,0,NULL,'xes','kesawai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7239,0,NULL,'xet','xetá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7240,0,NULL,'xeu','keoru-ahia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7241,0,NULL,'xfa','faliscan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7242,0,NULL,'xga','galatian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7243,0,NULL,'xgf','gabrielino-fernandeño','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7244,0,NULL,'xgl','galindan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7245,0,NULL,'xgn','mongolian languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7246,0,NULL,'xgr','garza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7247,0,NULL,'xha','harami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7248,0,NULL,'xhc','hunnic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7249,0,NULL,'xhd','hadrami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7250,0,NULL,'xhe','khetrani','1248825600',NULL,NULL,NULL,NULL,'lah',NULL,NULL); -INSERT INTO "iana_records" VALUES(7251,0,NULL,'xhr','hernican','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7252,0,NULL,'xht','hattic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7253,0,NULL,'xhu','hurrian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7254,0,NULL,'xhv','khua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7255,0,NULL,'xia','xiandao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7256,0,NULL,'xib','iberian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7257,0,NULL,'xii','xiri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7258,0,NULL,'xil','illyrian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7259,0,NULL,'xin','xinca','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7260,0,NULL,'xip','xipináwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7261,0,NULL,'xir','xiriâna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7262,0,NULL,'xiv','indus valley language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7263,0,NULL,'xiy','xipaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7264,0,NULL,'xka','kalkoti','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7265,0,NULL,'xkb','northern nago','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7266,0,NULL,'xkc','kho''ini','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7267,0,NULL,'xkd','mendalam kayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7268,0,NULL,'xke','kereho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7269,0,NULL,'xkf','khengkha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7270,0,NULL,'xkg','kagoro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7271,0,NULL,'xkh','karahawyana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7272,0,NULL,'xki','kenyan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7273,0,NULL,'xkj','kajali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7274,0,NULL,'xkk','kaco''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7275,0,NULL,'xkl','mainstream kenyah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7276,0,NULL,'xkn','kayan river kayan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7277,0,NULL,'xko','kiorr','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7278,0,NULL,'xkp','kabatei','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7279,0,NULL,'xkq','koroni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7280,0,NULL,'xkr','xakriabá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7281,0,NULL,'xks','kumbewaha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7282,0,NULL,'xkt','kantosi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7283,0,NULL,'xku','kaamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7284,0,NULL,'xkv','kgalagadi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7285,0,NULL,'xkw','kembra','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7286,0,NULL,'xkx','karore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7287,0,NULL,'xky','uma'' lasan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7288,0,NULL,'xkz','kurtokha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7289,0,NULL,'xla','kamula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7290,0,NULL,'xlb','loup b','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7291,0,NULL,'xlc','lycian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7292,0,NULL,'xld','lydian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7293,0,NULL,'xle','lemnian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7294,0,NULL,'xlg','ligurian (ancient)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7295,0,NULL,'xli','liburnian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7296,0,NULL,'xln','alanic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7297,0,NULL,'xlo','loup a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7298,0,NULL,'xlp','lepontic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7299,0,NULL,'xls','lusitanian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7300,0,NULL,'xlu','cuneiform luwian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7301,0,NULL,'xly','elymian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7302,0,NULL,'xma','mushungulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7303,0,NULL,'xmb','mbonga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7304,0,NULL,'xmc','makhuwa-marrevone','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7305,0,NULL,'xmd','mbedam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7306,0,NULL,'xme','median','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7307,0,NULL,'xmf','mingrelian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7308,0,NULL,'xmg','mengaka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7309,0,NULL,'xmh','kuku-muminh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7310,0,NULL,'xmj','majera','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7311,0,NULL,'xmk','ancient macedonian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7312,0,NULL,'xml','malaysian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7313,0,NULL,'xmm','manado malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7314,0,NULL,'xmn','manichaean middle persian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7315,0,NULL,'xmo','morerebi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7316,0,NULL,'xmp','kuku-mu''inh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7317,0,NULL,'xmq','kuku-mangk','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7318,0,NULL,'xmr','meroitic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7319,0,NULL,'xms','moroccan sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7320,0,NULL,'xmt','matbat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7321,0,NULL,'xmu','kamu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7322,0,NULL,'xmv','antankarana malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(7323,0,NULL,'xmw','tsimihety malagasy','1248825600',NULL,NULL,NULL,NULL,'mg',NULL,NULL); -INSERT INTO "iana_records" VALUES(7324,0,NULL,'xmx','maden','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7325,0,NULL,'xmy','mayaguduna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7326,0,NULL,'xmz','mori bawah','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7327,0,NULL,'xna','ancient north arabian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7328,0,NULL,'xnb','kanakanabu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7329,0,NULL,'xnd','na-dene languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7330,0,NULL,'xng','middle mongolian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7331,0,NULL,'xnh','kuanhua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7332,0,NULL,'xnn','northern kankanay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7333,0,NULL,'xno','anglo-norman','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7334,0,NULL,'xnr','kangri','1248825600',NULL,NULL,NULL,NULL,'doi',NULL,NULL); -INSERT INTO "iana_records" VALUES(7335,0,NULL,'xns','kanashi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7336,0,NULL,'xnt','narragansett','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7337,0,NULL,'xoc','o''chi''chi''','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7338,0,NULL,'xod','kokoda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7339,0,NULL,'xog','soga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7340,0,NULL,'xoi','kominimung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7341,0,NULL,'xok','xokleng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7342,0,NULL,'xom','komo (sudan)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7343,0,NULL,'xon','konkomba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7344,0,NULL,'xoo','xukurú','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7345,0,NULL,'xop','kopar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7346,0,NULL,'xor','korubo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7347,0,NULL,'xow','kowaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7348,0,NULL,'xpc','pecheneg','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7349,0,NULL,'xpe','liberia kpelle','1248825600',NULL,NULL,NULL,NULL,'kpe',NULL,NULL); -INSERT INTO "iana_records" VALUES(7350,0,NULL,'xpg','phrygian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7351,0,NULL,'xpi','pictish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7352,0,NULL,'xpk','kulina pano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7353,0,NULL,'xpm','pumpokol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7354,0,NULL,'xpn','kapinawá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7355,0,NULL,'xpo','pochutec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7356,0,NULL,'xpp','puyo-paekche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7357,0,NULL,'xpq','mohegan-pequot','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7358,0,NULL,'xpr','parthian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7359,0,NULL,'xps','pisidian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7360,0,NULL,'xpu','punic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7361,0,NULL,'xpy','puyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7362,0,NULL,'xqa','karakhanid','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7363,0,NULL,'xqt','qatabanian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7364,0,NULL,'xra','krahô','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7365,0,NULL,'xrb','eastern karaboro','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7366,0,NULL,'xre','kreye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7367,0,NULL,'xri','krikati-timbira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7368,0,NULL,'xrm','armazic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7369,0,NULL,'xrn','arin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7370,0,NULL,'xrr','raetic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7371,0,NULL,'xrt','aranama-tamique','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7372,0,NULL,'xru','marriammu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7373,0,NULL,'xrw','karawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7374,0,NULL,'xsa','sabaean','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7375,0,NULL,'xsb','tinà sambal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7376,0,NULL,'xsc','scythian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7377,0,NULL,'xsd','sidetic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7378,0,NULL,'xse','sempan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7379,0,NULL,'xsh','shamang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7380,0,NULL,'xsi','sio','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7381,0,NULL,'xsj','subi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7382,0,NULL,'xsl','south slavey','1248825600',NULL,NULL,NULL,NULL,'den',NULL,NULL); -INSERT INTO "iana_records" VALUES(7383,0,NULL,'xsm','kasem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7384,0,NULL,'xsn','sanga (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7385,0,NULL,'xso','solano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7386,0,NULL,'xsp','silopi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7387,0,NULL,'xsq','makhuwa-saka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7388,0,NULL,'xsr','sherpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7389,0,NULL,'xss','assan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7390,0,NULL,'xsu','sanumá','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7391,0,NULL,'xsv','sudovian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7392,0,NULL,'xsy','saisiyat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7393,0,NULL,'xta','alcozauca mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7394,0,NULL,'xtb','chazumba mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7395,0,NULL,'xtc','katcha-kadugli-miri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7396,0,NULL,'xtd','diuxi-tilantongo mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7397,0,NULL,'xte','ketengban','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7398,0,NULL,'xtg','transalpine gaulish','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7399,0,NULL,'xti','sinicahua mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7400,0,NULL,'xtj','san juan teita mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7401,0,NULL,'xtl','tijaltepec mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7402,0,NULL,'xtm','magdalena peñasco mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7403,0,NULL,'xtn','northern tlaxiaco mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7404,0,NULL,'xto','tokharian a','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7405,0,NULL,'xtp','san miguel piedras mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7406,0,NULL,'xtq','tumshuqese','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7407,0,NULL,'xtr','early tripuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7408,0,NULL,'xts','sindihui mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7409,0,NULL,'xtt','tacahua mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7410,0,NULL,'xtu','cuyamecalco mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7411,0,NULL,'xtw','tawandê','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7412,0,NULL,'xty','yoloxochitl mixtec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7413,0,NULL,'xtz','tasmanian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7414,0,NULL,'xua','alu kurumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7415,0,NULL,'xub','betta kurumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7416,0,NULL,'xug','kunigami','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7417,0,NULL,'xuj','jennu kurumba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7418,0,NULL,'xum','umbrian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7419,0,NULL,'xuo','kuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7420,0,NULL,'xup','upper umpqua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7421,0,NULL,'xur','urartian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7422,0,NULL,'xut','kuthant','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7423,0,NULL,'xuu','kxoe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7424,0,NULL,'xve','venetic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7425,0,NULL,'xvi','kamviri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7426,0,NULL,'xvn','vandalic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7427,0,NULL,'xvo','volscian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7428,0,NULL,'xvs','vestinian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7429,0,NULL,'xwa','kwaza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7430,0,NULL,'xwc','woccon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7431,0,NULL,'xwe','xwela gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7432,0,NULL,'xwg','kwegu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7433,0,NULL,'xwl','western xwla gbe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7434,0,NULL,'xwo','written oirat','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7435,0,NULL,'xwr','kwerba mamberamo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7436,0,NULL,'xxb','boro (ghana)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7437,0,NULL,'xxk','ke''o','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7438,0,NULL,'xxr','koropó','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7439,0,NULL,'xxt','tambora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7440,0,NULL,'xyl','yalakalore','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7441,0,NULL,'xzh','zhang-zhung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7442,0,NULL,'xzm','zemgalian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7443,0,NULL,'xzp','ancient zapotec','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7444,0,NULL,'yaa','yaminahua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7445,0,NULL,'yab','yuhup','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7446,0,NULL,'yac','pass valley yali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7447,0,NULL,'yad','yagua','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7448,0,NULL,'yae','pumé','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7449,0,NULL,'yaf','yaka (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7450,0,NULL,'yag','yámana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7451,0,NULL,'yah','yazgulyam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7452,0,NULL,'yai','yagnobi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7453,0,NULL,'yaj','banda-yangere','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7454,0,NULL,'yak','yakama','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7455,0,NULL,'yal','yalunka','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7456,0,NULL,'yam','yamba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7457,0,NULL,'yan','mayangna','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7458,0,NULL,'yao','yao','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7459,0,NULL,'yap','yapese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7460,0,NULL,'yaq','yaqui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7461,0,NULL,'yar','yabarana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7462,0,NULL,'yas','nugunu (cameroon)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7463,0,NULL,'yat','yambeta','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7464,0,NULL,'yau','yuwana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7465,0,NULL,'yav','yangben','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7466,0,NULL,'yaw','yawalapití','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7467,0,NULL,'yax','yauma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7468,0,NULL,'yay','agwagwune','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7469,0,NULL,'yaz','lokaa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7470,0,NULL,'yba','yala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7471,0,NULL,'ybb','yemba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7472,0,NULL,'ybd','yangbye','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7473,0,NULL,'ybe','west yugur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7474,0,NULL,'ybh','yakha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7475,0,NULL,'ybi','yamphu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7476,0,NULL,'ybj','hasha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7477,0,NULL,'ybk','bokha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7478,0,NULL,'ybl','yukuben','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7479,0,NULL,'ybm','yaben','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7480,0,NULL,'ybn','yabaâna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7481,0,NULL,'ybo','yabong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7482,0,NULL,'ybx','yawiyo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7483,0,NULL,'yby','yaweyuha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7484,0,NULL,'ych','chesu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7485,0,NULL,'ycl','lolopo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7486,0,NULL,'ycn','yucuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7487,0,NULL,'ycp','chepya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7488,0,NULL,'ydd','eastern yiddish','1248825600',NULL,NULL,NULL,NULL,'yi',NULL,NULL); -INSERT INTO "iana_records" VALUES(7489,0,NULL,'yde','yangum dey','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7490,0,NULL,'ydg','yidgha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7491,0,NULL,'ydk','yoidik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7492,0,NULL,'yds','yiddish sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7493,0,NULL,'yea','ravula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7494,0,NULL,'yec','yeniche','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7495,0,NULL,'yee','yimas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7496,0,NULL,'yei','yeni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7497,0,NULL,'yej','yevanic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7498,0,NULL,'yel','yela','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7499,0,NULL,'yen','yendang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7500,0,NULL,'yer','tarok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7501,0,NULL,'yes','yeskwa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7502,0,NULL,'yet','yetfa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7503,0,NULL,'yeu','yerukula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7504,0,NULL,'yev','yapunda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7505,0,NULL,'yey','yeyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7506,0,NULL,'ygl','yangum gel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7507,0,NULL,'ygm','yagomi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7508,0,NULL,'ygp','gepo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7509,0,NULL,'ygr','yagaria','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7510,0,NULL,'ygw','yagwoia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7511,0,NULL,'yha','baha buyang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7512,0,NULL,'yhd','judeo-iraqi arabic','1248825600',NULL,NULL,NULL,NULL,'jrb',NULL,NULL); -INSERT INTO "iana_records" VALUES(7513,0,NULL,'yhl','hlepho phowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7514,0,NULL,'yia','yinggarda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7515,0,NULL,'yif','ache','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7516,0,NULL,'yig','wusa nasu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7517,0,NULL,'yih','western yiddish','1248825600',NULL,NULL,NULL,NULL,'yi',NULL,NULL); -INSERT INTO "iana_records" VALUES(7518,0,NULL,'yii','yidiny','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7519,0,NULL,'yij','yindjibarndi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7520,0,NULL,'yik','dongshanba lalo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7521,0,NULL,'yil','yindjilandji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7522,0,NULL,'yim','yimchungru naga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7523,0,NULL,'yin','yinchia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7524,0,NULL,'yip','pholo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7525,0,NULL,'yiq','miqie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7526,0,NULL,'yir','north awyu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7527,0,NULL,'yis','yis','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7528,0,NULL,'yit','eastern lalu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7529,0,NULL,'yiu','awu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7530,0,NULL,'yiv','northern nisu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7531,0,NULL,'yix','axi yi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7532,0,NULL,'yiy','yir yoront','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7533,0,NULL,'yiz','azhe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7534,0,NULL,'yka','yakan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7535,0,NULL,'ykg','northern yukaghir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7536,0,NULL,'yki','yoke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7537,0,NULL,'ykk','yakaikeke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7538,0,NULL,'ykl','khlula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7539,0,NULL,'ykm','kap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7540,0,NULL,'yko','yasa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7541,0,NULL,'ykr','yekora','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7542,0,NULL,'ykt','kathu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7543,0,NULL,'yky','yakoma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7544,0,NULL,'yla','yaul','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7545,0,NULL,'ylb','yaleba','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7546,0,NULL,'yle','yele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7547,0,NULL,'ylg','yelogu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7548,0,NULL,'yli','angguruk yali','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7549,0,NULL,'yll','yil','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7550,0,NULL,'ylm','limi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7551,0,NULL,'yln','langnian buyang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7552,0,NULL,'ylo','naluo yi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7553,0,NULL,'ylr','yalarnnga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7554,0,NULL,'ylu','aribwaung','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7555,0,NULL,'yly','nyâlayu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7556,0,NULL,'yma','yamphe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7557,0,NULL,'ymb','yambes','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7558,0,NULL,'ymc','southern muji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7559,0,NULL,'ymd','muda','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7560,0,NULL,'yme','yameo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7561,0,NULL,'ymg','yamongeri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7562,0,NULL,'ymh','mili','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7563,0,NULL,'ymi','moji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7564,0,NULL,'ymk','makwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7565,0,NULL,'yml','iamalele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7566,0,NULL,'ymm','maay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7567,0,NULL,'ymn','sunum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7567,0,NULL,'ymn','yamna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7568,0,NULL,'ymo','yangum mon','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7569,0,NULL,'ymp','yamap','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7570,0,NULL,'ymq','qila muji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7571,0,NULL,'ymr','malasar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7572,0,NULL,'yms','mysian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7573,0,NULL,'ymt','mator-taygi-karagas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7574,0,NULL,'ymx','northern muji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7575,0,NULL,'ymz','muzi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7576,0,NULL,'yna','aluo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7577,0,NULL,'ynd','yandruwandha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7578,0,NULL,'yne','lang''e','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7579,0,NULL,'yng','yango','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7580,0,NULL,'ynh','yangho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7581,0,NULL,'ynk','naukan yupik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7582,0,NULL,'ynl','yangulam','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7583,0,NULL,'ynn','yana','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7584,0,NULL,'yno','yong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7585,0,NULL,'yns','yansi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7586,0,NULL,'ynu','yahuna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7587,0,NULL,'yob','yoba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7588,0,NULL,'yog','yogad','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7589,0,NULL,'yoi','yonaguni','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7590,0,NULL,'yok','yokuts','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7591,0,NULL,'yol','yola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7592,0,NULL,'yom','yombe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7593,0,NULL,'yon','yonggom','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7594,0,NULL,'yos','yos','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7595,0,NULL,'yox','yoron','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7596,0,NULL,'yoy','yoy','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7597,0,NULL,'ypa','phala','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7598,0,NULL,'ypb','labo phowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7599,0,NULL,'ypg','phola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7600,0,NULL,'yph','phupha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7601,0,NULL,'ypk','yupik languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7602,0,NULL,'ypm','phuma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7603,0,NULL,'ypn','ani phowa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7604,0,NULL,'ypo','alo phola','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7605,0,NULL,'ypp','phupa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7606,0,NULL,'ypz','phuza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7607,0,NULL,'yra','yerakai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7608,0,NULL,'yrb','yareba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7609,0,NULL,'yre','yaouré','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7610,0,NULL,'yri','yarí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7611,0,NULL,'yrk','nenets','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7612,0,NULL,'yrl','nhengatu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7613,0,NULL,'yrn','yerong','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7614,0,NULL,'yrs','yarsun','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7615,0,NULL,'yrw','yarawata','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7616,0,NULL,'ysc','yassic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7617,0,NULL,'ysd','samatao','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7618,0,NULL,'ysl','yugoslavian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7619,0,NULL,'ysn','sani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7620,0,NULL,'yso','nisi (china)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7621,0,NULL,'ysp','southern lolopo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7622,0,NULL,'ysr','sirenik yupik','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7623,0,NULL,'yss','yessan-mayo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7624,0,NULL,'ysy','sanie','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7625,0,NULL,'yta','talu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7626,0,NULL,'ytl','tanglang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7627,0,NULL,'ytp','thopho','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7628,0,NULL,'ytw','yout wam','1268265600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7629,0,NULL,'yua','yucatec maya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7629,0,NULL,'yua','yucateco','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7630,0,NULL,'yub','yugambal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7631,0,NULL,'yuc','yuchi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7632,0,NULL,'yud','judeo-tripolitanian arabic','1248825600',NULL,NULL,NULL,NULL,'jrb',NULL,NULL); -INSERT INTO "iana_records" VALUES(7633,0,NULL,'yue','yue chinese','1248825600',NULL,NULL,NULL,NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7634,0,NULL,'yuf','havasupai-walapai-yavapai','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7635,0,NULL,'yug','yug','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7636,0,NULL,'yui','yurutí','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7637,0,NULL,'yuj','karkar-yuri','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7638,0,NULL,'yuk','yuki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7639,0,NULL,'yul','yulu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7640,0,NULL,'yum','quechan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7641,0,NULL,'yun','bena (nigeria)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7642,0,NULL,'yup','yukpa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7643,0,NULL,'yuq','yuqui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7644,0,NULL,'yur','yurok','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7645,0,NULL,'yut','yopno','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7646,0,NULL,'yuu','yugh','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7647,0,NULL,'yuw','yau (morobe province)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7648,0,NULL,'yux','southern yukaghir','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7649,0,NULL,'yuy','east yugur','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7650,0,NULL,'yuz','yuracare','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7651,0,NULL,'yva','yawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7652,0,NULL,'yvt','yavitero','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7653,0,NULL,'ywa','kalou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7654,0,NULL,'ywl','western lalu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7655,0,NULL,'ywn','yawanawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7656,0,NULL,'ywq','wuding-luquan yi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7657,0,NULL,'ywr','yawuru','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7658,0,NULL,'ywt','xishanba lalo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7659,0,NULL,'ywu','wumeng nasu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7660,0,NULL,'yww','yawarawarga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7661,0,NULL,'yyu','yau (sandaun province)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7662,0,NULL,'yyz','ayizi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7663,0,NULL,'yzg','e''ma buyang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7664,0,NULL,'yzk','zokhuo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7665,0,NULL,'zaa','sierra de juárez zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7666,0,NULL,'zab','san juan guelavía zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7667,0,NULL,'zac','ocotlán zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7668,0,NULL,'zad','cajonos zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7669,0,NULL,'zae','yareni zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7670,0,NULL,'zaf','ayoquesco zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7671,0,NULL,'zag','zaghawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7672,0,NULL,'zah','zangwal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7673,0,NULL,'zai','isthmus zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7674,0,NULL,'zaj','zaramo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7675,0,NULL,'zak','zanaki','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7676,0,NULL,'zal','zauzou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7677,0,NULL,'zam','miahuatlán zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7678,0,NULL,'zao','ozolotepec zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7679,0,NULL,'zap','zapotec','1129420800',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(7680,0,NULL,'zaq','aloápam zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7681,0,NULL,'zar','rincón zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7682,0,NULL,'zas','santo domingo albarradas zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7683,0,NULL,'zat','tabaa zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7684,0,NULL,'zau','zangskari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7685,0,NULL,'zav','yatzachi zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7686,0,NULL,'zaw','mitla zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7687,0,NULL,'zax','xadani zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7688,0,NULL,'zay','zayse-zergulla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7688,0,NULL,'zay','zaysete','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7689,0,NULL,'zaz','zari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7690,0,NULL,'zbc','central berawan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7691,0,NULL,'zbe','east berawan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7692,0,NULL,'zbl','bliss','1187654400',NULL,NULL,NULL,'blis',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7692,0,NULL,'zbl','blissymbolics','1187654400',NULL,NULL,NULL,'blis',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7692,0,NULL,'zbl','blissymbols','1187654400',NULL,NULL,NULL,'blis',NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7693,0,NULL,'zbt','batui','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7694,0,NULL,'zbw','west berawan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7695,0,NULL,'zca','coatecas altas zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7696,0,NULL,'zch','central hongshuihe zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7697,0,NULL,'zdj','ngazidja comorian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7698,0,NULL,'zea','zeeuws','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7699,0,NULL,'zeg','zenag','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7700,0,NULL,'zeh','eastern hongshuihe zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7701,0,NULL,'zen','zenaga','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7702,0,NULL,'zga','kinga','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7703,0,NULL,'zgb','guibei zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7704,0,NULL,'zgm','minz zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7705,0,NULL,'zgn','guibian zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7706,0,NULL,'zgr','magori','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7707,0,NULL,'zhb','zhaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7708,0,NULL,'zhd','dai zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7709,0,NULL,'zhi','zhire','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7710,0,NULL,'zhn','nong zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7711,0,NULL,'zhw','zhoa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7712,0,NULL,'zhx','chinese (family)','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7713,0,NULL,'zia','zia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7714,0,NULL,'zib','zimbabwe sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7715,0,NULL,'zik','zimakani','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7716,0,NULL,'zim','mesme','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7717,0,NULL,'zin','zinza','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7718,0,NULL,'zir','ziriya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7719,0,NULL,'ziw','zigula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7720,0,NULL,'ziz','zizilivakan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7721,0,NULL,'zka','kaimbulawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7722,0,NULL,'zkb','koibal','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7723,0,NULL,'zkg','koguryo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7724,0,NULL,'zkh','khorezmian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7725,0,NULL,'zkk','karankawa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7726,0,NULL,'zko','kott','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7727,0,NULL,'zkp','são paulo kaingáng','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7728,0,NULL,'zkr','zakhring','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7729,0,NULL,'zkt','kitan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7730,0,NULL,'zku','kaurna','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7731,0,NULL,'zkv','krevinian','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7732,0,NULL,'zkz','khazar','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7733,0,NULL,'zle','east slavic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7734,0,NULL,'zlj','liujiang zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7735,0,NULL,'zlm','malay (individual language)','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7736,0,NULL,'zln','lianshan zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7737,0,NULL,'zlq','liuqian zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7738,0,NULL,'zls','south slavic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7739,0,NULL,'zlw','west slavic languages','1248825600',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7740,0,NULL,'zma','manda (australia)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7741,0,NULL,'zmb','zimba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7742,0,NULL,'zmc','margany','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7743,0,NULL,'zmd','maridan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7744,0,NULL,'zme','mangerr','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7745,0,NULL,'zmf','mfinu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7746,0,NULL,'zmg','marti ke','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7747,0,NULL,'zmh','makolkol','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7748,0,NULL,'zmi','negeri sembilan malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7749,0,NULL,'zmj','maridjabin','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7750,0,NULL,'zmk','mandandanyi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7751,0,NULL,'zml','madngele','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7752,0,NULL,'zmm','marimanindji','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7753,0,NULL,'zmn','mbangwe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7754,0,NULL,'zmo','molo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7755,0,NULL,'zmp','mpuono','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7756,0,NULL,'zmq','mituku','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7757,0,NULL,'zmr','maranunggu','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7758,0,NULL,'zms','mbesa','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7759,0,NULL,'zmt','maringarr','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7760,0,NULL,'zmu','muruwari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7761,0,NULL,'zmv','mbariman-gudhinma','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7762,0,NULL,'zmw','mbo (democratic republic of congo)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7763,0,NULL,'zmx','bomitaba','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7764,0,NULL,'zmy','mariyedi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7765,0,NULL,'zmz','mbandja','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7766,0,NULL,'zna','zan gula','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7767,0,NULL,'znd','zande languages','1129420800',NULL,NULL,NULL,NULL,NULL,'collection',NULL); -INSERT INTO "iana_records" VALUES(7768,0,NULL,'zne','zande (individual language)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7769,0,NULL,'zng','mang','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7770,0,NULL,'znk','manangkari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7771,0,NULL,'zns','mangas','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7772,0,NULL,'zoc','copainalá zoque','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7773,0,NULL,'zoh','chimalapa zoque','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7774,0,NULL,'zom','zou','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7775,0,NULL,'zoo','asunción mixtepec zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7776,0,NULL,'zoq','tabasco zoque','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7777,0,NULL,'zor','rayón zoque','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7778,0,NULL,'zos','francisco león zoque','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7779,0,NULL,'zpa','lachiguiri zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7780,0,NULL,'zpb','yautepec zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7781,0,NULL,'zpc','choapan zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7782,0,NULL,'zpd','southeastern ixtlán zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7783,0,NULL,'zpe','petapa zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7784,0,NULL,'zpf','san pedro quiatoni zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7785,0,NULL,'zpg','guevea de humboldt zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7786,0,NULL,'zph','totomachapan zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7787,0,NULL,'zpi','santa maría quiegolani zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7788,0,NULL,'zpj','quiavicuzas zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7789,0,NULL,'zpk','tlacolulita zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7790,0,NULL,'zpl','lachixío zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7791,0,NULL,'zpm','mixtepec zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7792,0,NULL,'zpn','santa inés yatzechi zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7793,0,NULL,'zpo','amatlán zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7794,0,NULL,'zpp','el alto zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7795,0,NULL,'zpq','zoogocho zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7796,0,NULL,'zpr','santiago xanica zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7797,0,NULL,'zps','coatlán zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7798,0,NULL,'zpt','san vicente coatlán zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7799,0,NULL,'zpu','yalálag zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7800,0,NULL,'zpv','chichicapan zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7801,0,NULL,'zpw','zaniza zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7802,0,NULL,'zpx','san baltazar loxicha zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7803,0,NULL,'zpy','mazaltepec zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7804,0,NULL,'zpz','texmelucan zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7805,0,NULL,'zqe','qiubei zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7806,0,NULL,'zra','kara (korea)','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7807,0,NULL,'zrg','mirgan','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7808,0,NULL,'zrn','zerenkel','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7809,0,NULL,'zro','záparo','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7810,0,NULL,'zrp','zarphatic','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7811,0,NULL,'zrs','mairasi','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7812,0,NULL,'zsa','sarasira','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7813,0,NULL,'zsk','kaskean','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7814,0,NULL,'zsl','zambian sign language','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7815,0,NULL,'zsm','standard malay','1248825600',NULL,NULL,NULL,NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7816,0,NULL,'zsr','southern rincon zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7817,0,NULL,'zsu','sukurum','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7818,0,NULL,'zte','elotepec zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7819,0,NULL,'ztg','xanaguía zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7820,0,NULL,'ztl','lapaguía-guivini zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7821,0,NULL,'ztm','san agustín mixtepec zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7822,0,NULL,'ztn','santa catarina albarradas zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7823,0,NULL,'ztp','loxicha zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7824,0,NULL,'ztq','quioquitani-quierí zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7825,0,NULL,'zts','tilquiapan zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7826,0,NULL,'ztt','tejalapan zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7827,0,NULL,'ztu','güilá zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7828,0,NULL,'ztx','zaachila zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7829,0,NULL,'zty','yatee zapotec','1248825600',NULL,NULL,NULL,NULL,'zap',NULL,NULL); -INSERT INTO "iana_records" VALUES(7830,0,NULL,'zua','zeem','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7831,0,NULL,'zuh','tokano','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7832,0,NULL,'zum','kumzari','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7833,0,NULL,'zun','zuni','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7834,0,NULL,'zuy','zumaya','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7835,0,NULL,'zwa','zay','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7836,0,NULL,'zxx','no linguistic content','1141776000',NULL,NULL,NULL,NULL,NULL,'special',NULL); -INSERT INTO "iana_records" VALUES(7836,0,NULL,'zxx','not applicable','1141776000',NULL,NULL,NULL,NULL,NULL,'special',NULL); -INSERT INTO "iana_records" VALUES(7837,0,NULL,'zyb','yongbei zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7838,0,NULL,'zyg','yang zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7839,0,NULL,'zyj','youjiang zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7840,0,NULL,'zyn','yongnan zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7841,0,NULL,'zyp','zyphe','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7842,0,NULL,'zza','dimili','1156377600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(7842,0,NULL,'zza','dimli (macrolanguage)','1156377600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(7842,0,NULL,'zza','kirdki','1156377600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(7842,0,NULL,'zza','kirmanjki (macrolanguage)','1156377600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(7842,0,NULL,'zza','zaza','1156377600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(7842,0,NULL,'zza','zazaki','1156377600',NULL,NULL,NULL,NULL,NULL,'macrolanguage',NULL); -INSERT INTO "iana_records" VALUES(7843,6,NULL,'zzj','zuojiang zhuang','1248825600',NULL,NULL,NULL,NULL,'za',NULL,NULL); -INSERT INTO "iana_records" VALUES(7844,6,NULL,'aao','algerian saharan arabic','1248825600',NULL,'aao','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7845,6,NULL,'abh','tajiki arabic','1248825600',NULL,'abh','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7846,6,NULL,'abv','baharna arabic','1248825600',NULL,'abv','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7847,6,NULL,'acm','mesopotamian arabic','1248825600',NULL,'acm','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7848,6,NULL,'acq','ta''izzi-adeni arabic','1248825600',NULL,'acq','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7849,6,NULL,'acw','hijazi arabic','1248825600',NULL,'acw','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7850,6,NULL,'acx','omani arabic','1248825600',NULL,'acx','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7851,6,NULL,'acy','cypriot arabic','1248825600',NULL,'acy','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7852,6,NULL,'adf','dhofari arabic','1248825600',NULL,'adf','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7853,6,NULL,'ads','adamorobe sign language','1248825600',NULL,'ads','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7854,6,NULL,'aeb','tunisian arabic','1248825600',NULL,'aeb','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7855,6,NULL,'aec','saidi arabic','1248825600',NULL,'aec','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7856,6,NULL,'aed','argentine sign language','1248825600',NULL,'aed','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7857,6,NULL,'aen','armenian sign language','1248825600',NULL,'aen','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7858,6,NULL,'afb','gulf arabic','1248825600',NULL,'afb','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7859,6,NULL,'afg','afghan sign language','1248825600',NULL,'afg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7860,6,NULL,'ajp','south levantine arabic','1248825600',NULL,'ajp','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7861,6,NULL,'apc','north levantine arabic','1248825600',NULL,'apc','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7862,6,NULL,'apd','sudanese arabic','1248825600',NULL,'apd','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7863,6,NULL,'arb','standard arabic','1248825600',NULL,'arb','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7864,6,NULL,'arq','algerian arabic','1248825600',NULL,'arq','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7865,6,NULL,'ars','najdi arabic','1248825600',NULL,'ars','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7866,6,NULL,'ary','moroccan arabic','1248825600',NULL,'ary','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7867,6,NULL,'arz','egyptian arabic','1248825600',NULL,'arz','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7868,6,NULL,'ase','american sign language','1248825600',NULL,'ase','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7869,6,NULL,'asf','australian sign language','1248825600',NULL,'asf','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7870,6,NULL,'asp','algerian sign language','1248825600',NULL,'asp','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7871,6,NULL,'asq','austrian sign language','1248825600',NULL,'asq','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7872,6,NULL,'asw','australian aborigines sign language','1248825600',NULL,'asw','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7873,6,NULL,'auz','uzbeki arabic','1248825600',NULL,'auz','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7874,6,NULL,'avl','eastern egyptian bedawi arabic','1248825600',NULL,'avl','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7875,6,NULL,'ayh','hadrami arabic','1248825600',NULL,'ayh','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7876,6,NULL,'ayl','libyan arabic','1248825600',NULL,'ayl','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7877,6,NULL,'ayn','sanaani arabic','1248825600',NULL,'ayn','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7878,6,NULL,'ayp','north mesopotamian arabic','1248825600',NULL,'ayp','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7879,6,NULL,'bbz','babalia creole arabic','1248825600',NULL,'bbz','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(7880,6,NULL,'bfi','british sign language','1248825600',NULL,'bfi','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7881,6,NULL,'bfk','ban khor sign language','1248825600',NULL,'bfk','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7882,6,NULL,'bjn','banjar','1248825600',NULL,'bjn','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7883,6,NULL,'bog','bamako sign language','1248825600',NULL,'bog','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7884,6,NULL,'bqn','bulgarian sign language','1248825600',NULL,'bqn','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7885,6,NULL,'bqy','bengkala sign language','1248825600',NULL,'bqy','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7886,6,NULL,'btj','bacanese malay','1248825600',NULL,'btj','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7887,6,NULL,'bve','berau malay','1248825600',NULL,'bve','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7888,6,NULL,'bvl','bolivian sign language','1248825600',NULL,'bvl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7889,6,NULL,'bvu','bukit malay','1248825600',NULL,'bvu','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7890,6,NULL,'bzs','brazilian sign language','1248825600',NULL,'bzs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7891,6,NULL,'cdo','min dong chinese','1248825600',NULL,'cdo','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7892,6,NULL,'cds','chadian sign language','1248825600',NULL,'cds','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7893,6,NULL,'cjy','jinyu chinese','1248825600',NULL,'cjy','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7894,6,NULL,'cmn','mandarin chinese','1248825600',NULL,'cmn','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7895,6,NULL,'coa','cocos islands malay','1248825600',NULL,'coa','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7896,6,NULL,'cpx','pu-xian chinese','1248825600',NULL,'cpx','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7897,6,NULL,'csc','catalan sign language','1248825600',NULL,'csc','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7897,6,NULL,'csc','lengua de señas catalana','1248825600',NULL,'csc','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7897,6,NULL,'csc','llengua de signes catalana','1248825600',NULL,'csc','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7898,6,NULL,'csd','chiangmai sign language','1248825600',NULL,'csd','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7899,6,NULL,'cse','czech sign language','1248825600',NULL,'cse','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7900,6,NULL,'csf','cuba sign language','1248825600',NULL,'csf','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7901,6,NULL,'csg','chilean sign language','1248825600',NULL,'csg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7902,6,NULL,'csl','chinese sign language','1248825600',NULL,'csl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7903,6,NULL,'csn','colombian sign language','1248825600',NULL,'csn','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7904,6,NULL,'csq','croatia sign language','1248825600',NULL,'csq','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7905,6,NULL,'csr','costa rican sign language','1248825600',NULL,'csr','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7906,6,NULL,'czh','huizhou chinese','1248825600',NULL,'czh','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7907,6,NULL,'czo','min zhong chinese','1248825600',NULL,'czo','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7908,6,NULL,'doq','dominican sign language','1248825600',NULL,'doq','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7909,6,NULL,'dse','dutch sign language','1248825600',NULL,'dse','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7910,6,NULL,'dsl','danish sign language','1248825600',NULL,'dsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7911,6,NULL,'dup','duano','1248825600',NULL,'dup','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7912,6,NULL,'ecs','ecuadorian sign language','1248825600',NULL,'ecs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7913,6,NULL,'esl','egypt sign language','1248825600',NULL,'esl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7914,6,NULL,'esn','salvadoran sign language','1248825600',NULL,'esn','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7915,6,NULL,'eso','estonian sign language','1248825600',NULL,'eso','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7916,6,NULL,'eth','ethiopian sign language','1248825600',NULL,'eth','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7917,6,NULL,'fcs','quebec sign language','1248825600',NULL,'fcs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7918,6,NULL,'fse','finnish sign language','1248825600',NULL,'fse','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7919,6,NULL,'fsl','french sign language','1248825600',NULL,'fsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7920,6,NULL,'fss','finland-swedish sign language','1248825600',NULL,'fss','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7920,6,NULL,'fss','finlandssvenskt teckenspråk','1248825600',NULL,'fss','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7920,6,NULL,'fss','suomenruotsalainen viittomakieli','1248825600',NULL,'fss','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7921,6,NULL,'gan','gan chinese','1248825600',NULL,'gan','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7922,6,NULL,'gom','goan konkani','1248825600',NULL,'gom','kok',NULL,'kok',NULL,NULL); -INSERT INTO "iana_records" VALUES(7923,6,NULL,'gse','ghanaian sign language','1248825600',NULL,'gse','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7924,6,NULL,'gsg','german sign language','1248825600',NULL,'gsg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7925,6,NULL,'gsm','guatemalan sign language','1248825600',NULL,'gsm','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7926,6,NULL,'gss','greek sign language','1248825600',NULL,'gss','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7927,6,NULL,'gus','guinean sign language','1248825600',NULL,'gus','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7928,6,NULL,'hab','hanoi sign language','1248825600',NULL,'hab','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7929,6,NULL,'haf','haiphong sign language','1248825600',NULL,'haf','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7930,6,NULL,'hak','hakka chinese','1248825600',NULL,'hak','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7931,6,NULL,'hds','honduras sign language','1248825600',NULL,'hds','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7932,6,NULL,'hji','haji','1248825600',NULL,'hji','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7933,6,NULL,'hks','heung kong sau yue','1248825600',NULL,'hks','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7933,6,NULL,'hks','hong kong sign language','1248825600',NULL,'hks','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7934,6,NULL,'hos','ho chi minh city sign language','1248825600',NULL,'hos','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7935,6,NULL,'hps','hawai''i pidgin sign language','1248825600',NULL,'hps','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7936,6,NULL,'hsh','hungarian sign language','1248825600',NULL,'hsh','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7937,6,NULL,'hsl','hausa sign language','1248825600',NULL,'hsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7938,6,NULL,'hsn','xiang chinese','1248825600',NULL,'hsn','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7939,6,NULL,'icl','icelandic sign language','1248825600',NULL,'icl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7940,6,NULL,'ils','international sign','1248825600',NULL,'ils','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7941,6,NULL,'inl','indonesian sign language','1248825600',NULL,'inl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7942,6,NULL,'ins','indian sign language','1248825600',NULL,'ins','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7943,6,NULL,'ise','italian sign language','1248825600',NULL,'ise','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7944,6,NULL,'isg','irish sign language','1248825600',NULL,'isg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7945,6,NULL,'isr','israeli sign language','1248825600',NULL,'isr','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7946,6,NULL,'jak','jakun','1248825600',NULL,'jak','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7947,6,NULL,'jax','jambi malay','1248825600',NULL,'jax','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7948,6,NULL,'jcs','jamaican country sign language','1248825600',NULL,'jcs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7949,6,NULL,'jhs','jhankot sign language','1248825600',NULL,'jhs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7950,6,NULL,'jls','jamaican sign language','1268265600',NULL,'jls','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7951,6,NULL,'jos','jordanian sign language','1248825600',NULL,'jos','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7952,6,NULL,'jsl','japanese sign language','1248825600',NULL,'jsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7953,6,NULL,'jus','jumla sign language','1248825600',NULL,'jus','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7954,6,NULL,'kgi','selangor sign language','1248825600',NULL,'kgi','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7955,6,NULL,'knn','konkani (individual language)','1248825600',NULL,'knn','kok',NULL,'kok',NULL,NULL); -INSERT INTO "iana_records" VALUES(7956,6,NULL,'kvb','kubu','1248825600',NULL,'kvb','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7957,6,NULL,'kvk','korean sign language','1248825600',NULL,'kvk','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7958,6,NULL,'kvr','kerinci','1248825600',NULL,'kvr','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7959,6,NULL,'kxd','brunei','1248825600',NULL,'kxd','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7960,6,NULL,'lbs','libyan sign language','1248825600',NULL,'lbs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7961,6,NULL,'lce','loncong','1248825600',NULL,'lce','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7962,6,NULL,'lcf','lubu','1248825600',NULL,'lcf','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7963,6,NULL,'liw','col','1248825600',NULL,'liw','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7964,6,NULL,'lls','lithuanian sign language','1248825600',NULL,'lls','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7965,6,NULL,'lsg','lyons sign language','1248825600',NULL,'lsg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7966,6,NULL,'lsl','latvian sign language','1248825600',NULL,'lsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7967,6,NULL,'lso','laos sign language','1248825600',NULL,'lso','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7968,6,NULL,'lsp','lengua de señas panameñas','1248825600',NULL,'lsp','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7968,6,NULL,'lsp','panamanian sign language','1248825600',NULL,'lsp','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7969,6,NULL,'lst','trinidad and tobago sign language','1248825600',NULL,'lst','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7970,6,NULL,'lsy','mauritian sign language','1268265600',NULL,'lsy','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7971,6,NULL,'ltg','latgalian','1268265600',NULL,'ltg','lv',NULL,'lv',NULL,NULL); -INSERT INTO "iana_records" VALUES(7972,6,NULL,'lvs','standard latvian','1268265600',NULL,'lvs','lv',NULL,'lv',NULL,NULL); -INSERT INTO "iana_records" VALUES(7973,6,NULL,'lzh','literary chinese','1248825600',NULL,'lzh','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7974,6,NULL,'max','north moluccan malay','1248825600',NULL,'max','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7975,6,NULL,'mdl','maltese sign language','1248825600',NULL,'mdl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7976,6,NULL,'meo','kedah malay','1248825600',NULL,'meo','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7977,6,NULL,'mfa','pattani malay','1248825600',NULL,'mfa','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7978,6,NULL,'mfb','bangka','1248825600',NULL,'mfb','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7979,6,NULL,'mfs','mexican sign language','1248825600',NULL,'mfs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7980,6,NULL,'min','minangkabau','1248825600',NULL,'min','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7981,6,NULL,'mnp','min bei chinese','1248825600',NULL,'mnp','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7982,6,NULL,'mqg','kota bangun kutai malay','1248825600',NULL,'mqg','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7983,6,NULL,'mre','martha''s vineyard sign language','1248825600',NULL,'mre','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7984,6,NULL,'msd','yucatec maya sign language','1248825600',NULL,'msd','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7985,6,NULL,'msi','sabah malay','1248825600',NULL,'msi','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7986,6,NULL,'msr','mongolian sign language','1248825600',NULL,'msr','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7987,6,NULL,'mui','musi','1248825600',NULL,'mui','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(7988,6,NULL,'mzc','madagascar sign language','1248825600',NULL,'mzc','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7989,6,NULL,'mzg','monastic sign language','1248825600',NULL,'mzg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7990,6,NULL,'mzy','mozambican sign language','1248825600',NULL,'mzy','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7991,6,NULL,'nan','min nan chinese','1248825600',NULL,'nan','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(7992,6,NULL,'nbs','namibian sign language','1248825600',NULL,'nbs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7993,6,NULL,'ncs','nicaraguan sign language','1248825600',NULL,'ncs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7994,6,NULL,'nsi','nigerian sign language','1248825600',NULL,'nsi','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7995,6,NULL,'nsl','norwegian sign language','1248825600',NULL,'nsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7996,6,NULL,'nsp','nepalese sign language','1248825600',NULL,'nsp','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7997,6,NULL,'nsr','maritime sign language','1248825600',NULL,'nsr','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7998,6,NULL,'nzs','new zealand sign language','1248825600',NULL,'nzs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(7999,6,NULL,'okl','old kentish sign language','1248825600',NULL,'okl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8000,6,NULL,'orn','orang kanaq','1248825600',NULL,'orn','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8001,6,NULL,'ors','orang seletar','1248825600',NULL,'ors','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8002,6,NULL,'pel','pekal','1248825600',NULL,'pel','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8003,6,NULL,'pga','sudanese creole arabic','1248825600',NULL,'pga','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(8004,6,NULL,'pks','pakistan sign language','1248825600',NULL,'pks','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8005,6,NULL,'prl','peruvian sign language','1248825600',NULL,'prl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8006,6,NULL,'prz','providencia sign language','1248825600',NULL,'prz','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8007,6,NULL,'psc','persian sign language','1248825600',NULL,'psc','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8008,6,NULL,'psd','plains indian sign language','1248825600',NULL,'psd','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8009,6,NULL,'pse','central malay','1248825600',NULL,'pse','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8010,6,NULL,'psg','penang sign language','1248825600',NULL,'psg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8011,6,NULL,'psl','puerto rican sign language','1248825600',NULL,'psl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8012,6,NULL,'pso','polish sign language','1248825600',NULL,'pso','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8013,6,NULL,'psp','philippine sign language','1248825600',NULL,'psp','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8014,6,NULL,'psr','portuguese sign language','1248825600',NULL,'psr','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8015,6,NULL,'pys','lengua de señas del paraguay','1268265600',NULL,'pys','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8015,6,NULL,'pys','paraguayan sign language','1268265600',NULL,'pys','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8016,6,NULL,'rms','romanian sign language','1248825600',NULL,'rms','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8017,6,NULL,'rsi','rennellese sign language','1248825600',NULL,'rsi','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8018,6,NULL,'rsl','russian sign language','1248825600',NULL,'rsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8019,6,NULL,'sdl','saudi arabian sign language','1248825600',NULL,'sdl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8020,6,NULL,'sfb','french belgian sign language','1248825600',NULL,'sfb','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8020,6,NULL,'sfb','langue des signes de belgique francophone','1248825600',NULL,'sfb','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8021,6,NULL,'sfs','south african sign language','1248825600',NULL,'sfs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8022,6,NULL,'sgg','swiss-german sign language','1248825600',NULL,'sgg','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8023,6,NULL,'sgx','sierra leone sign language','1248825600',NULL,'sgx','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8024,6,NULL,'shu','chadian arabic','1248825600',NULL,'shu','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(8025,6,NULL,'slf','swiss-italian sign language','1248825600',NULL,'slf','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8026,6,NULL,'sls','singapore sign language','1248825600',NULL,'sls','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8027,6,NULL,'sqs','sri lankan sign language','1248825600',NULL,'sqs','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8028,6,NULL,'ssh','shihhi arabic','1248825600',NULL,'ssh','ar',NULL,'ar',NULL,NULL); -INSERT INTO "iana_records" VALUES(8029,6,NULL,'ssp','spanish sign language','1248825600',NULL,'ssp','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8030,6,NULL,'ssr','swiss-french sign language','1248825600',NULL,'ssr','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8031,6,NULL,'svk','slovakian sign language','1248825600',NULL,'svk','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8032,6,NULL,'swc','congo swahili','1248825600',NULL,'swc','sw',NULL,'sw',NULL,NULL); -INSERT INTO "iana_records" VALUES(8033,6,NULL,'swh','kiswahili','1248825600',NULL,'swh','sw',NULL,'sw',NULL,NULL); -INSERT INTO "iana_records" VALUES(8033,6,NULL,'swh','swahili (individual language)','1248825600',NULL,'swh','sw',NULL,'sw',NULL,NULL); -INSERT INTO "iana_records" VALUES(8034,6,NULL,'swl','swedish sign language','1248825600',NULL,'swl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8035,6,NULL,'syy','al-sayyid bedouin sign language','1248825600',NULL,'syy','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8036,6,NULL,'tmw','temuan','1248825600',NULL,'tmw','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8037,6,NULL,'tse','tunisian sign language','1248825600',NULL,'tse','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8038,6,NULL,'tsm','turkish sign language','1248825600',NULL,'tsm','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8038,6,NULL,'tsm','türk İşaret dili','1248825600',NULL,'tsm','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8039,6,NULL,'tsq','thai sign language','1248825600',NULL,'tsq','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8040,6,NULL,'tss','taiwan sign language','1248825600',NULL,'tss','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8041,6,NULL,'tsy','tebul sign language','1248825600',NULL,'tsy','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8042,6,NULL,'tza','tanzanian sign language','1248825600',NULL,'tza','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8043,6,NULL,'ugn','ugandan sign language','1248825600',NULL,'ugn','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8044,6,NULL,'ugy','uruguayan sign language','1248825600',NULL,'ugy','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8045,6,NULL,'ukl','ukrainian sign language','1248825600',NULL,'ukl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8046,6,NULL,'uks','kaapor sign language','1248825600',NULL,'uks','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8046,6,NULL,'uks','urubú-kaapor sign language','1248825600',NULL,'uks','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8047,6,NULL,'urk','urak lawoi''','1248825600',NULL,'urk','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8048,6,NULL,'uzn','northern uzbek','1248825600',NULL,'uzn','uz',NULL,'uz',NULL,NULL); -INSERT INTO "iana_records" VALUES(8049,6,NULL,'uzs','southern uzbek','1248825600',NULL,'uzs','uz',NULL,'uz',NULL,NULL); -INSERT INTO "iana_records" VALUES(8050,6,NULL,'vgt','flemish sign language','1248825600',NULL,'vgt','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8050,6,NULL,'vgt','vlaamse gebarentaal','1248825600',NULL,'vgt','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8051,6,NULL,'vkk','kaur','1248825600',NULL,'vkk','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8052,6,NULL,'vkt','tenggarong kutai malay','1248825600',NULL,'vkt','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8053,6,NULL,'vsi','moldova sign language','1248825600',NULL,'vsi','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8054,6,NULL,'vsl','venezuelan sign language','1248825600',NULL,'vsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8055,6,NULL,'vsv','llengua de signes valenciana','1248825600',NULL,'vsv','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8055,6,NULL,'vsv','valencian sign language','1248825600',NULL,'vsv','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8056,6,NULL,'wuu','wu chinese','1248825600',NULL,'wuu','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(8057,6,NULL,'xki','kenyan sign language','1248825600',NULL,'xki','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8058,6,NULL,'xml','malaysian sign language','1248825600',NULL,'xml','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8059,6,NULL,'xmm','manado malay','1248825600',NULL,'xmm','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8060,6,NULL,'xms','moroccan sign language','1248825600',NULL,'xms','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8061,6,NULL,'yds','yiddish sign language','1248825600',NULL,'yds','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8062,6,NULL,'ysl','yugoslavian sign language','1248825600',NULL,'ysl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8063,6,NULL,'yue','yue chinese','1248825600',NULL,'yue','zh',NULL,'zh',NULL,NULL); -INSERT INTO "iana_records" VALUES(8064,6,NULL,'zib','zimbabwe sign language','1248825600',NULL,'zib','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8065,6,NULL,'zlm','malay (individual language)','1248825600',NULL,'zlm','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8066,6,NULL,'zmi','negeri sembilan malay','1248825600',NULL,'zmi','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8067,6,NULL,'zsl','zambian sign language','1248825600',NULL,'zsl','sgn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8068,1,NULL,'zsm','standard malay','1248825600',NULL,'zsm','ms',NULL,'ms',NULL,NULL); -INSERT INTO "iana_records" VALUES(8069,1,NULL,'arab','arabic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8070,1,NULL,'armi','imperial aramaic','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8071,1,NULL,'armn','armenian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8072,1,NULL,'avst','avestan','1185580800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8073,1,NULL,'bali','balinese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8074,1,NULL,'bamu','bamum','1248912000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8075,1,NULL,'bass','bassa vah','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8076,1,NULL,'batk','batak','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8077,1,NULL,'beng','bengali','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8078,1,NULL,'blis','blissymbols','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8079,1,NULL,'bopo','bopomofo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8080,1,NULL,'brah','brahmi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8081,1,NULL,'brai','braille','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8082,1,NULL,'bugi','buginese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8083,1,NULL,'buhd','buhid','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8084,1,NULL,'cakm','chakma','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8085,1,NULL,'cans','unified canadian aboriginal syllabics','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8086,1,NULL,'cari','carian','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8087,1,NULL,'cham','cham','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8088,1,NULL,'cher','cherokee','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8089,1,NULL,'cirt','cirth','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8090,1,NULL,'copt','coptic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8091,1,NULL,'cprt','cypriot','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8092,1,NULL,'cyrl','cyrillic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8093,1,NULL,'cyrs','cyrillic (old church slavonic variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8094,1,NULL,'deva','devanagari','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8094,1,NULL,'deva','nagari','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8095,1,NULL,'dsrt','deseret','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8095,1,NULL,'dsrt','mormon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8096,1,NULL,'egyd','egyptian demotic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8097,1,NULL,'egyh','egyptian hieratic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8098,1,NULL,'egyp','egyptian hieroglyphs','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8099,1,NULL,'ethi','ethiopic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8099,1,NULL,'ethi','ge''ez','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8099,1,NULL,'ethi','geʻez','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8100,1,NULL,'geok','khutsuri (asomtavruli and nuskhuri)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8101,1,NULL,'geor','georgian (mkhedruli)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8102,1,NULL,'glag','glagolitic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8103,1,NULL,'goth','gothic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8104,1,NULL,'gran','grantha','1260316800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8105,1,NULL,'grek','greek','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8106,1,NULL,'gujr','gujarati','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8107,1,NULL,'guru','gurmukhi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8108,1,NULL,'hang','hangeul','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8108,1,NULL,'hang','hangul','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8108,1,NULL,'hang','hangŭl','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8109,1,NULL,'hani','han','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8109,1,NULL,'hani','hanja','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8109,1,NULL,'hani','hanzi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8109,1,NULL,'hani','kanji','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8110,1,NULL,'hano','hanunoo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8110,1,NULL,'hano','hanunóo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8111,1,NULL,'hans','han (simplified variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8112,1,NULL,'hant','han (traditional variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8113,1,NULL,'hebr','hebrew','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8114,1,NULL,'hira','hiragana','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8115,1,NULL,'hmng','pahawh hmong','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8116,1,NULL,'hrkt','(alias for hiragana + katakana)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8117,1,NULL,'hung','old hungarian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8118,1,NULL,'inds','harappan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8118,1,NULL,'inds','indus','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8119,1,NULL,'ital','old italic (etruscan, oscan, etc.)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8120,1,NULL,'java','javanese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8121,1,NULL,'jpan','japanese (alias for han + hiragana + katakana)','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8122,1,NULL,'kali','kayah li','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8123,1,NULL,'kana','katakana','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8124,1,NULL,'khar','kharoshthi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8125,1,NULL,'khmr','khmer','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8126,1,NULL,'knda','kannada','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8127,1,NULL,'kore','korean (alias for hangul + han)','1183593600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8128,1,NULL,'kpel','kpelle','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8129,1,NULL,'kthi','kaithi','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8130,1,NULL,'lana','lanna','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8130,1,NULL,'lana','tai tham','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8131,1,NULL,'laoo','lao','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8132,1,NULL,'latf','latin (fraktur variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8133,1,NULL,'latg','latin (gaelic variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8134,1,NULL,'latn','latin','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8135,1,NULL,'lepc','lepcha','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8135,1,NULL,'lepc','róng','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8136,1,NULL,'limb','limbu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8137,1,NULL,'lina','linear a','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8138,1,NULL,'linb','linear b','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8139,1,NULL,'lisu','fraser','1236902400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8139,1,NULL,'lisu','lisu','1236902400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8140,1,NULL,'loma','loma','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8141,1,NULL,'lyci','lycian','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8142,1,NULL,'lydi','lydian','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8143,1,NULL,'mand','mandaean','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8143,1,NULL,'mand','mandaic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8144,1,NULL,'mani','manichaean','1185580800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8145,1,NULL,'maya','mayan hieroglyphs','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8146,1,NULL,'mend','mende','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8147,1,NULL,'merc','meroitic cursive','1260316800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8148,1,NULL,'mero','meroitic hieroglyphs','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8149,1,NULL,'mlym','malayalam','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8150,1,NULL,'mong','mongolian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8151,1,NULL,'moon','moon','1169769600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8151,1,NULL,'moon','moon code','1169769600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8151,1,NULL,'moon','moon script','1169769600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8151,1,NULL,'moon','moon type','1169769600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8152,1,NULL,'mtei','meetei','1169769600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8152,1,NULL,'mtei','meitei mayek','1169769600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8152,1,NULL,'mtei','meithei','1169769600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8153,1,NULL,'mymr','burmese','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8153,1,NULL,'mymr','myanmar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8154,1,NULL,'narb','ancient north arabian','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8154,1,NULL,'narb','old north arabian','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8155,1,NULL,'nbat','nabataean','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8156,1,NULL,'nkgb','''na-''khi ²ggŏ-¹baw','1236902400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8156,1,NULL,'nkgb','nakhi geba','1236902400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8156,1,NULL,'nkgb','naxi geba','1236902400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8157,1,NULL,'nkoo','n''ko','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8157,1,NULL,'nkoo','n’ko','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8158,1,NULL,'ogam','ogham','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8159,1,NULL,'olck','ol','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8159,1,NULL,'olck','ol cemet''','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8159,1,NULL,'olck','ol chiki','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8159,1,NULL,'olck','santali','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8160,1,NULL,'orkh','old turkic','1248912000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8160,1,NULL,'orkh','orkhon runic','1248912000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8161,1,NULL,'orya','oriya','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8162,1,NULL,'osma','osmanya','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8163,1,NULL,'palm','palmyrene','1270857600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8164,1,NULL,'perm','old permic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8165,1,NULL,'phag','phags-pa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8166,1,NULL,'phli','inscriptional pahlavi','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8167,1,NULL,'phlp','psalter pahlavi','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8168,1,NULL,'phlv','book pahlavi','1185580800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8169,1,NULL,'phnx','phoenician','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8170,1,NULL,'plrd','miao','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8170,1,NULL,'plrd','pollard','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8171,1,NULL,'prti','inscriptional parthian','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8172,1,NULL,'qaaa..qabx','private use','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8173,1,NULL,'rjng','kaganga','1161043200',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8173,1,NULL,'rjng','redjang','1161043200',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8173,1,NULL,'rjng','rejang','1161043200',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8174,1,NULL,'roro','rongorongo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8175,1,NULL,'runr','runic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8176,1,NULL,'samr','samaritan','1185580800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8177,1,NULL,'sara','sarati','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8178,1,NULL,'sarb','old south arabian','1248912000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8179,1,NULL,'saur','saurashtra','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8180,1,NULL,'sgnw','signwriting','1161043200',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8181,1,NULL,'shaw','shavian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8181,1,NULL,'shaw','shaw','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8182,1,NULL,'sinh','sinhala','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8183,1,NULL,'sund','sundanese','1153440000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8184,1,NULL,'sylo','syloti nagri','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8185,1,NULL,'syrc','syriac','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8186,1,NULL,'syre','syriac (estrangelo variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8187,1,NULL,'syrj','syriac (western variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8188,1,NULL,'syrn','syriac (eastern variant)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8189,1,NULL,'tagb','tagbanwa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8190,1,NULL,'tale','tai le','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8191,1,NULL,'talu','new tai lue','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8192,1,NULL,'taml','tamil','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8193,1,NULL,'tavt','tai viet','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8194,1,NULL,'telu','telugu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8195,1,NULL,'teng','tengwar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8196,1,NULL,'tfng','berber','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8196,1,NULL,'tfng','tifinagh','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8197,1,NULL,'tglg','alibata','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8197,1,NULL,'tglg','baybayin','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8197,1,NULL,'tglg','tagalog','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8198,1,NULL,'thaa','thaana','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8199,1,NULL,'thai','thai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8200,1,NULL,'tibt','tibetan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8201,1,NULL,'ugar','ugaritic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8202,1,NULL,'vaii','vai','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8203,1,NULL,'visp','visible speech','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8204,1,NULL,'wara','varang kshiti','1260316800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8204,1,NULL,'wara','warang citi','1260316800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8205,1,NULL,'xpeo','old persian','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8206,1,NULL,'xsux','sumero-akkadian cuneiform','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8207,1,NULL,'yiii','yi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8208,1,NULL,'zinh','code for inherited script','1238716800',NULL,NULL,NULL,NULL,NULL,NULL,'not intended for use as a language subtag'); -INSERT INTO "iana_records" VALUES(8209,1,NULL,'zmth','mathematical notation','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8210,1,NULL,'zsym','symbols','1196812800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8211,1,NULL,'zxxx','code for unwritten documents','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8212,1,NULL,'zyyy','code for undetermined script','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8213,2,NULL,'zzzz','code for uncoded script','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8214,2,NULL,'aa','private use','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8215,2,NULL,'ac','ascension island','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8216,2,NULL,'ad','andorra','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8217,2,NULL,'ae','united arab emirates','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8218,2,NULL,'af','afghanistan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8219,2,NULL,'ag','antigua and barbuda','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8220,2,NULL,'ai','anguilla','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8221,2,NULL,'al','albania','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8222,2,NULL,'am','armenia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8223,2,NULL,'an','netherlands antilles','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8224,2,NULL,'ao','angola','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8225,2,NULL,'aq','antarctica','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8226,2,NULL,'ar','argentina','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8227,2,NULL,'as','american samoa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8228,2,NULL,'at','austria','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8229,2,NULL,'au','australia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8230,2,NULL,'aw','aruba','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8231,2,NULL,'ax','Åland islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8232,2,NULL,'az','azerbaijan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8233,2,NULL,'ba','bosnia and herzegovina','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8234,2,NULL,'bb','barbados','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8235,2,NULL,'bd','bangladesh','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8236,2,NULL,'be','belgium','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8237,2,NULL,'bf','burkina faso','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8238,2,NULL,'bg','bulgaria','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8239,2,NULL,'bh','bahrain','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8240,2,NULL,'bi','burundi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8241,2,NULL,'bj','benin','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8242,2,NULL,'bl','saint barthélemy','1193961600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8243,2,NULL,'bm','bermuda','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8244,2,NULL,'bn','brunei darussalam','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8245,2,NULL,'bo','bolivia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8246,2,NULL,'br','brazil','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8247,2,NULL,'bs','bahamas','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8248,2,NULL,'bt','bhutan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8249,2,NULL,'bu','burma','1129420800',628819200,'mm',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8250,2,NULL,'bv','bouvet island','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8251,2,NULL,'bw','botswana','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8252,2,NULL,'by','belarus','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8253,2,NULL,'bz','belize','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8254,2,NULL,'ca','canada','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8255,2,NULL,'cc','cocos (keeling) islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8256,2,NULL,'cd','the democratic republic of the congo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8257,2,NULL,'cf','central african republic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8258,2,NULL,'cg','congo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8259,2,NULL,'ch','switzerland','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8260,2,NULL,'ci','côte d''ivoire','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8261,2,NULL,'ck','cook islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8262,2,NULL,'cl','chile','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8263,2,NULL,'cm','cameroon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8264,2,NULL,'cn','china','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8265,2,NULL,'co','colombia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8266,2,NULL,'cp','clipperton island','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8267,2,NULL,'cr','costa rica','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8268,2,NULL,'cs','serbia and montenegro','1129420800',1160006400,NULL,NULL,NULL,NULL,NULL,'see rs for serbia or me for montenegro'); -INSERT INTO "iana_records" VALUES(8269,2,NULL,'cu','cuba','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8270,2,NULL,'cv','cape verde','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8271,2,NULL,'cx','christmas island','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8272,2,NULL,'cy','cyprus','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8273,2,NULL,'cz','czech republic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8274,2,NULL,'dd','german democratic republic','1129420800',657244800,'de',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8275,2,NULL,'de','germany','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8276,2,NULL,'dg','diego garcia','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8277,2,NULL,'dj','djibouti','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8278,2,NULL,'dk','denmark','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8279,2,NULL,'dm','dominica','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8280,2,NULL,'do','dominican republic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8281,2,NULL,'dz','algeria','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8282,2,NULL,'ea','ceuta, melilla','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8283,2,NULL,'ec','ecuador','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8284,2,NULL,'ee','estonia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8285,2,NULL,'eg','egypt','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8286,2,NULL,'eh','western sahara','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8287,2,NULL,'er','eritrea','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8288,2,NULL,'es','spain','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8289,2,NULL,'et','ethiopia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8290,2,NULL,'eu','european union','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8291,2,NULL,'fi','finland','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8292,2,NULL,'fj','fiji','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8293,2,NULL,'fk','falkland islands (malvinas)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8294,2,NULL,'fm','federated states of micronesia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8295,2,NULL,'fo','faroe islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8296,2,NULL,'fr','france','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8297,2,NULL,'fx','metropolitan france','1129420800',868838400,'fr',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8298,2,NULL,'ga','gabon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8299,2,NULL,'gb','united kingdom','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,'as of 2006-03-29 gb no longer includes the channel islands and isle of man; see gg, je, im'); -INSERT INTO "iana_records" VALUES(8300,2,NULL,'gd','grenada','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8301,2,NULL,'ge','georgia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8302,2,NULL,'gf','french guiana','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8303,2,NULL,'gg','guernsey','1143590400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8304,2,NULL,'gh','ghana','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8305,2,NULL,'gi','gibraltar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8306,2,NULL,'gl','greenland','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8307,2,NULL,'gm','gambia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8308,2,NULL,'gn','guinea','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8309,2,NULL,'gp','guadeloupe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8310,2,NULL,'gq','equatorial guinea','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8311,2,NULL,'gr','greece','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8312,2,NULL,'gs','south georgia and the south sandwich islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8313,2,NULL,'gt','guatemala','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8314,2,NULL,'gu','guam','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8315,2,NULL,'gw','guinea-bissau','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8316,2,NULL,'gy','guyana','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8317,2,NULL,'hk','hong kong','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8318,2,NULL,'hm','heard island and mcdonald islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8319,2,NULL,'hn','honduras','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8320,2,NULL,'hr','croatia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8321,2,NULL,'ht','haiti','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8322,2,NULL,'hu','hungary','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8323,2,NULL,'ic','canary islands','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8324,2,NULL,'id','indonesia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8325,2,NULL,'ie','ireland','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8326,2,NULL,'il','israel','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8327,2,NULL,'im','isle of man','1143590400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8328,2,NULL,'in','india','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8329,2,NULL,'io','british indian ocean territory','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8330,2,NULL,'iq','iraq','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8331,2,NULL,'ir','islamic republic of iran','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8332,2,NULL,'is','iceland','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8333,2,NULL,'it','italy','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8334,2,NULL,'je','jersey','1143590400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8335,2,NULL,'jm','jamaica','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8336,2,NULL,'jo','jordan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8337,2,NULL,'jp','japan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8338,2,NULL,'ke','kenya','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8339,2,NULL,'kg','kyrgyzstan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8340,2,NULL,'kh','cambodia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8341,2,NULL,'ki','kiribati','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8342,2,NULL,'km','comoros','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8343,2,NULL,'kn','saint kitts and nevis','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8344,2,NULL,'kp','democratic people''s republic of korea','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8345,2,NULL,'kr','republic of korea','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8346,2,NULL,'kw','kuwait','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8347,2,NULL,'ky','cayman islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8348,2,NULL,'kz','kazakhstan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8349,2,NULL,'la','lao people''s democratic republic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8350,2,NULL,'lb','lebanon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8351,2,NULL,'lc','saint lucia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8352,2,NULL,'li','liechtenstein','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8353,2,NULL,'lk','sri lanka','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8354,2,NULL,'lr','liberia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8355,2,NULL,'ls','lesotho','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8356,2,NULL,'lt','lithuania','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8357,2,NULL,'lu','luxembourg','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8358,2,NULL,'lv','latvia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8359,2,NULL,'ly','libyan arab jamahiriya','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8360,2,NULL,'ma','morocco','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8361,2,NULL,'mc','monaco','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8362,2,NULL,'md','moldova','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8363,2,NULL,'me','montenegro','1160006400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8364,2,NULL,'mf','saint martin','1193961600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8365,2,NULL,'mg','madagascar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8366,2,NULL,'mh','marshall islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8367,2,NULL,'mk','the former yugoslav republic of macedonia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8368,2,NULL,'ml','mali','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8369,2,NULL,'mm','myanmar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8370,2,NULL,'mn','mongolia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8371,2,NULL,'mo','macao','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8372,2,NULL,'mp','northern mariana islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8373,2,NULL,'mq','martinique','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8374,2,NULL,'mr','mauritania','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8375,2,NULL,'ms','montserrat','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8376,2,NULL,'mt','malta','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8377,2,NULL,'mu','mauritius','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8378,2,NULL,'mv','maldives','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8379,2,NULL,'mw','malawi','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8380,2,NULL,'mx','mexico','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8381,2,NULL,'my','malaysia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8382,2,NULL,'mz','mozambique','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8383,2,NULL,'na','namibia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8384,2,NULL,'nc','new caledonia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8385,2,NULL,'ne','niger','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8386,2,NULL,'nf','norfolk island','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8387,2,NULL,'ng','nigeria','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8388,2,NULL,'ni','nicaragua','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8389,2,NULL,'nl','netherlands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8390,2,NULL,'no','norway','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8391,2,NULL,'np','nepal','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8392,2,NULL,'nr','nauru','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8393,2,NULL,'nt','neutral zone','1129420800',742435200,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8394,2,NULL,'nu','niue','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8395,2,NULL,'nz','new zealand','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8396,2,NULL,'om','oman','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8397,2,NULL,'pa','panama','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8398,2,NULL,'pe','peru','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8399,2,NULL,'pf','french polynesia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8400,2,NULL,'pg','papua new guinea','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8401,2,NULL,'ph','philippines','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8402,2,NULL,'pk','pakistan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8403,2,NULL,'pl','poland','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8404,2,NULL,'pm','saint pierre and miquelon','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8405,2,NULL,'pn','pitcairn','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8406,2,NULL,'pr','puerto rico','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8407,2,NULL,'ps','occupied palestinian territory','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8408,2,NULL,'pt','portugal','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8409,2,NULL,'pw','palau','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8410,2,NULL,'py','paraguay','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8411,2,NULL,'qa','qatar','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8412,2,NULL,'qm..qz','private use','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8413,2,NULL,'re','réunion','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8414,2,NULL,'ro','romania','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8415,2,NULL,'rs','serbia','1160006400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8416,2,NULL,'ru','russian federation','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8417,2,NULL,'rw','rwanda','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8418,2,NULL,'sa','saudi arabia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8419,2,NULL,'sb','solomon islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8420,2,NULL,'sc','seychelles','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8421,2,NULL,'sd','sudan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8422,2,NULL,'se','sweden','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8423,2,NULL,'sg','singapore','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8424,2,NULL,'sh','saint helena, ascension and tristan da cunha','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8425,2,NULL,'si','slovenia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8426,2,NULL,'sj','svalbard and jan mayen','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8427,2,NULL,'sk','slovakia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8428,2,NULL,'sl','sierra leone','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8429,2,NULL,'sm','san marino','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8430,2,NULL,'sn','senegal','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8431,2,NULL,'so','somalia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8432,2,NULL,'sr','suriname','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8433,2,NULL,'st','sao tome and principe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8434,2,NULL,'su','union of soviet socialist republics','1129420800',715132800,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8435,2,NULL,'sv','el salvador','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8436,2,NULL,'sy','syrian arab republic','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8437,2,NULL,'sz','swaziland','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8438,2,NULL,'ta','tristan da cunha','1248825600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8439,2,NULL,'tc','turks and caicos islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8440,2,NULL,'td','chad','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8441,2,NULL,'tf','french southern territories','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8442,2,NULL,'tg','togo','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8443,2,NULL,'th','thailand','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8444,2,NULL,'tj','tajikistan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8445,2,NULL,'tk','tokelau','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8446,2,NULL,'tl','timor-leste','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8447,2,NULL,'tm','turkmenistan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8448,2,NULL,'tn','tunisia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8449,2,NULL,'to','tonga','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8450,2,NULL,'tp','east timor','1129420800',1021852800,'tl',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8451,2,NULL,'tr','turkey','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8452,2,NULL,'tt','trinidad and tobago','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8453,2,NULL,'tv','tuvalu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8454,2,NULL,'tw','taiwan, province of china','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8455,2,NULL,'tz','united republic of tanzania','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8456,2,NULL,'ua','ukraine','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8457,2,NULL,'ug','uganda','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8458,2,NULL,'um','united states minor outlying islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8459,2,NULL,'us','united states','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8460,2,NULL,'uy','uruguay','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8461,2,NULL,'uz','uzbekistan','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8462,2,NULL,'va','holy see (vatican city state)','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8463,2,NULL,'vc','saint vincent and the grenadines','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8464,2,NULL,'ve','venezuela','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8465,2,NULL,'vg','british virgin islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8466,2,NULL,'vi','u.s. virgin islands','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8467,2,NULL,'vn','viet nam','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8468,2,NULL,'vu','vanuatu','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8469,2,NULL,'wf','wallis and futuna','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8470,2,NULL,'ws','samoa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8471,2,NULL,'xa..xz','private use','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8472,2,NULL,'yd','democratic yemen','1129420800',650592000,'ye',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8473,2,NULL,'ye','yemen','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8474,2,NULL,'yt','mayotte','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8475,2,NULL,'yu','yugoslavia','1129420800',1058918400,NULL,NULL,NULL,NULL,NULL,'see ba, hr, me, mk, rs, or si'); -INSERT INTO "iana_records" VALUES(8476,2,NULL,'za','south africa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8477,2,NULL,'zm','zambia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8478,2,NULL,'zr','zaire','1129420800',868838400,'cd',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8479,2,NULL,'zw','zimbabwe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8480,2,NULL,'zz','private use','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8481,2,NULL,'001','world','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8482,2,NULL,'002','africa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8483,2,NULL,'005','south america','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8484,2,NULL,'009','oceania','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8485,2,NULL,'011','western africa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8486,2,NULL,'013','central america','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8487,2,NULL,'014','eastern africa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8488,2,NULL,'015','northern africa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8489,2,NULL,'017','middle africa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8490,2,NULL,'018','southern africa','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8491,2,NULL,'019','americas','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8492,2,NULL,'021','northern america','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8493,2,NULL,'029','caribbean','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8494,2,NULL,'030','eastern asia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8495,2,NULL,'034','southern asia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8496,2,NULL,'035','south-eastern asia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8497,2,NULL,'039','southern europe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8498,2,NULL,'053','australia and new zealand','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8499,2,NULL,'054','melanesia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8500,2,NULL,'057','micronesia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8501,2,NULL,'061','polynesia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8502,2,NULL,'142','asia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8503,2,NULL,'143','central asia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8504,2,NULL,'145','western asia','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8505,2,NULL,'150','europe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8506,2,NULL,'151','eastern europe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8507,2,NULL,'154','northern europe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8508,2,NULL,'155','western europe','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8509,3,NULL,'419','latin america and the caribbean','1129420800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8510,3,NULL,'1606nict','late middle french (to 1606)','1174348800',NULL,NULL,'frm',NULL,NULL,NULL,'16th century french as in jean nicot, "thresor de la langue francoyse", 1606, but also including some french similar to that of rabelais'); -INSERT INTO "iana_records" VALUES(8511,3,NULL,'1694acad','early modern french','1174348800',NULL,NULL,'fr',NULL,NULL,NULL,'17th century french, as catalogued in the "dictionnaire de l''académie françoise", 4eme ed. 1694; frequently includes elements of middle french, as this is a transitional period'); -INSERT INTO "iana_records" VALUES(8512,3,NULL,'1901','traditional german orthography','1129420800',NULL,NULL,'de',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8513,3,NULL,'1959acad','"academic" ("governmental") variant of belarusian as codified in 1959','1222732800',NULL,NULL,'be',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8514,3,NULL,'1994','standardized resian orthography','1185580800',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'for standardized resian an orthography was published in 1994.'); -INSERT INTO "iana_records" VALUES(8514,3,NULL,'1994','standardized resian orthography','1185580800',NULL,NULL,'sl-rozaj-biske',NULL,NULL,NULL,'for standardized resian an orthography was published in 1994.'); -INSERT INTO "iana_records" VALUES(8514,3,NULL,'1994','standardized resian orthography','1185580800',NULL,NULL,'sl-rozaj-njiva',NULL,NULL,NULL,'for standardized resian an orthography was published in 1994.'); -INSERT INTO "iana_records" VALUES(8514,3,NULL,'1994','standardized resian orthography','1185580800',NULL,NULL,'sl-rozaj-osojs',NULL,NULL,NULL,'for standardized resian an orthography was published in 1994.'); -INSERT INTO "iana_records" VALUES(8514,3,NULL,'1994','standardized resian orthography','1185580800',NULL,NULL,'sl-rozaj-solba',NULL,NULL,NULL,'for standardized resian an orthography was published in 1994.'); -INSERT INTO "iana_records" VALUES(8515,3,NULL,'1996','german orthography of 1996','1129420800',NULL,NULL,'de',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8516,3,NULL,'alalc97','ala-lc romanization, 1997 edition','1260316800',NULL,NULL,NULL,NULL,NULL,NULL,'romanizations recommended by the american library association and the library of congress, in "ala-lc romanization tables: transliteration schemes for non-roman scripts" (1997), isbn 978-0-8444-0940-5.'); -INSERT INTO "iana_records" VALUES(8517,3,NULL,'aluku','aluku dialect','1252108800',NULL,NULL,'djk',NULL,NULL,NULL,'aluku dialect of the "busi nenge tongo" english-based creole continuum in eastern suriname and western french guiana'); -INSERT INTO "iana_records" VALUES(8517,3,NULL,'aluku','boni dialect','1252108800',NULL,NULL,'djk',NULL,NULL,NULL,'aluku dialect of the "busi nenge tongo" english-based creole continuum in eastern suriname and western french guiana'); -INSERT INTO "iana_records" VALUES(8518,3,NULL,'arevela','eastern armenian','1158537600',NULL,NULL,'hy',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8519,3,NULL,'arevmda','western armenian','1158537600',NULL,NULL,'hy',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'az',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'ba',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'crh',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'kk',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'krc',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'ky',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'sah',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'tk',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'tt',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8520,3,NULL,'baku1926','unified turkic latin alphabet (historical)','1176854400',NULL,NULL,'uz',NULL,NULL,NULL,'denotes alphabet used in turkic republics/regions of the former ussr in late 1920s, and throughout 1930s, which aspired to represent equivalent phonemes in a unified fashion. also known as: new turkic alphabet; birlәşdirilmiş jeni tyrk Әlifbasь (birlesdirilmis jeni tyrk elifbasi); jaŋalif (janalif).'); -INSERT INTO "iana_records" VALUES(8521,3,NULL,'biscayan','biscayan dialect of basque','1271116800',NULL,NULL,'eu',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8522,3,NULL,'biske','the bila dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of san giorgio/bila is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8522,3,NULL,'biske','the san giorgio dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of san giorgio/bila is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8523,3,NULL,'boont','boontling','1158537600',NULL,NULL,'en',NULL,NULL,NULL,'jargon embedded in american english'); -INSERT INTO "iana_records" VALUES(8524,3,NULL,'fonipa','international phonetic alphabet','1165795200',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8525,3,NULL,'fonupa','uralic phonetic alphabet','1165795200',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8526,3,NULL,'hepburn','hepburn romanization','1254355200',NULL,NULL,'ja-latn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8527,3,NULL,'heploc','hepburn romanization, library of congress method','1254355200',1265500800,'alalc97','ja-latn-hepburn',NULL,NULL,NULL,'preferred tag is ja-latn-alalc97'); -INSERT INTO "iana_records" VALUES(8528,3,NULL,'hognorsk','norwegian in høgnorsk (high norwegian) orthography','1262390400',NULL,NULL,'nn',NULL,NULL,NULL,'norwegian following ivar aasen''s orthographical principles, including modern usage.'); -INSERT INTO "iana_records" VALUES(8529,3,NULL,'jauer','jauer dialect of romansh','1277769600',NULL,NULL,'rm',NULL,NULL,NULL,'the spoken dialect of the val müstair, which has no written standard.'); -INSERT INTO "iana_records" VALUES(8530,3,NULL,'kkcor','common cornish orthography of revived cornish','1223942400',NULL,NULL,'kw',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8531,3,NULL,'lipaw','the lipovaz dialect of resian','1186790400',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of lipovaz/lipovec is one of the minor local dialects of resian'); -INSERT INTO "iana_records" VALUES(8531,3,NULL,'lipaw','the lipovec dialect of resian','1186790400',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of lipovaz/lipovec is one of the minor local dialects of resian'); -INSERT INTO "iana_records" VALUES(8532,3,NULL,'monoton','monotonic greek','1165795200',NULL,NULL,'el',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8533,3,NULL,'ndyuka','aukan dialect','1252108800',NULL,NULL,'djk',NULL,NULL,NULL,'ndyuka dialect of the "busi nenge tongo" english-based creole continuum in eastern suriname and western french guiana'); -INSERT INTO "iana_records" VALUES(8533,3,NULL,'ndyuka','ndyuka dialect','1252108800',NULL,NULL,'djk',NULL,NULL,NULL,'ndyuka dialect of the "busi nenge tongo" english-based creole continuum in eastern suriname and western french guiana'); -INSERT INTO "iana_records" VALUES(8534,3,NULL,'nedis','nadiza dialect','1129420800',NULL,NULL,'sl',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8534,3,NULL,'nedis','natisone dialect','1129420800',NULL,NULL,'sl',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8535,3,NULL,'njiva','the gniva dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of gniva/njiva is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8535,3,NULL,'njiva','the njiva dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of gniva/njiva is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8536,3,NULL,'osojs','the oseacco dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of oseacco/osojane is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8536,3,NULL,'osojs','the osojane dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of oseacco/osojane is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8537,3,NULL,'pamaka','pamaka dialect','1252108800',NULL,NULL,'djk',NULL,NULL,NULL,'pamaka dialect of the "busi nenge tongo" english-based creole continuum in eastern suriname and western french guiana'); -INSERT INTO "iana_records" VALUES(8538,3,NULL,'pinyin','pinyin romanization','1223942400',NULL,NULL,'bo-latn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8538,3,NULL,'pinyin','pinyin romanization','1223942400',NULL,NULL,'zh-latn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8539,3,NULL,'polyton','polytonic greek','1165795200',NULL,NULL,'el',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8540,3,NULL,'puter','puter idiom of romansh','1277769600',NULL,NULL,'rm',NULL,NULL,NULL,'puter is one of the five traditional written standards or "idioms" of the romansh language.'); -INSERT INTO "iana_records" VALUES(8541,3,NULL,'rozaj','resian','1129420800',NULL,NULL,'sl',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8541,3,NULL,'rozaj','resianic','1129420800',NULL,NULL,'sl',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8541,3,NULL,'rozaj','rezijan','1129420800',NULL,NULL,'sl',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8542,3,NULL,'rumgr','rumantsch grischun','1277769600',NULL,NULL,'rm',NULL,NULL,NULL,'supraregional romansh written standard'); -INSERT INTO "iana_records" VALUES(8543,3,NULL,'scotland','scottish standard english','1188518400',NULL,NULL,'en',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8544,3,NULL,'scouse','scouse','1158537600',NULL,NULL,'en',NULL,NULL,NULL,'english liverpudlian dialect known as ''scouse'''); -INSERT INTO "iana_records" VALUES(8545,3,NULL,'solba','the solbica dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of stolvizza/solbica is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8545,3,NULL,'solba','the stolvizza dialect of resian','1183593600',NULL,NULL,'sl-rozaj',NULL,NULL,NULL,'the dialect of stolvizza/solbica is one of the four major local dialects of resian'); -INSERT INTO "iana_records" VALUES(8546,3,NULL,'surmiran','surmiran idiom of romansh','1277769600',NULL,NULL,'rm',NULL,NULL,NULL,'surmiran is one of the five traditional written standards or "idioms" of the romansh language.'); -INSERT INTO "iana_records" VALUES(8547,3,NULL,'sursilv','sursilvan idiom of romansh','1277769600',NULL,NULL,'rm',NULL,NULL,NULL,'sursilvan is one of the five traditional written standards or "idioms" of the romansh language.'); -INSERT INTO "iana_records" VALUES(8548,3,NULL,'sutsilv','sutsilvan idiom of romansh','1277769600',NULL,NULL,'rm',NULL,NULL,NULL,'sutsilvan is one of the five traditional written standards or "idioms" of the romansh language.'); -INSERT INTO "iana_records" VALUES(8549,3,NULL,'tarask','belarusian in taraskievica orthography','1177632000',NULL,NULL,'be',NULL,NULL,NULL,'the subtag represents branislau taraskievic''s belarusian orthography as published in "bielaruski klasycny pravapis" by juras buslakou, vincuk viacorka, zmicier sanko, and zmicier sauka (vilnia- miensk 2005).'); -INSERT INTO "iana_records" VALUES(8550,3,NULL,'uccor','unified cornish orthography of revived cornish','1223942400',NULL,NULL,'kw',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8551,3,NULL,'ucrcor','unified cornish revised orthography of revived cornish','1223942400',NULL,NULL,'kw',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8552,3,NULL,'ulster','ulster dialect of scots','1270857600',NULL,NULL,'sco',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8553,3,NULL,'valencia','valencian','1173139200',NULL,NULL,'ca',NULL,NULL,NULL,'variety spoken in the "comunidad valenciana" region of spain, where it is co-official with spanish.'); -INSERT INTO "iana_records" VALUES(8554,3,NULL,'vallader','vallader idiom of romansh','1277769600',NULL,NULL,'rm',NULL,NULL,NULL,'vallader is one of the five traditional written standards or "idioms" of the romansh language.'); -INSERT INTO "iana_records" VALUES(8555,4,NULL,'wadegile','wade-giles romanization','1222992000',NULL,NULL,'zh-latn',NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8556,4,'art-lojban',NULL,'lojban','1005436800',1062460800,'jbo',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8557,4,'cel-gaulish',NULL,'gaulish','990748800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8558,4,'en-gb-oed',NULL,'english, oxford english dictionary spelling','1057708800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8559,4,'i-ami',NULL,'amis','927590400',1248825600,'ami',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8560,4,'i-bnn',NULL,'bunun','927590400',1248825600,'bnn',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8561,4,'i-default',NULL,'default language','889488000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8562,4,'i-enochian',NULL,'enochian','1025654400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8563,4,'i-hak',NULL,'hakka','917740800',947462400,'hak',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8564,4,'i-klingon',NULL,'klingon','927676800',1077580800,'tlh',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8565,4,'i-lux',NULL,'luxembourgish','874627200',905299200,'lb',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8566,4,'i-mingo',NULL,'mingo','874627200',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8567,4,'i-navajo',NULL,'navajo','874627200',950832000,'nv',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8568,4,'i-pwn',NULL,'paiwan','927590400',1248825600,'pwn',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8569,4,'i-tao',NULL,'tao','927590400',1248825600,'tao',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8570,4,'i-tay',NULL,'tayal','927590400',1248825600,'tay',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8571,4,'i-tsu',NULL,'tsou','927590400',1248825600,'tsu',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8572,4,'no-bok',NULL,'norwegian bokmal','809136000',950832000,'nb',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8573,4,'no-nyn',NULL,'norwegian nynorsk','809136000',950832000,'nn',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8574,4,'sgn-be-fr',NULL,'belgian-french sign language','1005436800',1248825600,'sfb',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8575,4,'sgn-be-nl',NULL,'belgian-flemish sign language','1005436800',1248825600,'vgt',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8576,4,'sgn-ch-de',NULL,'swiss german sign language','1005436800',1248825600,'sgg',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8577,4,'zh-guoyu',NULL,'mandarin or standard chinese','945475200',1121385600,'cmn',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8578,4,'zh-hakka',NULL,'hakka','945475200',1248825600,'hak',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8579,4,'zh-min',NULL,'min, fuzhou, hokkien, amoy, or taiwanese','945475200',1248825600,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8580,4,'zh-min-nan',NULL,'minnan, hokkien, amoy, taiwanese, southern min, southern fujian, hoklo, southern fukien, ho-lo','985564800',1248825600,'nan',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8581,5,'zh-xiang',NULL,'xiang or hunanese','945475200',1248825600,'hsn',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8582,5,'az-arab',NULL,'azerbaijani in arabic script','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8583,5,'az-cyrl',NULL,'azerbaijani in cyrillic script','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8584,5,'az-latn',NULL,'azerbaijani in latin script','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8585,5,'be-latn',NULL,'belarusian in latin script','1104969600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8586,5,'bs-cyrl',NULL,'bosnian in cyrillic script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8587,5,'bs-latn',NULL,'bosnian in latin script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8588,5,'de-1901',NULL,'german, traditional orthography','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8589,5,'de-1996',NULL,'german, orthography of 1996','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8590,5,'de-at-1901',NULL,'german, austrian variant, traditional orthography','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8591,5,'de-at-1996',NULL,'german, austrian variant, orthography of 1996','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8592,5,'de-ch-1901',NULL,'german, swiss variant, traditional orthography','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8593,5,'de-ch-1996',NULL,'german, swiss variant, orthography of 1996','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8594,5,'de-de-1901',NULL,'german, german variant, traditional orthography','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8595,5,'de-de-1996',NULL,'german, german variant, orthography of 1996','995328000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8596,5,'en-boont',NULL,'boontling','1045180800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8597,5,'en-scouse',NULL,'scouse','959212800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8598,5,'es-419',NULL,'latin american spanish','1121385600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8599,5,'iu-cans',NULL,'inuktitut in canadian aboriginal syllabic script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8600,5,'iu-latn',NULL,'inuktitut in latin script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8601,5,'mn-cyrl',NULL,'mongolian in cyrillic script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8602,5,'mn-mong',NULL,'mongolian in mongolian script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8603,5,'sgn-br',NULL,'brazilian sign language','1005436800',1248825600,'bzs',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8604,5,'sgn-co',NULL,'colombian sign language','1005436800',1248825600,'csn',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8605,5,'sgn-de',NULL,'german sign language','1005436800',1248825600,'gsg',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8606,5,'sgn-dk',NULL,'danish sign language','1005436800',1248825600,'dsl',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8607,5,'sgn-es',NULL,'spanish sign language','1005436800',1248825600,'ssp',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8608,5,'sgn-fr',NULL,'french sign language','1005436800',1248825600,'fsl',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8609,5,'sgn-gb',NULL,'british sign language','983491200',1248825600,'bfi',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8610,5,'sgn-gr',NULL,'greek sign language','1005436800',1248825600,'gss',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8611,5,'sgn-ie',NULL,'irish sign language','983491200',1248825600,'isg',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8612,5,'sgn-it',NULL,'italian sign language','1005436800',1248825600,'ise',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8613,5,'sgn-jp',NULL,'japanese sign language','1005436800',1248825600,'jsl',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8614,5,'sgn-mx',NULL,'mexican sign language','1005436800',1248825600,'mfs',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8615,5,'sgn-ni',NULL,'nicaraguan sign language','983491200',1248825600,'ncs',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8616,5,'sgn-nl',NULL,'dutch sign language','1005436800',1248825600,'dse',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8617,5,'sgn-no',NULL,'norwegian sign language','1005436800',1248825600,'nsl',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8618,5,'sgn-pt',NULL,'portuguese sign language','1005436800',1248825600,'psr',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8619,5,'sgn-se',NULL,'swedish sign language','1005436800',1248825600,'swl',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8620,5,'sgn-us',NULL,'american sign language','983491200',1248825600,'ase',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8621,5,'sgn-za',NULL,'south african sign language','1005436800',1248825600,'sfs',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8622,5,'sl-nedis',NULL,'natisone dialect, nadiza dialect','1086048000',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8623,5,'sl-rozaj',NULL,'resian, resianic, rezijan','1065657600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8624,5,'sr-cyrl',NULL,'serbian in cyrillic script','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8625,5,'sr-latn',NULL,'serbian in latin script','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8626,5,'tg-arab',NULL,'tajik in arabic script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8627,5,'tg-cyrl',NULL,'tajik in cyrillic script','1108598400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8628,5,'uz-cyrl',NULL,'uzbek in cyrillic script','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8629,5,'uz-latn',NULL,'uzbek in latin script','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8630,5,'yi-latn',NULL,'yiddish, in latin script','1041897600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8631,5,'zh-cmn',NULL,'mandarin chinese','1121385600',1248825600,'cmn',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8632,5,'zh-cmn-hans',NULL,'mandarin chinese (simplified)','1121385600',1248825600,'cmn-hans',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8633,5,'zh-cmn-hant',NULL,'mandarin chinese (traditional)','1121385600',1248825600,'cmn-hant',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8634,5,'zh-gan',NULL,'kan or gan','945475200',1248825600,'gan',NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8635,5,'zh-hans',NULL,'simplified chinese','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8636,5,'zh-hans-cn',NULL,'prc mainland chinese in simplified script','1113350400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8637,5,'zh-hans-hk',NULL,'hong kong chinese in simplified script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8638,5,'zh-hans-mo',NULL,'macao chinese in simplified script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8639,5,'zh-hans-sg',NULL,'singapore chinese in simplified script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8640,5,'zh-hans-tw',NULL,'taiwan chinese in simplified script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8641,5,'zh-hant',NULL,'traditional chinese','1054252800',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8642,5,'zh-hant-cn',NULL,'prc mainland chinese in traditional script','1113350400',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8643,5,'zh-hant-hk',NULL,'hong kong chinese in traditional script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8644,5,'zh-hant-mo',NULL,'macao chinese in traditional script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8645,5,'zh-hant-sg',NULL,'singapore chinese in traditional script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8646,5,'zh-hant-tw',NULL,'taiwan chinese in traditional script','1113177600',NULL,NULL,NULL,NULL,NULL,NULL,NULL); -INSERT INTO "iana_records" VALUES(8647,5,'zh-wuu',NULL,'shanghaiese or wu','945475200',1248825600,'wuu',NULL,NULL,NULL,NULL,NULL); -COMMIT; ) diff --git a/modules_mobile/i18n/dao/orm/version_db b/modules_mobile/i18n/dao/orm/version_db deleted file mode 100644 index 7e20d8d..0000000 --- a/modules_mobile/i18n/dao/orm/version_db +++ /dev/null @@ -1,5 +0,0 @@ -SQL( - BEGIN TRANSACTION; - CREATE TABLE DB_CHECKSUM (version INT); - COMMIT; -) diff --git a/modules_mobile/i18n/dao/src/i18n_dao_read_only.cpp b/modules_mobile/i18n/dao/src/i18n_dao_read_only.cpp deleted file mode 100644 index 19822ff..0000000 --- a/modules_mobile/i18n/dao/src/i18n_dao_read_only.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the definition of i18n dao namespace. - * - * @file i18n_dao_read_only.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief This file contains the definition of i18n dao - */ - -#include -#include - -#include - -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::i18n; - -namespace I18n { -namespace DB { -namespace I18nDAOReadOnly { -bool IsValidSubTag(const DPL::String& tag, int type) -{ - I18N_DB_SELECT(select, iana_records) - select->Where(And(Equals(tag), - Equals(type))); - return !select->GetRowList().empty(); -} -} -} -} diff --git a/modules_mobile/localization/config.cmake b/modules_mobile/localization/config.cmake deleted file mode 100644 index 80f77c4..0000000 --- a/modules_mobile/localization/config.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Soyoung Kim(sy037.kim@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_LOCALIZATION_SOURCES - ${PROJECT_SOURCE_DIR}/modules/localization/src/w3c_file_localization.cpp - ${PROJECT_SOURCE_DIR}/modules/localization/src/LanguageTagsProvider.cpp - PARENT_SCOPE -) - - -SET(DPL_LOCALIZATION_HEADERS - ${PROJECT_SOURCE_DIR}/modules/localization/include/dpl/localization/localization_utils.h - ${PROJECT_SOURCE_DIR}/modules/localization/include/dpl/localization/w3c_file_localization.h - ${PROJECT_SOURCE_DIR}/modules/localization/include/LanguageTagsProvider.h - PARENT_SCOPE -) - -SET(DPL_LOCALIZATION_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/localization/include - PARENT_SCOPE -) diff --git a/modules_mobile/localization/include/dpl/localization/localization_utils.h b/modules_mobile/localization/include/dpl/localization/localization_utils.h deleted file mode 100644 index 66a232d..0000000 --- a/modules_mobile/localization/include/dpl/localization/localization_utils.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file localization_utils.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - */ - -#ifndef LOCALIZATION_UTILS_H -#define LOCALIZATION_UTILS_H - -#include - -#include -#include -#include -#include - -/** - * WidgetIcon - * Structure to hold information about widget icon. - */ - -struct WidgetIcon -{ - WidgetIcon() : - width(DPL::Optional::Null), - height(DPL::Optional::Null) - {} - - /* - * a valid URI to an image file inside the widget package that represents an - * iconic representation of the widget - */ - DPL::String src; - DPL::Optional width; /// the width of the icon in pixels - DPL::Optional height; /// the height of the icon in pixels - - bool operator==(const WidgetIcon &other) const - { - return src == other.src; - } -}; - -struct WidgetStartFileInfo -{ - DPL::String file; - DPL::String localizedPath; - DPL::String encoding; - DPL::String type; - - bool operator==(const WidgetStartFileInfo& other) const - { - return file == other.file && - localizedPath == other.localizedPath && - encoding == other.encoding && - type == other.type; - } -}; - -typedef DPL::Optional OptionalWidgetIcon; -typedef DPL::Optional OptionalWidgetStartFileInfo; - -#endif //LOCALIZATION_UTILS_H diff --git a/modules_mobile/localization/include/dpl/localization/w3c_file_localization.h b/modules_mobile/localization/include/dpl/localization/w3c_file_localization.h deleted file mode 100755 index f0e1997..0000000 --- a/modules_mobile/localization/include/dpl/localization/w3c_file_localization.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file w3c_file_localization.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - */ - -#ifndef W3C_FILE_LOCALIZATION_H -#define W3C_FILE_LOCALIZATION_H - -#include -#include -#include -#include - -#include - -// WrtDB::DbWidgetHandle -#include - -namespace W3CFileLocalization { -typedef std::list WidgetIconList; - -DPL::Optional getFilePathInWidgetPackageFromUrl( - WrtDB::DbWidgetHandle widgetHandle, - const DPL::String &url); -DPL::Optional getFilePathInWidgetPackageFromUrl( - const WrtDB::TizenAppId &tzAppId, - const DPL::String &url); -DPL::Optional getFilePathInWidgetPackageFromUrl( - WrtDB::WidgetDAOReadOnlyPtr dao, - const DPL::String &url); -std::string getFilePathInWidgetPackageFromUrl(const std::string &tzAppId, const std::string &url); - -DPL::Optional getFilePathInWidgetPackage( - WrtDB::DbWidgetHandle widgetHandle, - const DPL::String& file); -DPL::Optional getFilePathInWidgetPackage( - const WrtDB::TizenAppId &tzAppId, - const DPL::String& file); -DPL::Optional getFilePathInWidgetPackage( - WrtDB::WidgetDAOReadOnlyPtr dao, - const DPL::String& file); - -DPL::OptionalString getStartFile(WrtDB::DbWidgetHandle handle); -DPL::OptionalString getStartFile(const WrtDB::TizenAppId & tzAppId); -DPL::OptionalString getStartFile(WrtDB::WidgetDAOReadOnlyPtr dao); - -OptionalWidgetIcon getIcon(WrtDB::DbWidgetHandle widgetHandle); -OptionalWidgetIcon getIcon(const WrtDB::TizenAppId & tzAppId); -OptionalWidgetIcon getIcon(WrtDB::WidgetDAOReadOnlyPtr dao); - -WidgetIconList getValidIconsList( - WrtDB::DbWidgetHandle widgetHandle); -WidgetIconList getValidIconsList( - const WrtDB::TizenAppId &tzAppId); -WidgetIconList getValidIconsList( - WrtDB::WidgetDAOReadOnlyPtr dao); - -OptionalWidgetStartFileInfo getStartFileInfo( - WrtDB::DbWidgetHandle widgetHandle); -OptionalWidgetStartFileInfo getStartFileInfo( - const WrtDB::TizenAppId &tzAppId); -OptionalWidgetStartFileInfo getStartFileInfo( - WrtDB::WidgetDAOReadOnlyPtr dao); - -WrtDB::WidgetLocalizedInfo getLocalizedInfo(WrtDB::DbWidgetHandle widgetHandle); -WrtDB::WidgetLocalizedInfo getLocalizedInfo( - const WrtDB::TizenAppId & tzAppId); -WrtDB::WidgetLocalizedInfo getLocalizedInfo(WrtDB::WidgetDAOReadOnlyPtr dao); -} - -#endif //W3C_FILE_LOCALIZATION_H diff --git a/modules_mobile/localization/src/LanguageTagsProvider.cpp b/modules_mobile/localization/src/LanguageTagsProvider.cpp deleted file mode 100644 index 0d97e16..0000000 --- a/modules_mobile/localization/src/LanguageTagsProvider.cpp +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file LanguageTagsProvider.cpp - * @author Marcin Kaminski (marcin.ka@samsung.com) - * @version 1.0 - */ -#include -#include "LanguageTagsProvider.h" - -#include -#include -#include -#include -#include -#include -IMPLEMENT_SINGLETON(LanguageTagsProvider) - -/* ========== public ========== */ -const LanguageTags LanguageTagsProvider::getLanguageTags() const -{ - return m_languageTagsList; -} - -void LanguageTagsProvider::setLanguageTags(const LanguageTags& taglist) -{ - m_languageTagsList = taglist; - /* If given list does not contain default value (empty string) - * than append it to the list. - * In case of empty list given as parameter only default value - * will exist on m_languageTagsList. */ - DPL::String tofind = L""; - if (std::find(m_languageTagsList.begin(), m_languageTagsList.end(), - tofind) == m_languageTagsList.end()) - { - m_languageTagsList.push_back(L""); - } -} - -void LanguageTagsProvider::setLanguageTagsFromLocales(const char* locales) -{ - LogDebug("Setting new language tags for locales " << locales); - this->createTagsFromLocales(locales); -} - -void LanguageTagsProvider::resetLanguageTags() -{ - this->loadSystemTags(); -} - -void LanguageTagsProvider::addWidgetDefaultLocales( - const DPL::String& defaultLocale) -{ - if (defaultLocale.size() > 0 && - std::find(m_languageTagsList.begin(), m_languageTagsList.end(), - defaultLocale) == m_languageTagsList.end()) - { - if (m_languageTagsList.size() < 2) { - m_languageTagsList.push_front(defaultLocale); - } else { - LanguageTags::iterator placeToInsert = m_languageTagsList.end(); - --placeToInsert; - if (*placeToInsert != L"") { - ++placeToInsert; - } - m_languageTagsList.insert(placeToInsert, defaultLocale); - } - } -} - -DPL::String LanguageTagsProvider::BCP47LanguageTagToLocale( - const DPL::String& inLanguageTag) -{ - DPL::String languageTag(inLanguageTag); - /* Replace all */ - std::replace(languageTag.begin(), languageTag.end(), '-', '_'); - return languageTag; -} - -DPL::String LanguageTagsProvider::LocaleToBCP47LanguageTag( - const DPL::String& inLocaleString) -{ - /* Cut off codepage information from given string (if any exists) - * i.e. change en_US.UTF-8 into en_US */ - DPL::String localeString = inLocaleString.substr( - 0, inLocaleString.find_first_of(L".")); - /* Replace all '_' with '-' */ - std::replace(localeString.begin(), localeString.end(), '_', '-'); - return localeString; -} - -/* ========== private ========== */ -LanguageTagsProvider::LanguageTagsProvider() -{ - LogDebug("Creating LanguageTagsProvider instance"); - this->loadSystemTags(); -} - -LanguageTagsProvider::~LanguageTagsProvider() -{} - -void LanguageTagsProvider::loadSystemTags() -{ - char* language = vconf_get_str(VCONFKEY_LANGSET); - if (!language) { - LogError("Failed to get language from vconf"); - } else { - LogDebug("Language fetched from vconf: " << language); - } - createTagsFromLocales(language); - free(language); -} - -void LanguageTagsProvider::createTagsFromLocales(const char* language) -{ - m_languageTagsList.clear(); - if (!language) { - LogDebug("Setting default language tags"); - /* If NULL language given than set default language tags - * and return. */ - m_languageTagsList.push_back(L""); - return; - } - - LogDebug("Setting tags for language: " << language); - DPL::String langdescr = - LocaleToBCP47LanguageTag(DPL::FromUTF8String(language)); - - if (langdescr.empty()) { - LogError("Empty language description while correct value needed"); - } else { - /* Language tags list should not be cleared before this place to - * avoid losing current data when new data are invalid */ - size_t position; - while (true) { - LogDebug("Processing language description: " << langdescr); - m_languageTagsList.push_back(langdescr); - - position = langdescr.find_last_of(L"-"); - if (position == DPL::String::npos) { - break; - } - langdescr = langdescr.substr(0, position); - } - } - /* Add empty tag for non-localized content */ - m_languageTagsList.push_back(L""); -} diff --git a/modules_mobile/localization/src/w3c_file_localization.cpp b/modules_mobile/localization/src/w3c_file_localization.cpp deleted file mode 100644 index 46c4194..0000000 --- a/modules_mobile/localization/src/w3c_file_localization.cpp +++ /dev/null @@ -1,620 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file w3c_file_localization.cpp - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - */ -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include - -using namespace WrtDB; - -namespace { -const DPL::String FILE_URI_BEGIN = L"file://"; -const DPL::String WIDGET_URI_BEGIN = L"widget://"; -const DPL::String APP_URI_BEGIN = L"app://"; -const DPL::String LOCALE_PREFIX = L"locales/"; - -DPL::Optional GetFilePathInWidgetPackageInternal( - const std::string& basePath, - std::string filePath) -{ - LogDebug("Looking for file: " << filePath << " in: " << basePath); - - const LanguageTags& ltags = - LanguageTagsProviderSingleton::Instance().getLanguageTags(); - - //Check if string isn't empty - if (filePath.size() == 0) { - return DPL::Optional::Null; - } - //Removing preceding '/' - if (filePath[0] == '/') { - filePath.erase(0, 1); - } - // In some cases (start file localization) url has unnecessary "/" at the - // end - if (filePath[filePath.size() - 1] == '/') { - filePath.erase(filePath.size() - 1, 1); - } - //Check if string isn't empty - if (filePath.size() == 0) { - return DPL::Optional::Null; - } - - LogDebug("locales size = " << ltags.size()); - for (LanguageTags::const_iterator it = ltags.begin(); - it != ltags.end(); - ++it) - { - LogDebug("Trying locale: " << *it); - std::string path = basePath; - if (path[path.size() - 1] == '/') { - path.erase(path.size() - 1); - } - - if (it->empty()) { - path += "/" + filePath; - } else { - path += "/locales/" + DPL::ToUTF8String(*it) + "/" + filePath; - } - - LogDebug("Trying locale: " << *it << " | " << path); - struct stat buf; - if (0 == stat(path.c_str(), &buf)) { - if ((buf.st_mode & S_IFMT) == S_IFREG) { - path.erase(0, basePath.length()); - return DPL::Optional(path); - } - } - } - - return DPL::Optional::Null; -} - -DPL::Optional GetFilePathInWidgetPackageInternal( - const DPL::String& basePath, - const DPL::String& filePath) -{ - DPL::Optional path = - GetFilePathInWidgetPackageInternal(DPL::ToUTF8String(basePath), - DPL::ToUTF8String(filePath)); - DPL::Optional dplPath; - if (!!path) { - dplPath = DPL::FromUTF8String(*path); - } - return dplPath; -} -} - -namespace W3CFileLocalization { -static bool isExistFileCached(const std::string& path) -{ - static std::map pathCache; - - // is cached? - if (pathCache.find(path) == pathCache.end()) - { - struct stat buf; - - if (0 == stat(path.c_str(), &buf)) - { - pathCache[path] = true; - - return true; - } - else - { - pathCache[path] = false; - - return false; - } - } - - return pathCache[path]; -} - -std::string getFilePathInWidgetPackageFromUrl(const std::string &tzAppId, const std::string &url) -{ - const std::string SCHEME_FILE = "file://"; - const std::string SCHEME_WIDGET = "widget://"; - const std::string SCHEM_APP = "app://"; - const std::string LOCALE_PATH = "locales/"; - const std::string DOUBLE_ROOT = "//"; - - static std::string lastTzAppId; - static WidgetDAOReadOnlyPtr dao; - static std::string srcPath; - - std::string workingUrl = url; - bool found = false; - - // Dao caching - if (lastTzAppId != tzAppId) - { - lastTzAppId = tzAppId; - dao.reset(new WidgetDAOReadOnly(DPL::FromUTF8String(tzAppId))); - srcPath = DPL::ToUTF8String(dao->getPath()); - } - - // backup suffix string - std::string backupSuffix; - size_t pos = workingUrl.find_first_of("#?"); - - if (pos != std::string::npos) - { - backupSuffix = workingUrl.substr(pos); - workingUrl.resize(pos); - } - - // make basis path - if (workingUrl.compare(0, SCHEME_WIDGET.length(), SCHEME_WIDGET) == 0) - { - // remove "widget://" - workingUrl.erase(0, SCHEME_WIDGET.length()); - } - else if (workingUrl.compare(0, SCHEME_FILE.length(), SCHEME_FILE) == 0) - { - // remove "file://" - workingUrl.erase(0, SCHEME_FILE.length()); - - // exception handling for "//" - if (workingUrl.compare(0, DOUBLE_ROOT.length(), DOUBLE_ROOT) == 0) - { - workingUrl.erase(0, 1); - LogDebug("workingUrl: " << workingUrl); - } - - // remove src path - if (workingUrl.compare(0, srcPath.length(), srcPath) == 0) - { - workingUrl.erase(0, srcPath.length()); - } - - // remove locale path - if (workingUrl.compare(0, LOCALE_PATH.length(), LOCALE_PATH) == 0) - { - workingUrl.erase(0, LOCALE_PATH.length()); - - pos = workingUrl.find_first_of('/'); - - if (pos != std::string::npos && pos > 0) - { - workingUrl.erase(0, pos+1); - } - } - } - else if (workingUrl.compare(0, SCHEM_APP.length(), SCHEM_APP) == 0) - { - // remove "app://" - workingUrl.erase(0, SCHEM_APP.length()); - - // remove tizen app id - if (workingUrl.compare(0, tzAppId.length(), tzAppId) == 0) - { - workingUrl.erase(0, tzAppId.length()); - } - else - { - LogError("Tizen id does not match, ignoring"); - return ""; - } - } - - // remove '/' token - if (!workingUrl.empty() && workingUrl[0] == '/') - { - workingUrl.erase(0, 1); - } - - if (!workingUrl.empty() && workingUrl[workingUrl.length()-1] == '/') { - workingUrl.erase(workingUrl.length()-1, 1); - } - - if (workingUrl.empty()) - { - LogError("URL Localization Error!"); - return ""; - } - - const LanguageTags& ltags = LanguageTagsProviderSingleton::Instance().getLanguageTags(); - - FOREACH(it, ltags) - { - std::string path = srcPath; - - if (!it->empty()) - { - path += LOCALE_PATH; - - if (isExistFileCached(path) == false) - { - continue; - } - - path += DPL::ToUTF8String(*it) + "/"; - - if (isExistFileCached(path) == false) - { - continue; - } - } - - path += workingUrl; - - if (isExistFileCached(path) == true) - { - found = true; - workingUrl = path; - break; - } - } - - // restore suffix string - if (!found) - { - // return empty string - workingUrl = ""; - } - else - { - if (!backupSuffix.empty()) - { - workingUrl += backupSuffix; - } - } - - return workingUrl; -} - -DPL::Optional getFilePathInWidgetPackageFromUrl( - DbWidgetHandle widgetHandle, - const DPL::String &url) -{ - return getFilePathInWidgetPackageFromUrl( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(widgetHandle)), - url); -} - -DPL::Optional getFilePathInWidgetPackageFromUrl( - const WrtDB::TizenAppId &tzAppId, - const DPL::String &url) -{ - return getFilePathInWidgetPackageFromUrl( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(tzAppId)), - url); -} - -DPL::Optional getFilePathInWidgetPackageFromUrl( - WrtDB::WidgetDAOReadOnlyPtr dao, - const DPL::String &url) -{ - DPL::String req = url; - - DPL::String suffix; - DPL::String::size_type pos = req.find_first_of('#'); - if(pos != DPL::String::npos) - { - suffix = req.substr(pos) + suffix; - req.resize(pos); //truncate fragment identifier - } - - pos = req.find_first_of('?'); - if(pos != DPL::String::npos) - { - suffix = req.substr(pos) + suffix; - req.resize(pos); //truncate query string - } - - if (req.find(WIDGET_URI_BEGIN) == 0) { - req.erase(0, WIDGET_URI_BEGIN.length()); - } else if (req.find(FILE_URI_BEGIN) == 0) { - req.erase(0, FILE_URI_BEGIN.length()); - if (req.find(dao->getPath()) == 0) { - req.erase(0, dao->getPath().length()); - } - if (req.find(LOCALE_PREFIX) == 0) { - req.erase(0, LOCALE_PREFIX.length()); - size_t position = req.find('/'); - // should always be >0 as correct locales path is - // always locales/xx/ or locales/xx-XX/ - if (position != std::string::npos && position > 0) { - req.erase(0, position + 1); - } - } - } else if(req.find(APP_URI_BEGIN) == 0) { - req.erase(0, APP_URI_BEGIN.length()); - DPL::String id = *dao->getTizenAppId(); - if(req.substr(0, id.size()) != id) - { - LogError("Tizen id does not match, ignoring"); - return DPL::Optional::Null; - } - req.erase(0, id.length()); - } else { - LogDebug("Unknown path format, ignoring"); - return DPL::Optional::Null; - } - - auto widgetPath = dao->getPath(); - - LogDebug("Required path: " << req); - DPL::Optional found = - GetFilePathInWidgetPackageInternal(widgetPath, req); - - if (!found) { - LogError("Path not found within current locale in current widget"); - return DPL::Optional::Null; - } - - found = widgetPath + *found + suffix; - - return found; -} - -DPL::Optional getFilePathInWidgetPackage( - WrtDB::DbWidgetHandle widgetHandle, - const DPL::String& file) -{ - return getFilePathInWidgetPackage( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(widgetHandle)), - file); -} - -DPL::Optional getFilePathInWidgetPackage( - const WrtDB::TizenAppId &tzAppId, - const DPL::String& file) -{ - return getFilePathInWidgetPackage( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(tzAppId)), - file); -} - -DPL::Optional getFilePathInWidgetPackage( - WrtDB::WidgetDAOReadOnlyPtr dao, - const DPL::String& file) -{ - return GetFilePathInWidgetPackageInternal(dao->getPath(), file); -} - -DPL::OptionalString getStartFile(const WrtDB::TizenAppId & tzAppId) -{ - return getStartFile(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(tzAppId))); -} - -DPL::OptionalString getStartFile(const WrtDB::DbWidgetHandle handle) -{ - return getStartFile(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(handle))); -} - -DPL::OptionalString getStartFile(WrtDB::WidgetDAOReadOnlyPtr dao) -{ - WidgetDAOReadOnly::LocalizedStartFileList locList = - dao->getLocalizedStartFileList(); - WidgetDAOReadOnly::WidgetStartFileList list = dao->getStartFileList(); - LanguageTags tagsList = - LanguageTagsProviderSingleton::Instance().getLanguageTags(); - - DPL::OptionalString defaultLoc = dao->getDefaultlocale(); - if (!!defaultLoc) { - tagsList.push_back(*defaultLoc); - } - - FOREACH(tag, tagsList) - { - FOREACH(sFile, locList) - { - if (*tag == sFile->widgetLocale) { - FOREACH(it, list) - { - if (it->startFileId == sFile->startFileId) { - return it->src; - } - } - } - } - } - - return DPL::OptionalString::Null; -} - -OptionalWidgetIcon getIcon(const WrtDB::TizenAppId & tzAppId) -{ - return getIcon(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(tzAppId))); -} - -OptionalWidgetIcon getIcon(WrtDB::DbWidgetHandle widgetHandle) -{ - return getIcon(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(widgetHandle))); -} - -OptionalWidgetIcon getIcon(WrtDB::WidgetDAOReadOnlyPtr dao) -{ - WidgetDAOReadOnly::WidgetLocalizedIconList locList = - dao->getLocalizedIconList(); - WidgetDAOReadOnly::WidgetIconList list = dao->getIconList(); - LanguageTags tagsList = - LanguageTagsProviderSingleton::Instance().getLanguageTags(); - - DPL::OptionalString defaultLoc = dao->getDefaultlocale(); - if (!!defaultLoc) { - tagsList.push_back(*defaultLoc); - } - - FOREACH(tag, tagsList) - { - FOREACH(icon, locList) - { - if (*tag == icon->widgetLocale) { - FOREACH(it, list) - { - if (it->iconId == icon->iconId) { - WidgetIcon ret; - ret.src = it->iconSrc; - ret.width = it->iconWidth; - ret.height = it->iconHeight; - return ret; - } - } - } - } - } - - return OptionalWidgetIcon::Null; -} - -WidgetIconList getValidIconsList(WrtDB::DbWidgetHandle widgetHandle) -{ - return getValidIconsList( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(widgetHandle))); -} - -WidgetIconList getValidIconsList(const WrtDB::TizenAppId &tzAppId) -{ - return getValidIconsList( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(tzAppId))); -} - -WidgetIconList getValidIconsList(WrtDB::WidgetDAOReadOnlyPtr dao) -{ - WidgetDAOReadOnly::WidgetIconList list = dao->getIconList(); - - WidgetIconList outlist; - - FOREACH(it, list) - { - LogDebug(":" << it->iconSrc); - if (!!getFilePathInWidgetPackage(dao->getHandle(), - it->iconSrc)) - { - WidgetIcon ret; - ret.src = it->iconSrc; - ret.width = it->iconWidth; - ret.height = it->iconHeight; - outlist.push_back(ret); - } - } - return outlist; -} - -OptionalWidgetStartFileInfo getStartFileInfo(WrtDB::DbWidgetHandle widgetHandle) -{ - return getStartFileInfo( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(widgetHandle))); -} - -OptionalWidgetStartFileInfo getStartFileInfo( - const WrtDB::TizenAppId &tzAppId) -{ - return getStartFileInfo( - WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(tzAppId))); -} - -OptionalWidgetStartFileInfo getStartFileInfo(WrtDB::WidgetDAOReadOnlyPtr dao) -{ - WidgetStartFileInfo info; - - WidgetDAOReadOnly::LocalizedStartFileList locList = - dao->getLocalizedStartFileList(); - WidgetDAOReadOnly::WidgetStartFileList list = dao->getStartFileList(); - const LanguageTags tagsList = - LanguageTagsProviderSingleton::Instance().getLanguageTags(); - - FOREACH(tag, tagsList) - { - FOREACH(sFile, locList) - { - if (*tag == sFile->widgetLocale) { - FOREACH(it, list) - { - if (it->startFileId == - sFile->startFileId) - { - info.file = it->src; - info.encoding = sFile->encoding; - info.type = sFile->type; - if (tag->empty()) { - info.localizedPath = it->src; - } else { - info.localizedPath = L"locales/" + *tag + L"/"; - info.localizedPath += it->src; - } - return info; - } - } - } - } - } - - return OptionalWidgetStartFileInfo::Null; -} - -WidgetLocalizedInfo getLocalizedInfo(const WrtDB::DbWidgetHandle handle) -{ - return getLocalizedInfo(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(handle))); -} - -WidgetLocalizedInfo getLocalizedInfo(const WrtDB::TizenAppId & tzAppId) -{ - return getLocalizedInfo(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(tzAppId))); -} - -WidgetLocalizedInfo getLocalizedInfo(WidgetDAOReadOnlyPtr dao) -{ - LanguageTags languages = - LanguageTagsProviderSingleton::Instance().getLanguageTags(); - DPL::OptionalString dl = dao->getDefaultlocale(); - if (!!dl) { - languages.push_back(*dl); - } - - WidgetLocalizedInfo result; - FOREACH(i, languages) - { - WidgetLocalizedInfo languageResult = dao->getLocalizedInfo(*i); - -#define OVERWRITE_IF_NULL(FIELD) if (!result.FIELD) { \ - result.FIELD = languageResult.FIELD; \ -} - - OVERWRITE_IF_NULL(name); - OVERWRITE_IF_NULL(shortName); - OVERWRITE_IF_NULL(description); - OVERWRITE_IF_NULL(license); - OVERWRITE_IF_NULL(licenseHref); - -#undef OVERWRITE_IF_NULL - } - - return result; -} -} diff --git a/modules_mobile/log/include/dpl/log/abstract_log_provider.h b/modules_mobile/log/include/dpl/log/abstract_log_provider.h deleted file mode 100644 index 62fa050..0000000 --- a/modules_mobile/log/include/dpl/log/abstract_log_provider.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_log_provider.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract log provider - */ -#ifndef DPL_ABSTRACT_LOG_PROVIDER_H -#define DPL_ABSTRACT_LOG_PROVIDER_H - -namespace DPL { -namespace Log { -class AbstractLogProvider -{ - public: - virtual ~AbstractLogProvider() {} - - virtual void Debug(const char *message, - const char *fileName, - int line, - const char *function) = 0; - virtual void Info(const char *message, - const char *fileName, - int line, - const char *function) = 0; - virtual void Warning(const char *message, - const char *fileName, - int line, - const char *function) = 0; - virtual void Error(const char *message, - const char *fileName, - int line, - const char *function) = 0; - virtual void Pedantic(const char *message, - const char *fileName, - int line, - const char *function) = 0; - - protected: - static const char *LocateSourceFileName(const char *filename); -}; -} -} // namespace DPL - -#endif // DPL_ABSTRACT_LOG_PROVIDER_H diff --git a/modules_mobile/log/include/dpl/log/dlog_log_provider.h b/modules_mobile/log/include/dpl/log/dlog_log_provider.h deleted file mode 100644 index 1dd4c2d..0000000 --- a/modules_mobile/log/include/dpl/log/dlog_log_provider.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dlog_log_provider.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of DLOG log provider - */ -#ifndef DPL_DLOG_LOG_PROVIDER_H -#define DPL_DLOG_LOG_PROVIDER_H - -#include -#include -#include - -namespace DPL { -namespace Log { -class DLOGLogProvider : - public AbstractLogProvider -{ - private: - DPL::ScopedFree m_tag; - - static std::string FormatMessage(const char *message, - const char *filename, - int line, - const char *function); - - public: - DLOGLogProvider(); - virtual ~DLOGLogProvider(); - - virtual void Debug(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Info(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Warning(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Error(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Pedantic(const char *message, - const char *fileName, - int line, - const char *function); - - // Set global Tag according to DLOG - void SetTag(const char *tag); -}; -} -} // namespace DPL - -#endif // DPL_DLOG_LOG_PROVIDER_H diff --git a/modules_mobile/log/include/dpl/log/old_style_log_provider.h b/modules_mobile/log/include/dpl/log/old_style_log_provider.h deleted file mode 100644 index 70e308a..0000000 --- a/modules_mobile/log/include/dpl/log/old_style_log_provider.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file old_style_log_provider.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of old style log provider - */ -#ifndef DPL_OLD_STYLE_LOG_PROVIDER_H -#define DPL_OLD_STYLE_LOG_PROVIDER_H - -#include -#include - -namespace DPL { -namespace Log { -class OldStyleLogProvider : - public AbstractLogProvider -{ - private: - bool m_showDebug; - bool m_showInfo; - bool m_showWarning; - bool m_showError; - bool m_showPedantic; - bool m_printStdErr; - - static std::string FormatMessage(const char *message, - const char *filename, - int line, - const char *function); - - public: - OldStyleLogProvider(bool showDebug, - bool showInfo, - bool showWarning, - bool showError, - bool showPedantic); - OldStyleLogProvider(bool showDebug, - bool showInfo, - bool showWarning, - bool showError, - bool showPedantic, - bool printStdErr); - virtual ~OldStyleLogProvider() {} - - virtual void Debug(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Info(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Warning(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Error(const char *message, - const char *fileName, - int line, - const char *function); - virtual void Pedantic(const char *message, - const char *fileName, - int line, - const char *function); -}; -} -} // namespace DPL - -#endif // DPL_OLD_STYLE_LOG_PROVIDER_H diff --git a/modules_mobile/log/include/dpl/log/secure_log.h b/modules_mobile/log/include/dpl/log/secure_log.h deleted file mode 100644 index 6402c4f..0000000 --- a/modules_mobile/log/include/dpl/log/secure_log.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file secure_log.h - * @author Jihoon Chung(jihoon.chung@samsung.com) - * @version 0.1 - * @brief - */ - -#ifndef DPL_SECURE_LOG_H -#define DPL_SECURE_LOG_H - -#include - -#define COLOR_ERROR "\e[1;31m" -#define COLOR_WARNING "\e[2;31m" -#define COLOR_END "\e[0m" -#define COLOR_TAG "\e[0m" - -// default TAG -#undef LOG_TAG -#define LOG_TAG "WRT_UNDEFINED" - -#ifdef WRT_LOG -#undef LOG_TAG -#define LOG_TAG "WRT" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;32m" -#endif - -#ifdef WRT_BUNDLE_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_BUNDLE" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;34m" -#endif - -#ifdef WRT_PLUGINS_COMMON_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_PLUGINS/COMMON" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;36m" -#endif - -#ifdef WRT_PLUGINS_WIDGET_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_PLUGINS/WIDGET" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;35m" -#endif - -#ifdef WRT_INSTALLER_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_INSTALLER" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;32m" -#endif - -#ifndef SECURE_SLOGD -#define SECURE_SLOGD(fmt, arg...) SLOGD(fmt,##arg) -#endif - -#ifndef SECURE_SLOGW -#define SECURE_SLOGW(fmt, arg...) SLOGW(fmt,##arg) -#endif - -#ifndef SECURE_SLOGE -#define SECURE_SLOGE(fmt, arg...) SLOGE(fmt,##arg) -#endif - -#undef _D -#define _D(fmt, arg ...) SECURE_SLOGD(COLOR_TAG fmt COLOR_END,##arg) -#undef _W -#define _W(fmt, arg ...) SECURE_SLOGW(COLOR_WARNING fmt COLOR_END,##arg) -#undef _E -#define _E(fmt, arg ...) SECURE_SLOGE(COLOR_ERROR fmt COLOR_END,##arg) - -#endif // DPL_SECURE_LOG_H - diff --git a/modules_mobile/log/src/abstract_log_provider.cpp b/modules_mobile/log/src/abstract_log_provider.cpp deleted file mode 100644 index a03f8a0..0000000 --- a/modules_mobile/log/src/abstract_log_provider.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_log_provider.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract log provider - */ -#include -#include -#include - -namespace DPL { -namespace Log { -const char *AbstractLogProvider::LocateSourceFileName(const char *filename) -{ - const char *ptr = strrchr(filename, '/'); - return ptr != NULL ? ptr + 1 : filename; -} -} -} diff --git a/modules_mobile/log/src/dlog_log_provider.cpp b/modules_mobile/log/src/dlog_log_provider.cpp deleted file mode 100644 index 573ee89..0000000 --- a/modules_mobile/log/src/dlog_log_provider.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file dlog_log_provider.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of DLOG log provider - */ -#include -#include -#include -#include -#include - -namespace DPL { -namespace Log { -std::string DLOGLogProvider::FormatMessage(const char *message, - const char *filename, - int line, - const char *function) -{ - std::ostringstream val; - - val << std::string("[") << - LocateSourceFileName(filename) << std::string(":") << line << - std::string("] ") << function << std::string("(): ") << message; - - return val.str(); -} - -DLOGLogProvider::DLOGLogProvider() -{} - -DLOGLogProvider::~DLOGLogProvider() -{} - -void DLOGLogProvider::SetTag(const char *tag) -{ - m_tag.Reset(strdup(tag)); -} - -void DLOGLogProvider::Debug(const char *message, - const char *filename, - int line, - const char *function) -{ -#ifdef SECURE_LOG - SECURE_LOG(LOG_DEBUG, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#else - LOG(LOG_DEBUG, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#endif -} - -void DLOGLogProvider::Info(const char *message, - const char *filename, - int line, - const char *function) -{ -#ifdef SECURE_LOG - SECURE_LOG(LOG_INFO, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#else - LOG(LOG_INFO, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#endif -} - -void DLOGLogProvider::Warning(const char *message, - const char *filename, - int line, - const char *function) -{ -#ifdef SECURE_LOG - SECURE_LOG(LOG_WARN, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#else - LOG(LOG_WARN, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#endif -} - -void DLOGLogProvider::Error(const char *message, - const char *filename, - int line, - const char *function) -{ -#ifdef SECURE_LOG - SECURE_LOG(LOG_ERROR, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#else - LOG(LOG_ERROR, m_tag.Get(), "%s", - FormatMessage(message, filename, line, function).c_str()); -#endif -} - -void DLOGLogProvider::Pedantic(const char *message, - const char *filename, - int line, - const char *function) -{ -#ifdef SECURE_LOG - SECURE_LOG(LOG_DEBUG, "DPL", "%s", FormatMessage(message, - filename, - line, - function).c_str()); -#else - LOG(LOG_DEBUG, "DPL", "%s", FormatMessage(message, - filename, - line, - function).c_str()); -#endif -} -} -} // namespace DPL diff --git a/modules_mobile/log/src/log.cpp b/modules_mobile/log/src/log.cpp deleted file mode 100644 index 7c0ebc2..0000000 --- a/modules_mobile/log/src/log.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file log.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of log system - */ -#include -#include -#include - -IMPLEMENT_SINGLETON(DPL::Log::LogSystem) - -namespace DPL { -namespace Log { -namespace // anonymous -{ -const char *OLD_STYLE_LOGS_ENV_NAME = "DPL_USE_OLD_STYLE_LOGS"; -const char *OLD_STYLE_PEDANTIC_LOGS_ENV_NAME = - "DPL_USE_OLD_STYLE_PEDANTIC_LOGS"; -const char *OLD_STYLE_LOGS_MASK_ENV_NAME = "DPL_USE_OLD_STYLE_LOGS_MASK"; -const char *DPL_LOG_OFF = "DPL_LOG_OFF"; -} // namespace anonymous - -bool LogSystem::IsLoggingEnabled() const -{ - return m_isLoggingEnabled; -} - -LogSystem::LogSystem() : - m_dlogProvider(NULL), - m_oldStyleProvider(NULL), - m_isLoggingEnabled(!getenv(DPL_LOG_OFF)) -{ - bool oldStyleLogs = false; - bool oldStyleDebugLogs = true; - bool oldStyleInfoLogs = true; - bool oldStyleWarningLogs = true; - bool oldStyleErrorLogs = true; - bool oldStylePedanticLogs = false; - - // Check environment settings about pedantic logs - const char *value = getenv(OLD_STYLE_LOGS_ENV_NAME); - - if (value != NULL && !strcmp(value, "1")) { - oldStyleLogs = true; - } - - value = getenv(OLD_STYLE_PEDANTIC_LOGS_ENV_NAME); - - if (value != NULL && !strcmp(value, "1")) { - oldStylePedanticLogs = true; - } - - value = getenv(OLD_STYLE_LOGS_MASK_ENV_NAME); - - if (value != NULL) { - size_t len = strlen(value); - - if (len >= 1) { - if (value[0] == '0') { - oldStyleDebugLogs = false; - } else if (value[0] == '1') { - oldStyleDebugLogs = true; - } - } - - if (len >= 2) { - if (value[1] == '0') { - oldStyleInfoLogs = false; - } else if (value[1] == '1') { - oldStyleInfoLogs = true; - } - } - - if (len >= 3) { - if (value[2] == '0') { - oldStyleWarningLogs = false; - } else if (value[2] == '1') { - oldStyleWarningLogs = true; - } - } - - if (len >= 4) { - if (value[3] == '0') { - oldStyleErrorLogs = false; - } else if (value[3] == '1') { - oldStyleErrorLogs = true; - } - } - } - - // Setup default DLOG and old style logging - if (oldStyleLogs) { - // Old style - m_oldStyleProvider = new OldStyleLogProvider(oldStyleDebugLogs, - oldStyleInfoLogs, - oldStyleWarningLogs, - oldStyleErrorLogs, - oldStylePedanticLogs); - AddProvider(m_oldStyleProvider); - } else { - // DLOG - m_dlogProvider = new DLOGLogProvider(); - AddProvider(m_dlogProvider); - } -} - -LogSystem::~LogSystem() -{ - // Delete all providers - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - delete *iterator; - } - - m_providers.clear(); - - // And even default providers - m_dlogProvider = NULL; - m_oldStyleProvider = NULL; -} - -void LogSystem::SetTag(const char* tag) -{ - if (m_dlogProvider != NULL) { - m_dlogProvider->SetTag(tag); - } -} - -void LogSystem::AddProvider(AbstractLogProvider *provider) -{ - m_providers.push_back(provider); -} - -void LogSystem::RemoveProvider(AbstractLogProvider *provider) -{ - m_providers.remove(provider); -} - -void LogSystem::Debug(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Debug(message, filename, line, function); - } -} - -void LogSystem::Info(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Info(message, filename, line, function); - } -} - -void LogSystem::Warning(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Warning(message, filename, line, function); - } -} - -void LogSystem::Error(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Error(message, filename, line, function); - } -} - -void LogSystem::Pedantic(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Pedantic(message, filename, line, function); - } -} -} -} // namespace DPL diff --git a/modules_mobile/log/src/old_style_log_provider.cpp b/modules_mobile/log/src/old_style_log_provider.cpp deleted file mode 100644 index b8060dd..0000000 --- a/modules_mobile/log/src/old_style_log_provider.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file old_style_log_provider.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of old style log provider - */ -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Log { -namespace // anonymous -{ -using namespace DPL::Colors::Text; -const char *DEBUG_BEGIN = GREEN_BEGIN; -const char *DEBUG_END = GREEN_END; -const char *INFO_BEGIN = CYAN_BEGIN; -const char *INFO_END = CYAN_END; -const char *ERROR_BEGIN = RED_BEGIN; -const char *ERROR_END = RED_END; -const char *WARNING_BEGIN = BOLD_GOLD_BEGIN; -const char *WARNING_END = BOLD_GOLD_END; -const char *PEDANTIC_BEGIN = PURPLE_BEGIN; -const char *PEDANTIC_END = PURPLE_END; - -std::string GetFormattedTime() -{ - timeval tv; - tm localNowTime; - - gettimeofday(&tv, NULL); - localtime_r(&tv.tv_sec, &localNowTime); - - char format[64]; - snprintf(format, - sizeof(format), - "%02i:%02i:%02i.%03i", - localNowTime.tm_hour, - localNowTime.tm_min, - localNowTime.tm_sec, - static_cast(tv.tv_usec / 1000)); - return format; -} -} // namespace anonymous - -std::string OldStyleLogProvider::FormatMessage(const char *message, - const char *filename, - int line, - const char *function) -{ - std::ostringstream val; - - val << std::string("[") << GetFormattedTime() << std::string("] [") << - static_cast(pthread_self()) << "/" << - static_cast(getpid()) << std::string("] [") << - LocateSourceFileName(filename) << std::string(":") << line << - std::string("] ") << function << std::string("(): ") << message; - - return val.str(); -} - -OldStyleLogProvider::OldStyleLogProvider(bool showDebug, - bool showInfo, - bool showWarning, - bool showError, - bool showPedantic) : - m_showDebug(showDebug), - m_showInfo(showInfo), - m_showWarning(showWarning), - m_showError(showError), - m_showPedantic(showPedantic), - m_printStdErr(false) -{} - -OldStyleLogProvider::OldStyleLogProvider(bool showDebug, - bool showInfo, - bool showWarning, - bool showError, - bool showPedantic, - bool printStdErr) : - m_showDebug(showDebug), - m_showInfo(showInfo), - m_showWarning(showWarning), - m_showError(showError), - m_showPedantic(showPedantic), - m_printStdErr(printStdErr) -{} - -void OldStyleLogProvider::Debug(const char *message, - const char *filename, - int line, - const char *function) -{ - if (m_showDebug) { - if (m_printStdErr) { - fprintf(stderr, "%s%s%s\n", DEBUG_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), DEBUG_END); - } else { - fprintf(stdout, "%s%s%s\n", DEBUG_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), DEBUG_END); - } - } -} - -void OldStyleLogProvider::Info(const char *message, - const char *filename, - int line, - const char *function) -{ - if (m_showInfo) { - if (m_printStdErr) { - fprintf(stderr, "%s%s%s\n", INFO_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), INFO_END); - } else { - fprintf(stdout, "%s%s%s\n", INFO_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), INFO_END); - } - } -} - -void OldStyleLogProvider::Warning(const char *message, - const char *filename, - int line, - const char *function) -{ - if (m_showWarning) { - if (m_printStdErr) { - fprintf(stderr, "%s%s%s\n", WARNING_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), WARNING_END); - } else { - fprintf(stdout, "%s%s%s\n", WARNING_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), WARNING_END); - } - } -} - -void OldStyleLogProvider::Error(const char *message, - const char *filename, - int line, - const char *function) -{ - if (m_showError) { - if (m_printStdErr) { - fprintf(stderr, "%s%s%s\n", ERROR_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), ERROR_END); - } else { - fprintf(stdout, "%s%s%s\n", ERROR_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), ERROR_END); - } - } -} - -void OldStyleLogProvider::Pedantic(const char *message, - const char *filename, - int line, - const char *function) -{ - if (m_showPedantic) { - if (m_printStdErr) { - fprintf(stderr, "%s%s%s\n", PEDANTIC_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), PEDANTIC_END); - } else { - fprintf(stdout, "%s%s%s\n", PEDANTIC_BEGIN, - FormatMessage(message, filename, line, - function).c_str(), PEDANTIC_END); - } - } -} -} -} // namespace DPL diff --git a/modules_mobile/rpc/config.cmake b/modules_mobile/rpc/config.cmake deleted file mode 100644 index 9f3d810..0000000 --- a/modules_mobile/rpc/config.cmake +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_RPC_SOURCES - ${PROJECT_SOURCE_DIR}/modules/rpc/src/abstract_rpc_connection.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/abstract_rpc_connector.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/generic_rpc_connection.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/generic_socket_rpc_client.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/generic_socket_rpc_connection.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/generic_socket_rpc_server.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/unix_socket_rpc_client.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/unix_socket_rpc_connection.cpp - ${PROJECT_SOURCE_DIR}/modules/rpc/src/unix_socket_rpc_server.cpp - PARENT_SCOPE -) - -SET(DPL_RPC_HEADERS - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/abstract_rpc_connection.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/abstract_rpc_connector.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/generic_rpc_connection.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/generic_socket_rpc_client.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/generic_socket_rpc_connection.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/generic_socket_rpc_server.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/rpc_function.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/unix_socket_rpc_client.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/unix_socket_rpc_connection.h - ${PROJECT_SOURCE_DIR}/modules/rpc/include/dpl/rpc/unix_socket_rpc_server.h - PARENT_SCOPE -) - -SET(DPL_RPC_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/rpc/include - PARENT_SCOPE -) diff --git a/modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connection.h b/modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connection.h deleted file mode 100644 index 7857c60..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connection.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_rpc_connection.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for abstract RPC connection - */ -#ifndef DPL_ABSTRACT_RPC_CONNECTION_H -#define DPL_ABSTRACT_RPC_CONNECTION_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace RPC { -namespace AbstractRPCConnectionEvents { -/** - * Asynchronous call event - */ -DECLARE_GENERIC_EVENT_1(AsyncCallEvent, RPCFunction) - -/** - * Connection closed event - */ -DECLARE_GENERIC_EVENT_0(ConnectionClosedEvent) - -/** - * Connection broken event - */ -DECLARE_GENERIC_EVENT_0(ConnectionBrokenEvent) -} // namespace AbstractRPCConnectionEvents - -class AbstractRPCConnection : - public DPL::Event::EventSupport, - public DPL::Event::EventSupport, - public DPL::Event::EventSupport -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, AsyncCallFailed) - DECLARE_EXCEPTION_TYPE(Base, PingFailed) - }; - - public: - virtual ~AbstractRPCConnection() {} - - /** - * Call asynchronously RPC function - * - * @param function COnstant reference to RPC function to call - * @return none - */ - virtual void AsyncCall(const RPCFunction &function) = 0; - - /** - * Ping RPC connection - * This will send a ping/pong packet over connection to ensure it is alive - * If any errors are to occur proper events will be emitted - * - * @return none - */ - virtual void Ping() = 0; -}; - -/** - * Abstract connection ID used to represent connection being established - * or RPC server accepting connection - */ -typedef void *AbstractRPCConnectionID; -} -} // namespace DPL - -#endif // DPL_ABSTRACT_RPC_CONNECTION_H diff --git a/modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connector.h b/modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connector.h deleted file mode 100644 index c9e3b1f..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/abstract_rpc_connector.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_rpc_connector.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for abstract RPC connector - */ -#ifndef DPL_ABSTRACT_RPC_CONNECTOR_H -#define DPL_ABSTRACT_RPC_CONNECTOR_H - -#include -#include -#include - -namespace DPL { -namespace RPC { -namespace AbstractRPCConnectorEvents { -/** - * RPC connection established - */ -DECLARE_GENERIC_EVENT_2(ConnectionEstablishedEvent, - AbstractRPCConnectionID, - AbstractRPCConnection *) -} // namespace AbstractRPCClientEvents - -class AbstractRPCConnector : - public DPL::Event::EventSupport -{ - public: - /** - * Destructor - */ - virtual ~AbstractRPCConnector() {} -}; -} -} // namespace DPL - -#endif // DPL_ABSTRACT_RPC_CONNECTOR_H diff --git a/modules_mobile/rpc/include/dpl/rpc/generic_rpc_connection.h b/modules_mobile/rpc/include/dpl/rpc/generic_rpc_connection.h deleted file mode 100644 index d9614c6..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/generic_rpc_connection.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_rpc_connection.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for generic RPC connection - */ -#ifndef DPL_GENERIC_RPC_CONNECTION_H -#define DPL_GENERIC_RPC_CONNECTION_H - -#include -#include -#include -#include - -namespace DPL { -namespace RPC { -class GenericRPCConnection : - public AbstractRPCConnection, - private DPL::Socket::WaitableInputOutputExecutionContextSupport -{ - private: - // WaitableInputOutputExecutionContextSupport - virtual void OnInputStreamRead(); - virtual void OnInputStreamClosed(); - virtual void OnInputStreamBroken(); - - std::unique_ptr m_inputOutput; - - public: - /** - * Costructor - * - * Abstract waitable input/outobject is acquired by class and destroyed upon - * destructor - */ - explicit GenericRPCConnection(AbstractWaitableInputOutput *inputOutput); - virtual ~GenericRPCConnection(); - - virtual void AsyncCall(const RPCFunction &function); - virtual void Ping(); -}; -} -} // namespace DPL - -#endif // DPL_GENERIC_RPC_CONNECTION_H diff --git a/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_connection.h b/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_connection.h deleted file mode 100644 index 6c2d0ce..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_connection.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket_rpc_connection.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for generic socket RPC connection - */ -#ifndef DPL_GENERIC_SOCKET_RPC_CONNECTION_H -#define DPL_GENERIC_SOCKET_RPC_CONNECTION_H - -#include - -namespace DPL { -namespace RPC { -template -class GenericSocketRPCConnection : - public GenericRPCConnection -{ - protected: - // Private construction with socket acquisition - GenericSocketRPCConnection(SocketType *socket) : - GenericRPCConnection(socket) - {} -}; -} -} // namespace DPL - -#endif // DPL_GENERIC_SOCKET_RPC_CONNECTION_H diff --git a/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_server.h b/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_server.h deleted file mode 100644 index a4cae00..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/generic_socket_rpc_server.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket_rpc_server.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for generic socket RPC server - */ -#ifndef DPL_GENERIC_SOCKET_RPC_SERVER_H -#define DPL_GENERIC_SOCKET_RPC_SERVER_H - -#include -#include -#include - -namespace DPL { -namespace RPC { -template -class GenericSocketRPCServer : - public AbstractRPCConnector, - private DPL::Event::EventListener -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) - DECLARE_EXCEPTION_TYPE(Base, CloseFailed) - }; - - protected: - // Derived class implementations for connection managment - virtual AbstractRPCConnection *OpenSpecificConnection(SocketType *socket) = - 0; - - private: - typedef std::set InternalInterfaceSet; - InternalInterfaceSet m_internalInterfacesSet; - - virtual void OnEventReceived( - const DPL::Socket::AbstractSocketEvents::AcceptEvent &event) - { - // Retrieve socket sender - SocketType *server = static_cast(event.GetSender()); - - // Is this interface still tracked ? - // It might have disappeared on close - typename InternalInterfaceSet::iterator iterator = - m_internalInterfacesSet.find(server); - - if (iterator == m_internalInterfacesSet.end()) { - LogPedantic("RPC server interface socket disappeared"); - return; - } - - // Accept incoming client - SocketType *client = static_cast(server->Accept()); - if (client == NULL) { - LogPedantic("Spontaneous accept on socket occurred"); - return; - } - - LogPedantic( - "Client connected to server: " << - client->GetRemoteAddress().ToString()); - - // Open specific connection implementation - AbstractRPCConnection *connection = OpenSpecificConnection(client); - - // Retrieve ID once again - AbstractRPCConnectionID connectionID = - static_cast(server); - - // Inform listeners - DPL::Event::EventSupport:: - EmitEvent(AbstractRPCConnectorEvents::ConnectionEstablishedEvent( - connectionID, connection, EventSender( - this)), DPL::Event::EmitMode::Queued); - } - - public: - explicit GenericSocketRPCServer() - {} - - virtual ~GenericSocketRPCServer() - { - // Always close connection - CloseAll(); - } - - AbstractRPCConnectionID Open(const Address &socketAddress) - { - LogPedantic("Starting server: " << socketAddress.ToString()); - - // Alloc new socket - SocketType *socket = new SocketType(); - - // Add socket listener - socket->EventSupport:: - AddListener(this); - - Try - { - // Open socket - socket->Open(); - - // Bind socket address - socket->Bind(socketAddress); - - // Start listening - socket->Listen(8); - } - Catch(DPL::Socket::AbstractSocket::Exception::Base) - { - // Remove back socket listener - socket->EventSupport - ::RemoveListener(this); - - // Log debug - LogPedantic("Cannot start server: " << socketAddress.ToString()); - - // Problem with server startup - ReThrowMsg(typename Exception::OpenFailed, socketAddress.ToString()); - } - - // Register new internal connection - m_internalInterfacesSet.insert(socket); - - // Debug info - LogPedantic( - "Server started on interface: " << - socket->GetLocalAddress().ToString()); - - // Return unique identifier - return static_cast(socket); - } - - void Close(AbstractRPCConnectionID connectionID) - { - LogPedantic("Closing server interface..."); - - // Get socket from ID - SocketType *socket = static_cast(connectionID); - - // Find corresponding internal connection - typename InternalInterfaceSet::iterator iterator = - m_internalInterfacesSet.find(socket); - - if (iterator == m_internalInterfacesSet.end()) { - return; - } - - // Close socket - socket->Close(); - - // Remove socket listeners - socket->EventSupport:: - RemoveListener(this); - delete socket; - - m_internalInterfacesSet.erase(iterator); - - // Done - LogPedantic("Closed"); - } - - void CloseAll() - { - while (!m_internalInterfacesSet.empty()) { - Close(static_cast(*m_internalInterfacesSet - .begin())); - } - } -}; -} -} // namespace DPL - -#endif // DPL_GENERIC_SOCKET_RPC_SERVER_H diff --git a/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_client.h b/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_client.h deleted file mode 100644 index aba62ec..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_client.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket_rpc_client.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for unix socket RPC client - */ -#ifndef DPL_UNIX_SOCKET_RPC_CLIENT_H -#define DPL_UNIX_SOCKET_RPC_CLIENT_H - -#include -#include -#include - -namespace DPL { -namespace RPC { -class UnixSocketRPCClient : - public GenericSocketRPCClient -{ - protected: - virtual AbstractRPCConnection *OpenSpecificConnection( - DPL::Socket::UnixSocket *socket); - - public: - AbstractRPCConnectionID Open(const std::string &fileName); -}; -} -} // namespace DPL - -#endif // DPL_UNIX_SOCKET_RPC_CLIENT_H diff --git a/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_connection.h b/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_connection.h deleted file mode 100644 index 9b00141..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_connection.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket_rpc_connection.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for unix socket RPC connection - */ -#ifndef DPL_UNIX_SOCKET_RPC_CONNECTION_H -#define DPL_UNIX_SOCKET_RPC_CONNECTION_H - -#include -#include - -namespace DPL { -namespace RPC { -class UnixSocketRPCConnection : - public GenericSocketRPCConnection -{ - public: - // Socket acquisition - UnixSocketRPCConnection(DPL::Socket::UnixSocket *socket); -}; -} -} // namespace DPL - -#endif // DPL_UNIX_SOCKET_RPC_CONNECTION_H diff --git a/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_server.h b/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_server.h deleted file mode 100644 index de2b605..0000000 --- a/modules_mobile/rpc/include/dpl/rpc/unix_socket_rpc_server.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket_rpc_server.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for unix socket RPC server - */ -#ifndef DPL_UNIX_SOCKET_RPC_SERVER_H -#define DPL_UNIX_SOCKET_RPC_SERVER_H - -#include -#include -#include - -namespace DPL { -namespace RPC { -class UnixSocketRPCServer : - public GenericSocketRPCServer -{ - protected: - virtual AbstractRPCConnection *OpenSpecificConnection( - DPL::Socket::UnixSocket *socket); - - public: - AbstractRPCConnectionID Open(const std::string &fileName); -}; -} -} // namespace DPL - -#endif // DPL_UNIX_SOCKET_RPC_SERVER_H diff --git a/modules_mobile/rpc/src/abstract_rpc_connection.cpp b/modules_mobile/rpc/src/abstract_rpc_connection.cpp deleted file mode 100644 index e5455e2..0000000 --- a/modules_mobile/rpc/src/abstract_rpc_connection.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_rpc_connection.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract RPC connection - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/rpc/src/abstract_rpc_connector.cpp b/modules_mobile/rpc/src/abstract_rpc_connector.cpp deleted file mode 100644 index 2bd879e..0000000 --- a/modules_mobile/rpc/src/abstract_rpc_connector.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_rpc_connector.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of abstract RPC connector - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/rpc/src/generic_rpc_connection.cpp b/modules_mobile/rpc/src/generic_rpc_connection.cpp deleted file mode 100644 index 6b16f28..0000000 --- a/modules_mobile/rpc/src/generic_rpc_connection.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_rpc_connection.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of generic RPC connection - */ -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace RPC { -namespace // anonymous -{ -namespace Protocol { -// Packet definitions -enum PacketType -{ - PacketType_AsyncCall, - PacketType_PingPong -}; - -struct Header -{ - unsigned short size; - unsigned short type; -} DPL_ALIGNED(1); - -struct AsyncCall : - public Header -{ - unsigned char data[1]; -} DPL_ALIGNED(1); -} // namespace Protocol -} // namespace anonymous - -GenericRPCConnection::GenericRPCConnection( - AbstractWaitableInputOutput *inputOutput) : - m_inputOutput(inputOutput) -{ - LogPedantic("Opening generic RPC..."); - WaitableInputOutputExecutionContextSupport::Open(inputOutput); - LogPedantic("Generic RPC opened"); -} - -GenericRPCConnection::~GenericRPCConnection() -{ - // Ensure RPC is closed - LogPedantic("Closing generic RPC..."); - WaitableInputOutputExecutionContextSupport::Close(); - LogPedantic("Generic RPC closed"); -} - -void GenericRPCConnection::AsyncCall(const RPCFunction &function) -{ - LogPedantic("Executing async call"); - - // Create binary call - BinaryQueue serializedCall = function.Serialize(); - - // Append buffers - Protocol::AsyncCall call; - call.size = static_cast(serializedCall.Size()); - call.type = Protocol::PacketType_AsyncCall; - - m_outputStream.AppendCopy(&call, sizeof(Protocol::Header)); - m_outputStream.AppendMoveFrom(serializedCall); - - // Try to feed output with data - Try - { - FeedOutput(); - } - Catch(WaitableInputOutputExecutionContextSupport::Exception::NotOpened) - { - // Error occurred while feeding - ReThrow(AbstractRPCConnection::Exception::AsyncCallFailed); - } -} - -void GenericRPCConnection::Ping() -{ - LogPedantic("Executing ping call"); - - // Append buffers - Protocol::AsyncCall call; - call.size = 0; - call.type = Protocol::PacketType_PingPong; - - m_outputStream.AppendCopy(&call, sizeof(Protocol::Header)); - - // Try to feed output with data - Try - { - FeedOutput(); - } - Catch(WaitableInputOutputExecutionContextSupport::Exception::NotOpened) - { - // Error occurred while feeding - ReThrow(AbstractRPCConnection::Exception::PingFailed); - } -} - -void GenericRPCConnection::OnInputStreamRead() -{ - LogPedantic("Interpreting " << m_inputStream.Size() << " bytes buffer"); - - // Enough bytes to read at least one header ? - if (m_inputStream.Size() >= sizeof(Protocol::Header)) { - // Begin consuming as much packets as it is possible - while (m_inputStream.Size() >= sizeof(Protocol::Header)) { - Protocol::Header header; - m_inputStream.Flatten(&header, sizeof(header)); - - if (m_inputStream.Size() >= sizeof(Protocol::Header) + - header.size) - { - LogPedantic("Will parse packet of type: " << header.type); - - // Allocate new packet (header + real packet data) - void *binaryPacket = malloc( - sizeof(Protocol::Header) + header.size); - - if (binaryPacket == NULL) { - throw std::bad_alloc(); - } - - // Get it from stream - m_inputStream.FlattenConsume( - binaryPacket, - sizeof(Protocol::Header) + - header.size); - - // Parse specific packet - switch (header.type) { - case Protocol::PacketType_AsyncCall: - { - BinaryQueue call; - - // No need to delete packet data, we can use it - call.AppendUnmanaged(binaryPacket, - sizeof(Protocol::Header) + header.size, - &BinaryQueue::BufferDeleterFree, - NULL); - - // ...but just remove protocol header - call.Consume(sizeof(Protocol::Header)); - - LogPedantic( - "Async call of size: " << header.size << - " parsed"); - - // Call async call event listeners - DPL::Event::EventSupport:: - EmitEvent(AbstractRPCConnectionEvents::AsyncCallEvent( - RPCFunction(call), EventSender( - this)), DPL::Event::EmitMode::Queued); - } - break; - - case Protocol::PacketType_PingPong: - { - // Reply with ping/pong - Ping(); - - // Do not need packet data - free(binaryPacket); - - LogPedantic("Ping pong replied"); - } - break; - - default: - LogPedantic("Warning: Unknown packet type"); - free(binaryPacket); - break; - } - } else { - LogPedantic("Too few bytes to read packet"); - break; - } - } - } else { - LogPedantic("Too few bytes to read header"); - } -} - -void GenericRPCConnection::OnInputStreamClosed() -{ - // Emit closed event - DPL::Event::EventSupport - :: - EmitEvent(AbstractRPCConnectionEvents::ConnectionClosedEvent( - EventSender(this)), DPL::Event::EmitMode::Queued); -} - -void GenericRPCConnection::OnInputStreamBroken() -{ - // Emit broken event - DPL::Event::EventSupport - :: - EmitEvent(AbstractRPCConnectionEvents::ConnectionBrokenEvent( - EventSender(this)), DPL::Event::EmitMode::Queued); -} -} -} // namespace DPL diff --git a/modules_mobile/rpc/src/generic_socket_rpc_client.cpp b/modules_mobile/rpc/src/generic_socket_rpc_client.cpp deleted file mode 100644 index 51c1b97..0000000 --- a/modules_mobile/rpc/src/generic_socket_rpc_client.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket_rpc_client.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of generic socket RPC - * client - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/rpc/src/generic_socket_rpc_connection.cpp b/modules_mobile/rpc/src/generic_socket_rpc_connection.cpp deleted file mode 100644 index 2d84a4a..0000000 --- a/modules_mobile/rpc/src/generic_socket_rpc_connection.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket_rpc_connection.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of generic socket RPC - * connection - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/rpc/src/generic_socket_rpc_server.cpp b/modules_mobile/rpc/src/generic_socket_rpc_server.cpp deleted file mode 100644 index a0590f4..0000000 --- a/modules_mobile/rpc/src/generic_socket_rpc_server.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket_rpc.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of generic socket RPC - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/rpc/src/unix_socket_rpc_client.cpp b/modules_mobile/rpc/src/unix_socket_rpc_client.cpp deleted file mode 100644 index 8b105f2..0000000 --- a/modules_mobile/rpc/src/unix_socket_rpc_client.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket_rpc_client.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of unix socket RPC client - */ -#include -#include -#include - -namespace DPL { -namespace RPC { -AbstractRPCConnection *UnixSocketRPCClient::OpenSpecificConnection( - DPL::Socket::UnixSocket *socket) -{ - // Allocate new UNIX/RPC connection object - UnixSocketRPCConnection *connection = new UnixSocketRPCConnection(socket); - - // Return new connection - return connection; -} - -AbstractRPCConnectionID UnixSocketRPCClient::Open(const std::string &fileName) -{ - return GenericSocketRPCClient::Open(Address( - fileName)); -} -} -} // namespace DPL diff --git a/modules_mobile/rpc/src/unix_socket_rpc_connection.cpp b/modules_mobile/rpc/src/unix_socket_rpc_connection.cpp deleted file mode 100644 index b21098d..0000000 --- a/modules_mobile/rpc/src/unix_socket_rpc_connection.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket_rpc_connection.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of unix socket RPC - * connection - */ -#include -#include - -namespace DPL { -namespace RPC { -UnixSocketRPCConnection::UnixSocketRPCConnection( - DPL::Socket::UnixSocket *socket) : - GenericSocketRPCConnection(socket) -{} -} -} // namespace DPL diff --git a/modules_mobile/rpc/src/unix_socket_rpc_server.cpp b/modules_mobile/rpc/src/unix_socket_rpc_server.cpp deleted file mode 100644 index e9dd9ab..0000000 --- a/modules_mobile/rpc/src/unix_socket_rpc_server.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket_rpc_server.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of unix socket RPC server - */ -#include -#include -#include - -namespace DPL { -namespace RPC { -AbstractRPCConnection *UnixSocketRPCServer::OpenSpecificConnection( - DPL::Socket::UnixSocket *socket) -{ - // Allocate new UNIX/RPC connection object - UnixSocketRPCConnection *connection = new UnixSocketRPCConnection(socket); - - // Return new connection - return connection; -} - -AbstractRPCConnectionID UnixSocketRPCServer::Open(const std::string &fileName) -{ - return GenericSocketRPCServer::Open(Address( - fileName)); -} -} -} // namespace DPL diff --git a/modules_mobile/security_origin_dao/CMakeLists.txt b/modules_mobile/security_origin_dao/CMakeLists.txt deleted file mode 100644 index f307a2b..0000000 --- a/modules_mobile/security_origin_dao/CMakeLists.txt +++ /dev/null @@ -1,55 +0,0 @@ -SET(TARGET_SECURITY_ORIGIN_DAO_DB "Sqlite3DbSecurityOrigin") - -ADD_CUSTOM_COMMAND( OUTPUT .security_origin.db - COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.security_origin.db - COMMAND gcc -Wall -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/security_origin_dao/orm -E ${PROJECT_SOURCE_DIR}/modules/security_origin_dao/orm/security_origin_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/security_origin_db.sql - COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.security_origin.db ".read ${CMAKE_CURRENT_BINARY_DIR}/security_origin_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.security_origin.db - DEPENDS ${PROJECT_SOURCE_DIR}/modules/security_origin_dao/orm/security_origin_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/security_origin_dao/orm/security_origin_db - ) - -ADD_CUSTOM_COMMAND( OUTPUT .security_origin.db-journal - COMMAND touch - ARGS ${CMAKE_CURRENT_BINARY_DIR}/.security_origin.db-journal - ) - -ADD_CUSTOM_TARGET(${TARGET_SECURITY_ORIGIN_DAO_DB} ALL DEPENDS .security_origin.db .security_origin.db-journal) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/security_origin_db.sql DESTINATION share/wrt-engine/) - -############################################################################### - -INCLUDE(FindPkgConfig) - -PKG_CHECK_MODULES(SECURITY_ORIGIN_DAO_DEPS - glib-2.0 - REQUIRED) - -SET(SECURITY_ORIGIN_DAO_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/modules/security_origin_dao/include - ${PROJECT_SOURCE_DIR}/modules/security_origin_dao/orm - ${PROJECT_SOURCE_DIR}/modules/core/include - ${PROJECT_SOURCE_DIR}/modules/db/include - ${PROJECT_SOURCE_DIR}/modules/log/include - ${PROJECT_SOURCE_DIR}/modules/widget_dao/include -) - -SET(SECURITY_ORIGIN_DAO_SOURCES - dao/security_origin_dao_types.cpp - dao/security_origin_dao.cpp -) - -INCLUDE_DIRECTORIES(SYSTEM ${SECURITY_ORIGIN_DAO_DEPS_INCLUDE_DIRS} ) -INCLUDE_DIRECTORIES(${SECURITY_ORIGIN_DAO_INCLUDE_DIRS}) - -ADD_LIBRARY(${TARGET_SECURITY_ORIGIN_DAO_LIB} SHARED ${SECURITY_ORIGIN_DAO_SOURCES}) -SET_TARGET_PROPERTIES(${TARGET_SECURITY_ORIGIN_DAO_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) -TARGET_LINK_LIBRARIES(${TARGET_SECURITY_ORIGIN_DAO_LIB} ${TARGET_DPL_EFL} ${TARGET_DPL_DB_EFL} ${TARGET_WRT_DAO_RO_LIB} ${SECURITY_ORIGIN_DAO_DEPS_LIBRARIES}) -ADD_DEPENDENCIES(${TARGET_SECURITY_ORIGIN_DAO_LIB} ${TARGET_SECURITY_ORIGIN_DAO_DB}) - -INSTALL(TARGETS ${TARGET_SECURITY_ORIGIN_DAO_LIB} DESTINATION lib) - -INSTALL(FILES - include/wrt-commons/security-origin-dao/security_origin_dao_types.h - include/wrt-commons/security-origin-dao/security_origin_dao.h - DESTINATION include/dpl-efl/wrt-commons/security-origin-dao -) - diff --git a/modules_mobile/security_origin_dao/dao/security_origin_dao.cpp b/modules_mobile/security_origin_dao/dao/security_origin_dao.cpp deleted file mode 100644 index 7551189..0000000 --- a/modules_mobile/security_origin_dao/dao/security_origin_dao.cpp +++ /dev/null @@ -1,337 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file security_origin_dao.cpp - * @author Jihoon Chung (jihoon.chung@samsung.com) - * @version 1.0 - * @brief This file contains the definition of security origin dao class. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::security_origin; - -namespace SecurityOriginDB { -using namespace WrtDB; -#define SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN Try - -#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ - ReThrowMsg(SecurityOriginDAO::Exception::DatabaseError, \ - message); \ - } - -// database connection -#define SECURITY_ORIGIN_DB_INTERNAL(tlsCommand, InternalType, interface) \ - InternalType tlsCommand(interface); -#define SECURITY_ORIGIN_DB_SELECT(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Select, interface) -#define SECURITY_ORIGIN_DB_INSERT(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Insert, interface) -#define SECURITY_ORIGIN_DB_UPDATE(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Update, interface) -#define SECURITY_ORIGIN_DB_DELETE(name, type, interface) \ - SECURITY_ORIGIN_DB_INTERNAL(name, type::Delete, interface) - -typedef DPL::DB::ORM::security_origin::SecurityOriginInfo::Row - SecurityOriginInfoRow; -typedef DPL::DB::ORM::security_origin::SecurityOriginInfo::Select::RowList - SecurityOriginInfoRowList; - -namespace { -DPL::DB::SqlConnection::Flag::Option SECURITY_ORIGIN_DB_OPTION = - DPL::DB::SqlConnection::Flag::RW; -DPL::DB::SqlConnection::Flag::Type SECURITY_ORIGIN_DB_TYPE = - DPL::DB::SqlConnection::Flag::UseLucene; -const char* const SECURITY_ORIGIN_DB_NAME = ".security_origin.db"; -const char* const SECURITY_ORIGIN_DB_SQL_PATH = - "/usr/share/wrt-engine/security_origin_db.sql"; -const char* const SECURITY_DATABASE_JOURNAL_FILENAME = "-journal"; - -const int WEB_APPLICATION_UID = 5000; -const int WEB_APPLICATION_GUID = 5000; - -std::string createDatabasePath(const WrtDB::TizenPkgId &pkgName) -{ - std::stringstream filename; - - filename << WrtDB::WidgetConfig::GetWidgetPersistentStoragePath(pkgName) - << "/" - << SECURITY_ORIGIN_DB_NAME; - return filename.str(); -} - -void checkDatabase(std::string databasePath) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - if (databasePath.empty()) { - ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, - "Wrong database Path is passed"); - } - - struct stat buffer; - if (stat(databasePath.c_str(), &buffer) != 0) { - //Create fresh database - LogDebug("Creating database " << databasePath); - - std::fstream file; - file.open(SECURITY_ORIGIN_DB_SQL_PATH, std::ios_base::in); - if (!file) { - ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, - "Fail to get database Path"); - } - - std::stringstream ssBuffer; - ssBuffer << file.rdbuf(); - - file.close(); - - DPL::DB::SqlConnection con(databasePath, - SECURITY_ORIGIN_DB_TYPE, - SECURITY_ORIGIN_DB_OPTION); - con.ExecCommand(ssBuffer.str().c_str()); - - if(chown(databasePath.c_str(), - WEB_APPLICATION_UID, - WEB_APPLICATION_GUID) != 0) - { - ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - std::string databaseJournal = - databasePath + SECURITY_DATABASE_JOURNAL_FILENAME; - if(chown(databaseJournal.c_str(), - WEB_APPLICATION_UID, - WEB_APPLICATION_GUID) != 0) - { - ThrowMsg(SecurityOriginDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to get database Path") -} -} // namespace SecurityOriginDB - -SecurityOriginDAO::SecurityOriginDAO(const WrtDB::TizenPkgId &pkgName) : - m_dbPath(createDatabasePath(pkgName)), - m_dbInterface(m_dbPath, SECURITY_ORIGIN_DB_TYPE) -{ - checkDatabase(m_dbPath); - m_dbInterface.AttachToThread(SECURITY_ORIGIN_DB_OPTION); -} - -SecurityOriginDAO::~SecurityOriginDAO() -{ - m_dbInterface.DetachFromThread(); -} - -SecurityOriginDataList SecurityOriginDAO::getSecurityOriginDataList(void) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - SecurityOriginDataList list; - SECURITY_ORIGIN_DB_SELECT(select, SecurityOriginInfo, &m_dbInterface); - typedef std::list RowList; - RowList rowList = select.GetRowList(); - - FOREACH(it, rowList) { - Origin origin(it->Get_scheme(), it->Get_host(), it->Get_port()); - list.push_back( - SecurityOriginDataPtr( - new SecurityOriginData( - static_cast(it->Get_feature()), origin))); - } - return list; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get data list") -} - -Result SecurityOriginDAO::getResult(const SecurityOriginData &data) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - SECURITY_ORIGIN_DB_SELECT(select, SecurityOriginInfo, &m_dbInterface); - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - select.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - SecurityOriginInfoRowList rows = select.GetRowList(); - if (rows.empty()) { - return RESULT_UNKNOWN; - } - SecurityOriginInfoRow row = rows.front(); - return static_cast(row.Get_result()); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("getResult error") -} - -bool SecurityOriginDAO::isReadOnly(const SecurityOriginData &data) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - SECURITY_ORIGIN_DB_SELECT(select, SecurityOriginInfo, &m_dbInterface); - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - select.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - SecurityOriginInfoRowList rows = select.GetRowList(); - if (rows.empty()) { - return RESULT_UNKNOWN; - } - SecurityOriginInfoRow row = rows.front(); - return row.Get_readonly() ? true : false; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("isReadOnly error") -} - -void SecurityOriginDAO::setSecurityOriginData(const SecurityOriginData &data, - const Result result, - const bool readOnly) -{ - if (true == hasResult(data)) { - updateData(data, result, readOnly); - } else { - insertData(data, result, readOnly); - } -} - -void SecurityOriginDAO::setPrivilegeSecurityOriginData( - const Feature feature, - bool isOnlyAllowedLocalOrigin) -{ - //TODO: this breaks app:// scheme code -> no case for app scheme - Origin origin(DPL::FromUTF8String("file"), - DPL::FromUTF8String(""), - 0); - if (!isOnlyAllowedLocalOrigin) { - origin.scheme = DPL::FromUTF8String(""); - } - SecurityOriginData data(feature, origin); - setSecurityOriginData(data, RESULT_ALLOW_ALWAYS, true); -} - -void SecurityOriginDAO::removeSecurityOriginData( - const SecurityOriginData &data) -{ - if (false == hasResult(data)) { - // There is no data - return; - } - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_DELETE(del, SecurityOriginInfo, &m_dbInterface) - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - del.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - del.Execute(); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to remove security origin data") -} - -void SecurityOriginDAO::removeSecurityOriginData(const Result result) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_DELETE(del, SecurityOriginInfo, &m_dbInterface) - del.Where(Equals(result)); - del.Execute(); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to remove data by result") -} - -bool SecurityOriginDAO::hasResult(const SecurityOriginData &data) -{ - Result ret = getResult(data); - return (ret != RESULT_UNKNOWN); -} - -void SecurityOriginDAO::insertData(const SecurityOriginData &data, - const Result result, - const bool readOnly) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - SecurityOriginInfoRow row; - row.Set_feature(data.feature); - row.Set_scheme(data.origin.scheme); - row.Set_host(data.origin.host); - row.Set_port(data.origin.port); - row.Set_result(result); - row.Set_readonly(readOnly ? 1 : 0); - - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_INSERT(insert, SecurityOriginInfo, &m_dbInterface); - insert.Values(row); - insert.Execute(); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to insert") -} - -void SecurityOriginDAO::updateData(const SecurityOriginData &data, - const Result result, - const bool readOnly) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - SecurityOriginInfoRow row; - row.Set_feature(data.feature); - row.Set_scheme(data.origin.scheme); - row.Set_host(data.origin.host); - row.Set_port(data.origin.port); - row.Set_result(result); - row.Set_readonly(readOnly ? 1 : 0); - - ScopedTransaction transaction(&m_dbInterface); - SECURITY_ORIGIN_DB_UPDATE(update, SecurityOriginInfo, &m_dbInterface); - Equals eFeature(data.feature); - Equals eScheme(data.origin.scheme); - Equals eHost(data.origin.host); - Equals ePort(data.origin.port); - update.Where(And(And(And(eFeature, eScheme), eHost), ePort)); - update.Values(row); - update.Execute(); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Fail to update") -} -#undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN -#undef SQL_CONNECTION_EXCEPTION_HANDLER_END -} // namespace SecurityOriginDB diff --git a/modules_mobile/security_origin_dao/dao/security_origin_dao_types.cpp b/modules_mobile/security_origin_dao/dao/security_origin_dao_types.cpp deleted file mode 100755 index 8d2a9f8..0000000 --- a/modules_mobile/security_origin_dao/dao/security_origin_dao_types.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file security_origin_dao_types.cpp - * @author Jihoon Chung (jihoon.chung@samsung.com) - * @version 1.0 - * @brief This file contains the implementation of - * common data types for wrt_security_origin.db - */ - -#include -#include - -namespace SecurityOriginDB { -} // namespace SecurityOriginDB diff --git a/modules_mobile/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h b/modules_mobile/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h deleted file mode 100755 index feaaf89..0000000 --- a/modules_mobile/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao_types.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file security_origin_dao_types.h - * @author Jihoon Chung (jihoon.chung@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of - * common data types for security origin database. - */ -#ifndef _SECURITY_ORIGIN_DAO_TYPES_H_ -#define _SECURITY_ORIGIN_DAO_TYPES_H_ - -#include -#include -#include -#include -#include - -namespace SecurityOriginDB { -enum Result -{ - RESULT_UNKNOWN = 0, - RESULT_ALLOW_ONCE, - RESULT_DENY_ONCE, - RESULT_ALLOW_ALWAYS, - RESULT_DENY_ALWAYS -}; - -struct Origin -{ - DPL::String scheme; - DPL::String host; - unsigned int port; - - Origin(const DPL::String& Scheme, - const DPL::String& Host, - const unsigned int Port) : - scheme(Scheme), - host(Host), - port(Port) - {} - - bool operator== (const Origin& other) const - { - return (!DPL::StringCompare(scheme, other.scheme) && - !DPL::StringCompare(host, other.host) && - port == other.port); - } - - bool operator!= (const Origin& other) const - { - return !(*this == other); - } -}; - -struct SecurityOriginData -{ - WrtDB::Feature feature; - Origin origin; - - SecurityOriginData(const WrtDB::Feature features, const Origin& ori) : - feature(features), - origin(ori) - {} - - bool operator== (const SecurityOriginData& other) const - { - return !(origin == other.origin) && - !(feature == other.feature); - } - - bool operator!= (const SecurityOriginData& other) const - { - return !(*this == other); - } -}; - -typedef std::shared_ptr SecurityOriginDataPtr; -typedef std::list SecurityOriginDataList; -} // namespace SecurityOriginDB - -#endif // _SECURITY_ORIGIN_DAO_TYPES_H_ diff --git a/modules_mobile/security_origin_dao/orm/orm_generator_security_origin.h b/modules_mobile/security_origin_dao/orm/orm_generator_security_origin.h deleted file mode 100644 index 84888de..0000000 --- a/modules_mobile/security_origin_dao/orm/orm_generator_security_origin.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _ORM_GENERATOR_SECURITY_ORIGIN_H_ -#define _ORM_GENERATOR_SECURITY_ORIGIN_H_ - -#define ORM_GENERATOR_DATABASE_NAME security_origin_db_definitions -#include -#undef ORM_GENERATOR_DATABASE_NAME - -#endif // _ORM_GENERATOR_SECURITY_ORIGIN_H_ diff --git a/modules_mobile/security_origin_dao/orm/security_origin_db b/modules_mobile/security_origin_dao/orm/security_origin_db deleted file mode 100644 index 2d9c4f9..0000000 --- a/modules_mobile/security_origin_dao/orm/security_origin_db +++ /dev/null @@ -1,13 +0,0 @@ -SQL(BEGIN TRANSACTION;) - -CREATE_TABLE(SecurityOriginInfo) - COLUMN_NOT_NULL(feature, INT, ) - COLUMN_NOT_NULL(scheme, TEXT,DEFAULT '') - COLUMN_NOT_NULL(host, TEXT,DEFAULT '') - COLUMN_NOT_NULL(port, INT, DEFAULT 0) - COLUMN_NOT_NULL(result, INT, DEFAULT 0) - COLUMN_NOT_NULL(readonly, INT, DEFAULT 0) - TABLE_CONSTRAINTS(PRIMARY KEY(feature,scheme,host,port)) -CREATE_TABLE_END() - -SQL(COMMIT;) diff --git a/modules_mobile/security_origin_dao/orm/security_origin_db_definitions b/modules_mobile/security_origin_dao/orm/security_origin_db_definitions deleted file mode 100644 index dc74f98..0000000 --- a/modules_mobile/security_origin_dao/orm/security_origin_db_definitions +++ /dev/null @@ -1,5 +0,0 @@ -DATABASE_START(security_origin) - -#include "security_origin_db" - -DATABASE_END() diff --git a/modules_mobile/security_origin_dao/orm/security_origin_db_sql_generator.h b/modules_mobile/security_origin_dao/orm/security_origin_db_sql_generator.h deleted file mode 100644 index 3bdbe6d..0000000 --- a/modules_mobile/security_origin_dao/orm/security_origin_db_sql_generator.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file security_origin_db_sql_generator.h - * @author Jihoon Chung (jihoon.chung@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL - * input file from database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. -#include - -#include "security_origin_db_definitions" diff --git a/modules_mobile/socket/config.cmake b/modules_mobile/socket/config.cmake deleted file mode 100644 index 6e097a4..0000000 --- a/modules_mobile/socket/config.cmake +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_SOCKET_SOURCES - ${PROJECT_SOURCE_DIR}/modules/socket/src/generic_socket.cpp - ${PROJECT_SOURCE_DIR}/modules/socket/src/unix_socket.cpp - ${PROJECT_SOURCE_DIR}/modules/socket/src/waitable_input_output_execution_context_support.cpp - PARENT_SCOPE -) - -SET(DPL_SOCKET_HEADERS - ${PROJECT_SOURCE_DIR}/modules/socket/include/dpl/socket/abstract_socket.h - ${PROJECT_SOURCE_DIR}/modules/socket/include/dpl/socket/generic_socket.h - ${PROJECT_SOURCE_DIR}/modules/socket/include/dpl/socket/unix_socket.h - ${PROJECT_SOURCE_DIR}/modules/socket/include/dpl/socket/waitable_input_output_execution_context_support.h - PARENT_SCOPE -) - -SET(DPL_SOCKET_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/socket/include/ - PARENT_SCOPE -) diff --git a/modules_mobile/socket/include/dpl/socket/abstract_socket.h b/modules_mobile/socket/include/dpl/socket/abstract_socket.h deleted file mode 100644 index 0c06f99..0000000 --- a/modules_mobile/socket/include/dpl/socket/abstract_socket.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_socket.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of abstract socket - */ -#ifndef DPL_ABSTRACT_SOCKET_H -#define DPL_ABSTRACT_SOCKET_H - -#include -#include -#include -#include -#include - -namespace DPL { -namespace Socket { -namespace AbstractSocketEvents { -// Successfuly connected to server socket -DECLARE_GENERIC_EVENT_0(ConnectedEvent) - -// New connection occurred and need to be accepted -DECLARE_GENERIC_EVENT_0(AcceptEvent) - -// Connection has read data waiting -DECLARE_GENERIC_EVENT_0(ReadEvent) - -// Connection write buffer is now empty again and ready to write more -DECLARE_GENERIC_EVENT_0(WriteEvent) -} // namespace AbstractSocketEvents - -class AbstractSocket : - public AbstractWaitableInputOutput, - public DPL::Event::EventSupport, - public DPL::Event::EventSupport, - public DPL::Event::EventSupport, - public DPL::Event::EventSupport -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) ///< Base abstract - // socket exception - - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) ///< Fatal error - // occurred during - // open socket - // descriptor. Socket - // state is - // inconsistent and - // it should be not - // used anymore. - - DECLARE_EXCEPTION_TYPE(Base, ConnectFailed) ///< Fatal error - // occurred during - // connect. Socket - // state is - // inconsistent and - // it should be not - // used anymore. - ///< Warning: This - // exception does not - // mean that socket - // did not succeed to - // connect, see - // CannotConnect - ///< for this - // specific scenario - - DECLARE_EXCEPTION_TYPE(Base, SetNonBlockingFailed) ///< Fatal error - // occurred during - // setting socket to - // non-blocking mode. - // Socket state is - // inconsistent and - // it should be not - // used anymore. - - DECLARE_EXCEPTION_TYPE(Base, BindFailed) ///< Fatal error - // occurred during - // bind. Socket state - // is inconsistent - // and it should be - // not used anymore. - - DECLARE_EXCEPTION_TYPE(Base, AcceptFailed) ///< Fatal error - // occurred during - // accept. Socket - // state is - // inconsistent and - // it should be not - // used anymore. - - DECLARE_EXCEPTION_TYPE(Base, ListenFailed) ///< Fatal error - // occurred during - // listen. Socket - // state is - // inconsistent and - // it should be not - // used anymore. - - DECLARE_EXCEPTION_TYPE(Base, CloseFailed) ///< Fatal error - // occurred during - // close. Socket - // state is - // inconsistent and - // it should be not - // used anymore. - - DECLARE_EXCEPTION_TYPE(Base, ReadFailed) ///< Fatal error - // occurred during - // read. Socket state - // is inconsistent - // and it should be - // not used anymore. - ///< Warning: This - // exception does not - // mean that - // connection was - // broken, see - // ConnectionBroken - ///< for this - // specific scenario - - DECLARE_EXCEPTION_TYPE(Base, WriteFailed) ///< Fatal error - // occurred during - // write. Socket - // state is - // inconsistent and - // it should be not - // used anymore. - ///< Warning: This - // exception does not - // mean that - // connection was - // broken, see - // ConnectionBroken - ///< for this - // specific scenario - - DECLARE_EXCEPTION_TYPE(Base, GetPeerNameFailed) ///< Fatal error - // occurred during - // getpeername or - // getsockname. - // Socket state is - // inconsistent and - // it should be not - // used anymore. - - DECLARE_EXCEPTION_TYPE(Base, CannotConnect) ///< Cannot connect - // to remote socket. - // This is not fatal - // error, socket - // state is still - // consistent and it - // can be - // reconnected. - - DECLARE_EXCEPTION_TYPE(Base, ConnectionBroken) ///< Connection was - // broken. This is - // not fatal error, - // socket state is - // still consistent - // and it can be - // reconnected. - }; - - public: - virtual ~AbstractSocket() {} - - // Connect to remote host - virtual void Connect(const Address &address) = 0; - - // Open empty, unconnected socket - virtual void Open() = 0; - - // Close connection - virtual void Close() = 0; - - // Bind server socket address - virtual void Bind(const Address &address) = 0; - - // Begin listening for incoming connections - virtual void Listen(int backlog) = 0; - - // Accept waiting connection and create derived class connection - // One should cast resulting pointer to derived class - virtual AbstractSocket *Accept() = 0; - - // Local socket address - virtual Address GetLocalAddress() const = 0; - - // Remote socket address - virtual Address GetRemoteAddress() const = 0; -}; -} -} // namespace DPL - -#endif // DPL_ABSTRACT_SOCKET_H diff --git a/modules_mobile/socket/include/dpl/socket/unix_socket.h b/modules_mobile/socket/include/dpl/socket/unix_socket.h deleted file mode 100644 index 37614ce..0000000 --- a/modules_mobile/socket/include/dpl/socket/unix_socket.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of unix socket - */ -#ifndef DPL_UNIX_SOCKET_H -#define DPL_UNIX_SOCKET_H - -#include -#include - -namespace DPL { -namespace Socket { -class UnixSocket : - public GenericSocket -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - }; - - protected: - /** - * Translate generic Address to specific socket kernel structure - */ - virtual std::pair TranslateAddressGenericToSpecific( - const Address &address) const; - - /** - * Translate specific socket kernel structure to generic Address - */ - virtual Address TranslateAddressSpecificToGeneric(sockaddr *, - socklen_t) const; - - /** - * Get specific socket kernel structure size - */ - virtual socklen_t GetSpecificAddressSize() const; - - /** - * Alloc specific implementation of socket from descriptor - */ - virtual UnixSocket *AllocAcceptedSpecificSocket() const; - - /** - * Alloc specific implementation of socket descriptor - */ - virtual int AllocSpecificDescriptor() const; - - public: - UnixSocket(); - - virtual void Bind(const Address &address); -}; -} -} // namespace DPL - -#endif // DPL_GENERIC_SOCKET_H diff --git a/modules_mobile/socket/include/dpl/socket/waitable_input_output_execution_context_support.h b/modules_mobile/socket/include/dpl/socket/waitable_input_output_execution_context_support.h deleted file mode 100644 index f02df51..0000000 --- a/modules_mobile/socket/include/dpl/socket/waitable_input_output_execution_context_support.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_input_output_execution_context_support.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for waitable input-output execution - * context support - */ -#ifndef DPL_WAITABLE_INPUT_OUTPUT_EXECUTION_CONTEXT_SUPPORT_H -#define DPL_WAITABLE_INPUT_OUTPUT_EXECUTION_CONTEXT_SUPPORT_H - -#include -#include -#include - -namespace DPL { -namespace Socket { -class WaitableInputOutputExecutionContextSupport : - private WaitableHandleWatchSupport::WaitableHandleListener -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, AlreadyOpened) - DECLARE_EXCEPTION_TYPE(Base, NotOpened) - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) - DECLARE_EXCEPTION_TYPE(Base, CloseFailed) - }; - - private: - bool m_opened; - AbstractWaitableInputOutput *m_waitableInputOutput; - - // Watch state - bool m_hasReadWatch; - bool m_hasWriteWatch; - - void AddReadWatch(); - void RemoveReadWatch(); - void AddWriteWatch(); - void RemoveWriteWatch(); - - void ReadInput(); - - void CheckedRemoveReadWatch(); - void CheckedRemoveWriteWatch(); - - void CheckedRemoveReadWriteWatch(); - - virtual void OnWaitableHandleEvent(WaitableHandle waitableHandle, - WaitMode::Type mode); - - protected: - // Incoming/Outgoing streams - BinaryQueue m_inputStream; - BinaryQueue m_outputStream; - - // Support calbback methods - virtual void OnInputStreamRead() = 0; - virtual void OnInputStreamClosed() = 0; - virtual void OnInputStreamBroken() = 0; - - // Trigger feeding output - after updating output stream - void FeedOutput(); - - // Open/Close destination waitable input-output - void Open(AbstractWaitableInputOutput *waitableInputOutput); - void Close(); - - public: - /** - * Constructor - */ - explicit WaitableInputOutputExecutionContextSupport(); - - /** - * Destructor - */ - virtual ~WaitableInputOutputExecutionContextSupport(); -}; -} -} // namespace DPL - -#endif // DPL_WAITABLE_INPUT_OUTPUT_EXECUTION_CONTEXT_SUPPORT_H diff --git a/modules_mobile/socket/src/generic_socket.cpp b/modules_mobile/socket/src/generic_socket.cpp deleted file mode 100644 index aff2d74..0000000 --- a/modules_mobile/socket/src/generic_socket.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of generic socket - */ -#include -#include - -// -// Note: -// -// The file here is left blank to enable precompilation -// of templates in corresponding header file. -// Do not remove this file. -// diff --git a/modules_mobile/socket/src/unix_socket.cpp b/modules_mobile/socket/src/unix_socket.cpp deleted file mode 100644 index 36bff51..0000000 --- a/modules_mobile/socket/src/unix_socket.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file unix_socket.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of unix socket - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Socket { -UnixSocket::UnixSocket() -{} - -int UnixSocket::AllocSpecificDescriptor() const -{ - LogPedantic("Creating UNIX socket..."); - - // Create new descriptor - int newSocket = socket(AF_UNIX, SOCK_STREAM, 0); - - if (newSocket == -1) { - Throw(Exception::CreateFailed); - } - - LogPedantic("UNIX socket created"); - - // Return new descriptor - return newSocket; -} - -std::pair UnixSocket::TranslateAddressGenericToSpecific( - const Address &address) const -{ - // Allocate new socket address structure - sockaddr_un *sockAddress = - static_cast(malloc(sizeof(sockaddr_un))); - if (!sockAddress) { - throw std::bad_alloc(); - } - - memset(sockAddress, 0, sizeof(sockaddr_un)); - - // Copy address properties - sockAddress->sun_family = AF_UNIX; - strncpy(sockAddress->sun_path, address.GetAddress().c_str(), - sizeof(sockAddress->sun_path) - 1); - - //Prevent buffer overflows - sockAddress->sun_path[sizeof(sockAddress->sun_path) - 1] = '\0'; - - // Set proper address length - socklen_t sockAddressLength = SUN_LEN(sockAddress); - - // Return new translated address - return std::make_pair(reinterpret_cast(sockAddress), - sockAddressLength); -} - -Address UnixSocket::TranslateAddressSpecificToGeneric(sockaddr *address, - socklen_t) const -{ - // FIXME: Constrain check ? - sockaddr_un *unixAddress = reinterpret_cast(address); - return Address(unixAddress->sun_path); -} - -socklen_t UnixSocket::GetSpecificAddressSize() const -{ - return static_cast(sizeof(sockaddr_un)); -} - -UnixSocket *UnixSocket::AllocAcceptedSpecificSocket() const -{ - return new UnixSocket(); -} - -void UnixSocket::Bind(const Address &address) -{ - // Always remove socket file if any - unlink(address.GetAddress().c_str()); - - // Call base implementation - GenericSocket::Bind(address); - - // Always set proper permissions to the socket file - if (chmod(address.GetAddress().c_str(), 0777) < 0) { - LogError( - "Error setting permissions to the socket file. Errno " << - strerror(errno)); - } -} -} -} // namespace DPL diff --git a/modules_mobile/test/config.cmake b/modules_mobile/test/config.cmake deleted file mode 100644 index 8310c3c..0000000 --- a/modules_mobile/test/config.cmake +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_TEST_ENGINE_SOURCES - ${PROJECT_SOURCE_DIR}/modules/test/src/test_results_collector.cpp - ${PROJECT_SOURCE_DIR}/modules/test/src/test_runner.cpp - ${PROJECT_SOURCE_DIR}/modules/test/src/test_runner_child.cpp - ${PROJECT_SOURCE_DIR}/modules/test/src/test_runner_multiprocess.cpp - ${PROJECT_SOURCE_DIR}/modules/test/src/process_pipe.cpp - ${PROJECT_SOURCE_DIR}/modules/test/src/value_separated_policies.cpp - ${PROJECT_SOURCE_DIR}/modules/test/src/value_separated_tokens.cpp - PARENT_SCOPE -) - - -SET(DPL_TEST_ENGINE_HEADERS - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/test_results_collector.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/test_runner.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/test_runner_child.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/test_runner_multiprocess.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/process_pipe.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/abstract_input_parser.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/abstract_input_reader.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/abstract_input_tokenizer.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/value_separated_parser.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/value_separated_policies.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/value_separated_reader.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/value_separated_tokenizer.h - ${PROJECT_SOURCE_DIR}/modules/test/include/dpl/test/value_separated_tokens.h - PARENT_SCOPE -) - -SET(DPL_TEST_ENGINE_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/test/include - PARENT_SCOPE -) diff --git a/modules_mobile/test/include/dpl/test/abstract_input_parser.h b/modules_mobile/test/include/dpl/test/abstract_input_parser.h deleted file mode 100644 index dcb2243..0000000 --- a/modules_mobile/test/include/dpl/test/abstract_input_parser.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_input_parser.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Simple parser abstraction to be included into reader - */ - -#ifndef ABSTRACT_INPUT_PARSER_H -#define ABSTRACT_INPUT_PARSER_H - -#include - -#include - -namespace DPL { - -/** - * Abstract class of parser that produces some higher level abstraction - * basing on incoming tokens - */ -template class AbstractInputParser -{ -public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, ParserError) - }; - - typedef Result ResultType; - typedef Token TokenType; - - virtual ~AbstractInputParser() {} - - virtual void ConsumeToken(std::unique_ptr && token) = 0; - virtual bool IsStateValid() = 0; - virtual Result GetResult() const = 0; -}; - -} - -#endif diff --git a/modules_mobile/test/include/dpl/test/process_pipe.h b/modules_mobile/test/include/dpl/test/process_pipe.h deleted file mode 100644 index 52ab7e7..0000000 --- a/modules_mobile/test/include/dpl/test/process_pipe.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file process_pipe.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @version 1.0 - * @brief This file is the implementation pipe from process - */ -#ifndef PROCESS_PIPE_H -#define PROCESS_PIPE_H - -#include -#include - -#include - -namespace DPL { - -class ProcessPipe : public FileInput -{ -public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DoubleOpen) - }; - - enum class PipeErrorPolicy - { - NONE, - OFF, - PIPE - }; - - explicit ProcessPipe(PipeErrorPolicy err = PipeErrorPolicy::NONE); - virtual ~ProcessPipe(); - - void Open(const std::string &command); - void Close(); - -private: - FILE * m_file; - PipeErrorPolicy m_errPolicy; -}; - -} - -#endif // PROCESS_PIPE_H diff --git a/modules_mobile/test/include/dpl/test/test_results_collector.h b/modules_mobile/test/include/dpl/test/test_results_collector.h deleted file mode 100644 index 73fe1bf..0000000 --- a/modules_mobile/test/include/dpl/test/test_results_collector.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_results_collector.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Header file with declaration of TestResultsCollectorBase - */ - -#ifndef DPL_TEST_RESULTS_COLLECTOR_H -#define DPL_TEST_RESULTS_COLLECTOR_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Test { -class TestResultsCollectorBase; -typedef std::shared_ptr -TestResultsCollectorBasePtr; - -class TestResultsCollectorBase : - private DPL::Noncopyable -{ - public: - typedef TestResultsCollectorBase* (*CollectorConstructorFunc)(); - typedef std::list TestCaseIdList; - struct FailStatus - { - enum Type - { - NONE, - FAILED, - IGNORED, - INTERNAL - }; - }; - - virtual ~TestResultsCollectorBase() {} - - virtual bool Configure() - { - return true; - } - virtual void Start() { } - virtual void Finish() { } - virtual void CollectCurrentTestGroupName(const std::string& /*groupName*/) - {} - - virtual void CollectTestsCasesList(const TestCaseIdList& /*list*/) {} - virtual void CollectResult(const std::string& id, - const std::string& description, - const FailStatus::Type status = FailStatus::NONE, - const std::string& reason = "") = 0; - virtual std::string CollectorSpecificHelp() const - { - return ""; - } - virtual bool ParseCollectorSpecificArg (const std::string& /*arg*/) - { - return false; - } - - static TestResultsCollectorBase* Create(const std::string& name); - static void RegisterCollectorConstructor( - const std::string& name, - CollectorConstructorFunc - constructor); - static std::vector GetCollectorsNames(); - - private: - typedef std::map ConstructorsMap; - static ConstructorsMap m_constructorsMap; -}; -} -} - -#endif /* DPL_TEST_RESULTS_COLLECTOR_H */ diff --git a/modules_mobile/test/include/dpl/test/test_runner.h b/modules_mobile/test/include/dpl/test/test_runner.h deleted file mode 100644 index 6cd948f..0000000 --- a/modules_mobile/test/include/dpl/test/test_runner.h +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_runner.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file is the header file of test runner - */ -#ifndef DPL_TEST_RUNNER_H -#define DPL_TEST_RUNNER_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Test { -class TestRunner -{ - typedef std::map - TestResultsCollectors; - TestResultsCollectors m_collectors; - - std::string m_startTestId; - bool m_runIgnored; - - public: - TestRunner() : - m_terminate(false) - , m_allowChildLogs(false) - {} - - typedef void (*TestCase)(); - - private: - struct TestCaseStruct - { - std::string name; - TestCase proc; - - bool operator <(const TestCaseStruct &other) const - { - return name < other.name; - } - - bool operator ==(const TestCaseStruct &other) const - { - return name == other.name; - } - - TestCaseStruct(const std::string &n, TestCase p) : - name(n), - proc(p) - {} - }; - - typedef std::list TestCaseStructList; - typedef std::map TestCaseGroupMap; - TestCaseGroupMap m_testGroups; - - typedef std::set SelectedTestNameSet; - SelectedTestNameSet m_selectedTestNamesSet; - typedef std::set SelectedTestGroupSet; - SelectedTestGroupSet m_selectedTestGroupSet; - std::string m_currentGroup; - - DPL::Atomic m_totalAssertions; - - // Terminate without any logs. - // Some test requires to call fork function. - // Child process must not produce any logs and should die quietly. - bool m_terminate; - bool m_allowChildLogs; - - void Banner(); - void InvalidArgs(const std::string& message = "Invalid arguments!"); - void Usage(); - - bool filterGroupsByXmls(const std::vector & files); - bool filterByXML(std::map & casesMap); - void normalizeXMLTag(std::string& str, const std::string& testcase); - - enum Status { FAILED, IGNORED, PASS }; - - Status RunTestCase(const TestCaseStruct& testCase); - - void RunTests(); - - void CollectResult(const std::string& id, - const std::string& description, - const TestResultsCollectorBase::FailStatus::Type status - = TestResultsCollectorBase::FailStatus::NONE, - const std::string& reason = std::string()); - - public: - class TestFailed - { - private: - std::string m_message; - - public: - TestFailed() - {} - - //! \brief Failed test message creator - //! - //! \param[in] aTest string for tested expression - //! \param[in] aFile source file name - //! \param[in] aLine source file line - //! \param[in] aMessage error message - TestFailed(const char* aTest, - const char* aFile, - int aLine, - const std::string &aMessage); - - TestFailed(const std::string &message); - - std::string GetMessage() const - { - return m_message; - } - }; - - class Ignored - { - private: - std::string m_message; - - public: - Ignored() - {} - - Ignored(const std::string &message) : - m_message(message) - {} - - std::string GetMessage() const - { - return m_message; - } - }; - - void MarkAssertion(); - - void RegisterTest(const char *testName, TestCase proc); - void InitGroup(const char* name); - - int ExecTestRunner(int argc, char *argv[]); - typedef std::vector ArgsList; - int ExecTestRunner(const ArgsList& args); - bool getRunIgnored() const; - // The runner will terminate as soon as possible (after current test). - void Terminate(); - bool GetAllowChildLogs(); -}; - -typedef DPL::Singleton TestRunnerSingleton; -} -} // namespace DPL - -#define RUNNER_TEST_GROUP_INIT(GroupName) \ - static int Static##GroupName##Init() \ - { \ - DPL::Test::TestRunnerSingleton::Instance().InitGroup(#GroupName); \ - return 0; \ - } \ - const int DPL_UNUSED Static##GroupName##InitVar = \ - Static##GroupName##Init(); - -#define RUNNER_TEST(Proc) \ - void Proc(); \ - static int Static##Proc##Init() \ - { \ - DPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc); \ - return 0; \ - } \ - const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init(); \ - void Proc() - -//! \brief Returns base name for path - -#define RUNNER_ASSERT_MSG(test, message) \ - do \ - { \ - DPL::Test::TestRunnerSingleton::Instance().MarkAssertion(); \ - \ - if (!(test)) \ - { \ - std::ostringstream assertMsg; \ - assertMsg << message; \ - throw DPL::Test::TestRunner::TestFailed(#test, \ - __FILE__, \ - __LINE__, \ - assertMsg.str()); \ - } \ - } while (0) - -#define RUNNER_ASSERT(test) RUNNER_ASSERT_MSG(test, "") - -#define RUNNER_FAIL RUNNER_ASSERT(false) - -#define RUNNER_IGNORED_MSG(message) do { std::ostringstream assertMsg; \ - assertMsg << message; \ - throw DPL::Test::TestRunner::Ignored( \ - assertMsg.str()); \ -} while (0) - -#endif // DPL_TEST_RUNNER_H diff --git a/modules_mobile/test/include/dpl/test/test_runner_child.h b/modules_mobile/test/include/dpl/test/test_runner_child.h deleted file mode 100644 index 1da0f1b..0000000 --- a/modules_mobile/test/include/dpl/test/test_runner_child.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_runner_child.h - * @author Bartlomiej Grzelewski (b.grzelewski@samsung.com) - * @version 1.0 - * @brief This file is the header file of test runner - */ -#ifndef DPL_TEST_RUNNER_CHILD_H -#define DPL_TEST_RUNNER_CHILD_H - -#include - -namespace DPL { -namespace Test { - -class PipeWrapper : DPL::Noncopyable -{ - public: - enum Usage { - READONLY, - WRITEONLY - }; - - enum Status { - SUCCESS, - TIMEOUT, - ERROR - }; - - PipeWrapper(); - - bool isReady(); - - void setUsage(Usage usage); - - virtual ~PipeWrapper(); - - Status send(int code, std::string &message); - - Status receive(int &code, std::string &data, time_t deadline); - - void closeAll(); - - protected: - - std::string toBinaryString(int data); - - void closeHelp(int desc); - - Status writeHelp(const void *buffer, int size); - - Status readHelp(void *buf, int size, time_t deadline); - - static const int PIPE_CLOSED = -1; - - int m_pipefd[2]; -}; - -void RunChildProc(TestRunner::TestCase procChild); -} // namespace Test -} // namespace DPL - -#define RUNNER_CHILD_TEST(Proc) \ - void Proc(); \ - void Proc##Child(); \ - static int Static##Proc##Init() \ - { \ - DPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc); \ - return 0; \ - } \ - const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init(); \ - void Proc(){ \ - DPL::Test::RunChildProc(&Proc##Child); \ - } \ - void Proc##Child() - -#endif // DPL_TEST_RUNNER_CHILD_H diff --git a/modules_mobile/test/include/dpl/test/test_runner_multiprocess.h b/modules_mobile/test/include/dpl/test/test_runner_multiprocess.h deleted file mode 100644 index 279b5ef..0000000 --- a/modules_mobile/test/include/dpl/test/test_runner_multiprocess.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_runner_multiprocess.h - * @author Marcin Niesluchowski (m.niesluchow@samsung.com) - * @version 1.0 - * @brief This file is the header file of multiprocess test runner - */ -#ifndef DPL_TEST_RUNNER_MULTIPROCESS_H -#define DPL_TEST_RUNNER_MULTIPROCESS_H - -#include - -namespace DPL { -namespace Test { - -class SimplePipeWrapper : - public PipeWrapper -{ - public: - SimplePipeWrapper(); - - virtual ~SimplePipeWrapper(); - - Status send(std::string &message); - Status receive(std::string &data, bool &empty, time_t deadline); -}; - -void RunMultiProc(TestRunner::TestCase procMulti); -} // namespace Test -} // namespace DPL - -#define RUNNER_MULTIPROCESS_TEST(Proc) \ - void Proc(); \ - void Proc##Multi(); \ - static int Static##Proc##Init() \ - { \ - DPL::Test::TestRunnerSingleton::Instance().RegisterTest(#Proc, &Proc); \ - return 0; \ - } \ - const int DPL_UNUSED Static##Proc##InitVar = Static##Proc##Init(); \ - void Proc(){ \ - DPL::Test::RunMultiProc(&Proc##Multi); \ - } \ - void Proc##Multi() - -#endif // DPL_TEST_RUNNER_MULTIPROCESS_H diff --git a/modules_mobile/test/include/dpl/test/value_separated_parser.h b/modules_mobile/test/include/dpl/test/value_separated_parser.h deleted file mode 100644 index 635e548..0000000 --- a/modules_mobile/test/include/dpl/test/value_separated_parser.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file value_separated_parser.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Parser for some value seperated files/data - */ - -#ifndef VALUE_SEPARATED_PARSER_H -#define VALUE_SEPARATED_PARSER_H - -#include -#include -#include - -#include -#include - -namespace DPL { - -typedef std::vector VSLine; -typedef std::vector VSResult; -typedef std::shared_ptr VSResultPtr; - -/** - * Value Seperated parser - * - * Requires following policy class: - * - * template - * struct CSVParserPolicy - * { - * static bool SkipLine(VSLine & ); - * static bool Validate(VSResultPtr& result); - * }; - */ -template -class VSParser : public AbstractInputParser -{ -public: - VSParser() : m_switchLine(true), m_result(new VSResult()) {} - - void ConsumeToken(std::unique_ptr && token) - { - if(m_switchLine) - { - m_result->push_back(VSLine()); - m_switchLine = false; - } - if(token->isNewLine()) - { - if(ParserPolicy::SkipLine(*m_result->rbegin())) - { - m_result->pop_back(); - } - m_switchLine = true; - } - else - { - m_result->rbegin()->push_back(token->cell()); - } - } - - bool IsStateValid() - { - return ParserPolicy::Validate(m_result); - } - - VSResultPtr GetResult() const - { - return m_result; - } - -private: - bool m_switchLine; - VSResultPtr m_result; -}; - -} - -#endif diff --git a/modules_mobile/test/include/dpl/test/value_separated_policies.h b/modules_mobile/test/include/dpl/test/value_separated_policies.h deleted file mode 100644 index c432703..0000000 --- a/modules_mobile/test/include/dpl/test/value_separated_policies.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file value_separated_policies.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Example policy classes for some value seperated files/data - */ - -#ifndef VALUE_SEPARATED_POLICIES_H -#define VALUE_SEPARATED_POLICIES_H - -#include -#include -#include - -namespace DPL { - -struct CSVTokenizerPolicy -{ - static std::string GetSeperators(); //cells in line are separated by given characters - static bool SkipEmpty(); //if cell is empty, shoudl I skip? - static void PrepareValue(std::string &); //transform each value - static bool TryAgainAtEnd(int); //read is nonblocking so dat may not be yet available, should I retry? -}; - -struct CSVParserPolicy -{ - static bool SkipLine(const std::vector & ); //should I skip whole readline? - static bool Validate(std::shared_ptr > > & result); //validate and adjust output data -}; - -} - -#endif diff --git a/modules_mobile/test/include/dpl/test/value_separated_reader.h b/modules_mobile/test/include/dpl/test/value_separated_reader.h deleted file mode 100644 index 8e78aaa..0000000 --- a/modules_mobile/test/include/dpl/test/value_separated_reader.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file value_separated_reader.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Reader for some value seperated files/data - * - * This is parser for files containing lines with values seperated with custom charaters. - * Purpose of this is to parse output similar to csv and hide (no need for rewriting) - * buffers, reads, code errors. Result is two dimensional array. - * - * Reader is designed as class configured with policies classes: - * http://en.wikipedia.org/wiki/Policy-based_design - */ - -#ifndef VALUE_SEPARATED_READER_H -#define VALUE_SEPARATED_READER_H - -#include -#include -#include -#include -#include - -namespace DPL { - -/** - * Reader for input with values separated with defined characters - * - * Usage: - * - define both policies classes for defining and customize exact behaviour of reader - * - make typedef for VSReader template instance with your policies - * - */ -template -class VSReader : public AbstractInputReader -{ -public: - VSReader(std::shared_ptr wia) - : AbstractInputReader(wia, - std::unique_ptr(new VSParser()), - std::unique_ptr(new VSTokenizer())) - {} -}; - -typedef VSReader CSVReader; - -} - -#endif diff --git a/modules_mobile/test/include/dpl/test/value_separated_tokenizer.h b/modules_mobile/test/include/dpl/test/value_separated_tokenizer.h deleted file mode 100644 index 13403b5..0000000 --- a/modules_mobile/test/include/dpl/test/value_separated_tokenizer.h +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file value_separated_tokenizer.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Tokenizer for some value seperated files/data - */ - -#ifndef VALUE_SEPARATED_TOKENIZER_H -#define VALUE_SEPARATED_TOKENIZER_H - -#include -#include -#include - - -namespace DPL { - -/** - * Value Sperated tokenizer - * - * Requires following policy class: - * - * struct TokenizerPolicy - * { - * static std::string GetSeperators(); - * static bool SkipEmpty(); - * static void PrepareValue(std::string & value); - * }; - */ -template -class VSTokenizer : public AbstractInputTokenizer -{ -public: - VSTokenizer() {} - - void Reset(std::shared_ptr ia) - { - AbstractInputTokenizer::Reset(ia); - m_queue.Clear(); - m_finished = false; - m_newline = false; - } - - std::unique_ptr GetNextToken() - { - std::unique_ptr token; - std::string data; - char byte; - int tryNumber = 0; - - while(true) - { - //check if newline was approched - if(m_newline) - { - token.reset(new VSToken()); - m_newline = false; - return token; - } - - //read next data - if(m_queue.Empty()) - { - if(m_finished) - { - return token; - } - else - { - auto baptr = m_input->Read(4096); - if(baptr.get() == 0) - { - ThrowMsg(Exception::TokenizerError, "Input read failed"); - } - if(baptr->Empty()) - { - if(TokenizerPolicy::TryAgainAtEnd(tryNumber)) - { - ++tryNumber; - continue; - } - m_finished = true; - return token; - } - m_queue.AppendMoveFrom(*baptr); - } - } - - //process - m_queue.FlattenConsume(&byte, 1); //queue uses pointer to consume bytes, this do not causes reallocations - if(byte == '\n') - { - m_newline = true; - if(!data.empty() || !TokenizerPolicy::SkipEmpty()) - { - ProduceString(token, data); - return token; - } - } - else if(TokenizerPolicy::GetSeperators().find(byte) != std::string::npos) - { - if(!data.empty() || !TokenizerPolicy::SkipEmpty()) - { - ProduceString(token, data); - return token; - } - } - else - { - data += byte; - } - } - } - - bool IsStateValid() - { - if(!m_queue.Empty() && m_finished) return false; - return true; - } - -protected: - void ProduceString(std::unique_ptr & token, std::string & data) - { - TokenizerPolicy::PrepareValue(data); - token.reset(new VSToken(data)); - } - - BinaryQueue m_queue; - bool m_finished; - bool m_newline; -}; - -} - -#endif diff --git a/modules_mobile/test/include/dpl/test/value_separated_tokens.h b/modules_mobile/test/include/dpl/test/value_separated_tokens.h deleted file mode 100644 index 3c49157..0000000 --- a/modules_mobile/test/include/dpl/test/value_separated_tokens.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file value_separated_tokens.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Token class for some value seperated files/data - */ - -#ifndef VALUE_SEPARATED_TOKENS_H -#define VALUE_SEPARATED_TOKENS_H - -#include - -namespace DPL { - -class VSToken -{ -public: - VSToken(const std::string & c); - VSToken(); //newline token - no new class to simplify - const std::string & cell() const; - - bool isNewLine(); -private: - bool m_newline; - std::string m_cell; -}; - -} - -#endif diff --git a/modules_mobile/test/src/process_pipe.cpp b/modules_mobile/test/src/process_pipe.cpp deleted file mode 100644 index 68c910f..0000000 --- a/modules_mobile/test/src/process_pipe.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file process_pipe.cpp - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @version 1.0 - * @brief This file is the implementation pipe from process - */ - -#include -#include - -namespace DPL { - -ProcessPipe::ProcessPipe(PipeErrorPolicy err) : m_file(NULL), m_errPolicy(err) -{ -} - -ProcessPipe::~ProcessPipe() -{ -} - -void ProcessPipe::Open(const std::string & command) -{ - if(m_file != NULL) - { - ThrowMsg(Exception::DoubleOpen, "Trying to open pipe second time. Close it first"); - } - - std::string stdErrRedirection; - switch(m_errPolicy) - { - case PipeErrorPolicy::NONE: break; - case PipeErrorPolicy::OFF: stdErrRedirection = " 2>/dev/null"; break; - case PipeErrorPolicy::PIPE: stdErrRedirection = " 2>&1"; break; - default: break; - } - - std::string fcommand = command + stdErrRedirection; - FILE * file = popen(fcommand.c_str(), "r"); - - // Throw an exception if an error occurred - if (file == NULL) { - ThrowMsg(FileInput::Exception::OpenFailed, fcommand); - } - - // Save new descriptor - m_file = file; - m_fd = fileno(m_file); - - LogPedantic("Opened pipe: " << fcommand); -} - -void ProcessPipe::Close() -{ - if (m_fd == -1) { - return; - } - - if (pclose(m_file) == -1) { - Throw(FileInput::Exception::CloseFailed); - } - - m_fd = -1; - m_file = NULL; - - LogPedantic("Closed pipe"); -} - -} diff --git a/modules_mobile/test/src/test_results_collector.cpp b/modules_mobile/test/src/test_results_collector.cpp deleted file mode 100644 index 025dd84..0000000 --- a/modules_mobile/test/src/test_results_collector.cpp +++ /dev/null @@ -1,975 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_results_collector.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief Implementation file some concrete TestResulstsCollector - */ -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#define GREEN_RESULT_OK "[%s%s%s]\n", BOLD_GREEN_BEGIN, " OK ", \ - BOLD_GREEN_END - -namespace DPL { -namespace Test { -namespace { -const char *DEFAULT_HTML_FILE_NAME = "index.html"; -const char *DEFAULT_TAP_FILE_NAME = "results.tap"; -const char *DEFAULT_XML_FILE_NAME = "results.xml"; - -bool ParseCollectorFileArg(const std::string &arg, std::string &filename) -{ - const std::string argname = "--file="; - if (arg.find(argname) == 0 ) { - filename = arg.substr(argname.size()); - return true; - } - return false; -} - -class Statistic -{ - public: - Statistic() : - m_failed(0), - m_ignored(0), - m_passed(0), - m_count(0) - {} - - void AddTest(TestResultsCollectorBase::FailStatus::Type type) - { - ++m_count; - switch (type) { - case TestResultsCollectorBase::FailStatus::INTERNAL: - case TestResultsCollectorBase::FailStatus::FAILED: ++m_failed; - break; - case TestResultsCollectorBase::FailStatus::IGNORED: ++m_ignored; - break; - case TestResultsCollectorBase::FailStatus::NONE: ++m_passed; - break; - default: - Assert(false && "Bad FailStatus"); - } - } - - std::size_t GetTotal() const - { - return m_count; - } - std::size_t GetPassed() const - { - return m_passed; - } - std::size_t GetSuccesed() const - { - return m_passed; - } - std::size_t GetFailed() const - { - return m_failed; - } - std::size_t GetIgnored() const - { - return m_ignored; - } - float GetPassedOrIgnoredPercend() const - { - float passIgnoredPercent = - 100.0f * (static_cast(m_passed) - + static_cast(m_ignored)) - / static_cast(m_count); - return passIgnoredPercent; - } - - private: - std::size_t m_failed; - std::size_t m_ignored; - std::size_t m_passed; - std::size_t m_count; -}; - -class ConsoleCollector : - public TestResultsCollectorBase -{ - public: - static TestResultsCollectorBase* Constructor(); - - private: - ConsoleCollector() {} - - virtual void CollectCurrentTestGroupName(const std::string& name) - { - printf("Starting group %s\n", name.c_str()); - m_currentGroup = name; - } - - virtual void Finish() - { - using namespace DPL::Colors::Text; - - // Show result - FOREACH(group, m_groupsStats) { - PrintStats(group->first, group->second); - } - PrintStats("All tests together", m_stats); - } - - virtual void CollectResult(const std::string& id, - const std::string& /*description*/, - const FailStatus::Type status = FailStatus::NONE, - const std::string& reason = "") - { - using namespace DPL::Colors::Text; - std::string tmp = "'" + id + "' ..."; - - printf("Running test case %-60s", tmp.c_str()); - switch (status) { - case TestResultsCollectorBase::FailStatus::NONE: - printf(GREEN_RESULT_OK); - break; - case TestResultsCollectorBase::FailStatus::FAILED: - PrintfErrorMessage(" FAILED ", reason, true); - break; - case TestResultsCollectorBase::FailStatus::IGNORED: - PrintfIgnoredMessage("Ignored ", reason, true); - break; - case TestResultsCollectorBase::FailStatus::INTERNAL: - PrintfErrorMessage("INTERNAL", reason, true); - break; - default: - Assert(false && "Bad status"); - } - m_stats.AddTest(status); - m_groupsStats[m_currentGroup].AddTest(status); - } - - void PrintfErrorMessage(const char* type, - const std::string& message, - bool verbosity) - { - using namespace DPL::Colors::Text; - if (verbosity) { - printf("[%s%s%s] %s%s%s\n", - BOLD_RED_BEGIN, - type, - BOLD_RED_END, - BOLD_YELLOW_BEGIN, - message.c_str(), - BOLD_YELLOW_END); - } else { - printf("[%s%s%s]\n", - BOLD_RED_BEGIN, - type, - BOLD_RED_END); - } - } - - void PrintfIgnoredMessage(const char* type, - const std::string& message, - bool verbosity) - { - using namespace DPL::Colors::Text; - if (verbosity) { - printf("[%s%s%s] %s%s%s\n", - CYAN_BEGIN, - type, - CYAN_END, - BOLD_GOLD_BEGIN, - message.c_str(), - BOLD_GOLD_END); - } else { - printf("[%s%s%s]\n", - CYAN_BEGIN, - type, - CYAN_END); - } - } - - void PrintStats(const std::string& title, const Statistic& stats) - { - using namespace DPL::Colors::Text; - printf("\n%sResults [%s]: %s\n", BOLD_GREEN_BEGIN, - title.c_str(), BOLD_GREEN_END); - printf("%s%s%3d%s\n", - CYAN_BEGIN, - "Total tests: ", - stats.GetTotal(), - CYAN_END); - printf(" %s%s%3d%s\n", - CYAN_BEGIN, - "Succeeded: ", - stats.GetPassed(), - CYAN_END); - printf(" %s%s%3d%s\n", - CYAN_BEGIN, - "Failed: ", - stats.GetFailed(), - CYAN_END); - printf(" %s%s%3d%s\n", - CYAN_BEGIN, - "Ignored: ", - stats.GetIgnored(), - CYAN_END); - } - - Statistic m_stats; - std::map m_groupsStats; - std::string m_currentGroup; -}; - -TestResultsCollectorBase* ConsoleCollector::Constructor() -{ - return new ConsoleCollector(); -} - -class HtmlCollector : - public TestResultsCollectorBase -{ - public: - static TestResultsCollectorBase* Constructor(); - - private: - HtmlCollector() : m_filename(DEFAULT_HTML_FILE_NAME) {} - - virtual void CollectCurrentTestGroupName(const std::string& name) - { - fprintf(m_fp.Get(), "Starting group %s", name.c_str()); - m_currentGroup = name; - } - - virtual bool Configure() - { - m_fp.Reset(fopen(m_filename.c_str(), "w")); - if (!m_fp) { - LogPedantic("Could not open file " << m_filename << " for writing"); - return false; - } - return true; - } - virtual std::string CollectorSpecificHelp() const - { - return "--file= - name of file for output\n" - " default - index.html\n"; - } - - virtual void Start() - { - Assert(!!m_fp && "File handle must not be null"); - fprintf(m_fp.Get(), - "\n"); - fprintf(m_fp.Get(), - "\n"); - fprintf(m_fp.Get(), "\n"); - fprintf(m_fp.Get(), "
\n");
-        fprintf(m_fp.Get(), "\n");
-    }
-
-    virtual void Finish()
-    {
-        using namespace DPL::Colors::Html;
-        // Show result
-        FOREACH(group, m_groupsStats) {
-            PrintStats(group->first, group->second);
-        }
-        PrintStats("All tests together", m_stats);
-        fprintf(m_fp.Get(), "\n");
-        fprintf(m_fp.Get(), "
\n"); - fprintf(m_fp.Get(), "\n"); - fprintf(m_fp.Get(), "\n"); - } - - virtual bool ParseCollectorSpecificArg(const std::string& arg) - { - return ParseCollectorFileArg(arg, m_filename); - } - - virtual void CollectResult(const std::string& id, - const std::string& /*description*/, - const FailStatus::Type status = FailStatus::NONE, - const std::string& reason = "") - { - using namespace DPL::Colors::Html; - std::string tmp = "'" + id + "' ..."; - - fprintf(m_fp.Get(), "Running test case %-100s", tmp.c_str()); - switch (status) { - case TestResultsCollectorBase::FailStatus::NONE: - fprintf(m_fp.Get(), GREEN_RESULT_OK); - break; - case TestResultsCollectorBase::FailStatus::FAILED: - PrintfErrorMessage(" FAILED ", reason, true); - break; - case TestResultsCollectorBase::FailStatus::IGNORED: - PrintfIgnoredMessage("Ignored ", reason, true); - break; - case TestResultsCollectorBase::FailStatus::INTERNAL: - PrintfErrorMessage("INTERNAL", reason, true); - break; - default: - Assert(false && "Bad status"); - } - m_groupsStats[m_currentGroup].AddTest(status); - m_stats.AddTest(status); - } - - void PrintfErrorMessage(const char* type, - const std::string& message, - bool verbosity) - { - using namespace DPL::Colors::Html; - if (verbosity) { - fprintf(m_fp.Get(), - "[%s%s%s] %s%s%s\n", - BOLD_RED_BEGIN, - type, - BOLD_RED_END, - BOLD_YELLOW_BEGIN, - message.c_str(), - BOLD_YELLOW_END); - } else { - fprintf(m_fp.Get(), - "[%s%s%s]\n", - BOLD_RED_BEGIN, - type, - BOLD_RED_END); - } - } - - void PrintfIgnoredMessage(const char* type, - const std::string& message, - bool verbosity) - { - using namespace DPL::Colors::Html; - - if (verbosity) { - fprintf(m_fp.Get(), - "[%s%s%s] %s%s%s\n", - CYAN_BEGIN, - type, - CYAN_END, - BOLD_GOLD_BEGIN, - message.c_str(), - BOLD_GOLD_END); - } else { - fprintf(m_fp.Get(), - "[%s%s%s]\n", - CYAN_BEGIN, - type, - CYAN_END); - } - } - - void PrintStats(const std::string& name, const Statistic& stats) - { - using namespace DPL::Colors::Html; - fprintf( - m_fp.Get(), "\n%sResults [%s]:%s\n", BOLD_GREEN_BEGIN, - name.c_str(), BOLD_GREEN_END); - fprintf( - m_fp.Get(), "%s%s%3d%s\n", CYAN_BEGIN, - "Total tests: ", stats.GetTotal(), CYAN_END); - fprintf( - m_fp.Get(), " %s%s%3d%s\n", CYAN_BEGIN, - "Succeeded: ", stats.GetPassed(), CYAN_END); - fprintf( - m_fp.Get(), " %s%s%3d%s\n", CYAN_BEGIN, - "Failed: ", stats.GetFailed(), CYAN_END); - fprintf( - m_fp.Get(), " %s%s%3d%s\n", CYAN_BEGIN, - "Ignored: ", stats.GetIgnored(), CYAN_END); - } - - std::string m_filename; - ScopedFClose m_fp; - Statistic m_stats; - std::string m_currentGroup; - std::map m_groupsStats; -}; - -TestResultsCollectorBase* HtmlCollector::Constructor() -{ - return new HtmlCollector(); -} - -class XmlCollector : - public TestResultsCollectorBase -{ - public: - static TestResultsCollectorBase* Constructor(); - - private: - XmlCollector() : m_filename(DEFAULT_XML_FILE_NAME) {} - - virtual void CollectCurrentTestGroupName(const std::string& name) - { - std::size_t pos = GetCurrentGroupPosition(); - if (std::string::npos != pos) { - GroupFinish(pos); - FlushOutput(); - m_stats = Statistic(); - } - - pos = m_outputBuffer.find(""); - if (std::string::npos == pos) { - ThrowMsg(DPL::Exception, "Could not find test suites closing tag"); - } - GroupStart(pos, name); - } - - void GroupStart(const std::size_t pos, const std::string& name) - { - std::stringstream groupHeader; - groupHeader << "\n\t"; - - groupHeader << "\n\t\t"; - groupHeader << - "\n\t\t\t"; - groupHeader << "\n\t\t"; - - groupHeader << "\n\t"; - - m_outputBuffer.insert(pos - 1, groupHeader.str()); - } - - virtual bool Configure() - { - m_fp.Reset(fopen(m_filename.c_str(), "w")); - if (!m_fp) { - LogPedantic("Could not open file " << m_filename << " for writing"); - return false; - } - return true; - } - - virtual std::string CollectorSpecificHelp() const - { - return "--file= - name of file for output\n" - " default - results.xml\n"; - } - - virtual void Start() - { - Assert(!!m_fp && "File handle must not be null"); - m_outputBuffer.append("\n"); - m_outputBuffer.append("\n"); - FlushOutput(); - } - - virtual void Finish() - { - std::size_t pos = GetCurrentGroupPosition(); - if (std::string::npos != pos) { - GroupFinish(pos); - FlushOutput(); - } - } - - virtual bool ParseCollectorSpecificArg(const std::string& arg) - { - return ParseCollectorFileArg(arg, m_filename); - } - - virtual void CollectResult(const std::string& id, - const std::string& /*description*/, - const FailStatus::Type status = FailStatus::NONE, - const std::string& reason = "") - { - m_resultBuffer.erase(); - m_resultBuffer.append("\t\t\n"); - break; - case TestResultsCollectorBase::FailStatus::FAILED: - m_resultBuffer.append(" status=\"FAILED\">\n"); - PrintfErrorMessage("FAILED", EscapeSpecialCharacters(reason), true); - m_resultBuffer.append("\t\t\n"); - break; - case TestResultsCollectorBase::FailStatus::IGNORED: - m_resultBuffer.append(" status=\"Ignored\">\n"); - PrintfIgnoredMessage("Ignored", EscapeSpecialCharacters( - reason), true); - m_resultBuffer.append("\t\t\n"); - break; - case TestResultsCollectorBase::FailStatus::INTERNAL: - m_resultBuffer.append(" status=\"FAILED\">\n"); - PrintfErrorMessage("INTERNAL", EscapeSpecialCharacters( - reason), true); - m_resultBuffer.append("\t\t"); - break; - default: - Assert(false && "Bad status"); - } - std::size_t group_pos = GetCurrentGroupPosition(); - if (std::string::npos == group_pos) { - ThrowMsg(DPL::Exception, "No current group set"); - } - - std::size_t last_case_pos = m_outputBuffer.find( - "\n"); - } else { - m_resultBuffer.append("\t\t\t\n"); - } - } - - void PrintfIgnoredMessage(const char* type, - const std::string& message, - bool verbosity) - { - if (verbosity) { - m_resultBuffer.append("\t\t\t\n"); - } else { - m_resultBuffer.append("\t\t\t\n"); - } - } - - std::string EscapeSpecialCharacters(std::string s) - { - for (unsigned int i = 0; i < s.size();) { - switch (s[i]) { - case '"': - s.erase(i, 1); - s.insert(i, """); - i += 6; - break; - - case '&': - s.erase(i, 1); - s.insert(i, "&"); - i += 5; - break; - - case '<': - s.erase(i, 1); - s.insert(i, "<"); - i += 4; - break; - - case '>': - s.erase(i, 1); - s.insert(i, ">"); - i += 4; - break; - - case '\'': - s.erase(i, 1); - s.insert(i, "'"); - i += 5; - break; - default: - ++i; - break; - } - } - return s; - } - - std::string m_filename; - ScopedFClose m_fp; - Statistic m_stats; - std::string m_outputBuffer; - std::string m_resultBuffer; -}; - -TestResultsCollectorBase* XmlCollector::Constructor() -{ - return new XmlCollector(); -} - -class CSVCollector : - public TestResultsCollectorBase -{ - public: - static TestResultsCollectorBase* Constructor(); - - private: - CSVCollector() {} - - virtual void Start() - { - printf("GROUP;ID;RESULT;REASON\n"); - } - - virtual void CollectCurrentTestGroupName(const std::string& name) - { - m_currentGroup = name; - } - - virtual void CollectResult(const std::string& id, - const std::string& /*description*/, - const FailStatus::Type status = FailStatus::NONE, - const std::string& reason = "") - { - std::string statusMsg = ""; - switch (status) { - case TestResultsCollectorBase::FailStatus::NONE: statusMsg = "OK"; - break; - case TestResultsCollectorBase::FailStatus::FAILED: statusMsg = "FAILED"; - break; - case TestResultsCollectorBase::FailStatus::IGNORED: statusMsg = - "IGNORED"; - break; - case TestResultsCollectorBase::FailStatus::INTERNAL: statusMsg = - "FAILED"; - break; - default: - Assert(false && "Bad status"); - } - printf("%s;%s;%s;%s\n", - m_currentGroup.c_str(), - id.c_str(), - statusMsg.c_str(), - reason.c_str()); - } - - std::string m_currentGroup; -}; - -TestResultsCollectorBase* CSVCollector::Constructor() -{ - return new CSVCollector(); -} -} - -class TAPCollector : - public TestResultsCollectorBase -{ - public: - static TestResultsCollectorBase* Constructor(); - - private: - TAPCollector() : m_filename(DEFAULT_TAP_FILE_NAME) {} - - virtual bool Configure() - { - m_output.open(m_filename.c_str(), std::ios_base::trunc); - if (m_output.fail()) { - LogError("Can't open output file: " << m_filename); - return false; - } - return true; - } - virtual std::string CollectorSpecificHelp() const - { - std::string retVal = "--file= - name of file for output\n" - " default - "; - retVal += DEFAULT_TAP_FILE_NAME; - retVal += "\n"; - return retVal; - } - - virtual void Start() - { - Assert(m_output.good() && "Output file must be opened."); - m_output << "TAP version 13" << std::endl; - m_testIndex = 0; - } - - virtual void Finish() - { - m_output << "1.." << m_testIndex << std::endl; - m_output << m_collectedData.rdbuf(); - m_output.close(); - } - - virtual bool ParseCollectorSpecificArg(const std::string& arg) - { - return ParseCollectorFileArg(arg, m_filename); - } - - virtual void CollectResult(const std::string& id, - const std::string& description, - const FailStatus::Type status = FailStatus::NONE, - const std::string& reason = "") - { - m_testIndex++; - switch (status) { - case TestResultsCollectorBase::FailStatus::NONE: - LogBasicTAP(true, id, description); - endTAPLine(); - break; - case TestResultsCollectorBase::FailStatus::FAILED: - LogBasicTAP(false, id, description); - endTAPLine(); - break; - case TestResultsCollectorBase::FailStatus::IGNORED: - LogBasicTAP(true, id, description); - m_collectedData << " # skip " << reason; - endTAPLine(); - break; - case TestResultsCollectorBase::FailStatus::INTERNAL: - LogBasicTAP(true, id, description); - endTAPLine(); - m_collectedData << " ---" << std::endl; - m_collectedData << " message: " << reason << std::endl; - m_collectedData << " severity: Internal" << std::endl; - m_collectedData << " ..." << std::endl; - break; - default: - Assert(false && "Bad status"); - } - } - - void LogBasicTAP(bool isOK, const std::string& id, - const std::string& description) - { - if (!isOK) { - m_collectedData << "not "; - } - m_collectedData << "ok " << m_testIndex << " [" << - id << "] " << description; - } - - void endTAPLine() - { - m_collectedData << std::endl; - } - - std::string m_filename; - std::stringstream m_collectedData; - std::ofstream m_output; - int m_testIndex; -}; - -TestResultsCollectorBase* TAPCollector::Constructor() -{ - return new TAPCollector(); -} - -void TestResultsCollectorBase::RegisterCollectorConstructor( - const std::string& name, - TestResultsCollectorBase::CollectorConstructorFunc func) -{ - Assert(m_constructorsMap.find(name) == m_constructorsMap.end()); - m_constructorsMap[name] = func; -} - -TestResultsCollectorBase* TestResultsCollectorBase::Create( - const std::string& name) -{ - ConstructorsMap::iterator found = m_constructorsMap.find(name); - if (found != m_constructorsMap.end()) { - return found->second(); - } else { - return NULL; - } -} - -std::vector TestResultsCollectorBase::GetCollectorsNames() -{ - std::vector list; - FOREACH(it, m_constructorsMap) - { - list.push_back(it->first); - } - return list; -} - -TestResultsCollectorBase::ConstructorsMap TestResultsCollectorBase:: - m_constructorsMap; - -namespace { -static int RegisterCollectorConstructors(); -static const int RegisterHelperVariable = RegisterCollectorConstructors(); -int RegisterCollectorConstructors() -{ - (void)RegisterHelperVariable; - - TestResultsCollectorBase::RegisterCollectorConstructor( - "text", - &ConsoleCollector::Constructor); - TestResultsCollectorBase::RegisterCollectorConstructor( - "html", - &HtmlCollector::Constructor); - TestResultsCollectorBase::RegisterCollectorConstructor( - "csv", - &CSVCollector::Constructor); - TestResultsCollectorBase::RegisterCollectorConstructor( - "tap", - &TAPCollector::Constructor); - TestResultsCollectorBase::RegisterCollectorConstructor( - "xml", - &XmlCollector::Constructor); - - return 0; -} -} -} -} -#undef GREEN_RESULT_OK diff --git a/modules_mobile/test/src/test_runner.cpp b/modules_mobile/test/src/test_runner.cpp deleted file mode 100644 index 594ba0c..0000000 --- a/modules_mobile/test/src/test_runner.cpp +++ /dev/null @@ -1,698 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_runner.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of test runner - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -IMPLEMENT_SINGLETON(DPL::Test::TestRunner) - -namespace { - -std::string getXMLNode(xmlNodePtr node) -{ - std::string ret; - xmlChar * value = xmlNodeGetContent(node); - ret = std::string(reinterpret_cast(value)); - xmlFree(value); - return ret; -} - -} - - -namespace DPL { -namespace Test { -namespace // anonymous -{ -std::string BaseName(std::string aPath) -{ - ScopedFree path(strdup(aPath.c_str())); - if (NULL == path.Get()) { - throw std::bad_alloc(); - } - char* baseName = basename(path.Get()); - std::string retValue = baseName; - return retValue; -} -} // namespace anonymous - -//! \brief Failed test message creator -//! -//! \param[in] aTest string for tested expression -//! \param[in] aFile source file name -//! \param[in] aLine source file line -//! \param[in] aMessage error message -TestRunner::TestFailed::TestFailed(const char* aTest, - const char* aFile, - int aLine, - const std::string &aMessage) -{ - std::ostringstream assertMsg; - assertMsg << "[" << BaseName(aFile) << ":" << aLine - << "] Assertion failed (" - << aTest << ") " << aMessage; - m_message = assertMsg.str(); -} - -TestRunner::TestFailed::TestFailed(const std::string &message) -{ - m_message = message; -} - -void TestRunner::RegisterTest(const char *testName, TestCase proc) -{ - m_testGroups[m_currentGroup].push_back(TestCaseStruct(testName, proc)); -} - -void TestRunner::InitGroup(const char* name) -{ - m_currentGroup = name; -} - -void TestRunner::normalizeXMLTag(std::string& str, const std::string& testcase) -{ - //Add testcase if missing - std::string::size_type pos = str.find(testcase); - if(pos != 0) - { - str = testcase + "_" + str; - } - - //dpl test runner cannot have '-' character in name so it have to be replaced - // for TCT case to make comparision works - std::replace(str.begin(), str.end(), '-', '_'); -} - -bool TestRunner::filterGroupsByXmls(const std::vector & files) -{ - DECLARE_EXCEPTION_TYPE(DPL::Exception, XMLError) - - const std::string idPath = "/test_definition/suite/set/testcase/@id"; - - bool success = true; - std::map casesMap; - - std::string testsuite; - if(!m_testGroups.empty()) - { - for(TestCaseGroupMap::const_iterator cit = m_testGroups.begin(); cit != m_testGroups.end(); ++cit) - { - if(!cit->second.empty()) - { - for(TestCaseStructList::const_iterator cj = cit->second.begin(); cj != cit->second.end(); ++cj) - { - std::string name = cj->name; - std::string::size_type st = name.find('_'); - if(st != std::string::npos) - { - name = name.substr(0, st); - testsuite = name; - break; - } - } - if(!testsuite.empty()) break; - } - } - } - - xmlInitParser(); - LIBXML_TEST_VERSION - xmlXPathInit(); - - Try - { - FOREACH(file, files) - { - xmlDocPtr doc; - xmlXPathContextPtr xpathCtx; - - doc = xmlReadFile(file->c_str(), NULL, 0); - if (doc == NULL) { - ThrowMsg(XMLError, "File Problem"); - } else { - //context - xpathCtx = xmlXPathNewContext(doc); - if (xpathCtx == NULL) { - ThrowMsg(XMLError, - "Error: unable to create new XPath context\n"); - } - xpathCtx->node = xmlDocGetRootElement(doc); - } - - std::string result; - xmlXPathObjectPtr xpathObject; - //get requested node's values - xpathObject = xmlXPathEvalExpression(BAD_CAST idPath.c_str(), xpathCtx); - if (xpathObject == NULL) - { - ThrowMsg(XMLError, "XPath evaluation failure: " << idPath); - } - xmlNodeSetPtr nodes = xpathObject->nodesetval; - unsigned size = (nodes) ? nodes->nodeNr : 0; - LogDebug("Found " << size << " nodes matching xpath"); - for(unsigned i = 0; i < size; ++i) - { - LogPedantic("Type: " << nodes->nodeTab[i]->type); - if (nodes->nodeTab[i]->type == XML_ATTRIBUTE_NODE) { - xmlNodePtr curNode = nodes->nodeTab[i]; - result = getXMLNode(curNode); - LogPedantic("Result: " << result); - normalizeXMLTag(result, testsuite); - casesMap.insert(make_pair(result, false)); - } - } - //Cleanup of XPath data - xmlXPathFreeObject(xpathObject); - xmlXPathFreeContext(xpathCtx); - xmlFreeDoc(doc); - } - } - Catch(XMLError) - { - LogError("Libxml error: " << _rethrown_exception.DumpToString()); - success = false; - } - xmlCleanupParser(); - - if(!filterByXML(casesMap)) - { - success = false; - } - - return success; -} - -bool TestRunner::filterByXML(std::map & casesMap) -{ - FOREACH(group, m_testGroups) { - TestCaseStructList newList; - FOREACH(iterator, group->second) - { - if (casesMap.find(iterator->name) != casesMap.end()) { - casesMap[iterator->name] = true; - newList.push_back(*iterator); - } - } - group->second = newList; - } - FOREACH(cs, casesMap) - { - if(cs->second == false) - { - LogError("Cannot find testcase from XML file: " << cs->first); - return false; - } - } - return true; -} - -TestRunner::Status TestRunner::RunTestCase(const TestCaseStruct& testCase) -{ - try { - testCase.proc(); - } catch (const TestFailed &e) { - // Simple test failure - CollectResult(testCase.name, - "", - TestResultsCollectorBase::FailStatus::FAILED, - e.GetMessage()); - return FAILED; - } catch (const Ignored &e) { - if (m_runIgnored) { - // Simple test have to be implemented - CollectResult(testCase.name, - "", - TestResultsCollectorBase::FailStatus::IGNORED, - e.GetMessage()); - } - - return IGNORED; - } catch (const DPL::Exception &e) { - // DPL exception failure - CollectResult(testCase.name, - "", - TestResultsCollectorBase::FailStatus::INTERNAL, - "DPL exception:" + e.GetMessage()); - - return FAILED; - } catch (const std::exception &) { - // std exception failure - CollectResult(testCase.name, - "", - TestResultsCollectorBase::FailStatus::INTERNAL, - "std exception"); - - return FAILED; - } catch (...) { - // Unknown exception failure - CollectResult(testCase.name, - "", - TestResultsCollectorBase::FailStatus::INTERNAL, - "unknown exception"); - - return FAILED; - } - - CollectResult(testCase.name, - "", - TestResultsCollectorBase::FailStatus::NONE); - - // Everything OK - return PASS; -} - -void TestRunner::RunTests() -{ - using namespace DPL::Colors::Text; - - Banner(); - std::for_each(m_collectors.begin(), - m_collectors.end(), - [] (const TestResultsCollectors::value_type & collector) - { - collector.second->Start(); - }); - - unsigned count = 0; - FOREACH(group, m_testGroups) { - count += group->second.size(); - } - fprintf(stderr, "%sFound %d testcases...%s\n", GREEN_BEGIN, count, GREEN_END); - fprintf(stderr, "%s%s%s\n", GREEN_BEGIN, "Running tests...", GREEN_END); - FOREACH(group, m_testGroups) { - TestCaseStructList list = group->second; - if (!list.empty()) { - std::for_each( - m_collectors.begin(), - m_collectors.end(), - [&group](const TestResultsCollectors::value_type & collector) - { - collector.second-> - CollectCurrentTestGroupName(group->first); - }); - list.sort(); - - for (TestCaseStructList::const_iterator iterator = list.begin(); - iterator != list.end(); - ++iterator) - { - TestCaseStruct test = *iterator; - if (m_startTestId == test.name) { - m_startTestId = ""; - } - - if (m_startTestId.empty()) { - RunTestCase(test); - } - if (m_terminate == true) { - // Terminate quietly without any logs - return; - } - } - } - } - - std::for_each(m_collectors.begin(), - m_collectors.end(), - [] (const TestResultsCollectors::value_type & collector) - { - collector.second->Finish(); - }); - - // Finished - fprintf(stderr, "%s%s%s\n\n", GREEN_BEGIN, "Finished", GREEN_END); -} - -void TestRunner::CollectResult( - const std::string& id, - const std::string& description, - const TestResultsCollectorBase::FailStatus::Type status, - const std::string& reason) -{ - std::for_each(m_collectors.begin(), - m_collectors.end(), - [&](const TestResultsCollectors::value_type & collector) - { - collector.second->CollectResult(id, - description, - status, - reason); - }); -} - -void TestRunner::Banner() -{ - using namespace DPL::Colors::Text; - fprintf(stderr, - "%s%s%s\n", - BOLD_GREEN_BEGIN, - "DPL tests runner", - BOLD_GREEN_END); - fprintf(stderr, - "%s%s%s%s\n\n", - GREEN_BEGIN, - "Build: ", - __TIMESTAMP__, - GREEN_END); -} - -void TestRunner::InvalidArgs(const std::string& message) -{ - using namespace DPL::Colors::Text; - fprintf(stderr, - "%s%s%s\n", - BOLD_RED_BEGIN, - message.c_str(), - BOLD_RED_END); -} - -void TestRunner::Usage() -{ - fprintf(stderr, "Usage: runner [options]\n\n"); - fprintf(stderr, "Output type:\n"); - fprintf(stderr, " --output= --output= ...\n"); - fprintf(stderr, "\n possible output types:\n"); - FOREACH(type, TestResultsCollectorBase::GetCollectorsNames()) { - fprintf(stderr, " --output=%s\n", type->c_str()); - } - fprintf(stderr, "\n example:\n"); - fprintf(stderr, - " test-binary --output=text --output=xml --file=output.xml\n\n"); - fprintf(stderr, "Other parameters:\n"); - fprintf(stderr, - " --regexp='regexp'\t Only selected tests" - " which names match regexp run\n\n"); - fprintf(stderr, " --start=\tStart from concrete test id"); - fprintf(stderr, " --group=\t Run tests only from one group\n"); - fprintf(stderr, " --runignored\t Run also ignored tests\n"); - fprintf(stderr, " --list\t Show a list of Test IDs\n"); - fprintf(stderr, " --listgroups\t Show a list of Test Group names \n"); - fprintf(stderr, " --only-from-xml=\t Run only testcases specified in XML file \n" - " XML name is taken from attribute id=\"part1_part2\" as whole.\n" - " If part1 is not found (no _) then it is implicitily " - "set according to suite part1 from binary tests\n"); - fprintf( - stderr, - " --listingroup=\t Show a list of Test IDS in one group\n"); - fprintf(stderr, " --allowchildlogs\t Allow to print logs from child process on screen.\n"); - fprintf(stderr, " When active child process will be able to print logs on stdout and stderr.\n"); - fprintf(stderr, " Both descriptors will be closed after test.\n"); - fprintf(stderr, " --help\t This help\n\n"); - std::for_each(m_collectors.begin(), - m_collectors.end(), - [] (const TestResultsCollectors::value_type & collector) - { - fprintf(stderr, - "Output %s has specific args:\n", - collector.first.c_str()); - fprintf(stderr, - "%s\n", - collector.second-> - CollectorSpecificHelp().c_str()); - }); - fprintf(stderr, "For bug reporting, please write to:\n"); - fprintf(stderr, "\n"); -} - -int TestRunner::ExecTestRunner(int argc, char *argv[]) -{ - std::vector args; - for (int i = 0; i < argc; ++i) { - args.push_back(argv[i]); - } - return ExecTestRunner(args); -} - -void TestRunner::MarkAssertion() -{ - ++m_totalAssertions; -} - -int TestRunner::ExecTestRunner(const ArgsList& value) -{ - m_runIgnored = false; - ArgsList args = value; - // Parse command line - if (args.size() == 1) { - InvalidArgs(); - Usage(); - return -1; - } - - args.erase(args.begin()); - - bool showHelp = false; - bool justList = false; - std::vector xmlFiles; - - TestResultsCollectorBasePtr currentCollector; - - // Parse each argument - FOREACH(it, args) - { - std::string arg = *it; - const std::string regexp = "--regexp="; - const std::string output = "--output="; - const std::string groupId = "--group="; - const std::string runIgnored = "--runignored"; - const std::string listCmd = "--list"; - const std::string startCmd = "--start="; - const std::string listGroupsCmd = "--listgroups"; - const std::string listInGroup = "--listingroup="; - const std::string allowChildLogs = "--allowchildlogs"; - const std::string onlyFromXML = "--only-from-xml="; - - if (currentCollector) { - if (currentCollector->ParseCollectorSpecificArg(arg)) { - continue; - } - } - - if (arg.find(startCmd) == 0) { - arg.erase(0, startCmd.length()); - FOREACH(group, m_testGroups) { - FOREACH(tc, group->second) { - if (tc->name == arg) { - m_startTestId = arg; - break; - } - } - if (!m_startTestId.empty()) { - break; - } - } - if (!m_startTestId.empty()) { - continue; - } - InvalidArgs(); - fprintf(stderr, "Start test id has not been found\n"); - Usage(); - return 0; - } else if (arg.find(groupId) == 0) { - arg.erase(0, groupId.length()); - TestCaseGroupMap::iterator found = m_testGroups.find(arg); - if (found != m_testGroups.end()) { - std::string name = found->first; - TestCaseStructList newList = found->second; - m_testGroups.clear(); - m_testGroups[name] = newList; - } else { - fprintf(stderr, "Group %s not found\n", arg.c_str()); - InvalidArgs(); - Usage(); - return -1; - } - } else if (arg == runIgnored) { - m_runIgnored = true; - } else if (arg == listCmd) { - justList = true; - } else if (arg == listGroupsCmd) { - FOREACH(group, m_testGroups) { - printf("GR:%s\n", group->first.c_str()); - } - return 0; - } else if (arg.find(listInGroup) == 0) { - arg.erase(0, listInGroup.length()); - FOREACH(test, m_testGroups[arg]) { - printf("ID:%s\n", test->name.c_str()); - } - return 0; - } else if (arg.find(allowChildLogs) == 0) { - arg.erase(0, allowChildLogs.length()); - m_allowChildLogs = true; - } else if (arg == "--help") { - showHelp = true; - } else if (arg.find(output) == 0) { - arg.erase(0, output.length()); - if (m_collectors.find(arg) != m_collectors.end()) { - InvalidArgs( - "Multiple outputs of the same type are not supported!"); - Usage(); - return -1; - } - currentCollector.reset(TestResultsCollectorBase::Create(arg)); - if (!currentCollector) { - InvalidArgs("Unsupported output type!"); - Usage(); - return -1; - } - m_collectors[arg] = currentCollector; - } else if (arg.find(regexp) == 0) { - arg.erase(0, regexp.length()); - if (arg.length() == 0) { - InvalidArgs(); - Usage(); - return -1; - } - - if (arg[0] == '\'' && arg[arg.length() - 1] == '\'') { - arg.erase(0); - arg.erase(arg.length() - 1); - } - - if (arg.length() == 0) { - InvalidArgs(); - Usage(); - return -1; - } - - pcrecpp::RE re(arg.c_str()); - FOREACH(group, m_testGroups) { - TestCaseStructList newList; - FOREACH(iterator, group->second) - { - if (re.PartialMatch(iterator->name)) { - newList.push_back(*iterator); - } - } - group->second = newList; - } - } else if(arg.find(onlyFromXML) == 0) { - arg.erase(0, onlyFromXML.length()); - if (arg.length() == 0) { - InvalidArgs(); - Usage(); - return -1; - } - - if (arg[0] == '\'' && arg[arg.length() - 1] == '\'') { - arg.erase(0); - arg.erase(arg.length() - 1); - } - - if (arg.length() == 0) { - InvalidArgs(); - Usage(); - return -1; - } - - xmlFiles.push_back(arg); - } else { - InvalidArgs(); - Usage(); - return -1; - } - } - - if(!xmlFiles.empty()) - { - if(!filterGroupsByXmls(xmlFiles)) - { - fprintf(stderr, "XML file is not correct\n"); - return 0; - } - } - - if(justList) - { - FOREACH(group, m_testGroups) { - FOREACH(test, group->second) { - printf("ID:%s:%s\n", group->first.c_str(), test->name.c_str()); - } - } - return 0; - } - - currentCollector.reset(); - - // Show help - if (showHelp) { - Usage(); - return 0; - } - - if (m_collectors.empty()) { - TestResultsCollectorBasePtr collector( - TestResultsCollectorBase::Create("text")); - m_collectors["text"] = collector; - } - - for (auto it = m_collectors.begin(); it != m_collectors.end(); ++it) { - if (!it->second->Configure()) { - fprintf(stderr, "Could not configure selected output"); - return 0; - } - } - - // Run tests - RunTests(); - - return 0; -} - -bool TestRunner::getRunIgnored() const -{ - return m_runIgnored; -} - -void TestRunner::Terminate() -{ - m_terminate = true; -} - -bool TestRunner::GetAllowChildLogs() -{ - return m_allowChildLogs; -} - -} -} // namespace DPL diff --git a/modules_mobile/test/src/test_runner_child.cpp b/modules_mobile/test/src/test_runner_child.cpp deleted file mode 100644 index 8e793e8..0000000 --- a/modules_mobile/test/src/test_runner_child.cpp +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_runner_child.cpp - * @author Bartlomiej Grzelewski (b.grzelewski@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of test runner - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace { -const int CHILD_TEST_FAIL = 0; -const int CHILD_TEST_PASS = 1; -const int CHILD_TEST_IGNORED = 2; - -int closeOutput() { - int devnull; - int retcode = -1; - if (-1 == (devnull = TEMP_FAILURE_RETRY(open("/dev/null", O_WRONLY)))) - return -1; - - // replace stdout with /dev/null - if (-1 == TEMP_FAILURE_RETRY(dup2(devnull, STDOUT_FILENO))) - goto end; - - // replace stderr with /dev/null - if (-1 == TEMP_FAILURE_RETRY(dup2(devnull, STDERR_FILENO))) - goto end; - - retcode = 0; - -end: - close(devnull); - return retcode; -} - -} // namespace anonymous - -namespace DPL { -namespace Test { - -PipeWrapper::PipeWrapper() -{ - if (-1 == pipe(m_pipefd)) { - m_pipefd[0] = PIPE_CLOSED; - m_pipefd[1] = PIPE_CLOSED; - } -} - -PipeWrapper::~PipeWrapper() -{ - closeHelp(0); - closeHelp(1); -} - -bool PipeWrapper::isReady() -{ - return m_pipefd[0] != PIPE_CLOSED || m_pipefd[1] != PIPE_CLOSED; -} - -void PipeWrapper::setUsage(Usage usage) -{ - if (usage == READONLY) { - closeHelp(1); - } - if (usage == WRITEONLY) { - closeHelp(0); - } -} - -PipeWrapper::Status PipeWrapper::send(int code, std::string &message) -{ - if (m_pipefd[1] == PIPE_CLOSED) { - return ERROR; - } - - std::ostringstream output; - output << toBinaryString(code); - output << toBinaryString(static_cast(message.size())); - output << message; - - std::string binary = output.str(); - int size = binary.size(); - - if ((writeHelp(&size, - sizeof(int)) == ERROR) || - (writeHelp(binary.c_str(), size) == ERROR)) - { - return ERROR; - } - return SUCCESS; -} - -PipeWrapper::Status PipeWrapper::receive(int &code, std::string &data, time_t deadline) -{ - if (m_pipefd[0] == PIPE_CLOSED) { - return ERROR; - } - - int size; - Status ret; - - if ((ret = readHelp(&size, sizeof(int), deadline)) != SUCCESS) { - return ret; - } - - std::vector buffer; - buffer.resize(size); - - if ((ret = readHelp(&buffer[0], size, deadline)) != SUCCESS) { - return ret; - } - - try { - DPL::BinaryQueue queue; - queue.AppendCopy(&buffer[0], size); - - queue.FlattenConsume(&code, sizeof(int)); - queue.FlattenConsume(&size, sizeof(int)); - - buffer.resize(size); - - queue.FlattenConsume(&buffer[0], size); - data.assign(buffer.begin(), buffer.end()); - } catch (DPL::BinaryQueue::Exception::Base &e) { - return ERROR; - } - return SUCCESS; -} - -void PipeWrapper::closeAll() -{ - closeHelp(0); - closeHelp(1); -} - -std::string PipeWrapper::toBinaryString(int data) -{ - char buffer[sizeof(int)]; - memcpy(buffer, &data, sizeof(int)); - return std::string(buffer, buffer + sizeof(int)); -} - -void PipeWrapper::closeHelp(int desc) -{ - if (m_pipefd[desc] != PIPE_CLOSED) { - TEMP_FAILURE_RETRY(close(m_pipefd[desc])); - m_pipefd[desc] = PIPE_CLOSED; - } -} - -PipeWrapper::Status PipeWrapper::writeHelp(const void *buffer, int size) -{ - int ready = 0; - const char *p = static_cast(buffer); - while (ready != size) { - int ret = write(m_pipefd[1], &p[ready], size - ready); - - if (ret == -1 && (errno == EAGAIN || errno == EINTR)) { - continue; - } - - if (ret == -1) { - closeHelp(1); - return ERROR; - } - - ready += ret; - } - return SUCCESS; -} - -PipeWrapper::Status PipeWrapper::readHelp(void *buf, int size, time_t deadline) -{ - int ready = 0; - char *buffer = static_cast(buf); - while (ready != size) { - time_t wait = deadline - time(0); - wait = wait < 1 ? 1 : wait; - pollfd fds = { m_pipefd[0], POLLIN, 0 }; - - int pollReturn = poll(&fds, 1, wait * 1000); - - if (pollReturn == 0) { - return TIMEOUT; // Timeout - } - - if (pollReturn < -1) { - return ERROR; - } - - int ret = read(m_pipefd[0], &buffer[ready], size - ready); - - if (ret == -1 && (errno == EAGAIN || errno == EINTR)) { - continue; - } - - if (ret == -1 || ret == 0) { - closeHelp(0); - return ERROR; - } - - ready += ret; - } - return SUCCESS; -} - -void RunChildProc(TestRunner::TestCase procChild) -{ - PipeWrapper pipe; - if (!pipe.isReady()) { - throw TestRunner::TestFailed("Pipe creation failed"); - } - - pid_t pid = fork(); - - if (pid == -1) { - throw TestRunner::TestFailed("Child creation failed"); - } - - if (pid != 0) { - // parent code - pipe.setUsage(PipeWrapper::READONLY); - - int code; - std::string message; - - int pipeReturn = pipe.receive(code, message, time(0) + 10); - - if (pipeReturn != PipeWrapper::SUCCESS) { // Timeout or reading error - pipe.closeAll(); - kill(pid, SIGKILL); - } - - int status; - waitpid(pid, &status, 0); - - if (pipeReturn == PipeWrapper::TIMEOUT) { - throw TestRunner::TestFailed("Timeout"); - } - - if (pipeReturn == PipeWrapper::ERROR) { - throw TestRunner::TestFailed("Reading pipe error"); - } - - if (code == CHILD_TEST_FAIL) { - throw TestRunner::TestFailed(message); - } else if (code == CHILD_TEST_IGNORED) { - throw TestRunner::Ignored(message); - } - } else { - // child code - - // End Runner after current test - TestRunnerSingleton::Instance().Terminate(); - - int code = CHILD_TEST_PASS; - std::string msg; - - bool allowLogs = TestRunnerSingleton::Instance().GetAllowChildLogs(); - - close(STDIN_FILENO); - if (!allowLogs) { - closeOutput(); // if fails nothing we can do - } - - pipe.setUsage(PipeWrapper::WRITEONLY); - - try { - procChild(); - } catch (const DPL::Test::TestRunner::TestFailed &e) { - msg = e.GetMessage(); - code = CHILD_TEST_FAIL; - } catch (const DPL::Test::TestRunner::Ignored &e) { - msg = e.GetMessage(); - code = CHILD_TEST_IGNORED; - } catch (...) { // catch all exception generated by "user" code - msg = "unhandled exeception"; - code = CHILD_TEST_FAIL; - } - - if (allowLogs) { - closeOutput(); - } - - pipe.send(code, msg); - } -} -} // namespace Test -} // namespace DPL diff --git a/modules_mobile/test/src/value_separated_policies.cpp b/modules_mobile/test/src/value_separated_policies.cpp deleted file mode 100644 index 0ecf599..0000000 --- a/modules_mobile/test/src/value_separated_policies.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file value_separated_policies.cpp - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief ... - */ - -#include -#include -#include - -namespace DPL { - -std::string CSVTokenizerPolicy::GetSeperators() -{ - return ","; -} - -bool CSVTokenizerPolicy::SkipEmpty() -{ - return false; -} - -void CSVTokenizerPolicy::PrepareValue(std::string &) -{ -} - -bool CSVTokenizerPolicy::TryAgainAtEnd(int) -{ - return false; -} - -bool CSVParserPolicy::SkipLine(const std::vector & ) -{ - return false; -} - -bool CSVParserPolicy::Validate(std::shared_ptr > > & result) -{ - int num = -1; - FOREACH(r, *result) - { - int size = r->size(); - if(num != -1 && num != size) - { - LogError("Columns not matches"); - return false; - } - num = size; - } - return true; -} - -} diff --git a/modules_mobile/test/src/value_separated_tokens.cpp b/modules_mobile/test/src/value_separated_tokens.cpp deleted file mode 100644 index 4b53e27..0000000 --- a/modules_mobile/test/src/value_separated_tokens.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file value_separated_tokens.cpp - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief ... - */ - -#include - -namespace DPL { - -VSToken::VSToken(const std::string & c) : m_newline(false), m_cell(c) -{ -} - -VSToken::VSToken() : m_newline(true) -{ -} - -const std::string & VSToken::cell() const -{ - return m_cell; -} - -bool VSToken::isNewLine() -{ - return m_newline; -} - -} diff --git a/modules_mobile/utils/config.cmake b/modules_mobile/utils/config.cmake deleted file mode 100644 index 828ca6c..0000000 --- a/modules_mobile/utils/config.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Soyoung Kim(sy037.kim@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_UTILS_SOURCES - ${PROJECT_SOURCE_DIR}/modules/utils/src/bash_utils.cpp - ${PROJECT_SOURCE_DIR}/modules/utils/src/folder_size.cpp - ${PROJECT_SOURCE_DIR}/modules/utils/src/mime_type_utils.cpp - ${PROJECT_SOURCE_DIR}/modules/utils/src/warp_iri.cpp - ${PROJECT_SOURCE_DIR}/modules/utils/src/widget_version.cpp - ${PROJECT_SOURCE_DIR}/modules/utils/src/wrt_global_settings.cpp - ${PROJECT_SOURCE_DIR}/modules/utils/src/wrt_utility.cpp - ${PROJECT_SOURCE_DIR}/modules/utils/src/path.cpp - PARENT_SCOPE -) - -SET(DPL_UTILS_HEADERS - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/bash_utils.h - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/folder_size.h - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/mime_type_utils.h - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/warp_iri.h - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/widget_version.h - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/wrt_global_settings.h - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/wrt_utility.h - ${PROJECT_SOURCE_DIR}/modules/utils/include/dpl/utils/path.h - PARENT_SCOPE -) - -SET(DPL_UTILS_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/utils/include - PARENT_SCOPE -) diff --git a/modules_mobile/utils/include/dpl/utils/bash_utils.h b/modules_mobile/utils/include/dpl/utils/bash_utils.h deleted file mode 100644 index 33a5f9d..0000000 --- a/modules_mobile/utils/include/dpl/utils/bash_utils.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file bash_utils.h - * @author Iwanek Tomasz - * @version 1.0 - */ - -#ifndef BASH_UTILS_H -#define BASH_UTILS_H - -#include - -namespace BashUtils { -/** - * Escapes bash special characters in string and return string in double quotes - * @param source string to be escaped - * @return escaped string - */ -std::string escape_arg(const std::string & source); -} - -#endif // BASH_UTILS_H diff --git a/modules_mobile/utils/include/dpl/utils/file_utils.h b/modules_mobile/utils/include/dpl/utils/file_utils.h deleted file mode 100644 index 9fbad4e..0000000 --- a/modules_mobile/utils/include/dpl/utils/file_utils.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file file_utils.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - */ - -#ifndef FILEUTILS_H -#define FILEUTILS_H - -#include -#include - -#include -#include - -namespace FileUtils { -DECLARE_EXCEPTION_TYPE(DPL::Exception, CreateDirectoryException) -DECLARE_EXCEPTION_TYPE(DPL::Exception, RemoveDirectoryException) - -bool FileExists(const DPL::String& absolutePath); -bool DirectoryExists(const DPL::String& absolutePath); - -/** - * Creates specified path recursively. - * @param path Path to create (e.g. /tmp/dir1/dir2). - * @param mode Mode for the non-existing parts of the path (e.g. 0755). - * @throw DPL::CommonException::::InternalError If sth bad happens. - */ -void MakePath(const std::string& path, mode_t mode); - -/** - * Removes specified directory recursively. - * @param path Full path to directory to remove. - * @throw FileUtils::DirectoryRemoveException If an error occured. - */ -void RemoveDir(const std::string& path); -} // namespace FileUtils - -#endif diff --git a/modules_mobile/utils/include/dpl/utils/folder_size.h b/modules_mobile/utils/include/dpl/utils/folder_size.h deleted file mode 100644 index 71a77bd..0000000 --- a/modules_mobile/utils/include/dpl/utils/folder_size.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file folder_size.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Declaration for function calculating directory size - */ - -#ifndef SRC_COMMON_FOLDER_SIZE_H_ -#define SRC_COMMON_FOLDER_SIZE_H_ - -#include - -#include - -namespace Utils { -size_t getFolderSize(const std::string& path); - -DPL::String fromFileSizeString(size_t fileSize); -} - -#endif /* SRC_COMMON_FOLDER_SIZE_H_ */ diff --git a/modules_mobile/utils/include/dpl/utils/mime_type_utils.h b/modules_mobile/utils/include/dpl/utils/mime_type_utils.h deleted file mode 100644 index 1d93385..0000000 --- a/modules_mobile/utils/include/dpl/utils/mime_type_utils.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef MIME_TYPE_UTILS_H -#define MIME_TYPE_UTILS_H - -#include -#include - -class MimeTypeUtils -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, InvalidFileName) - }; - - private: - //TODO use hash_map if possible - static const std::set& getMimeTypesSupportedForIcon(); - static const std::set& getMimeTypesSupportedForStartFile(); - - typedef std::map FileIdentificationMap; - - static DPL::String getFileNameFromPath(const DPL::String& path); - static const FileIdentificationMap& getFileIdentificationMap(); - static DPL::String stripMimeParameters(const DPL::String& mimeType); - - public: - typedef std::map MimeAttributes; - static bool isValidIcon(const DPL::String& path); - static bool isValidStartFile(const DPL::String& path, - const DPL::OptionalString& providedMimeType); - static bool isMimeTypeSupportedForStartFile(const DPL::String& mimeType); - static bool isMimeTypeSupportedForIcon(const DPL::String& mimeType); - static MimeAttributes getMimeAttributes(const DPL::String& mimeType); - ///implements 9.1.10. (Rule for Identifying the Media Type of a File) - ///from W3C packaging specification - static DPL::String identifyFileMimeType(const DPL::String& path); -}; - -#endif /* MIME_TYPE_UTILS_H */ - diff --git a/modules_mobile/utils/include/dpl/utils/warp_iri.h b/modules_mobile/utils/include/dpl/utils/warp_iri.h deleted file mode 100644 index 71773cb..0000000 --- a/modules_mobile/utils/include/dpl/utils/warp_iri.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef _WARPIRI_H_ -#define _WARPIRI_H_ - -#include - -#include -#include - -class WarpIRI -{ - static const unsigned int UNKNOWN_PORT = 0; - - public: - WarpIRI(); - - void set(const char *iri, - bool domain); - void set(const DPL::String &iristring, - bool domain); - - /* It also checks port and schema */ - bool isSubDomain(const WarpIRI &second) const; - bool isAccessDefinition() const; - bool getSubDomain() const; - - static bool isIRISchemaIgnored(const char *iri); - - bool operator ==(const WarpIRI &other) const - { - return m_domain == other.m_domain && - m_host == other.m_host && - m_schema == other.m_schema && - m_port == other.m_port && - m_isAccessDefinition == other.m_isAccessDefinition && - m_isIRIValid == other.m_isIRIValid; - } - - private: - unsigned int getPort(const DPL::String &schema) const; - - bool m_domain; - std::vector m_host; - DPL::String m_schema; - unsigned int m_port; - bool m_isAccessDefinition; - bool m_isIRIValid; -}; - -#endif // _WarpIRI_H_ diff --git a/modules_mobile/utils/include/dpl/utils/widget_version.h b/modules_mobile/utils/include/dpl/utils/widget_version.h deleted file mode 100644 index de3d3aa..0000000 --- a/modules_mobile/utils/include/dpl/utils/widget_version.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file widget_version.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for widget version - */ -#ifndef WIDGET_VERSION_H -#define WIDGET_VERSION_H - -#include -#include -#include - -/* - * Note: This class also support non-WAC compliant version numbers - * - * WAC Waikiki Beta Release Core Specification: Widget Runtime - * 10 Dec 2010 - * - * WL-3370 The WRT MUST process widget packages as an update when received under - * the following conditions: - * - * - the Widget Id matches the Widget Id of an installed widget - * - the Widget version number is greater (as a compared string) than that of - * the installed widget, or no version - * information was provided for the installed widget - * - * To ensure that a string comparison of widget versions can reliably determine - * which version is an updated widget, - * WAC will mandate a specific version string format for WAC widgets. All - * widgets coming through the WAC channel - * will be required to have version strings in this format. Side-loaded widgets - * may have any format and, in this - * case, there is no requirement that the WRT support version detection for - * update of these widgets. - * - * The widget version format is the rec-version-tag grammar as described in - * [Widget Packaging]: - * - * rec-version-tag = 1*DIGIT "." 1*DIGIT [ "." 1*DIGIT] *[ 1*ALPHA / SP / - * 1*DIGIT ] - * - * Examples of rec-version-tag: - * - * 1.0 - * 1.10.1 beta1 - * 1.02.12 RC1 - * - * WL-3371 The WRT MUST use the following widget version comparison algorithm to - * compare WAC widget version strings: - * - * - prepare the version strings for comparison: - * - all leading zeros are discarded - * - the optional *[ 1*ALPHA / SP / 1*DIGIT ] part, if present, is discarded - * - the resulting numbers are then in the format major.minor[.micro] - * - Version A = Amajor.Aminor[.Amicro] is equal to Version B = - * Bmajor.Bminor[.Bmicro] if and only if: - * - Amajor Bmajor - * - Aminor Bminor - * - both Amicro and Bmicro are present and Amicro == Bmicro; or both Amicro - * and Bmicro are absent. - * - Version A = Amajor.Aminor[.Amicro] is greater than Version B = - * Bmajor.Bminor[.Bmicro] if and only if: - * - Amajor > Bmajor; or - * - Amajor Bmajor && Aminor > Bminor; or - * - Amajor Bmajor && Aminor == Bminor && both Amicro and Bmicro are present - * and Amicro > Bmicro; or Bmicro is absent. - */ -class WidgetVersion -{ - private: - bool m_isWac; - DPL::String m_raw; - - DPL::String m_major; - DPL::String m_minor; - DPL::Optional m_micro; - DPL::Optional m_optional; - - void WacCertify(const DPL::String &major, - const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional); - - public: - explicit WidgetVersion(const DPL::String &str = DPL::String()); - WidgetVersion(const DPL::String &major, - const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional); - - bool IsWac() const; - const DPL::String &Raw() const; - - const DPL::String &Major() const; - const DPL::String &Minor() const; - const DPL::Optional &Micro() const; - const DPL::Optional &Optional() const; -}; - -bool operator<(const WidgetVersion &left, - const WidgetVersion &right); -bool operator<=(const WidgetVersion &left, - const WidgetVersion &right); -bool operator>(const WidgetVersion &left, - const WidgetVersion &right); -bool operator>=(const WidgetVersion &left, - const WidgetVersion &right); -bool operator==(const WidgetVersion &left, - const WidgetVersion &right); -bool operator!=(const WidgetVersion &left, - const WidgetVersion &right); -std::ostream & operator<<(std::ostream& stream, - const WidgetVersion& version); - -#endif // WIDGET_VERSION_H diff --git a/modules_mobile/utils/include/dpl/utils/wrt_global_settings.h b/modules_mobile/utils/include/dpl/utils/wrt_global_settings.h deleted file mode 100644 index 14407ae..0000000 --- a/modules_mobile/utils/include/dpl/utils/wrt_global_settings.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_global_settings.h - * @version 0.6 - * @author Pawel Sikorski(p.sikorski@samsung.com) - * @brief Header file for global predefined wrt setting - */ - -#ifndef WRT_COMMON_GLOBAL_SETTINGS_H_ -#define WRT_COMMON_GLOBAL_SETTINGS_H_ - -namespace GlobalSettings { -// Methods for getting test mode environment flag -bool TestModeEnabled(); -bool PopupsTestModeEnabled(); -bool WarpTestModeEnabled(); -bool RoamingTestModeEnabled(); -bool OCSPTestModeEnabled(); -bool CrlTestModeEnabled(); -bool MakeScreenTestModeEnabled(); -bool IsEmulator(); -} - -#endif /* WRT_COMMON_GLOBAL_SETTINGS_H_ */ diff --git a/modules_mobile/utils/src/mime_type_utils.cpp b/modules_mobile/utils/src/mime_type_utils.cpp deleted file mode 100644 index a51df5e..0000000 --- a/modules_mobile/utils/src/mime_type_utils.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include -#include - -#include - -#include - -const std::set& MimeTypeUtils::getMimeTypesSupportedForIcon() -{ - static std::set set; - DPL::String (*s)(const std::string&) = DPL::FromASCIIString; - if (set.empty()) { - set.insert(s("image/gif")); - set.insert(s("image/png")); - set.insert(s("image/vnd.microsoft.icon")); - set.insert(s("image/svg+xml")); - set.insert(s("image/jpeg")); - } - return set; -} - -const std::set& MimeTypeUtils::getMimeTypesSupportedForStartFile() -{ - static std::set set; - DPL::String (*s)(const std::string&) = DPL::FromASCIIString; - if (set.empty()) { - set.insert(s("text/html")); - set.insert(s("application/xhtml+xml")); - set.insert(s("image/svg+xml")); - } - return set; -} - -bool MimeTypeUtils::isMimeTypeSupportedForStartFile(const DPL::String& mimeType) -{ - return getMimeTypesSupportedForStartFile().count(stripMimeParameters( - mimeType)) > 0; -} - -const MimeTypeUtils::FileIdentificationMap& MimeTypeUtils:: - getFileIdentificationMap() -{ - static FileIdentificationMap map; - DPL::String (*s)(const std::string&) = DPL::FromASCIIString; - if (map.empty()) { - map[s(".html")] = s("text/html"); - map[s(".htm")] = s("text/html"); - map[s(".css")] = s("text/css"); - map[s(".js")] = s("application/javascript"); - map[s(".xml")] = s("application/xml"); - map[s(".txt")] = s("text/plain"); - map[s(".wav")] = s("audio/x-wav"); - map[s(".xhtml")] = s("application/xhtml+xml"); - map[s(".xht")] = s("application/xhtml+xml"); - map[s(".gif")] = s("image/gif"); - map[s(".png")] = s("image/png"); - map[s(".ico")] = s("image/vnd.microsoft.icon"); - map[s(".svg")] = s("image/svg+xml"); - map[s(".jpg")] = s("image/jpeg"); - } - return map; -} - -bool MimeTypeUtils::isMimeTypeSupportedForIcon(const DPL::String& mimeType) -{ - return getMimeTypesSupportedForIcon().count(stripMimeParameters(mimeType)) - > 0; -} - -DPL::String MimeTypeUtils::stripMimeParameters(const DPL::String& mimeType) -{ - size_t parametersStart = mimeType.find_first_of(L';'); - if (parametersStart != DPL::String::npos) { - return mimeType.substr(0, parametersStart); - } else { - return mimeType; - } -} - -MimeTypeUtils::MimeAttributes MimeTypeUtils::getMimeAttributes( - const DPL::String& mimeType) -{ - MimeAttributes attributes; - std::vector tokens; - DPL::Tokenize(mimeType, L";=", std::back_inserter(tokens)); - for (unsigned int i = 1; i < tokens.size(); i += 2) { - attributes[tokens[i]] = tokens[i + 1]; - } - return attributes; -} - -bool MimeTypeUtils::isValidIcon(const DPL::String& path) -{ - return getMimeTypesSupportedForIcon().count(identifyFileMimeType(path)) > 0; -} - -bool MimeTypeUtils::isValidStartFile( - const DPL::String& path, - const DPL::OptionalString& - providedMimeType) -{ - DPL::String mimeType = (!!providedMimeType) ? stripMimeParameters( - *providedMimeType) : identifyFileMimeType(path); - return getMimeTypesSupportedForStartFile().count(mimeType) > 0; -} - -DPL::String MimeTypeUtils::getFileNameFromPath(const DPL::String& path) -{ - size_t lastSlashPos = path.find_last_of(L'/'); - return path.substr(lastSlashPos + 1); -} - -DPL::String MimeTypeUtils::identifyFileMimeType(const DPL::String& path) -{ - DPL::String name = getFileNameFromPath(path); //step 4 - - if (name.size() == 0) { - ThrowMsg(Exception::InvalidFileName, "Path should contain a file name."); - } - - size_t lastFullStop = name.find_last_of(L'.'); - if (lastFullStop != 0 && lastFullStop != DPL::String::npos) { //step 5 - DPL::String extension = name.substr(lastFullStop); //step 6 & 7 - if (extension.size() > 0) { //step 8 - //step 9 - std::transform(extension.begin(), extension.end(), - extension.begin(), ::towlower); - FileIdentificationMap::const_iterator it = - getFileIdentificationMap().find(extension); - if (it != getFileIdentificationMap().end()) { - return it->second; - } - } - } - //TODO step 10 - sniff - return DPL::FromASCIIString("application/sniff"); -} diff --git a/modules_mobile/utils/src/path.cpp b/modules_mobile/utils/src/path.cpp deleted file mode 100644 index 9008fad..0000000 --- a/modules_mobile/utils/src/path.cpp +++ /dev/null @@ -1,543 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file path.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @version 1.0 - */ - -#include "dpl/utils/path.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -namespace DPL { - -namespace Utils { - -namespace { -const char * const TEMPORARY_PATH_POSTFIX = "temp"; -const mode_t TEMPORARY_PATH_MODE = 0775; -} // namespace - -Path::Iterator::Iterator() //end iterator by default -{ -} - -Path::Iterator::Iterator(const char * str) -{ - m_root = std::shared_ptr(new Path(str)); - m_dir = std::shared_ptr(opendir(str), [](DIR * d){ if(d)closedir(d); }); //custom delete - if(m_dir.get() == NULL) - { - ThrowMsg(NotDirectory, "Not directory"); - } - ReadNext(); -} - -Path::Iterator& Path::Iterator::operator++() -{ - ReadNext(); - return *this; -} - -Path::Iterator Path::Iterator::operator++(int) -{ - Path::Iterator copy(*this); - ReadNext(); - return copy; -} - -void Path::Iterator::ReadNext() -{ - struct dirent * entry = readdir(m_dir.get()); - while(entry && (strcmp(entry->d_name, ".") == 0 || - strcmp(entry->d_name, "..") == 0)) - { - entry = readdir(m_dir.get()); - } - if(entry) - { - m_path = std::shared_ptr(new Path(*m_root)); - m_path->Append(entry->d_name); - } - else //transform into end iterator - { - m_path.reset(); - m_dir.reset(); - } -} - -bool Path::Iterator::operator==(const Path::Iterator& rhs) const -{ - if(m_dir.get() == NULL) - { - if(rhs.m_dir.get() == NULL) return true; - else return false; - } - else - { - if(rhs.m_dir.get() == NULL) return false; - } - return *m_path == *rhs.m_path; -} - -bool Path::Iterator::operator!=(const Path::Iterator& rhs) const -{ - return !this->operator==(rhs); -} - -const Path & Path::Iterator::operator*() -{ - return *m_path; -} - -const Path * Path::Iterator::operator->() -{ - return m_path.get(); -} - -Path::Path(const DPL::String & str) -{ - Construct(ToUTF8String(str)); -} - -Path::Path(const std::string & str) -{ - Construct(str); -} - -Path::Path(const char * str) -{ - Construct(std::string(str)); -} - -void Path::Construct(const std::string & src) -{ - if(src.empty()) ThrowMsg(EmptyPath, "Path cannot be empty"); - if(src[0] != '/') - { - DPL::ScopedFree root(getcwd(NULL,0)); - Tokenize(std::string(root.Get()), "\\/", std::inserter(m_parts, m_parts.begin()), true); - } - Tokenize(src, "\\/", std::inserter(m_parts, m_parts.end()), true); -} - -Path::Path() -{ -} - -std::string Path::DirectoryName() const -{ - if(m_parts.empty()) ThrowMsg(InternalError, "Asking DirectoryName for root directory"); - std::string ret = Join(m_parts.begin(), --m_parts.end(), "/"); - return std::string("/") + ret; -} - -std::string Path::Filename() const -{ - if(m_parts.empty()) return ""; - else return m_parts.back(); -} - -std::string Path::Fullpath() const -{ - std::string ret = Join(m_parts.begin(), m_parts.end(), "/"); - return std::string ("/") + ret; -} - -std::string Path::Extension() const -{ - if(m_parts.empty()) return ""; - - const std::string& last = *--m_parts.end(); - - std::string::size_type pos = last.find_last_of("."); - if(pos != std::string::npos) - { - return last.substr(pos + 1); - } - else - { - return ""; - } -} - -//foreach -Path::Iterator Path::begin() const -{ - if(IsDir()) - { - return Iterator(Fullpath().c_str()); - } - else - { - ThrowMsg(NotDirectory, "Cannot iterate not a directory"); - } -} - -Path::Iterator Path::end() const -{ - return Iterator(); -} - -void Path::RootGuard() const -{ - if(m_parts.empty()) Throw(RootDirectoryError); -} - -bool Path::Exists() const -{ - struct stat tmp; - memset(&tmp, 0, sizeof(struct stat)); - return (0 == lstat(Fullpath().c_str(), &tmp)); -} - -bool Path::IsDir() const -{ - struct stat tmp; - memset(&tmp, 0, sizeof(struct stat)); - if (-1 == lstat(Fullpath().c_str(), &tmp)) - { - ThrowMsg(NotExists, DPL::GetErrnoString()); - } - return S_ISDIR(tmp.st_mode); -} - -bool Path::IsFile() const -{ - struct stat tmp; - memset(&tmp, 0, sizeof(struct stat)); - if (-1 == lstat(Fullpath().c_str(), &tmp)) - { - ThrowMsg(NotExists, DPL::GetErrnoString()); - } - return S_ISREG(tmp.st_mode); -} - -bool Path::ExistsAndIsFile() const -{ - bool flag = false; - Try - { - flag = this->IsFile(); - } Catch (Path::NotExists) { - LogPedantic(*this << "is not a file."); - } - return flag; -} - -bool Path::ExistsAndIsDir() const -{ - bool flag = false; - Try - { - flag = this->IsDir(); - } Catch (Path::NotExists) { - LogPedantic(*this << "is not a directory."); - } - return flag; -} - -bool Path::IsSymlink() const -{ - struct stat tmp; - memset(&tmp, 0, sizeof(struct stat)); - if (-1 == lstat(Fullpath().c_str(), &tmp)) - { - ThrowMsg(NotExists, DPL::GetErrnoString()); - } - return S_ISLNK(tmp.st_mode); -} - -bool Path::operator==(const Path & other) const -{ - return m_parts == other.m_parts; -} - -bool Path::operator!=(const Path & other) const -{ - return m_parts != other.m_parts; -} - -Path Path::operator/(const DPL::String& part) const -{ - Path newOne(*this); - newOne.Append(ToUTF8String(part)); - return newOne; -} - -Path Path::operator/(const std::string& part) const -{ - Path newOne(*this); - newOne.Append(part); - return newOne; -} - -Path Path::operator/(const char * part) const -{ - Path newOne(*this); - newOne.Append(std::string(part)); - return newOne; -} - -Path & Path::operator/=(const DPL::String& part) -{ - Append(ToUTF8String(part)); - return *this; -} - -Path & Path::operator/=(const std::string& part) -{ - Append(part); - return *this; -} - -Path & Path::operator/=(const char * part) -{ - Append(std::string(part)); - return *this; -} - -void Path::Append(const std::string& part) -{ - std::vector tokens; - Tokenize(part, "\\/", std::inserter(tokens, tokens.end()), true); - std::copy(tokens.begin(), tokens.end(), std::inserter(m_parts, m_parts.end())); -} - -Path Path::DirectoryPath() const -{ - Path npath; - if(m_parts.empty()) ThrowMsg(InternalError, "Asking DirectoryPath for root directory"); - std::copy(m_parts.begin(), --m_parts.end(), std::back_inserter(npath.m_parts)); - return npath; -} - -std::size_t Path::Size() const -{ - struct stat tmp; - memset(&tmp, 0, sizeof(struct stat)); - if (-1 == lstat(Fullpath().c_str(), &tmp)) - { - ThrowMsg(NotExists, DPL::GetErrnoString()); - } - return tmp.st_size; -} - -bool Path::isSubPath(const Path & other) const -{ - typedef std::vector::const_iterator Iter; - Iter otherIter = other.m_parts.begin(); - for(Iter iter = m_parts.begin(); iter != m_parts.end(); iter++) - { - if(otherIter == other.m_parts.end()) return false; - if(*iter != *otherIter) return false; - otherIter++; - } - return true; -} - -bool Path::hasExtension(const std::string& extension) const -{ - LogPedantic("Looking for extension " << extension); - - if(Extension() == extension) - { - return true; - } - else - { - return false; - } -} - -void MakeDir(const Path & path, mode_t mode) -{ - path.RootGuard(); - if(!WrtUtilMakeDir(path.Fullpath(), mode)) - ThrowMsg(Path::OperationFailed, "Cannot make directory"); -} - -void MakeEmptyFile(const Path & path) -{ - path.RootGuard(); - std::string fp = path.Fullpath(); - FILE* fd = fopen(fp.c_str(), "wx"); - if(!fd) - { - struct stat st; - memset(&st, 0, sizeof(struct stat)); - if(lstat(fp.c_str(), &st) == 0) - { - ThrowMsg(Path::AlreadyExists, "File already exists"); - } - else - { - ThrowMsg(Path::OperationFailed, "Operation failed"); - } - } - fclose(fd); -} - -void Remove(const Path & path) -{ - path.RootGuard(); - if(!WrtUtilRemove(path.Fullpath())) ThrowMsg(Path::OperationFailed, "Cannot remove path"); -} - -bool TryRemove(const Path & path) -{ - path.RootGuard(); - return WrtUtilRemove(path.Fullpath()); -} - -void Rename(const Path & from, const Path & to) -{ - from.RootGuard(); - to.RootGuard(); - if(from == to) - { - return; - } - if(0 != rename(from.Fullpath().c_str(), to.Fullpath().c_str())) - { - if(errno == EXDEV) - { - if(from.IsDir()) - { - CopyDir(from, to); - Remove(from); - } - else if(from.IsFile() || from.IsSymlink()) - { - CopyFile(from, to); - Remove(from); - } - else - { - ThrowMsg(Path::OperationFailed, DPL::GetErrnoString()); - } - } - else - { - ThrowMsg(Path::OperationFailed, DPL::GetErrnoString()); - } - } -} - -void CopyFile(const Path & from, const Path & to) -{ - from.RootGuard(); - to.RootGuard(); - Try - { - DPL::FileInput input(from.Fullpath()); - DPL::FileOutput output(to.Fullpath()); - DPL::Copy(&input, &output); - } - Catch(DPL::FileInput::Exception::Base) - { - LogError("File input error"); - ReThrowMsg(DPL::CopyFailed, std::string("File input error") + from.Fullpath()); - } - Catch(DPL::FileOutput::Exception::Base) - { - LogError("File output error"); - ReThrowMsg(DPL::CopyFailed, std::string("File output error") + to.Fullpath()); - } - Catch(DPL::CopyFailed) - { - LogError("File copy error"); - ReThrowMsg(DPL::CopyFailed, std::string("File copy error") + from.Fullpath()); - } -} - -void CopyDir(const Path & from, const Path & to) -{ - from.RootGuard(); - to.RootGuard(); - if(from.isSubPath(to)) - { - ThrowMsg(Path::CannotCopy, "Cannot copy content of directory to it's sub directory"); - } - MakeDir(to); - FOREACH(item, from) - { - if(item->IsDir()) - { - CopyDir(*item, to / item->Filename()); - } - else if(item->IsFile() || item->IsSymlink()) - { - CopyFile(*item, to / item->Filename()); - } - else - { - Throw(Path::OperationFailed); - } - } -} - -Path CreateTempPath(const Path & basePath) -{ - LogDebug("Step: Creating temporary path"); - - // Temporary path - Path tempPath = basePath; - tempPath /= WrtDB::GlobalConfig::GetTmpDirPath(); - - timeval tv; - gettimeofday(&tv, NULL); - unsigned long long nr = (static_cast(tv.tv_sec) * 1000000ULL + static_cast(tv.tv_usec)); - std::stringstream relPath; - relPath << TEMPORARY_PATH_POSTFIX << "_" << nr; - tempPath /= relPath.str(); - - MakeDir(tempPath, TEMPORARY_PATH_MODE); - return tempPath; -} - -bool Exists(const Path & path) -{ - return path.Exists(); -} - -} - -} - -std::ostream & operator<<(std::ostream & str, const DPL::Utils::Path & path) -{ - str << path.Fullpath(); - return str; -} - -//TODO: uncomment when used defiend literals are supported -///DPL::Utils::Path operator""p(const char * str, size_t) -//{ -// return DPL::Utils::Path(str); -//} diff --git a/modules_mobile/utils/src/widget_version.cpp b/modules_mobile/utils/src/widget_version.cpp deleted file mode 100644 index cbaf5d1..0000000 --- a/modules_mobile/utils/src/widget_version.cpp +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file widget_version.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Implementation file for widget version - */ -#include -#include -#include -#include -#include -#include - -namespace // anonymous -{ -size_t WAC_CERTIFY_MANDATORY_PART_LOW_COUNT = 2; -size_t WAC_CERTIFY_MANDATORY_PART_HIGH_COUNT = 3; -size_t WAC_CERTIFY_MANDATORY_PART_MAJOR_INDEX = 0; -size_t WAC_CERTIFY_MANDATORY_PART_MINOR_INDEX = 1; -size_t WAC_CERTIFY_MANDATORY_PART_MICRO_INDEX = 2; -DPL::String::value_type WAC_CERTIFY_MANDATORY_VS_OPTIONAL_SPLIT_CHAR = L' '; -DPL::String::value_type WAC_CERTIFY_MANDATORY_NUMBER_PART_SPLIT_CHAR = L'.'; -DPL::String::value_type LEADING_ZERO_CHAR = L'0'; - -// -// [ABNF] -// Augmented BNF for Syntax Specifications: ABNF. RFC5234. D. Crocker and P. -// Overell. January 2008. -// -// ALPHA = %x41-5A / %x61-7A -inline bool IsAlpha(int c) -{ - return (c >= 0x41 && c <= 0x5A) || - (c >= 0x61 && c <= 0x7A); -} - -// DIGIT = %x30-39 -inline bool IsDigit(int c) -{ - return c >= 0x30 && c <= 0x39; -} - -// SP = %x20 -inline bool IsSp(int c) -{ - return c == 0x20; -} - -DPL::String RemoveLeadingZeroes(const DPL::String &str) -{ - Assert(!str.empty()); - - if (str[0] != LEADING_ZERO_CHAR) { - return str; - } - - size_t pos = 0; - - while (pos + 1 < str.size() && str[pos + 1] == LEADING_ZERO_CHAR) { - ++pos; - } - - return str.substr(pos); -} - -// operator < -bool NumberLessOperator(const DPL::String &left, - const DPL::String &right) -{ - // Assume: No leading zeroes - if (left.size() < right.size()) { - return true; - } - - if (left.size() > right.size()) { - return false; - } - - // Now: left.size() == right.size() - for (ssize_t i = static_cast(left.size()) - 1; i >= 0; --i) { - if (left[i] < right[i]) { - return true; - } - - if (left[i] > right[i]) { - return false; - } - } - - // Equal - return false; -} - -bool WacCertifyNumberString(const DPL::String &str) -{ - for (DPL::String::const_iterator i = str.begin(); i != str.end(); ++i) { - if (!IsDigit(*i)) { - return false; - } - } - - return true; -} - -bool WacCertifyAlphaNumberStringSpace(const DPL::String &str) -{ - for (DPL::String::const_iterator i = str.begin(); i != str.end(); ++i) { - if (!IsDigit(*i) && !IsAlpha(*i) && !IsSp(*i)) { - return false; - } - } - - return true; -} -} // anonymous - -WidgetVersion::WidgetVersion(const DPL::String &str) : - m_isWac(false), - m_raw(str) -{ - LogDebug("Parsing version string: " << str); - - // Split optional an mandatory parts - size_t optionalPartPosition = str.find( - WAC_CERTIFY_MANDATORY_VS_OPTIONAL_SPLIT_CHAR); - - DPL::String mandatoryPart; - DPL::Optional optionalPart; - - if (optionalPartPosition == DPL::String::npos) { - mandatoryPart = str; - } else { - mandatoryPart = str.substr(0, optionalPartPosition); - optionalPart = str.substr(optionalPartPosition + 1, DPL::String::npos); - } - - LogDebug("Mandatory part is: " << mandatoryPart); - LogDebug("Optional part is: " << optionalPart); - - // Split string and construct version - std::vector parts; - DPL::Tokenize(mandatoryPart, - WAC_CERTIFY_MANDATORY_NUMBER_PART_SPLIT_CHAR, - std::back_inserter(parts), - false); - - LogDebug("Tokenized mandatory parts: " << parts.size()); - - if (parts.size() != WAC_CERTIFY_MANDATORY_PART_LOW_COUNT && - parts.size() != WAC_CERTIFY_MANDATORY_PART_HIGH_COUNT) - { - return; - } - - DPL::String major; - DPL::String minor; - DPL::Optional micro; - - // Certify for Wac - major = parts[WAC_CERTIFY_MANDATORY_PART_MAJOR_INDEX]; - minor = parts[WAC_CERTIFY_MANDATORY_PART_MINOR_INDEX]; - - if (parts.size() == WAC_CERTIFY_MANDATORY_PART_HIGH_COUNT) { - micro = parts[WAC_CERTIFY_MANDATORY_PART_MICRO_INDEX]; - } - - WacCertify(major, minor, micro, optionalPart); -} - -WidgetVersion::WidgetVersion(const DPL::String &major, - const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional) : - m_isWac(false) -{ - // Create Raw version - m_raw += major; - m_raw += WAC_CERTIFY_MANDATORY_NUMBER_PART_SPLIT_CHAR; - m_raw += minor; - m_raw += WAC_CERTIFY_MANDATORY_NUMBER_PART_SPLIT_CHAR; - - if (!!micro) { - m_raw += *micro; - } - - if (!!optional) { - m_raw += WAC_CERTIFY_MANDATORY_VS_OPTIONAL_SPLIT_CHAR; - m_raw += *optional; - } - - // Certify for Wac - WacCertify(major, minor, micro, optional); -} - -void WidgetVersion::WacCertify(const DPL::String &major, - const DPL::String &minor, - const DPL::Optional µ, - const DPL::Optional &optional) -{ - LogDebug("Certyfing..."); - - LogDebug("Major candidate: " << major); - LogDebug("Minor candidate: " << minor); - LogDebug("Micro candidate: " << micro); - LogDebug("Optional candidate: " << optional); - - // Check strings - if (major.empty() || !WacCertifyNumberString(major)) { - LogDebug("Major version not certified!"); - return; - } - - if (minor.empty() || !WacCertifyNumberString(minor)) { - LogDebug("Minor version not certified!"); - return; - } - - if (!!micro && (micro->empty() || !WacCertifyNumberString(*micro))) { - LogDebug("Microversion not certified!"); - return; - } - - if (!!optional && - (optional->empty() || !WacCertifyAlphaNumberStringSpace(*optional))) - { - LogDebug("Optional version not certified!"); - return; - } - - // OK - m_major = major; - m_minor = minor; - m_micro = micro; - m_optional = optional; - - m_isWac = true; - - LogDebug("Certified."); -} - -bool WidgetVersion::IsWac() const -{ - return m_isWac; -} - -const DPL::String &WidgetVersion::Raw() const -{ - return m_raw; -} - -const DPL::String &WidgetVersion::Major() const -{ - return m_major; -} - -const DPL::String &WidgetVersion::Minor() const -{ - return m_minor; -} - -const DPL::Optional &WidgetVersion::Micro() const -{ - return m_micro; -} - -const DPL::Optional &WidgetVersion::Optional() const -{ - return m_optional; -} - -bool operator<(const WidgetVersion &left, - const WidgetVersion &right) -{ - Assert( - left.IsWac() && right.IsWac() && - "Only WAC version strings are comparable!"); - - if (NumberLessOperator(RemoveLeadingZeroes(left.Major()), - RemoveLeadingZeroes(right.Major()))) - { - return true; - } - if (NumberLessOperator(RemoveLeadingZeroes(right.Major()), - RemoveLeadingZeroes(left.Major()))) - { - return false; - } - - if (NumberLessOperator(RemoveLeadingZeroes(left.Minor()), - RemoveLeadingZeroes(right.Minor()))) - { - return true; - } - if (NumberLessOperator(RemoveLeadingZeroes(right.Minor()), - RemoveLeadingZeroes(left.Minor()))) - { - return false; - } - - if (!!left.Micro() && !!right.Micro() && - NumberLessOperator(RemoveLeadingZeroes(*left.Micro()), - RemoveLeadingZeroes(*right.Micro()))) - { - return true; - } - if (!left.Micro() && !!right.Micro()) { - return true; - } - - return false; -} - -bool operator<=(const WidgetVersion &left, - const WidgetVersion &right) -{ - Assert( - left.IsWac() && right.IsWac() && - "Only WAC version strings are comparable!"); - - return (left == right) || (left < right); -} - -bool operator>(const WidgetVersion &left, - const WidgetVersion &right) -{ - Assert( - left.IsWac() && right.IsWac() && - "Only WAC version strings are comparable!"); - - return !(left <= right); -} - -bool operator>=(const WidgetVersion &left, - const WidgetVersion &right) -{ - Assert( - left.IsWac() && right.IsWac() && - "Only WAC version strings are comparable!"); - - return (left == right) || (left > right); -} - -bool operator==(const WidgetVersion &left, - const WidgetVersion &right) -{ - Assert( - left.IsWac() && right.IsWac() && - "Only WAC version strings are comparable!"); - - //Major are equal - //and - //Minor are equal - //and - //Both Micro exist and are equal - //or both Micro do not exist - return RemoveLeadingZeroes(left.Major()) == - RemoveLeadingZeroes(right.Major()) && - RemoveLeadingZeroes(left.Minor()) == - RemoveLeadingZeroes(right.Minor()) && - ( - (!!left.Micro() && !!right.Micro() && - RemoveLeadingZeroes(*left.Micro()) == - RemoveLeadingZeroes(*right.Micro())) || - (!left.Micro() && !right.Micro()) - ); -} - -bool operator!=(const WidgetVersion &left, - const WidgetVersion &right) -{ - Assert( - left.IsWac() && right.IsWac() && - "Only WAC version strings are comparable!"); - - return !(left == right); -} - -std::ostream & operator<<(std::ostream& stream, - const WidgetVersion& version) -{ - stream << version.Raw(); - return stream; -} diff --git a/modules_mobile/utils/src/wrt_global_settings.cpp b/modules_mobile/utils/src/wrt_global_settings.cpp deleted file mode 100644 index 4f005c5..0000000 --- a/modules_mobile/utils/src/wrt_global_settings.cpp +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_global_settings.cpp - * @version 1.0 - * @author Pawel Sikorski(p.sikorski@samsung.com) - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @brief runtime - */ -#include -#include -#include -#include -#include -#include -#include - -namespace GlobalSettings { -namespace { -const int ROAMING_TEST = 0x00000001; -const int POPUPS_TEST = 0x00000002; -const int OCSP_TEST = 0x00000004; -const int WARP_TEST = 0x00000008; -const int CRL_TEST = 0x00000010; -const int SCREEN_SHOT_TEST = 0x00000020; -const int ALL_TEST = (ROAMING_TEST | POPUPS_TEST | OCSP_TEST | WARP_TEST - | CRL_TEST | SCREEN_SHOT_TEST); -const char* WRT_TEST_MODE = "WRT_TEST_MODE"; -const char* MACHINE_NAME_EMUL = "emulated"; // "arch_emulated" -enum MachineType -{ - MACHINE_TYPE_TARGET, - MACHINE_TYPE_EMULATOR, - MACHINE_TYPE_UNKNOWN -}; - -struct Settings { - bool isEmulator; - int testModes; - - Settings() : - isEmulator(false), testModes(0) - {} -}; - -Settings gSettings; - -bool initializeGlobalSettings(); -bool initHelper = initializeGlobalSettings(); - -MachineType getMachineType() -{ - // get current machine name - struct utsname u; - if (0 == uname(&u)) { - if (0 == strlen(u.machine)) { - return MACHINE_TYPE_UNKNOWN; - } else { - // If current machine is emul, - // machine name include "_emulated" - std::string machine = u.machine; - // find "emulated" string in the u.machine - if (std::string::npos != machine.find(MACHINE_NAME_EMUL)) { - return MACHINE_TYPE_EMULATOR; - } else { - return MACHINE_TYPE_TARGET; - } - } - } - - return MACHINE_TYPE_UNKNOWN; -} - -bool initializeGlobalSettings() -{ - (void)initHelper; - - // ignore environment variables if this flag is not set -#ifdef GLOBAL_SETTINGS_CONTROL - char * envStr = getenv(WRT_TEST_MODE); - if (NULL != envStr) { - std::string env = envStr; - int testMode = 0; - if ("1" == env) { - testMode = ALL_TEST; - } else { - std::istringstream str(envStr); - while (std::getline(str, env, '|')) { - if ("popups" == env) { - testMode |= POPUPS_TEST; - } else if ("roaming" == env) { - testMode |= ROAMING_TEST; - } else if ("ocsp" == env) { - testMode |= OCSP_TEST; - } else if ("warp" == env) { - testMode |= WARP_TEST; - } else if ("crl" == env) { - testMode |= CRL_TEST; - } else if ("screen" == env) { - testMode |= SCREEN_SHOT_TEST; - } - } - } - gSettings.testModes = testMode; - } - // TODO other settings initialization - -#endif - gSettings.isEmulator = (MACHINE_TYPE_EMULATOR == getMachineType()); - return false; -} -} // namespace - -bool TestModeEnabled() -{ - return ((gSettings.testModes & ALL_TEST) == ALL_TEST); -} - -bool PopupsTestModeEnabled() -{ - return (gSettings.testModes & POPUPS_TEST); -} -bool WarpTestModeEnabled() -{ - return (gSettings.testModes & WARP_TEST); -} -bool RoamingTestModeEnabled() -{ - return (gSettings.testModes & ROAMING_TEST); -} -bool OCSPTestModeEnabled() -{ - return (gSettings.testModes & OCSP_TEST); -} -bool CrlTestModeEnabled() -{ - return (gSettings.testModes & CRL_TEST); -} -bool MakeScreenTestModeEnabled() -{ - return (gSettings.testModes & SCREEN_SHOT_TEST); -} - -bool IsEmulator() -{ - return gSettings.isEmulator; -} -} // GlobalSettings diff --git a/modules_mobile/widget_dao/CMakeLists.txt b/modules_mobile/widget_dao/CMakeLists.txt deleted file mode 100755 index f2668eb..0000000 --- a/modules_mobile/widget_dao/CMakeLists.txt +++ /dev/null @@ -1,138 +0,0 @@ -SET(TARGET_WRT_DAO_DB "Sqlite3DbWRT") - -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h - COMMAND ${CMAKE_SOURCE_DIR}/modules/widget_dao/orm/gen_db_md5.sh - ARGS ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h - ${CMAKE_SOURCE_DIR}/modules/widget_dao/orm/wrt_db - DEPENDS ${CMAKE_SOURCE_DIR}/modules/widget_dao/orm/wrt_db - ${CMAKE_SOURCE_DIR}/modules/widget_dao/orm/gen_db_md5.sh - COMMENT "Generating WRT database checksum" - ) - -ADD_CUSTOM_COMMAND( OUTPUT .wrt.db - COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt.db - COMMAND gcc -Wall -include ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/widget_dao/orm -E ${PROJECT_SOURCE_DIR}/modules/widget_dao/orm/wrt_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/wrt_db.sql - COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.wrt.db ".read ${CMAKE_CURRENT_BINARY_DIR}/wrt_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt.db - DEPENDS ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h ${PROJECT_SOURCE_DIR}/modules/widget_dao/orm/wrt_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/widget_dao/orm/wrt_db - ) - -ADD_CUSTOM_COMMAND( OUTPUT .wrt.db-journal - COMMAND touch - ARGS ${CMAKE_CURRENT_BINARY_DIR}/.wrt.db-journal - ) - -ADD_CUSTOM_TARGET(${TARGET_WRT_DAO_DB} ALL DEPENDS .wrt.db .wrt.db-journal) - -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wrt_db.sql - DESTINATION share/wrt-engine/ - ) - -############################################################################### - -INCLUDE(FindPkgConfig) - -PKG_CHECK_MODULES(WRT_DAO_DEPS - ecore - appcore-efl - libxml-2.0 - openssl - REQUIRED) - -set(WRT_DAO_RO_SOURCES - dao/config_parser_data.cpp - dao/common_dao_types.cpp - dao/feature_dao_read_only.cpp - dao/path_builder.cpp - dao/plugin_dao_read_only.cpp - dao/property_dao_read_only.cpp - dao/widget_dao_read_only.cpp - dao/webruntime_database.cpp - dao/WrtDatabase.cpp - dao/widget_dao_types.cpp -) - -set(WRT_DAO_RW_SOURCES - dao/feature_dao.cpp - dao/plugin_dao.cpp - dao/property_dao.cpp - dao/widget_dao.cpp -) - -SET(WRT_DAO_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/modules/widget_dao/include - ${PROJECT_SOURCE_DIR}/modules/event/include - ${PROJECT_SOURCE_DIR}/modules/widget_dao/orm - ${PROJECT_SOURCE_DIR}/modules/core/include - ${PROJECT_SOURCE_DIR}/modules/db/include - ${PROJECT_SOURCE_DIR}/modules/log/include - ${PROJECT_SOURCE_DIR}/modules/localization/include -) - -INCLUDE_DIRECTORIES(${WRT_DAO_INCLUDE_DIRS}) -INCLUDE_DIRECTORIES(SYSTEM ${WRT_DAO_DEPS_INCLUDE_DIRS}) - -ADD_LIBRARY(${TARGET_WRT_DAO_RO_LIB} SHARED - ${WRT_DAO_RO_SOURCES} -) -SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RO_LIB} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION}) - -SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RO_LIB} PROPERTIES - COMPILE_FLAGS -fPIC) - -SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RO_LIB} PROPERTIES - COMPILE_FLAGS "-include ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h") - -target_link_libraries(${TARGET_WRT_DAO_RO_LIB} - ${TARGET_DPL_EFL} - ${TARGET_DPL_DB_EFL} - ${WRT_DAO_DEPS_LIBRARIES}) -ADD_DEPENDENCIES(${TARGET_WRT_DAO_RO_LIB} ${TARGET_WRT_DAO_DB}) - -ADD_LIBRARY(${TARGET_WRT_DAO_RW_LIB} SHARED ${WRT_DAO_RW_SOURCES}) - -SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RW_LIB} PROPERTIES - SOVERSION ${API_VERSION} - VERSION ${VERSION}) - -SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RW_LIB} PROPERTIES COMPILE_FLAGS -fPIC) - -SET_TARGET_PROPERTIES(${TARGET_WRT_DAO_RW_LIB} PROPERTIES - COMPILE_FLAGS "-include ${CMAKE_BINARY_DIR}/modules/widget_dao/database_checksum.h") - -target_link_libraries(${TARGET_WRT_DAO_RW_LIB} - ${TARGET_WRT_DAO_RO_LIB}) -ADD_DEPENDENCIES(${TARGET_WRT_DAO_RW_LIB} ${TARGET_WRT_DAO_DB}) - -INSTALL(TARGETS ${TARGET_WRT_DAO_RO_LIB} - DESTINATION lib) - -INSTALL(TARGETS ${TARGET_WRT_DAO_RW_LIB} - DESTINATION lib) - -INSTALL(FILES - include/dpl/wrt-dao-ro/config_parser_data.h - include/dpl/wrt-dao-ro/common_dao_types.h - include/dpl/wrt-dao-ro/feature_dao_read_only.h - include/dpl/wrt-dao-ro/feature_model.h - include/dpl/wrt-dao-ro/global_config.h - include/dpl/wrt-dao-ro/path_builder.h - include/dpl/wrt-dao-ro/plugin_dao_read_only.h - include/dpl/wrt-dao-ro/property_dao_read_only.h - include/dpl/wrt-dao-ro/widget_config.h - include/dpl/wrt-dao-ro/widget_dao_read_only.h - include/dpl/wrt-dao-ro/wrt_db_types.h - include/dpl/wrt-dao-ro/WrtDatabase.h - include/dpl/wrt-dao-ro/widget_dao_types.h - DESTINATION include/dpl-efl/dpl/wrt-dao-ro - ) - -INSTALL(FILES - include/dpl/wrt-dao-rw/feature_dao.h - include/dpl/wrt-dao-rw/plugin_dao.h - include/dpl/wrt-dao-rw/property_dao.h - include/dpl/wrt-dao-rw/widget_dao.h - DESTINATION include/dpl-efl/dpl/wrt-dao-rw - ) diff --git a/modules_mobile/widget_dao/dao/config_parser_data.cpp b/modules_mobile/widget_dao/dao/config_parser_data.cpp deleted file mode 100644 index 4bf4857..0000000 --- a/modules_mobile/widget_dao/dao/config_parser_data.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file config_parser_data.cpp - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 0.1 - * @brief - */ -#include -#include -#include -#include -#include - -namespace WrtDB { -bool IsSpace(const xmlChar* str); -bool CopyChar(xmlChar* out, xmlChar* in); - -bool IsSpace(const xmlChar* str) -{ - int charlen = xmlUTF8Size(str); - - switch (charlen) { - case 1: - switch (*str) { - case 0x09: - case 0x0a: - case 0x0b: - case 0x0c: - case 0x0d: - case 0x20: - return true; - - default: - return false; - } - - case 2: - switch (*(str + 1)) { - case 0x85: - case 0xa0: - return true; - - default: - return false; - } - - case 3: - switch (*str) { - case 0xe1: - { - unsigned char c2 = *(str + 1); - unsigned char c3 = *(str + 2); - if ((c2 == 0x9a && c3 == 0x80) || (c2 == 0xa0 && c3 == 0x8e)) { - return true; - } else { - return false; - } - } - - case 0xe2: - switch (*(str + 1)) { - case 0x80: - switch (*(str + 2)) { - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8a: - case 0xa8: - case 0xa9: - case 0xaf: - return true; - default: - return false; - } - case 0x81: - if (*(str + 2) == 0x9f) { - return true; - } else { - return false; - } - - default: - return false; - } - case 0xe3: - if (*(str + 1) == 0x80 && *(str + 2) == 0x80) { - return true; - } else { - return false; - } - - default: - return false; - } - - default: - return false; - } -} - -bool CopyChar(xmlChar* out, - xmlChar* in) -{ - int size = xmlUTF8Size(in); - switch (size) { - case 6: - out[5] = in[5]; - case 5: - out[4] = in[4]; - case 4: - out[3] = in[3]; - case 3: - out[2] = in[2]; - case 2: - out[1] = in[1]; - case 1: - out[0] = in[0]; - return true; - - default: - return false; - } -} - -//TODO temporary fix until commits the rewrite of this functionality. -void NormalizeString(DPL::String& str) -{ - DPL::Optional opt = str; - NormalizeString(opt); - str = *opt; -} - -void NormalizeString (DPL::Optional& txt, bool isTrimSpace) -{ - if (!!txt) { - std::string tmp = DPL::ToUTF8String(*txt); - const xmlChar* str = reinterpret_cast(tmp.c_str()); - if (!xmlCheckUTF8(str)) { - LogError("Not valid UTF8"); - return; - } - - int i = 0; - xmlChar* c; - while ((c = const_cast(xmlUTF8Strpos(str, i))) != NULL) { - if (!IsSpace(c)) { - break; - } - ++i; - } - - xmlChar* tmpnew = xmlUTF8Strndup(c, xmlUTF8Strlen(c) + 1); - bool first = false; - xmlChar* s = tmpnew; - while ((c = const_cast(xmlUTF8Strpos(str, i))) != NULL) { - if (IsSpace(c)) { - first = true; - ++i; - } else { - if (c[0] == 0x0) { - break; - } - if (first && !isTrimSpace) { - xmlChar space[6] = { 0x20 }; - CopyChar(s, space); - s += xmlUTF8Size(s); - first = false; - } - CopyChar(s, c); - s += xmlUTF8Size(s); - ++i; - } - } - s[0] = 0x0; - txt = DPL::FromUTF8String(reinterpret_cast(tmpnew)); - xmlFree(tmpnew); - } -} - -void NormalizeAndTrimSpaceString(DPL::OptionalString& txt) -{ - NormalizeString(txt, true); -} - -bool ConfigParserData::Feature::operator==(const Feature& other) const -{ - return name == other.name; -} - -bool ConfigParserData::Feature::operator!=(const Feature& other) const -{ - return name != other.name; -} - -bool ConfigParserData::Feature::operator >(const Feature& other) const -{ - return name > other.name; -} - -bool ConfigParserData::Feature::operator>=(const Feature& other) const -{ - return name >= other.name; -} - -bool ConfigParserData::Feature::operator <(const Feature& other) const -{ - return name < other.name; -} - -bool ConfigParserData::Feature::operator<=(const Feature& other) const -{ - return name <= other.name; -} - -bool ConfigParserData::Privilege::operator==(const Privilege& other) const -{ - return name == other.name; -} - -bool ConfigParserData::Privilege::operator!=(const Privilege& other) const -{ - return name != other.name; -} - -bool ConfigParserData::Privilege::operator >(const Privilege& other) const -{ - return name > other.name; -} - -bool ConfigParserData::Privilege::operator>=(const Privilege& other) const -{ - return name >= other.name; -} - -bool ConfigParserData::Privilege::operator <(const Privilege& other) const -{ - return name < other.name; -} - -bool ConfigParserData::Privilege::operator<=(const Privilege& other) const -{ - return name < other.name; -} - -bool ConfigParserData::Icon::operator==(const Icon& other) const -{ - return src == other.src; -} - -bool ConfigParserData::Icon::operator!=(const Icon& other) const -{ - return src != other.src; -} - -bool ConfigParserData::Icon::operator >(const Icon& other) const -{ - return src > other.src; -} - -bool ConfigParserData::Icon::operator>=(const Icon& other) const -{ - return src >= other.src; -} - -bool ConfigParserData::Icon::operator <(const Icon& other) const -{ - return src < other.src; -} - -bool ConfigParserData::Icon::operator<=(const Icon& other) const -{ - return src <= other.src; -} - -bool ConfigParserData::Preference::operator==(const Preference& other) const -{ - return name == other.name; -} - -bool ConfigParserData::Preference::operator!=(const Preference& other) const -{ - return name != other.name; -} - -bool ConfigParserData::Preference::operator >(const Preference& other) const -{ - return name > other.name; -} - -bool ConfigParserData::Preference::operator>=(const Preference& other) const -{ - return name >= other.name; -} - -bool ConfigParserData::Preference::operator <(const Preference& other) const -{ - return name < other.name; -} - -bool ConfigParserData::Preference::operator<=(const Preference& other) const -{ - return name <= other.name; -} - -bool ConfigParserData::AccessInfo::operator== (const AccessInfo& info) const -{ - return m_strIRI == info.m_strIRI && m_bSubDomainAccess == - info.m_bSubDomainAccess; -} - -bool ConfigParserData::AccessInfo::operator!= (const AccessInfo& info) const -{ - return m_strIRI != info.m_strIRI || m_bSubDomainAccess != - info.m_bSubDomainAccess; -} - -bool ConfigParserData::AccessInfo::operator <(const AccessInfo& info) const -{ - if (m_strIRI == info.m_strIRI) { - return m_bSubDomainAccess < info.m_bSubDomainAccess; - } else { - return m_strIRI < info.m_strIRI; - } -} - -bool ConfigParserData::Setting::operator==(const Setting& other) const -{ - return m_name == other.m_name && - m_value == other.m_value; -} - -bool ConfigParserData::Setting::operator!=(const Setting& other) const -{ - return m_name != other.m_name || - m_value != other.m_value; -} - -bool ConfigParserData::Setting::operator >(const Setting& other) const -{ - return m_name > other.m_name; -} - -bool ConfigParserData::Setting::operator>=(const Setting& other) const -{ - return m_name >= other.m_name; -} - -bool ConfigParserData::Setting::operator <(const Setting& other) const -{ - return m_name < other.m_name; -} - -bool ConfigParserData::Setting::operator<=(const Setting& other) const -{ - return m_name <= other.m_name; -} - -bool ConfigParserData::AppControlInfo::operator== (const AppControlInfo& info) const -{ - return m_src == info.m_src && - m_operation == info.m_operation && - m_uriList == info.m_uriList && - m_mimeList == info.m_mimeList && - m_disposition == info.m_disposition; -} - -bool ConfigParserData::AppControlInfo::operator!= (const AppControlInfo& info) const -{ - return m_src != info.m_src || - m_operation != info.m_operation || - m_uriList != info.m_uriList || - m_mimeList != info.m_mimeList || - m_disposition != info.m_disposition; -} - -bool ConfigParserData::LiveboxInfo::operator==(const LiveboxInfo& other) const -{ - return m_liveboxId == other.m_liveboxId && - m_autoLaunch == other.m_autoLaunch && - m_updatePeriod == other.m_updatePeriod && - m_primary == other.m_primary && - m_label == other.m_label && - m_icon == other.m_icon; -} - -bool ConfigParserData::LiveboxInfo::operator!=(const LiveboxInfo& other) const -{ - return m_liveboxId != other.m_liveboxId && - m_autoLaunch != other.m_autoLaunch && - m_updatePeriod != other.m_updatePeriod && - m_primary != other.m_primary && - m_label != other.m_label && - m_icon != other.m_icon; -} - -bool ConfigParserData::Metadata::operator== (const Metadata& other) const -{ - return key == other.key && value == other.value; -} - -bool ConfigParserData::Metadata::operator!= (const Metadata& other) const -{ - return key != other.key || value != other.value; -} -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/feature_dao.cpp b/modules_mobile/widget_dao/dao/feature_dao.cpp deleted file mode 100644 index 4a6a6a4..0000000 --- a/modules_mobile/widget_dao/dao/feature_dao.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the definition of feature dao class. - * - * @file widget_dao.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the definition of feature configuration. - */ -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -namespace FeatureDAO { -FeatureHandle RegisterFeature(const PluginMetafileData::Feature &feature, - const DbPluginHandle pluginHandle) -{ - Try - { - LogDebug("Registering Feature " << feature.m_name); - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - if (FeatureDAOReadOnly::isFeatureInstalled(feature.m_name)) { - LogError(" >> Feature " << feature.m_name << - " is already registered."); - transaction.Commit(); - return -1; - } - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - //register feature - { - LogDebug(" |-- Registering feature " << feature.m_name); - - FeaturesList::Row row; - row.Set_FeatureName(DPL::FromUTF8String(feature.m_name)); - row.Set_PluginPropertiesId(pluginHandle); - - WRT_DB_INSERT(insert, FeaturesList, &WrtDatabase::interface()) - insert->Values(row); - insert->Execute(); - } - - FeatureHandle featureHandle = - FeatureDAOReadOnly(feature.m_name).GetFeatureHandle(); - - //register device capabilities - // Device Capabilities is unused in current version - FOREACH(itdev, feature.m_deviceCapabilities) - { - int deviceCapID; - - if (FeatureDAOReadOnly::isDeviceCapabilityInstalled(*itdev)) { - LogDebug(" | |--DeviceCap " << *itdev << - " already installed!"); - - WRT_DB_SELECT(select, - DeviceCapabilities, - &WrtDatabase::interface()) - - select->Where(Equals( - DPL::FromUTF8String(*itdev))); - - deviceCapID = - select->GetSingleValue(); - } else { - LogDebug(" | |--Register DeviceCap: " << *itdev); - - DeviceCapabilities::Row row; - row.Set_DeviceCapName(DPL::FromUTF8String(*itdev)); - - WRT_DB_INSERT(insert, - DeviceCapabilities, - &WrtDatabase::interface()) - insert->Values(row); - deviceCapID = static_cast(insert->Execute()); - } - - FeatureDeviceCapProxy::Row row; - row.Set_FeatureUUID(featureHandle); - row.Set_DeviceCapID(deviceCapID); - - WRT_DB_INSERT(insert, - FeatureDeviceCapProxy, - &WrtDatabase::interface()) - insert->Values(row); - insert->Execute(); - } - - transaction.Commit(); - - return featureHandle; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during Registering Feature"); - } -} - -void UnregisterFeature(FeatureHandle featureHandle) -{ - Try - { - LogDebug("Unregistering Feature " << featureHandle); - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - if (FeatureDAOReadOnly::isFeatureInstalled(featureHandle)) { - LogError("Feature handle is invalid"); - return; - } - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - // Unregister DeviceCapabilities - FeatureDAOReadOnly::DeviceCapabilitiesList capabilitiesList = - FeatureDAOReadOnly(featureHandle).GetDeviceCapabilities(); - - FOREACH(it, capabilitiesList) { - WRT_DB_DELETE(del, DeviceCapabilities, &WrtDatabase::interface()) - del->Where( - Equals( - DPL::FromUTF8String(*it))); - del->Execute(); - } - - // Unregister Feature - WRT_DB_DELETE(del, FeaturesList, &WrtDatabase::interface()) - del->Where(Equals(featureHandle)); - del->Execute(); - transaction.Commit(); - - return; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Fail to unregister Feature"); - } -} -} // namespace FeatureDAO -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/path_builder.cpp b/modules_mobile/widget_dao/dao/path_builder.cpp deleted file mode 100644 index ab55476..0000000 --- a/modules_mobile/widget_dao/dao/path_builder.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file PathBuilder.cpp - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief Implementation file for PathBuilde class. - */ -#include -#include -#include - -namespace WrtDB { -namespace { -const char PATH_SEPARATOR = '/'; -} - -class PathBuilderImpl : DPL::Noncopyable -{ - public: - PathBuilderImpl() - {} - - explicit PathBuilderImpl(const std::string& path) : - m_stream(path, std::ios_base::app) - {} - - void Append(const std::string& path) - { - // TODO Check additionally if last char is not separator. - if (m_stream.tellp() > 0) { - m_stream << PATH_SEPARATOR; - } - m_stream << path; - } - - void Concat(const std::string& arg) - { - m_stream << arg; - } - - void Concat(int arg) - { - m_stream << arg; - } - - void Reset() - { - m_stream.clear(); - m_stream.str(""); - } - - bool Empty() - { - return (m_stream.tellp() == 0); - } - - std::string GetFullPath() const - { - return m_stream.str(); - } - - private: - std::ostringstream m_stream; -}; - -PathBuilder::PathBuilder() : m_impl(new PathBuilderImpl()) -{} - -PathBuilder::PathBuilder(const std::string& path) : - m_impl(new PathBuilderImpl(path)) -{} - -PathBuilder::~PathBuilder() -{ - delete m_impl; -} - -PathBuilder& PathBuilder::Append(const std::string& path) -{ - m_impl->Append(path); - return *this; -} - -PathBuilder& PathBuilder::Concat(const std::string& arg) -{ - m_impl->Concat(arg); - return *this; -} - -PathBuilder& PathBuilder::Concat(int arg) -{ - m_impl->Concat(arg); - return *this; -} - -PathBuilder& PathBuilder::Reset() -{ - m_impl->Reset(); - return *this; -} - -bool PathBuilder::Empty() const -{ - return m_impl->Empty(); -} - -std::string PathBuilder::GetFullPath() const -{ - return m_impl->GetFullPath(); -} -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/plugin_dao_read_only.cpp b/modules_mobile/widget_dao/dao/plugin_dao_read_only.cpp deleted file mode 100644 index a90e013..0000000 --- a/modules_mobile/widget_dao/dao/plugin_dao_read_only.cpp +++ /dev/null @@ -1,458 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_dao_read_only.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the implementation of plugin dao read only - */ -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -namespace { -typedef DPL::DB::ORM::wrt::PluginProperties::Row PluginRow; - -PluginRow getPluginRow(DbPluginHandle pluginHandle) -{ - LogDebug("Getting plugin row. Handle: " << pluginHandle); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - select->Where(Equals( - pluginHandle)); - - PluginProperties::Select::RowList rows = select->GetRowList(); - if (rows.empty()) { - ThrowMsg(PluginDAOReadOnly::Exception::PluginNotExist, - "Cannot find plugin. Handle: " + pluginHandle); - } - return rows.front(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetPluginRow"); - } -} -} - -PluginDAOReadOnly::PluginDAOReadOnly(DbPluginHandle pluginHandle) : - m_pluginHandle(pluginHandle) -{ - if (!isPluginInstalled(m_pluginHandle)) { - LogError("Plugin " << m_pluginHandle << " not installed."); - Throw(PluginDAOReadOnly::Exception::PluginNotExist); - } - - checkInstallationCompleted(); -} - -PluginDAOReadOnly::PluginDAOReadOnly(const std::string &libraryName) -{ - LogDebug("PluginDAOReadOnly ( " << libraryName << " )"); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - select->Where(Equals( - DPL::FromUTF8String(libraryName))); - - PluginProperties::Select::RowList rows = select->GetRowList(); - if (!rows.empty()) { - m_pluginHandle = rows.front().Get_PluginPropertiesId(); - } else { - ThrowMsg(PluginDAOReadOnly::Exception::PluginNotExist, - "Cannot find plugin: [" + libraryName + "]"); - } - LogDebug(" >> Handle for this plugin: " << m_pluginHandle); - - checkInstallationCompleted(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed to connect to database"); - } -} - -void PluginDAOReadOnly::checkInstallationCompleted() -{ - if (getInstallationStateForHandle(m_pluginHandle) - != PluginDAOReadOnly::INSTALLATION_COMPLETED) - { - LogError("Plugin " << m_pluginHandle << " installation not completed"); - Throw(PluginDAOReadOnly::Exception::PluginInstallationNotCompleted); - } -} - -bool PluginDAOReadOnly::isPluginInstalled(const std::string &libraryName) -{ - LogDebug("Check if Library is installed. LibraryName: " << libraryName); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - select->Where(Equals( - DPL::FromUTF8String(libraryName))); - - PluginProperties::Select::RowList rows = select->GetRowList(); - - bool flag = !rows.empty(); - LogDebug(" >> Plugin " << libraryName << - (flag ? " found." : " not found.")); - - return flag; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in isPluginInstalled"); - } -} - -PluginHandleList PluginDAOReadOnly::getPluginHandleList() -{ - LogDebug("Getting plugin handle list."); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - - PluginHandleList ret = - select->GetValueList(); - - std::ostringstream handles; - FOREACH(it, ret) - handles << *it << " "; - LogDebug(" >> PluginHandle list retrieved: (" << handles << ")"); - - return ret; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetPluginHandleList"); - } -} - -PluginHandleList PluginDAOReadOnly::getRootPluginHandleList() -{ - LogDebug("Getting root plugin handle list."); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - PluginHandleList handleList = select->GetValueList(); - - WRT_DB_SELECT(select_2nd, PluginDependencies, &WrtDatabase::interface()) - PluginDependencies::Select::RowList dependenciesRows = select_2nd->GetRowList(); - - if (!dependenciesRows.empty()) - { - FOREACH(it, dependenciesRows) - { - handleList.remove(it->Get_PluginPropertiesId()); - } - } - - return handleList; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in getRootPluginHandleList"); - } -} - -DbPluginHandle PluginDAOReadOnly::getPluginHandle() const -{ - return m_pluginHandle; -} - -//"value" cannot be null, as in registerPlugin it is always set -#define RETURN_STD_STRING(in, what) \ - std::string ret = ""; \ - if (!in.IsNull()) { \ - ret = DPL::ToUTF8String(*in); } \ - LogDebug(" >> Plugin " << what << ": " << ret); \ - return ret; - -std::string PluginDAOReadOnly::getLibraryPath() const -{ - LogDebug("Getting plugin library path. Handle: " << m_pluginHandle); - PluginRow row = getPluginRow(m_pluginHandle); - RETURN_STD_STRING(row.Get_PluginLibraryPath(), "library path") -} - -std::string PluginDAOReadOnly::getLibraryName() const -{ - LogDebug("Getting plugin library name. Handle: " << m_pluginHandle); - PluginRow row = getPluginRow(m_pluginHandle); - std::string ret = DPL::ToUTF8String(row.Get_PluginLibraryName()); - LogDebug(" >> Plugin library name: " << ret); - return ret; -} - -#undef RETURN_STD_STRING - -PluginHandleSetPtr PluginDAOReadOnly::getLibraryDependencies() const -{ - Try - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - PluginHandleSetPtr dependencies(new PluginHandleSet); - - WRT_DB_SELECT(select, PluginDependencies, &WrtDatabase::interface()) - select->Where( - Equals(m_pluginHandle)); - - PluginDependencies::Select::RowList rows = select->GetRowList(); - - if (!rows.empty()) { - FOREACH(it, rows) - { - dependencies->insert(it->Get_RequiredPluginPropertiesId()); - } - } - - return dependencies; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetLibraryDependencies"); - } -} - -DbPluginHandle PluginDAOReadOnly::getPluginHandleForImplementedObject( - const std::string& objectName) -{ - LogDebug("GetPluginHandle for object: " << objectName); - - Try - { - DbPluginHandle pluginHandle = INVALID_PLUGIN_HANDLE; - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WRT_DB_SELECT(select, PluginImplementedObjects, &WrtDatabase::interface()) - select->Where( - Equals( - DPL::FromUTF8String(objectName))); - - PluginImplementedObjects::Select::RowList rows = select->GetRowList(); - - if (!rows.empty()) { - pluginHandle = rows.front().Get_PluginPropertiesId(); - } else { - LogWarning("PluginHandle for object not found"); - } - return pluginHandle; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetPluginHandleForImplementedObject"); - } -} - -ImplementedObjectsList PluginDAOReadOnly::getImplementedObjects() -{ - LogDebug("getImplementedObjects"); - - Try - { - ImplementedObjectsList objectList; - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WRT_DB_SELECT(select, PluginImplementedObjects, &WrtDatabase::interface()) - std::list valueList = select->GetValueList(); - - if (!valueList.empty()) { - FOREACH(it, valueList) - { - objectList.push_back(DPL::ToUTF8String(*it)); - } - } else { - LogWarning("PluginHandle for object not found"); - } - return objectList; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetPluginHandleForImplementedObject"); - } -} - -ImplementedObjectsList PluginDAOReadOnly::getImplementedObjectsForPluginHandle( - DbPluginHandle handle) -{ - LogDebug("getImplementedObjects for pluginHandle: " << handle); - - Try - { - ImplementedObjectsList objectList; - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WRT_DB_SELECT(select, PluginImplementedObjects, &WrtDatabase::interface()) - select->Where( - Equals(handle)); - - PluginImplementedObjects::Select::RowList rows = select->GetRowList(); - - if (!rows.empty()) { - FOREACH(it, rows) - { - objectList.push_back(DPL::ToUTF8String(it->Get_PluginObject())); - } - } else { - LogWarning("PluginHandle for object not found"); - } - return objectList; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetPluginHandleForImplementedObject"); - } -} - -PluginObjectsDAO::ObjectsPtr PluginDAOReadOnly:: - getRequiredObjectsForPluginHandle( - DbPluginHandle handle) -{ - Try - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - PluginObjectsDAO::ObjectsPtr objects = - PluginObjectsDAO::ObjectsPtr(new PluginObjectsDAO::Objects); - - WRT_DB_SELECT(select, PluginRequiredObjects, &WrtDatabase::interface()) - select->Where( - Equals(handle)); - - PluginRequiredObjects::Select::RowList rows = select->GetRowList(); - - if (!rows.empty()) { - FOREACH(it, rows) - { - objects->insert(DPL::ToUTF8String(it->Get_PluginObject())); - } - } - - return objects; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetRequiredObjectsForPluginHandle"); - } -} - -PluginHandleSetPtr PluginDAOReadOnly::getPluginHandleByStatus( - PluginInstallationState state) -{ - Try - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - PluginHandleSetPtr handleSet(new PluginHandleSet); - - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - select->Where( - Equals(ToInt(state))); - - PluginProperties::Select::RowList rows = select->GetRowList(); - - if (!rows.empty()) { - FOREACH(it, rows) - { - handleSet->insert(it->Get_PluginPropertiesId()); - } - } - - return handleSet; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetPluginHandleByStatus"); - } -} - -PluginDAOReadOnly::PluginInstallationState PluginDAOReadOnly:: - getInstallationStatus() const -{ - PluginRow row = getPluginRow(m_pluginHandle); - return ToState(row.Get_InstallationState()); -} - -PluginDAOReadOnly::PluginInstallationState PluginDAOReadOnly:: - getInstallationStateForHandle( - DbPluginHandle handle) -{ - Try - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - select->Where( - Equals(handle)); - - PluginProperties::Select::RowList rows = select->GetRowList(); - - if (!rows.empty()) { - return ToState(rows.front().Get_InstallationState()); - } - LogError("Data in DB are invalid. Missing field"); - return UNKNOWN_ERROR; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in GetStatusForHandle"); - } -} - -bool PluginDAOReadOnly::isPluginInstalled(DbPluginHandle pluginHandle) -{ - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, PluginProperties, &WrtDatabase::interface()) - select->Where( - Equals(pluginHandle)); - - PluginProperties::Select::RowList rows = select->GetRowList(); - - bool flag = !rows.empty(); - - return flag; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(PluginDAOReadOnly::Exception::DatabaseError, - "Failed in isPluginInstalled"); - } -} -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/property_dao.cpp b/modules_mobile/widget_dao/dao/property_dao.cpp deleted file mode 100644 index 434e842..0000000 --- a/modules_mobile/widget_dao/dao/property_dao.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file property_dao.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the definition of property dao class. - */ -#include -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -namespace PropertyDAO { -void RemoveProperty(TizenAppId tzAppid, - const PropertyDAOReadOnly::WidgetPropertyKey &key) -{ - //TODO below there are two queries. - // First query asks if given property can be removed, - // Second removes it. Maybe it should be combined two one. - - LogDebug("Removing Property. appid: " << tzAppid << ", key: " << key); - Try { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - DPL::OptionalInt readonly = PropertyDAOReadOnly::CheckPropertyReadFlag( - tzAppid, - key); - if (!readonly.IsNull() && *readonly == 1) { - LogError("'" << key << - "' key is readonly. Cannot remove property !"); - ThrowMsg(PropertyDAOReadOnly::Exception::ReadOnlyProperty, - "Property is readonly"); - } - - // Key is not readonly, or has no flag defined - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_DELETE(del, WidgetPreference, &WrtDatabase::interface()) - del->Where(And( - Equals(tzAppid), - Equals(key))); - del->Execute(); - - transaction.Commit(); - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(PropertyDAOReadOnly::Exception::DatabaseError, - "Failure during removing property"); - } -} - -//deprecated -void SetProperty(DbWidgetHandle widgetHandle, - const PropertyDAOReadOnly::WidgetPropertyKey &key, - const PropertyDAOReadOnly::WidgetPropertyValue &value, - bool readOnly) -{ - SetProperty(WidgetDAOReadOnly::getTzAppId( - widgetHandle), key, value, readOnly); -} - -void SetProperty(TizenAppId tzAppid, - const PropertyDAOReadOnly::WidgetPropertyKey &key, - const PropertyDAOReadOnly::WidgetPropertyValue &value, - bool readOnly) -{ - LogDebug("Setting/updating Property. appid: " << tzAppid << - ", key: " << key); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - DPL::OptionalInt readonly = PropertyDAOReadOnly::CheckPropertyReadFlag( - tzAppid, - key); - if (!readonly.IsNull() && *readonly == 1) { - LogError("'" << key << - "' key is readonly. Cannot remove property !"); - ThrowMsg(PropertyDAOReadOnly::Exception::ReadOnlyProperty, - "Property is readonly"); - } - DbWidgetHandle widgetHandle(WidgetDAOReadOnly::getHandle(tzAppid)); - - if (readonly.IsNull()) { - WidgetPreference::Row row; - row.Set_app_id(widgetHandle); - row.Set_tizen_appid(tzAppid); - row.Set_key_name(key); - row.Set_key_value(value); - row.Set_readonly(readOnly ? 1 : 0); - - WRT_DB_INSERT(insert, WidgetPreference, &WrtDatabase::interface()) - insert->Values(row); - insert->Execute(); - } else { - WidgetPreference::Row row; - row.Set_key_value(value); - - WRT_DB_UPDATE(update, WidgetPreference, &WrtDatabase::interface()) - update->Where(And( - Equals(tzAppid), - Equals(key))); - - update->Values(row); - update->Execute(); - } - transaction.Commit(); - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(PropertyDAOReadOnly::Exception::DatabaseError, - "Failure during setting/updating property"); - } -} - -void RegisterProperties(DbWidgetHandle widgetHandle, TizenAppId tzAppid, - const WidgetRegisterInfo ®Info) -{ - LogDebug("Registering proferences for widget. appid: " << tzAppid); - - // Try-Catch in WidgetDAO - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(it, widgetConfigurationInfo.preferencesList) - { - { // Insert into table Widget Preferences - WidgetPreference::Row row; - row.Set_app_id(widgetHandle); - row.Set_tizen_appid(tzAppid); - row.Set_key_name(it->name); - row.Set_key_value(it->value); - int readonly = true == it->readonly ? 1 : 0; - row.Set_readonly(readonly); - - WRT_DB_INSERT(insert, WidgetPreference, &WrtDatabase::interface()) - insert->Values(row); - insert->Execute(); - } - } -} -} // namespace PropertyDAO -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/property_dao_read_only.cpp b/modules_mobile/widget_dao/dao/property_dao_read_only.cpp deleted file mode 100644 index fac99a8..0000000 --- a/modules_mobile/widget_dao/dao/property_dao_read_only.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * property_dao_read_only.cpp - * - * Created on: Nov 16, 2011 - * Author: Krzysztof Jackiewicz(k.jackiewicz@samsung.com) - */ -#include -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -namespace PropertyDAOReadOnly { -namespace { -typedef DPL::DB::ORM::wrt::WidgetPreference::key_name::ColumnType -ORMWidgetPropertyKey; -typedef DPL::DB::ORM::wrt::WidgetPreference::key_value::ColumnType -ORMWidgetPropertyValue; -typedef std::list -ORMWidgetPreferenceList; -typedef std::list ORMWidgetPropertyKeyList; - -void convertPropertyKey(const ORMWidgetPropertyKey& ormKey, - WidgetPropertyKey& key) -{ - key = ormKey; -} - -void convertPropertyValue(const ORMWidgetPropertyValue& ormPropertyVal, - WidgetPropertyValue& propertyVal) -{ - propertyVal = ormPropertyVal; -} - -void convertWidgetPreferenceRow(const ORMWidgetPreferenceList& ormWidgetPrefRow, - WidgetPreferenceList& prefRow) -{ - FOREACH(it, ormWidgetPrefRow) { - WidgetPreferenceRow row; - - row.appId = it->Get_app_id(); - row.tizen_appid = it->Get_tizen_appid(); - row.key_name = it->Get_key_name(); - row.key_value = it->Get_key_value(); - row.readonly = it->Get_readonly(); - - prefRow.push_back(row); - } -} - -void convertWidgetPropertyKeyList(const ORMWidgetPropertyKeyList& propKeyList, - WidgetPropertyKeyList& keyList) -{ - FOREACH(it, propKeyList) { - keyList.push_back(*it); - } -} - -WidgetPreferenceList GetPropertyListRows(DbWidgetHandle widgetHandle) -{ - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface()) - select->Where(Equals(widgetHandle)); - ORMWidgetPreferenceList ormPrefList = select->GetRowList(); - WidgetPreferenceList prefList; - convertWidgetPreferenceRow(ormPrefList, prefList); - return prefList; - }Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(Exception::DatabaseError, - "Failure during getting property list"); - } -} -} - -//deprecated -DPL::OptionalInt CheckPropertyReadFlag(DbWidgetHandle widgetHandle, - const WidgetPropertyKey &key) -{ - return CheckPropertyReadFlag(WidgetDAOReadOnly::getTzAppId(widgetHandle), - key); -} - -DPL::OptionalInt CheckPropertyReadFlag(TizenAppId tzAppid, - const WidgetPropertyKey &key) -{ - LogDebug("Checking Property flag. appid: " << tzAppid << - ", key: " << key); - - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - DbWidgetHandle widgetHandle(WidgetDAOReadOnly::getHandle(tzAppid)); - - WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface()) - select->Where(And(Equals(widgetHandle), - Equals(key))); - - return select->GetSingleValue(); - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(Exception::DatabaseError, - "Failure during checking readonly flag for property"); - } -} - -WidgetPropertyKeyList GetPropertyKeyList(TizenAppId tzAppid) -{ - LogDebug("Get PropertyKey list. appid: " << tzAppid); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - DbWidgetHandle widgetHandle(WidgetDAOReadOnly::getHandle(tzAppid)); - - ORMWidgetPropertyKeyList keyList; - WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface()) - select->Where(Equals(widgetHandle)); - keyList = select->GetValueList(); - - WidgetPropertyKeyList retKeyList; - - convertWidgetPropertyKeyList(keyList, retKeyList); - return retKeyList; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(Exception::DatabaseError, - "Failure during getting propertykey list"); - } -} - -WidgetPreferenceList GetPropertyList(DbWidgetHandle widgetHandle) -{ - if(!(WidgetDAOReadOnly::isWidgetInstalled(widgetHandle))) - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Failed to get widget"); - return GetPropertyListRows(widgetHandle); -} - -WidgetPreferenceList GetPropertyList(TizenAppId tzAppId) -{ - LogDebug("Get Property list. tizenAppId: " << tzAppId); - DbWidgetHandle widgetHandle(WidgetDAOReadOnly::getHandle(tzAppId)); - return GetPropertyListRows(widgetHandle); -} - - -WidgetPropertyValue GetPropertyValue(TizenAppId tzAppid, - const WidgetPropertyKey &key) -{ - LogDebug("Get Property value. appid: " << tzAppid << - ", key: " << key); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - DbWidgetHandle widgetHandle(WidgetDAOReadOnly::getHandle(tzAppid)); - - WRT_DB_SELECT(select, WidgetPreference, &WrtDatabase::interface()) - select->Where(And(Equals(widgetHandle), - Equals(key))); - - ORMWidgetPropertyValue ormPropValue = - select->GetSingleValue(); - - WidgetPropertyValue propValue; - - convertPropertyValue(ormPropValue, propValue); - - return propValue; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(Exception::DatabaseError, - "Failure during getting property"); - } -} -} // namespace PropertyDAOReadOnly -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/webruntime_database.cpp b/modules_mobile/widget_dao/dao/webruntime_database.cpp deleted file mode 100644 index 5fbb7d7..0000000 --- a/modules_mobile/widget_dao/dao/webruntime_database.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file webruntime_database.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file contains the definition of webruntime database - */ -#include -#include - -DPL::Mutex g_wrtDbQueriesMutex; - diff --git a/modules_mobile/widget_dao/dao/widget_dao.cpp b/modules_mobile/widget_dao/dao/widget_dao.cpp deleted file mode 100644 index f50016e..0000000 --- a/modules_mobile/widget_dao/dao/widget_dao.cpp +++ /dev/null @@ -1,871 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the definition of widget dao class. - * - * @file widget_dao.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Bartosz Janiak (b.janiak@samsung.com) - * @author Yang Jie (jie2.yang@samsung.com) - * @author Koeun Choi(koeun.choi@samsung.com) - * @author Pawel Sikorski(p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the definition of Configuration. - */ -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -//TODO in current solution in each getter there exists a check -//"IsWidgetInstalled". Maybe it should be verified, if it could be done -//differently (check in WidgetDAO constructor) - -#define SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN Try - -#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ - ReThrowMsg(WidgetDAO::Exception::DatabaseError, \ - message); \ - } - -WidgetDAO::WidgetDAO(DPL::OptionalString widgetGUID) : - WidgetDAOReadOnly(WidgetDAOReadOnly::getHandle(widgetGUID)) -{} - -WidgetDAO::WidgetDAO(DPL::String tzAppId) : - WidgetDAOReadOnly(WidgetDAOReadOnly::getHandle(tzAppId)) -{} - -WidgetDAO::WidgetDAO(DbWidgetHandle handle) : - WidgetDAOReadOnly(handle) -{} - -WidgetDAO::~WidgetDAO() -{} - -void WidgetDAO::setTizenAppId(const DPL::OptionalString& tzAppId) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - wrt::ScopedTransaction transaction(&WrtDatabase::interface()); - - if (!isWidgetInstalled(getHandle())) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << getHandle()); - } - - wrt::WidgetInfo::Row row; - row.Set_tizen_appid(*tzAppId); - - WRT_DB_UPDATE(update, wrt::WidgetInfo, &WrtDatabase::interface()) - update->Where( - Equals(getHandle())); - - update->Values(row); - update->Execute(); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to register widget") -} - -void WidgetDAO::setSecurityPopupUsage(const SettingsType value) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - ScopedTransaction transaction(&WrtDatabase::interface()); - if (!isWidgetInstalled(getHandle())) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << getHandle()); - } - - WidgetSecuritySettings::Row row; - row.Set_security_popup_usage(value); - - WRT_DB_UPDATE(update, WidgetSecuritySettings, &WrtDatabase::interface()) - update->Where(Equals(getHandle())); - update->Values(row); - update->Execute(); - - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to set security popup usage") -} - -void WidgetDAO::setGeolocationUsage(const SettingsType value) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - ScopedTransaction transaction(&WrtDatabase::interface()); - if (!isWidgetInstalled(getHandle())) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << getHandle()); - } - - WidgetSecuritySettings::Row row; - row.Set_geolocation_usage(value); - - WRT_DB_UPDATE(update, WidgetSecuritySettings, &WrtDatabase::interface()) - update->Where(Equals(getHandle())); - update->Values(row); - update->Execute(); - - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to set geolocation usage") -} - -void WidgetDAO::setWebNotificationUsage(const SettingsType value) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - ScopedTransaction transaction(&WrtDatabase::interface()); - if (!isWidgetInstalled(getHandle())) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << getHandle()); - } - - WidgetSecuritySettings::Row row; - row.Set_web_notification_usage(value); - - WRT_DB_UPDATE(update, WidgetSecuritySettings, &WrtDatabase::interface()) - update->Where(Equals(getHandle())); - update->Values(row); - update->Execute(); - - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to set web notification usage") -} - -void WidgetDAO::setWebDatabaseUsage(const SettingsType value) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - ScopedTransaction transaction(&WrtDatabase::interface()); - if (!isWidgetInstalled(getHandle())) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << getHandle()); - } - - WidgetSecuritySettings::Row row; - row.Set_web_database_usage(value); - - WRT_DB_UPDATE(update, WidgetSecuritySettings, &WrtDatabase::interface()) - update->Where(Equals(getHandle())); - update->Values(row); - update->Execute(); - - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to set web database usage") -} - -void WidgetDAO::registerWidget( - const TizenAppId & tzAppId, - const WidgetRegisterInfo &widgetRegInfo, - const IWidgetSecurity &widgetSecurity) -{ - LogDebug("Registering widget"); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - registerWidgetInternal(tzAppId, widgetRegInfo, widgetSecurity); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to register widget") -} - -DbWidgetHandle WidgetDAO::registerWidget( - const WidgetRegisterInfo &pWidgetRegisterInfo, - const IWidgetSecurity &widgetSecurity) -{ - //make it more precise due to very fast tests - struct timeval tv; - gettimeofday(&tv, NULL); - DbWidgetHandle widgetHandle; - unsigned int seed = time(NULL); - do { - widgetHandle = rand_r(&seed); - } while (isWidgetInstalled(widgetHandle)); - - registerWidget(*pWidgetRegisterInfo.configInfo.tizenAppId, - pWidgetRegisterInfo, - widgetSecurity); - return widgetHandle; -} - -TizenAppId WidgetDAO::registerWidgetGeneratePkgId( - const WidgetRegisterInfo &pWidgetRegisterInfo, - const IWidgetSecurity &widgetSecurity) -{ - TizenAppId tzAppId = generatePkgId(); - registerWidget(tzAppId, pWidgetRegisterInfo, widgetSecurity); - return tzAppId; -} - -void WidgetDAO::updateTizenAppId( - const TizenAppId & fromAppId, - const TizenAppId & toAppId) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - ScopedTransaction transaction(&WrtDatabase::interface()); - if (!isWidgetInstalled(fromAppId)) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. tzAppId: " << fromAppId); - } - - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(fromAppId)); - - WidgetInfo::Row row = select->GetSingleRow(); - - //WidgetInfo::Row row; - row.Set_tizen_appid(toAppId); - - WRT_DB_UPDATE(update, WidgetInfo, &WrtDatabase::interface()) - update->Where(Equals(fromAppId)); - update->Values(row); - update->Execute(); - - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to update appid") -} - -void WidgetDAO::registerWidgetInternal( - const TizenAppId & tzAppId, - const WidgetRegisterInfo &widgetRegInfo, - const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle) -{ - //Register into WidgetInfo has to be first - //as all other tables depend upon that - DbWidgetHandle widgetHandle = registerWidgetInfo(tzAppId, - widgetRegInfo, - widgetSecurity, - handle); - - registerWidgetExtendedInfo(widgetHandle, widgetRegInfo); - - registerWidgetLocalizedInfo(widgetHandle, widgetRegInfo); - - registerWidgetIcons(widgetHandle, widgetRegInfo); - - registerWidgetStartFile(widgetHandle, widgetRegInfo); - - PropertyDAO::RegisterProperties(widgetHandle, tzAppId, widgetRegInfo); - - registerWidgetFeatures(widgetHandle, widgetRegInfo); - - registerWidgetPrivilege(widgetHandle, widgetRegInfo); - - registerWidgetWindowModes(widgetHandle, widgetRegInfo); - - registerWidgetWarpInfo(widgetHandle, widgetRegInfo); - - registerWidgetAllowNavigationInfo(widgetHandle, widgetRegInfo); - - registerWidgetCertificates(widgetHandle, widgetSecurity); - - CertificateChainList list; - widgetSecurity.getCertificateChainList(list, SIGNATURE_DISTRIBUTOR); - registerCertificatesChains(widgetHandle, SIGNATURE_DISTRIBUTOR, list); - - list.clear(); - widgetSecurity.getCertificateChainList(list, SIGNATURE_AUTHOR); - registerCertificatesChains(widgetHandle, SIGNATURE_AUTHOR, list); - - registerWidgetSettings(widgetHandle, widgetRegInfo); - - registerAppControl(widgetHandle, widgetRegInfo); - - registerEncryptedResouceInfo(widgetHandle, widgetRegInfo); - - registerExternalLocations(widgetHandle, widgetRegInfo.externalLocations); - - registerWidgetSecuritySettings(widgetHandle); -} - -#define DO_INSERT(row, table) \ - { \ - WRT_DB_INSERT(insert, table, &WrtDatabase::interface()) \ - insert->Values(row); \ - insert->Execute(); \ - } - -void WidgetDAO::registerWidgetExtendedInfo(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - //Try and transaction not needed - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WidgetExtendedInfo::Row row; - row.Set_app_id(widgetHandle); - // row.Set_share_href (DPL::FromUTF8String(regInfo.shareHref)); - row.Set_signature_type(regInfo.signatureType); - row.Set_install_time(regInfo.installedTime); - row.Set_splash_img_src(regInfo.configInfo.splashImgSrc); - row.Set_background_page(regInfo.configInfo.backgroundPage); - row.Set_installed_path(regInfo.widgetInstalledPath); - - DO_INSERT(row, WidgetExtendedInfo) -} - -DbWidgetHandle WidgetDAO::registerWidgetInfo( - const TizenAppId & tzAppId, - const WidgetRegisterInfo ®Info, - const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - // TODO in wrt_db all Columns in WidgetInfo have DEFAULT VALUE set. - // Because of that, "Optional" is not used there - - WidgetInfo::Row row; - if (!!handle) { - row.Set_app_id(*handle); - } - - row.Set_widget_type(regInfo.webAppType.appType); - - row.Set_widget_id(widgetConfigurationInfo.widget_id); - row.Set_defaultlocale(widgetConfigurationInfo.defaultlocale); - row.Set_widget_version(widgetConfigurationInfo.version); - row.Set_widget_width(widgetConfigurationInfo.width); - row.Set_widget_height(widgetConfigurationInfo.height); - row.Set_author_name(widgetConfigurationInfo.authorName); - row.Set_author_email(widgetConfigurationInfo.authorEmail); - row.Set_author_href(widgetConfigurationInfo.authorHref); - row.Set_csp_policy(widgetConfigurationInfo.cspPolicy); - row.Set_csp_policy_report_only(widgetConfigurationInfo.cspPolicyReportOnly); - row.Set_base_folder(DPL::FromUTF8String(regInfo.baseFolder)); - row.Set_webkit_plugins_required(widgetConfigurationInfo.flashNeeded); - row.Set_recognized(widgetSecurity.isRecognized()); - row.Set_distributor_signed(widgetSecurity.isDistributorSigned()); - row.Set_tizen_appid(tzAppId); - row.Set_tizen_pkgid(regInfo.tzPkgid); - { - std::stringstream tmp; - tmp << regInfo.minVersion; - row.Set_min_version(DPL::FromUTF8String(tmp.str())); - } - row.Set_back_supported(widgetConfigurationInfo.backSupported); - row.Set_access_network(widgetConfigurationInfo.accessNetwork); - row.Set_pkg_type(regInfo.packagingType.pkgType); - row.Set_security_model_version( - static_cast(widgetConfigurationInfo.securityModelVersion)); - - Try - { - DO_INSERT(row, WidgetInfo); - } - Catch(DPL::DB::SqlConnection::Exception::Base) - { - ReThrowMsg(WidgetDAO::Exception::DatabaseError, - "Failed to register widget info."); - } - - if (!handle) { - //get autoincremented value of widgetHandle - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(tzAppId)); - return select->GetSingleValue(); - } else { - return *handle; - } -} - -void WidgetDAO::registerWidgetLocalizedInfo(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(it, widgetConfigurationInfo.localizedDataSet) - { - const DPL::String& locale = it->first; - const ConfigParserData::LocalizedData& data = it->second; - - LocalizedWidgetInfo::Row row; - row.Set_app_id(widgetHandle); - row.Set_widget_locale(locale); - row.Set_widget_name(data.name); - row.Set_widget_shortname(data.shortName); - row.Set_widget_description(data.description); - row.Set_widget_license(data.license); - row.Set_widget_license_file(data.licenseFile); - row.Set_widget_license_href(data.licenseHref); - - DO_INSERT(row, LocalizedWidgetInfo) - } -} - -void WidgetDAO::registerWidgetIcons(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - FOREACH(i, regInfo.localizationData.icons) - { - wrt::WidgetIcon::icon_id::ColumnType icon_id; - { - wrt::WidgetIcon::Row row; - row.Set_app_id(widgetHandle); - row.Set_icon_src(i->src); - row.Set_icon_width(i->width); - row.Set_icon_height(i->height); - - WRT_DB_INSERT(insert, wrt::WidgetIcon, &WrtDatabase::interface()) - insert->Values(row); - icon_id = static_cast(insert->Execute()); - } - - FOREACH(j, i->availableLocales) - { - WidgetLocalizedIcon::Row row; - row.Set_app_id(widgetHandle); - row.Set_icon_id(icon_id); - row.Set_widget_locale(*j); - DO_INSERT(row, WidgetLocalizedIcon) - } - } -} - -void WidgetDAO::registerWidgetStartFile(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - FOREACH(i, regInfo.localizationData.startFiles) - { - WidgetStartFile::start_file_id::ColumnType startFileID; - { - WidgetStartFile::Row row; - row.Set_app_id(widgetHandle); - row.Set_src(i->path); - - WRT_DB_INSERT(insert, WidgetStartFile, &WrtDatabase::interface()) - insert->Values(row); - startFileID = static_cast(insert->Execute()); - } - - FOREACH(j, i->propertiesForLocales) - { - WidgetLocalizedStartFile::Row row; - row.Set_app_id(widgetHandle); - row.Set_start_file_id(startFileID); - row.Set_widget_locale(j->first); - row.Set_type(j->second.type); - row.Set_encoding(j->second.encoding); - - DO_INSERT(row, WidgetLocalizedStartFile) - } - } -} - -void WidgetDAO::registerWidgetFeatures(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(pWidgetFeature, widgetConfigurationInfo.featuresList) - { - wrt::WidgetFeature::Row widgetFeature; - widgetFeature.Set_app_id(widgetHandle); - widgetFeature.Set_name(pWidgetFeature->name); - widgetFeature.Set_rejected(false); - - DO_INSERT(widgetFeature, wrt::WidgetFeature) - } -} - -void WidgetDAO::registerWidgetPrivilege(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(it, widgetConfigurationInfo.privilegeList) - { - WidgetPrivilege::Row widgetPrivilege; - widgetPrivilege.Set_app_id(widgetHandle); - widgetPrivilege.Set_name(it->name); - - DO_INSERT(widgetPrivilege, WidgetPrivilege) - } -} - -void WidgetDAO::updateFeatureRejectStatus(const DbWidgetFeature &widgetFeature) -{ - // This function could be merged with registerWidgetFeature but it requires - // desing change: - // 1. Check "ace step" in installer must be done before "update database - // step" - // And: - // ConfigurationParserData shouldn't be called "ParserData" any more. - using namespace DPL::DB::ORM; - - wrt::ScopedTransaction transaction(&WrtDatabase::interface()); - WRT_DB_SELECT(select, wrt::WidgetFeature, &WrtDatabase::interface()) - select->Where(And(Equals(m_widgetHandle), - Equals(widgetFeature.name))); - - auto row = select->GetSingleRow(); - row.Set_rejected(widgetFeature.rejected); - - WRT_DB_UPDATE(update, wrt::WidgetFeature, &WrtDatabase::interface()) - update->Where(And(Equals(m_widgetHandle), - Equals(widgetFeature.name))); - update->Values(row); - update->Execute(); - transaction.Commit(); -} - -void WidgetDAO::registerWidgetWindowModes(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(i, widgetConfigurationInfo.windowModes) - { - wrt::WidgetWindowModes::Row windowMode; - windowMode.Set_app_id(widgetHandle); - windowMode.Set_window_mode(*i); - - DO_INSERT(windowMode, wrt::WidgetWindowModes) - } -} - -void WidgetDAO::registerWidgetWarpInfo(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(AccIt, widgetConfigurationInfo.accessInfoSet) - { - WidgetWARPInfo::Row row; - row.Set_app_id(widgetHandle); - row.Set_iri(AccIt->m_strIRI); - row.Set_subdomain_access(static_cast ( - AccIt->m_bSubDomainAccess)); - - DO_INSERT(row, WidgetWARPInfo) - } -} - -void WidgetDAO::registerWidgetAllowNavigationInfo(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(allowNaviIt, widgetConfigurationInfo.allowNavigationInfoList) - { - WidgetAllowNavigation::Row row; - row.Set_app_id(widgetHandle); - row.Set_scheme(allowNaviIt->m_scheme); - row.Set_host(allowNaviIt->m_host); - DO_INSERT(row, WidgetAllowNavigation) - } -} - -void WidgetDAO::registerWidgetCertificates(DbWidgetHandle widgetHandle, - const IWidgetSecurity &widgetSecurity) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - FOREACH(it, widgetSecurity.getCertificateList()) - { - WidgetCertificateFingerprint::Row row; - row.Set_app_id(widgetHandle); - row.Set_owner(it->owner); - row.Set_chainid(it->chainId); - row.Set_type(it->type); - row.Set_md5_fingerprint(DPL::FromUTF8String(it->strMD5Fingerprint)); - row.Set_sha1_fingerprint(DPL::FromUTF8String(it->strSHA1Fingerprint)); - row.Set_common_name(it->strCommonName); - - DO_INSERT(row, WidgetCertificateFingerprint) - } -} - -void WidgetDAO::registerCertificatesChains( - DbWidgetHandle widgetHandle, - CertificateSource certificateSource, - const CertificateChainList & - certificateChainList) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - FOREACH(certChain, certificateChainList) - { - WidgetCertificate::Row row; - row.Set_app_id(widgetHandle); - row.Set_cert_source(certificateSource); - row.Set_encoded_chain(DPL::FromASCIIString(*certChain)); - - DO_INSERT(row, WidgetCertificate); - } -} - -void WidgetDAO::registerWidgetSettings(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - FOREACH(pWidgetSetting, widgetConfigurationInfo.settingsList) - { - SettingsList::Row row; - row.Set_appId(widgetHandle); - row.Set_settingName(pWidgetSetting->m_name); - row.Set_settingValue(pWidgetSetting->m_value); - - DO_INSERT(row, SettingsList) - } -} - -void WidgetDAO::insertAppControlInfo(DbWidgetHandle handle, - DPL::String src, - DPL::String operation, - DPL::String uri, - DPL::String mime, - unsigned index, - unsigned disposition) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - AppControlInfo::Row row; - - row.Set_app_id(handle); - row.Set_execute_index(index); - row.Set_src(src); - row.Set_operation(operation); - row.Set_uri(uri); - row.Set_mime(mime); - row.Set_disposition(disposition); - - DO_INSERT(row, AppControlInfo); -} - -void WidgetDAO::registerAppControl(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - const ConfigParserData& widgetConfigurationInfo = regInfo.configInfo; - - // appControlList - FOREACH(appControl_it, widgetConfigurationInfo.appControlList) - { - DPL::String src = appControl_it->m_src; - DPL::String operation = appControl_it->m_operation; - unsigned index = appControl_it->m_index; - unsigned disposition = - static_cast(appControl_it->m_disposition); - - if (!appControl_it->m_uriList.empty()) - { - FOREACH(uri_it, appControl_it->m_uriList) - { - DPL::String uri = *uri_it; - - if (!appControl_it->m_mimeList.empty()) - { - FOREACH(mime_it, appControl_it->m_mimeList) - { - DPL::String mime = *mime_it; - - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); - } - } - else - { - DPL::String mime = L""; - - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); - } - } - } - else - { - DPL::String uri = L""; - - if (!appControl_it->m_mimeList.empty()) - { - FOREACH(mime_it, appControl_it->m_mimeList) - { - DPL::String mime = *mime_it; - - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); - } - } - else - { - DPL::String mime = L""; - - insertAppControlInfo(widgetHandle, src, operation, uri, mime, index, disposition); - } - } - } -} - -void WidgetDAO::registerEncryptedResouceInfo(DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - FOREACH(it, regInfo.encryptedFiles) - { - EncryptedResourceList::Row row; - row.Set_app_id(widgetHandle); - row.Set_resource(it->fileName); - row.Set_size(it->fileSize); - - DO_INSERT(row, EncryptedResourceList) - } -} - -void WidgetDAO::registerExternalLocations( - DbWidgetHandle widgetHandle, - const ExternalLocationList & - externals) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - LogDebug("Inserting external files for widgetHandle: " << widgetHandle); - FOREACH(it, externals) - { - WidgetExternalLocations::Row row; - row.Set_app_id(widgetHandle); - row.Set_path(DPL::FromUTF8String(*it)); - - DO_INSERT(row, WidgetExternalLocations) - } - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to register external files"); -} - -void WidgetDAO::registerWidgetSecuritySettings(DbWidgetHandle widgetHandle) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WidgetSecuritySettings::Row row; - row.Set_app_id(widgetHandle); - row.Set_security_popup_usage(SETTINGS_TYPE_ON); - row.Set_geolocation_usage(SETTINGS_TYPE_ON); - row.Set_web_notification_usage(SETTINGS_TYPE_ON); - row.Set_web_database_usage(SETTINGS_TYPE_ON); - - DO_INSERT(row, WidgetSecuritySettings) -} - -void WidgetDAO::unregisterAllExternalLocations() -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - LogDebug("Deleting external files for widgetHandle: " << m_widgetHandle); - WRT_DB_DELETE(del, WidgetExternalLocations, &WrtDatabase::interface()); - del->Where(Equals(m_widgetHandle)); - del->Execute(); -} - -void WidgetDAO::unregisterWidget(const TizenAppId & tzAppId) -{ - LogDebug("Unregistering widget from DB. tzAppId: " << tzAppId); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - unregisterWidgetInternal(tzAppId); - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to unregister widget") -} - -void WidgetDAO::unregisterWidgetInternal( - const TizenAppId & tzAppId) -{ - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - DbWidgetHandle handle = getHandle(tzAppId); - - // Delete from table Widget Info - WRT_DB_DELETE(del, WidgetInfo, &WrtDatabase::interface()) - del->Where(Equals(handle)); - del->Execute(); - - // Deleting in other tables is done via "delete cascade" in SQL -} - -#undef DO_INSERT - -#undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN -#undef SQL_CONNECTION_EXCEPTION_HANDLER_END -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/widget_dao_read_only.cpp b/modules_mobile/widget_dao/dao/widget_dao_read_only.cpp deleted file mode 100644 index 343c29a..0000000 --- a/modules_mobile/widget_dao/dao/widget_dao_read_only.cpp +++ /dev/null @@ -1,1274 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of widget dao class. - * - * @file widget_dao_read_only.cpp - * @author Yang Jie (jie2.yang@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of widget dao - */ -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace { - unsigned int seed = time(NULL); -} - -namespace WrtDB { -//TODO in current solution in each getter there exists a check -//"IsWidgetInstalled". Maybe it should be verified, if it could be done -//differently (check in WidgetDAOReadOnly constructor) - -#define SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN Try - -#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ - ReThrowMsg(WidgetDAOReadOnly::Exception::DatabaseError, \ - message); \ - } - -#define CHECK_WIDGET_EXISTENCE(macro_transaction, macro_handle) \ - if (!WidgetDAOReadOnly::isWidgetInstalled(macro_handle)) \ - { \ - macro_transaction.Commit(); \ - LogWarning("Cannot find widget. Handle: " << macro_handle); \ - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, \ - "Cannot find widget. Handle: " << macro_handle); \ - } - -typedef DPL::DB::ORM::wrt::WidgetInfo::Row WidgetInfoRow; -typedef DPL::DB::ORM::wrt::WidgetFeature::widget_feature_id::ColumnType -WidgetFeatureId; -typedef DPL::DB::ORM::wrt::WidgetSecuritySettings::Row -WidgetSecuritySettingsRow; - -namespace { -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::wrt; - -WidgetInfoRow getWidgetInfoRow(int widgetHandle) -{ - LogDebug("Getting WidgetInfo row. Handle: " << widgetHandle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(widgetHandle)); - - WidgetInfo::Select::RowList rows = select->GetRowList(); - if (rows.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << widgetHandle); - } - return rows.front(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in GetWidgetInfoRow") -} - -WidgetSecuritySettingsRow getWidgetSecuritySettingsRow(int widgetHandle) -{ - LogDebug("Getting WidgetSecuritySettings row. Handle: " << widgetHandle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, WidgetSecuritySettings, &WrtDatabase::interface()) - select->Where(Equals(widgetHandle)); - - WidgetSecuritySettings::Select::RowList rows = select->GetRowList(); - if (rows.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << widgetHandle); - } - return rows.front(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END( - "Failed in getWidgetSecuritySettingsRow") -} - -const int MAX_TIZENID_LENGTH = 10; - -TizenAppId getTizenAppIdByHandle(const DbWidgetHandle handle) -{ - LogDebug("Getting TizenAppId by DbWidgetHandle: " << handle); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(handle)); - WidgetInfo::Select::RowList rowList = select->GetRowList(); - - if (rowList.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Failed to get widget by handle"); - } - TizenAppId tzAppid = rowList.front().Get_tizen_appid(); - - return tzAppid; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle") -} - -TizenAppId getTizenAppIdByPkgId(const TizenPkgId tzPkgid) -{ - LogDebug("Getting TizenAppId by pkgid : " << tzPkgid); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(tzPkgid)); - WidgetInfo::Select::RowList rowList = select->GetRowList(); - - if (rowList.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Failed to get widget by handle"); - } - TizenAppId tzAppid = rowList.front().Get_tizen_appid(); - - return tzAppid; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle") -} - -TizenPkgId getTizenPkgIdByHandle(const DbWidgetHandle handle) -{ - LogDebug("Getting TizenPkgId by DbWidgetHandle: " << handle); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(handle)); - WidgetInfo::Select::RowList rowList = select->GetRowList(); - - if (rowList.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Failed to get widget by handle"); - } - TizenPkgId tzPkgid = rowList.front().Get_tizen_pkgid(); - - return tzPkgid; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle") -} - -TizenPkgId getTizenPkgIdByAppId(const TizenAppId tzAppid) -{ - LogDebug("Getting TizenPkgId by TizenAppId: " << tzAppid); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(tzAppid)); - WidgetInfo::Select::RowList rowList = select->GetRowList(); - - if (rowList.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Failed to get widget by tizen appId"); - } - TizenPkgId tzPkgid = rowList.front().Get_tizen_pkgid(); - - return tzPkgid; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed get pkgId") -} -} // namespace - -IWidgetSecurity::~IWidgetSecurity() -{} - -WidgetDAOReadOnly::WidgetDAOReadOnly(DbWidgetHandle widgetHandle) : - m_widgetHandle(widgetHandle) -{} - -WidgetDAOReadOnly::WidgetDAOReadOnly(DPL::OptionalString widgetGUID) : - m_widgetHandle(WidgetDAOReadOnly::getHandle(widgetGUID)) -{} - -WidgetDAOReadOnly::WidgetDAOReadOnly(TizenAppId tzAppid) : - m_widgetHandle(WidgetDAOReadOnly::getHandle(tzAppid)) -{} - -WidgetDAOReadOnly::~WidgetDAOReadOnly() -{} - -DbWidgetHandle WidgetDAOReadOnly::getHandle() const -{ - return m_widgetHandle; -} - -DbWidgetHandle WidgetDAOReadOnly::getHandle(const WidgetGUID GUID) -{ - LogDebug("Getting WidgetHandle by GUID [" << GUID << "]"); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(GUID)); - WidgetInfo::Select::RowList rowList = select->GetRowList(); - - if (rowList.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Failed to get widget by guid"); - } - return rowList.front().Get_app_id(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle") -} - -DbWidgetHandle WidgetDAOReadOnly::getHandle(const DPL::String tzAppId) -{ - LogDebug("Getting WidgetHandle by tizen app id [" << tzAppId << "]"); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(tzAppId)); - WidgetInfo::Select::RowList rowList = select->GetRowList(); - - if (rowList.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Failed to get widget by package name"); - } - return rowList.front().Get_app_id(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed in getHandle") -} - -TizenAppId WidgetDAOReadOnly::getTzAppId() const -{ - return getTizenAppIdByHandle(m_widgetHandle); -} - -TizenAppId WidgetDAOReadOnly::getTzAppId(const WidgetGUID GUID) -{ - return getTizenAppIdByHandle(getHandle(GUID)); -} - -TizenAppId WidgetDAOReadOnly::getTzAppId(const DbWidgetHandle handle) -{ - return getTizenAppIdByHandle(handle); -} - -TizenAppId WidgetDAOReadOnly::getTzAppId(const TizenPkgId tzPkgid) -{ - return getTizenAppIdByPkgId(tzPkgid); -} - -TizenPkgId WidgetDAOReadOnly::getTzPkgId() const -{ - return getTizenPkgIdByHandle(m_widgetHandle); -} - -TizenPkgId WidgetDAOReadOnly::getTzPkgId(const DbWidgetHandle handle) -{ - return getTizenPkgIdByHandle(handle); -} - -TizenPkgId WidgetDAOReadOnly::getTzPkgId(const TizenAppId tzAppid) -{ - return getTizenPkgIdByAppId(tzAppid); -} - -PropertyDAOReadOnly::WidgetPropertyKeyList -WidgetDAOReadOnly::getPropertyKeyList() const -{ - return PropertyDAOReadOnly::GetPropertyKeyList(getTzAppId()); -} - -PropertyDAOReadOnly::WidgetPreferenceList -WidgetDAOReadOnly::getPropertyList() const -{ - return PropertyDAOReadOnly::GetPropertyList(getTzAppId()); -} - -PropertyDAOReadOnly::WidgetPropertyValue WidgetDAOReadOnly::getPropertyValue( - const PropertyDAOReadOnly::WidgetPropertyKey &key) const -{ - return PropertyDAOReadOnly::GetPropertyValue(getTzAppId(), key); -} - -DPL::OptionalInt WidgetDAOReadOnly::checkPropertyReadFlag( - const PropertyDAOReadOnly::WidgetPropertyKey &key) const -{ - return PropertyDAOReadOnly::CheckPropertyReadFlag(getTzAppId(), key); -} - -DPL::String WidgetDAOReadOnly::getPath() const -{ - DPL::String path = *getWidgetInstalledPath(); - DPL::String srcPath = DPL::FromUTF8String(GlobalConfig::GetWidgetSrcPath()); - - path += srcPath + L"/"; - - return path; -} - -DPL::String WidgetDAOReadOnly::getFullPath() const -{ - return L"file://" + getPath(); -} - -WidgetLocalizedInfo -WidgetDAOReadOnly::getLocalizedInfo(const DPL::String& languageTag) -const -{ - LogDebug("Getting Localized Info. Handle: " << m_widgetHandle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&WrtDatabase::interface()); - CHECK_WIDGET_EXISTENCE(transaction, m_widgetHandle) - - WRT_DB_SELECT(select, LocalizedWidgetInfo, &WrtDatabase::interface()) - select->Where( - And(Equals(m_widgetHandle), - Equals(languageTag))); - LocalizedWidgetInfo::Row info = select->GetSingleRow(); - WidgetLocalizedInfo result; - - result.name = info.Get_widget_name(); - result.shortName = info.Get_widget_shortname(); - result.description = info.Get_widget_description(); - result.license = info.Get_widget_license(); - result.licenseHref = info.Get_widget_license_href(); - - transaction.Commit(); - return result; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get localized info") -} - -DbWidgetFeatureSet WidgetDAOReadOnly::getFeaturesList() const -{ - LogDebug("Getting FeaturesList. Handle: " << m_widgetHandle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&WrtDatabase::interface()); - CHECK_WIDGET_EXISTENCE(transaction, m_widgetHandle) - - WRT_DB_SELECT(select, WidgetFeature, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - DbWidgetFeatureSet resultSet; - typedef std::list RowList; - RowList list = select->GetRowList(); - - for (RowList::iterator i = list.begin(); i != list.end(); ++i) { - DbWidgetFeature feature; - feature.name = i->Get_name(); - feature.rejected = i->Get_rejected(); - FeatureDAOReadOnly featureDao(DPL::ToUTF8String(i->Get_name())); - feature.pluginId = featureDao.GetPluginHandle(); - resultSet.insert(feature); - } - transaction.Commit(); - return resultSet; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get features list") -} - -bool WidgetDAOReadOnly::hasFeature(const std::string& featureName) const -{ - LogDebug( - "Checking if widget has feature: " << featureName << ". Handle: " << - m_widgetHandle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&WrtDatabase::interface()); - CHECK_WIDGET_EXISTENCE(transaction, m_widgetHandle) - - WRT_DB_SELECT(select, wrt::WidgetFeature, &WrtDatabase::interface()) - select->Where(And(Equals(m_widgetHandle), - Equals( - DPL::FromUTF8String(featureName)))); - - wrt::WidgetFeature::Select::RowList rows = select->GetRowList(); - transaction.Commit(); - return !rows.empty(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to check for feature") -} - -HostList WidgetDAOReadOnly::getAccessHostList() const -{ - LogDebug("Getting AccessHostList. Handle: " << m_widgetHandle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&WrtDatabase::interface()); - CHECK_WIDGET_EXISTENCE(transaction, m_widgetHandle) - - WRT_DB_SELECT(select, WidgetAccessHost, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - std::list values = - select->GetValueList(); - HostList ret; - FOREACH(it, values) - ret.push_back(DPL::ToUTF8String(*it)); - - transaction.Commit(); - return ret; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get access host list") -} - -bool WidgetDAOReadOnly::getAccessNetworkMode() const -{ - //TODO there is no column access_network - //it was removed in "Widget localization overhaul - return true; -} - -DbWidgetHandleList WidgetDAOReadOnly::getHandleList() -{ - LogDebug("Getting DbWidgetHandle List"); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - return select->GetValueList(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get handle list") -} - -TizenAppIdList WidgetDAOReadOnly::getTizenAppidList() -{ - LogDebug("Getting Pkgname List "); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - return select->GetValueList(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get Pkgname list") -} - -TizenPkgIdList WidgetDAOReadOnly::getTizenPkgidList() -{ - LogDebug("Getting Pkgid List "); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - return select->GetValueList(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get Pkgid list") -} - -DbWidgetDAOReadOnlyList WidgetDAOReadOnly::getWidgetList() -{ - LogDebug("Getting DbWidget List"); - DbWidgetDAOReadOnlyList list; - FOREACH(iterator, getHandleList()) { - list.push_back(WidgetDAOReadOnlyPtr(new WidgetDAOReadOnly(*iterator))); - } - return list; -} - -bool WidgetDAOReadOnly::isWidgetInstalled(DbWidgetHandle handle) -{ - LogDebug("Checking if widget exist. Handle: " << handle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(handle)); - - WidgetInfo::Select::RowList rows = select->GetRowList(); - - return !rows.empty(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to check if widget exist") -} - -bool WidgetDAOReadOnly::isWidgetInstalled(const TizenAppId &tzAppId) -{ - LogDebug("Checking if widget exist. tizen app id" << tzAppId); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(tzAppId)); - - WidgetInfo::Select::RowList rows = select->GetRowList(); - - return !rows.empty(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to check if widget exist") -} - -ExternalLocationList WidgetDAOReadOnly::getWidgetExternalLocations() const -{ - LogDebug("Getting WidgetExtranalFiles List"); - ExternalLocationList result; - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetExternalLocations, &WrtDatabase::interface()); - select->Where(Equals(m_widgetHandle)); - WidgetExternalLocations::Select::RowList rows = select->GetRowList(); - FOREACH(it, rows) - { - result.push_back(DPL::ToUTF8String(it->Get_path())); - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get handle list") - return result; -} - -CertificateChainList WidgetDAOReadOnly::getWidgetCertificate( - CertificateSource source) const -{ - WRT_DB_SELECT(select, WidgetCertificate, &WrtDatabase::interface()) - select->Where( - And( - Equals(m_widgetHandle), - Equals(source))); - - std::list chainList = select->GetRowList(); - - CertificateChainList result; - - FOREACH(iter, chainList) - result.push_back(DPL::ToUTF8String(iter->Get_encoded_chain())); - return result; -} - -DbWidgetSize WidgetDAOReadOnly::getPreferredSize() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - - DbWidgetSize size; - size.width = row.Get_widget_width(); - size.height = row.Get_widget_height(); - - LogDebug("Return size wxh = " << - (!!size.width ? *size.width : -1) << " x " << - (!!size.height ? *size.height : -1)); - - return size; -} - -WidgetType WidgetDAOReadOnly::getWidgetType() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_widget_type(); - return WidgetType(static_cast(*result)); -} - -WidgetGUID WidgetDAOReadOnly::getGUID() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_widget_id(); -} - -DPL::OptionalString WidgetDAOReadOnly::getTizenAppId() const -{ - return DPL::OptionalString(getTzAppId()); -} - -DPL::OptionalString WidgetDAOReadOnly::getDefaultlocale() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_defaultlocale(); -} - -DPL::Optional WidgetDAOReadOnly::getVersion() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_widget_version(); -} - -DPL::Optional WidgetDAOReadOnly::getAuthorName() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_author_name(); -} - -DPL::Optional WidgetDAOReadOnly::getAuthorEmail() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_author_email(); -} - -DPL::Optional WidgetDAOReadOnly::getAuthorHref() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_author_href(); -} - -DPL::Optional WidgetDAOReadOnly::getMinimumWacVersion() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_min_version(); -} - -std::string WidgetDAOReadOnly::getShareHref() const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetExtendedInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - WidgetExtendedInfo::Select::RowList rows = select->GetRowList(); - - if (rows.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << m_widgetHandle); - } - - DPL::Optional value = rows.front().Get_share_href(); - std::string ret = ""; - if (!value.IsNull()) { - ret = DPL::ToUTF8String(*value); - } - return ret; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get share HREF") -} - -bool WidgetDAOReadOnly::getBackSupported() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_back_supported(); -} - -bool WidgetDAOReadOnly::isRecognized() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_recognized(); - if (result.IsNull()) { - return false; - } - return static_cast(*result); -} - -bool WidgetDAOReadOnly::isDistributorSigned() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_distributor_signed(); - if (result.IsNull()) { - return false; - } - return static_cast(*result); -} - -bool WidgetDAOReadOnly::isTrusted() const -{ - // SP-2100 - // widget with verified distributor signature is trusted - return isDistributorSigned(); -} - -DPL::OptionalString WidgetDAOReadOnly::getCspPolicy() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_csp_policy(); -} - -DPL::OptionalString WidgetDAOReadOnly::getCspPolicyReportOnly() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_csp_policy_report_only(); -} - -bool WidgetDAOReadOnly::getWebkitPluginsRequired() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::OptionalInt ret = row.Get_webkit_plugins_required(); - - if (ret.IsNull() || *ret == 0) { - return false; - } else { return true; - } -} - -time_t WidgetDAOReadOnly::getInstallTime() const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetExtendedInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - WidgetExtendedInfo::Select::RowList rows = select->GetRowList(); - if (rows.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << m_widgetHandle); - } - - return static_cast(*rows.front().Get_install_time()); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get widdget install time") -} - -DPL::OptionalString WidgetDAOReadOnly::getSplashImgSrc() const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetExtendedInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - WidgetExtendedInfo::Select::RowList rows = select->GetRowList(); - if (rows.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << m_widgetHandle); - } - - DPL::OptionalString value = rows.front().Get_splash_img_src(); - if (value.IsNull()) { - return DPL::OptionalString::Null; - } - - return DPL::OptionalString(getPath() + *value); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get splash image path") -} - -WidgetDAOReadOnly::WidgetLocalizedIconList WidgetDAOReadOnly:: - getLocalizedIconList() const -{ - //TODO check widget existance?? - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetLocalizedIcon, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - std::list list = - select->GetRowList(); - WidgetLocalizedIconList ret; - FOREACH(it, list) - { - WidgetLocalizedIconRow icon = { it->Get_app_id(), - it->Get_icon_id(), - it->Get_widget_locale() }; - ret.push_back(icon); - } - return ret; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get icon data") -} - -WidgetDAOReadOnly::WidgetIconList WidgetDAOReadOnly::getIconList() const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, wrt::WidgetIcon, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - select->OrderBy(DPL::TypeListDecl >()); - - std::list list = - select->GetRowList(); - WidgetIconList ret; - FOREACH(it, list) - { - WidgetIconRow icon = { it->Get_icon_id(), - it->Get_app_id(), - it->Get_icon_src(), - it->Get_icon_width(), - it->Get_icon_height() }; - ret.push_back(icon); - } - return ret; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get icon data") -} - -WidgetDAOReadOnly::LocalizedStartFileList WidgetDAOReadOnly:: - getLocalizedStartFileList() const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetLocalizedStartFile, &WrtDatabase::interface()) - select->Where(Equals( - m_widgetHandle)); - select->OrderBy("start_file_id ASC"); - - std::list list = - select->GetRowList(); - LocalizedStartFileList ret; - FOREACH(it, list) - { - WidgetLocalizedStartFileRow file = { it->Get_start_file_id(), - it->Get_app_id(), - it->Get_widget_locale(), - it->Get_type(), - it->Get_encoding() }; - ret.push_back(file); - } - return ret; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get start file list data") -} - -WidgetDAOReadOnly::WidgetStartFileList WidgetDAOReadOnly::getStartFileList() -const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetStartFile, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - select->OrderBy("start_file_id ASC"); - - std::list list = - select->GetRowList(); - WidgetStartFileList ret; - FOREACH(it, list) - { - WidgetStartFileRow file = { it->Get_start_file_id(), - it->Get_app_id(), - it->Get_src() }; - ret.push_back(file); - } - return ret; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get start file list data") -} - -WindowModeList WidgetDAOReadOnly::getWindowModes() const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetWindowModes, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - return select->GetValueList(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get window modes") -} - -std::string WidgetDAOReadOnly::getBaseFolder() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::Optional ret = row.Get_base_folder(); - std::string baseFolder; - if (!ret.IsNull()) { - baseFolder = DPL::ToUTF8String(*ret); - } - - if (!baseFolder.empty()) { - baseFolder += "/"; - } - - return baseFolder; -} - -WidgetCertificateDataList WidgetDAOReadOnly::getCertificateDataList() const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, - WidgetCertificateFingerprint, - &WrtDatabase::interface()) - select->Where(Equals( - m_widgetHandle)); - select->OrderBy("chainid"); - WidgetCertificateFingerprint::Select::RowList rows = - select->GetRowList(); - - WidgetCertificateDataList outlCertificateData; - FOREACH(it, rows) - { - WidgetCertificateData data; - - data.owner = - static_cast (it->Get_owner()); - data.type = - static_cast (it->Get_type()); - data.chainId = it->Get_chainid(); - DPL::Optional md5 = it->Get_md5_fingerprint(); - data.strMD5Fingerprint = - md5.IsNull() ? "" : DPL::ToUTF8String(*md5); - DPL::Optional sha1 = it->Get_sha1_fingerprint(); - data.strSHA1Fingerprint = - sha1.IsNull() ? "" : DPL::ToUTF8String(*sha1); - DPL::Optional cname = it->Get_common_name(); - data.strCommonName = - cname.IsNull() ? DPL::FromUTF8String("") : *cname; - - outlCertificateData.push_back(data); - } - return outlCertificateData; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get fingerprint list") -} - -FingerPrintList WidgetDAOReadOnly::getKeyFingerprints( - WidgetCertificateData::Owner owner, - WidgetCertificateData::Type type) const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, - WidgetCertificateFingerprint, - &WrtDatabase::interface()) - select->Where(And(And( - Equals( - m_widgetHandle), - Equals(owner)), - Equals(type))); - - WidgetCertificateFingerprint::Select::RowList rows = - select->GetRowList(); - - FingerPrintList keys; - FOREACH(it, rows) - { - DPL::Optional sha1 = it->Get_sha1_fingerprint(); - if (!sha1.IsNull()) { - keys.push_back(DPL::ToUTF8String(*sha1)); - } - DPL::Optional md5 = it->Get_md5_fingerprint(); - if (!md5.IsNull()) { - keys.push_back(DPL::ToUTF8String(*md5)); - } - } - return keys; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get fingerprint list") -} - -WidgetCertificateCNList WidgetDAOReadOnly::getKeyCommonNameList( - WidgetCertificateData::Owner owner, - WidgetCertificateData::Type type) const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, - WidgetCertificateFingerprint, - &WrtDatabase::interface()) - select->Where(And(And( - Equals( - m_widgetHandle), - Equals(owner)), - Equals(type))); - - WidgetCertificateFingerprint::Select::RowList rows = - select->GetRowList(); - - WidgetCertificateCNList out; - FOREACH(it, rows) - { - DPL::Optional cname = it->Get_common_name(); - out.push_back(cname.IsNull() ? "" : DPL::ToUTF8String(*cname)); - } - return out; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get key common name") -} - -void WidgetDAOReadOnly::getWidgetAccessInfo( - WidgetAccessInfoList& outAccessInfoList) const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetWARPInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - WidgetWARPInfo::Select::RowList rows = select->GetRowList(); - - FOREACH(it, rows) - { - WidgetAccessInfo info; - - info.strIRI = it->Get_iri(); - DPL::OptionalInt access = it->Get_subdomain_access(); - if (access.IsNull() || 0 == *access) { - info.bSubDomains = false; - } else if (1 == *access) { - info.bSubDomains = true; - } - - outAccessInfoList.push_back(info); - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get accessinfo list") -} - -void WidgetDAOReadOnly::getWidgetAllowNavigationInfo( - WidgetAllowNavigationInfoList& allowNavigationList) const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetAllowNavigation, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - WidgetAllowNavigation::Select::RowList rows = select->GetRowList(); - - FOREACH(it, rows) { - WidgetAllowNavigationInfo info; - info.scheme = it->Get_scheme(); - info.host = it->Get_host(); - allowNavigationList.push_back(info); - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get allow-navigation info list") -} - -LanguageTags WidgetDAOReadOnly::getLanguageTags() const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, LocalizedWidgetInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - return select->GetValueList(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get language tags") -} - -LanguageTags WidgetDAOReadOnly::getIconLanguageTags() const -{ - //TODO check widget existance - WRT_DB_SELECT(select, WidgetLocalizedIcon, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - select->Distinct(); - return select->GetValueList(); -} - -std::string WidgetDAOReadOnly::getCookieDatabasePath() const -{ - using namespace WrtDB::WidgetConfig; - std::ostringstream path; - - TizenAppId tzAppId = getTzAppId(); - - path << GetWidgetPersistentStoragePath(tzAppId); - path << "/"; - path << GlobalConfig::GetCookieDatabaseFile(); - - return path.str(); -} - -std::string WidgetDAOReadOnly::getPrivateLocalStoragePath() const -{ - std::ostringstream path; - TizenAppId tzPkgId = getTizenPkgId(); - path << WidgetConfig::GetWidgetWebLocalStoragePath(tzPkgId); - path << "/"; - - return path.str(); -} - -void WidgetDAOReadOnly::getWidgetSettings( - WidgetSettings& outWidgetSettings) const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, SettingsList, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - SettingsList::Select::RowList rows = select->GetRowList(); - - FOREACH(it, rows) - { - WidgetSetting info; - - info.settingName = it->Get_settingName(); - info.settingValue = it->Get_settingValue(); - outWidgetSettings.push_back(info); - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get settings list") -} - -void WidgetDAOReadOnly::getAppControlList( - WidgetAppControlList& outAppControlList) const -{ - LogDebug("Getting getAppControlList. Handle: " << m_widgetHandle); - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction transaction(&WrtDatabase::interface()); - CHECK_WIDGET_EXISTENCE(transaction, m_widgetHandle) - - WRT_DB_SELECT(select, AppControlInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - AppControlInfo::Select::RowList rows = select->GetRowList(); - - if (rows.empty()) { - LogDebug("AppControl list is empty. Handle: " << - m_widgetHandle); - } - - FOREACH(it, rows) { - WidgetAppControl ret; - ret.src = it->Get_src(); - ret.operation = it->Get_operation(); - ret.uri = it->Get_uri(); - ret.mime = it->Get_mime(); - ret.disposition = static_cast(it->Get_disposition()); - ret.index = it->Get_execute_index(); - outAppControlList.push_back(ret); - } - - transaction.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get AppControl list") -} - -PackagingType WidgetDAOReadOnly::getPackagingType() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_pkg_type(); - return PackagingType(static_cast(*result)); -} - -void WidgetDAOReadOnly::getEncryptedFileList(EncryptedFileList& filesList) -const -{ - //TODO check widget existance - WRT_DB_SELECT(select, EncryptedResourceList, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - typedef std::list RowList; - RowList list = select->GetRowList(); - - FOREACH(it, list) { - EncryptedFileInfo info; - info.fileName = it->Get_resource(); - info.fileSize = it->Get_size(); - filesList.insert(info); - } -} - -DPL::OptionalString WidgetDAOReadOnly::getBackgroundPage() const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetExtendedInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - WidgetExtendedInfo::Select::RowList rows = select->GetRowList(); - if (rows.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << m_widgetHandle); - } - - return rows.front().Get_background_page(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get background page") -} - -TizenPkgId WidgetDAOReadOnly::generatePkgId() -{ - std::string allowed("0123456789" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz"); - TizenPkgId pkgId; - pkgId.resize(MAX_TIZENID_LENGTH); - do { - for (int i = 0; i < MAX_TIZENID_LENGTH; ++i) { - pkgId[i] = allowed[rand_r(&seed) % allowed.length()]; - } - } while (isWidgetInstalled(pkgId)); - return pkgId; -} - -SettingsType WidgetDAOReadOnly::getSecurityPopupUsage(void) const -{ - WidgetSecuritySettingsRow row = - getWidgetSecuritySettingsRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_security_popup_usage(); - return static_cast(*result); -} - -SettingsType WidgetDAOReadOnly::getGeolocationUsage(void) const -{ - WidgetSecuritySettingsRow row = - getWidgetSecuritySettingsRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_geolocation_usage(); - return static_cast(*result); -} - -SettingsType WidgetDAOReadOnly::getWebNotificationUsage(void) const -{ - WidgetSecuritySettingsRow row = - getWidgetSecuritySettingsRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_web_notification_usage(); - return static_cast(*result); -} - -SettingsType WidgetDAOReadOnly::getWebDatabaseUsage(void) const -{ - WidgetSecuritySettingsRow row = - getWidgetSecuritySettingsRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_web_database_usage(); - return static_cast(*result); -} - -DPL::OptionalString WidgetDAOReadOnly::getWidgetInstalledPath() const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, WidgetExtendedInfo, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - WidgetExtendedInfo::Select::RowList rows = select->GetRowList(); - if (rows.empty()) { - ThrowMsg(WidgetDAOReadOnly::Exception::WidgetNotExist, - "Cannot find widget. Handle: " << m_widgetHandle); - } - - return rows.front().Get_installed_path(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get widdget installed path") -} - -TizenPkgId WidgetDAOReadOnly::getTizenPkgId() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - return row.Get_tizen_pkgid(); -} - -PrivilegeList WidgetDAOReadOnly::getWidgetPrivilege() const -{ - //TODO check widget existance - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WRT_DB_SELECT(select, WidgetPrivilege, &WrtDatabase::interface()) - select->Where(Equals(m_widgetHandle)); - - return select->GetValueList(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Failed to get PrivilegeList") -} - -WidgetSecurityModelVersion WidgetDAOReadOnly::getSecurityModelVersion() const -{ - WidgetInfoRow row = getWidgetInfoRow(m_widgetHandle); - DPL::OptionalInt result = row.Get_security_model_version(); - return static_cast(*result); -} - -#undef SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN -#undef SQL_CONNECTION_EXCEPTION_HANDLER_END -#undef CHECK_WIDGET_EXISTENCE -} // namespace WrtDB diff --git a/modules_mobile/widget_dao/dao/widget_dao_types.cpp b/modules_mobile/widget_dao/dao/widget_dao_types.cpp deleted file mode 100644 index f260497..0000000 --- a/modules_mobile/widget_dao/dao/widget_dao_types.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file widget_dao_types.cpp - * @author Leerang Song (leerang.song@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of - * common data types forwidget database. - */ - -#include -#include - -namespace WrtDB { - -const std::map g_W3CPrivilegeTextMap = { - {"http://tizen.org/privilege/location", FEATURE_GEOLOCATION}, - {"http://tizen.org/privilege/notification", FEATURE_WEB_NOTIFICATION}, - {"http://tizen.org/privilege/mediacapture", FEATURE_USER_MEDIA}, - {"http://tizen.org/privilege/fullscreen", FEATURE_FULLSCREEN_MODE}, - {"http://tizen.org/privilege/unlimitedstorage", FEATURE_WEB_DATABASE}, -}; -} // namespace SecurityOriginDB diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h deleted file mode 100644 index 8caa49f..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/WrtDatabase.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef WRT_SRC_CONFIGURATION_WRTDATABASE_H_ -#define WRT_SRC_CONFIGURATION_WRTDATABASE_H_ - -#include - -namespace WrtDB { -class WrtDatabase -{ - public: - static const char *Address(); - static DPL::DB::SqlConnection::Flag::Type Flags(); - static void attachToThreadRO(); - static void attachToThreadRW(); - static void detachFromThread(); - static DPL::DB::ThreadDatabaseSupport& interface(); - static bool CheckTableExist(const char *name); - - private: - static DPL::DB::ThreadDatabaseSupport m_interface; -}; -} - -#endif /* WRTDATABASE_H */ - diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h deleted file mode 100644 index 13ff04a..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/common_dao_types.h +++ /dev/null @@ -1,392 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file common_dao_types.h - * @author Michal Ciepielski (m.ciepielski@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of common data types for wrtdb - */ - -#ifndef WRT_WIDGET_DAO_COMMON_DAO_TYPES_H_ -#define WRT_WIDGET_DAO_COMMON_DAO_TYPES_H_ - -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -class PluginMetafileData -{ - public: - struct Feature - { - std::string m_name; - std::set m_deviceCapabilities; - - bool operator< (const Feature& obj) const - { - return m_name < obj.m_name; - } - }; - typedef std::set FeatureContainer; - - public: - - PluginMetafileData() - {} - - std::string m_libraryName; - FeatureContainer m_featureContainer; -}; - -class PluginObjectsDAO -{ - public: - typedef std::set Objects; - typedef std::shared_ptr ObjectsPtr; - - public: - explicit PluginObjectsDAO() {} - - protected: - ObjectsPtr m_implemented; - ObjectsPtr m_dependent; -}; - -/** - * @brief Widget id describes web-runtime global widget identifier. - * - * Notice that only up to one widget can exist at the same time. - * DbWidgetHandle can be translated into corresponding WidgetModel by invoking - * FindWidgetModel routine. - */ -typedef int DbWidgetHandle; -typedef DPL::String TizenPkgId; -typedef DPL::String TizenAppId; - -/** - * Value of invalid widget handle - */ -enum { - INVALID_WIDGET_HANDLE = -1 -}; - -/** - * @brief Structure to hold the information of widget's size - */ -struct DbWidgetSize -{ - DPL::OptionalInt width; - DPL::OptionalInt height; - - DbWidgetSize(DPL::OptionalInt w = DPL::OptionalInt::Null, - DPL::OptionalInt h = DPL::OptionalInt::Null) : - width(w), - height(h) - {} -}; - -inline bool operator ==(const DbWidgetSize &objA, const DbWidgetSize &objB) -{ - if (!objA.height || !objA.width || !objB.width || !objB.height) { - return false; - } else { - return *objA.height == *objB.height && *objA.width == *objB.width; - } -} - -/** - * Widget [G]lobal [U]nique [ID]entifier - * Orginated from appstore ID - */ -typedef DPL::OptionalString WidgetGUID; - -struct WidgetAccessInfo -{ - DPL::String strIRI; /* origin iri */ - bool bSubDomains; /* do we want access to subdomains ? */ - - bool operator ==(const WidgetAccessInfo& info) const - { - return info.strIRI == strIRI && - info.bSubDomains == bSubDomains; - } -}; -typedef std::list WidgetAccessInfoList; - -struct WidgetAllowNavigationInfo -{ - DPL::String scheme; - DPL::String host; -}; -typedef std::list WidgetAllowNavigationInfoList; - -struct EncryptedFileInfo -{ - DPL::String fileName; - int fileSize; - - bool operator==(const EncryptedFileInfo& info) const - { - return fileName == info.fileName; - } - - bool operator==(const DPL::String& file) const - { - return fileName == file; - } - - bool operator< (const EncryptedFileInfo& info) const - { - return fileName < info.fileName; - } -}; - -typedef std::list WindowModeList; - -typedef std::list PrivilegeList; - -typedef std::set EncryptedFileList; - -/** - * @brief Widget feature host information about possible javascript extensions - * that widget may use - * - * Widget features are declared in configuration file in widget installation - * package. Each declared special feature is contained in some wrt-plugin that - * declares to implement it. After widget launch wrt searches for proper plugin - * libraries and load needed features. - * - * Widget features can be required or optional. It is possible to start widget - * without missing feature. When required feature cannot be loaded widget will - * not start. - */ - -enum { - INVALID_PLUGIN_HANDLE = -1 -}; -typedef int DbPluginHandle; - -struct DbWidgetFeature -{ - DPL::String name; /// Feature name - bool rejected; /// Api feature was rejected by ace - DbPluginHandle pluginId; /// Plugin id that implement this feature - - DbWidgetFeature() : - pluginId(INVALID_PLUGIN_HANDLE) - {} -}; - -inline bool operator < (const DbWidgetFeature &objA, - const DbWidgetFeature &objB) -{ - return objA.name.compare(objB.name) < 0; -} - -inline bool operator==(const DbWidgetFeature &featureA, - const DbWidgetFeature &featureB) -{ - return featureA.name == featureB.name && - featureA.pluginId == featureB.pluginId; -} - -/** - * @brief Default container for features list - */ -typedef std::multiset DbWidgetFeatureSet; - -/** - * @brief Default container with DbWidgetHandle's - */ -typedef std::list DbWidgetHandleList; -typedef std::list TizenAppIdList; -typedef std::list TizenPkgIdList; - -class WidgetDAOReadOnly; //forward declaration -typedef std::shared_ptr WidgetDAOReadOnlyPtr; -/** - * @brief Default container with WidgetDAOReadOnly - */ -typedef std::list DbWidgetDAOReadOnlyList; - -/** - * @brief Widget specific type - * - * Widget type describes belowed in WAC, TIZEN WebApp - */ -enum AppType -{ - APP_TYPE_UNKNOWN = 0, // unknown - APP_TYPE_TIZENWEBAPP // Tizen webapp -}; - -class WidgetType -{ - public: - WidgetType() : - appType(APP_TYPE_UNKNOWN) - {} - WidgetType(const AppType type) : - appType(type) - {} - bool operator== (const AppType& other) const - { - return appType == other; - } - bool operator!= (const AppType& other) const - { - return appType != other; - } - std::string getApptypeToString() - { - switch (appType) { -#define X(x) case x: return #x; - X(APP_TYPE_UNKNOWN) - X(APP_TYPE_TIZENWEBAPP) -#undef X - default: - return "UNKNOWN"; - } - } - - AppType appType; -}; - -/** - * @brief Package specific type - * - * Package type describes belowed in Tizen webapp, C++ service App - */ -enum PkgType -{ - PKG_TYPE_UNKNOWN = 0, // unknown - PKG_TYPE_NOMAL_WEB_APP, - PKG_TYPE_DIRECTORY_WEB_APP, - PKG_TYPE_HOSTED_WEB_APP, // request from browser - PKG_TYPE_HYBRID_WEB_APP // Tizen webapp with C++ service app -}; - -class PackagingType -{ - public: - PackagingType() : - pkgType(PKG_TYPE_UNKNOWN) - {} - PackagingType(const PkgType type) : - pkgType(type) - {} - bool operator== (const PkgType& other) const - { - return pkgType == other; - } - bool operator!= (const PkgType& other) const - { - return pkgType != other; - } - std::string getPkgtypeToString() - { - switch (pkgType) { -#define X(x) case x: return #x; - X(PKG_TYPE_UNKNOWN) - X(PKG_TYPE_NOMAL_WEB_APP) - X(PKG_TYPE_DIRECTORY_WEB_APP) - X(PKG_TYPE_HOSTED_WEB_APP) - X(PKG_TYPE_HYBRID_WEB_APP) -#undef X - default: - return "UNKNOWN"; - } - } - - PkgType pkgType; -}; - -enum SettingsType -{ - SETTINGS_TYPE_UNKNOWN = 0, - SETTINGS_TYPE_ON, - SETTINGS_TYPE_ALWAYS_ASK, - SETTINGS_TYPE_OFF -}; - -struct WidgetSetting -{ - DPL::String settingName; - DPL::String settingValue; - - bool operator ==(const WidgetSetting& info) const - { - return (info.settingName == settingName && - info.settingValue == settingValue); - } - bool operator !=(const WidgetSetting& info) const - { - return (info.settingName != settingName || - info.settingValue != settingValue); - } -}; - -typedef std::list WidgetSettings; - -/** - * @brief Widget AppControl - * - * Application control describes details of behaviour - * when widget receives aul bundle data. - */ -namespace AppControlPrefix { - const char* const PROCESS_PREFIX = "-__CONTROL_PROCESS__"; -} -struct WidgetAppControl -{ - enum class Disposition { - UNDEFINE = 0, - WINDOW = 1, - INLINE = 2 - }; - - DPL::String src; /* start uri */ - DPL::String operation; /* service name */ - DPL::String uri; /* scheme type*/ - DPL::String mime; /* mime type */ - Disposition disposition; - unsigned index; - - bool operator== (const WidgetAppControl& other) const - { - return src == other.src && - operation == other.operation && - uri == other.uri && - mime == other.mime && - disposition == other.disposition; - } -}; - -typedef std::list WidgetAppControlList; - -enum class WidgetSecurityModelVersion -{ - WIDGET_SECURITY_MODEL_V1 = 0, // WARP - WIDGET_SECURITY_MODEL_V2 // CSP, allow-navigation -}; -} // namespace WrtDB -#endif /* WRT_WIDGET_DAO_COMMON_DAO_TYPES_H_ */ diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h deleted file mode 100644 index 3069fa0..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/config_parser_data.h +++ /dev/null @@ -1,373 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file config_parser_data.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 0.1 - * @brief - */ -#ifndef CONFIG_PARSER_DATA_H_ -#define CONFIG_PARSER_DATA_H_ - -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -void NormalizeString(DPL::OptionalString& txt, bool isTrimSpace = false); -void NormalizeString(DPL::String& str); -DPL::String GetSingleAttributeValue(const DPL::String value); -void NormalizeAndTrimSpaceString(DPL::OptionalString& txt); - -class WidgetConfigurationManager; - -class ConfigParserData -{ - public: - struct Feature - { - Feature(const DPL::String& _name) : name(_name) - {} - DPL::String name; - - bool operator==(const Feature&) const; - bool operator!=(const Feature&) const; - bool operator >(const Feature&) const; - bool operator>=(const Feature&) const; - bool operator <(const Feature&) const; - bool operator<=(const Feature&) const; - }; - typedef std::set FeaturesList; - - struct Privilege - { - Privilege(const DPL::String& _name) : name(_name) - {} - DPL::String name; - - bool operator==(const Privilege&) const; - bool operator!=(const Privilege&) const; - bool operator >(const Privilege&) const; - bool operator>=(const Privilege&) const; - bool operator <(const Privilege&) const; - bool operator<=(const Privilege&) const; - }; - typedef std::set PrivilegeList; - - struct Icon - { - Icon(const DPL::String& _src) : src(_src) - {} - DPL::String src; - DPL::OptionalInt width; - DPL::OptionalInt height; - bool operator==(const Icon&) const; - bool operator!=(const Icon&) const; - bool operator >(const Icon&) const; - bool operator>=(const Icon&) const; - bool operator <(const Icon&) const; - bool operator<=(const Icon&) const; - }; - typedef std::list IconsList; - - struct LocalizedData - { - DPL::OptionalString name; - DPL::OptionalString shortName; - - DPL::OptionalString description; - - DPL::OptionalString license; - DPL::OptionalString licenseFile; - DPL::OptionalString licenseHref; - }; - typedef std::map LocalizedDataSet; - - struct Preference - { - Preference(const DPL::String& _name, - bool _readonly = false) : - name(_name), - value(), - readonly(_readonly) - {} - DPL::String name; - DPL::OptionalString value; - bool readonly; - bool operator==(const Preference&) const; - bool operator!=(const Preference&) const; - bool operator >(const Preference&) const; - bool operator>=(const Preference&) const; - bool operator <(const Preference&) const; - bool operator<=(const Preference&) const; - }; - typedef std::set PreferencesList; - typedef std::set StringsList; - - struct AccessInfo - { - AccessInfo(const DPL::String& strIRI, - bool bSubdomainAccess) : m_strIRI(strIRI), - m_bSubDomainAccess(bSubdomainAccess) - {} - - bool operator==(const AccessInfo&) const; - bool operator!=(const AccessInfo&) const; - bool operator <(const AccessInfo&) const; - - DPL::String m_strIRI; - bool m_bSubDomainAccess; - }; - typedef std::set AccessInfoSet; - - struct Setting - { - Setting(const DPL::String& name, - const DPL::String& value) : - m_name(name), - m_value(value) - {} - DPL::String m_name; - DPL::String m_value; - - bool operator==(const Setting&) const; - bool operator!=(const Setting&) const; - bool operator >(const Setting&) const; - bool operator>=(const Setting&) const; - bool operator <(const Setting&) const; - bool operator<=(const Setting&) const; - }; - - typedef std::set SettingsList; - - struct AppControlInfo - { - enum class Disposition { - UNDEFINE = 0, - WINDOW = 1, - INLINE = 2 - }; - AppControlInfo(const DPL::String& operation) : - m_operation(operation), - m_disposition(Disposition::UNDEFINE), - m_index(0) - {} - DPL::String m_src; - DPL::String m_operation; - std::set m_uriList; - std::set m_mimeList; - Disposition m_disposition; - unsigned m_index; - - bool operator==(const AppControlInfo&) const; - bool operator!=(const AppControlInfo&) const; - }; - - typedef std::list AppControlInfoList; - - struct LiveboxInfo - { - LiveboxInfo() { } - - struct BoxSize - { - DPL::String m_size; - DPL::String m_preview; - DPL::String m_useDecoration; - }; - typedef BoxSize BoxSizeInfo; - typedef std::list BoxSizeList; - - struct BoxContent - { - DPL::String m_boxSrc; - DPL::String m_boxMouseEvent; - DPL::String m_boxTouchEffect; - BoxSizeList m_boxSize; - DPL::String m_pdSrc; - DPL::String m_pdWidth; - DPL::String m_pdHeight; - DPL::String m_pdFastOpen; - }; - typedef BoxContent BoxContentInfo; - - typedef std::list > BoxLabelList; - - BoxLabelList m_label; - DPL::String m_icon; - DPL::String m_liveboxId; - DPL::String m_primary; - DPL::String m_type; - DPL::String m_autoLaunch; - DPL::String m_updatePeriod; - BoxContentInfo m_boxInfo; - - bool operator==(const LiveboxInfo&) const; - bool operator!=(const LiveboxInfo&) const; - bool operator >(const LiveboxInfo&) const; - bool operator>=(const LiveboxInfo&) const; - bool operator <(const LiveboxInfo&) const; - bool operator<=(const LiveboxInfo&) const; - }; - typedef std::list > LiveboxList; - - enum IconSectionType - { - DefaultIcon =0, - SmallIcon - }; - - typedef std::set> IconSet; - typedef std::list CapabilityList; - typedef std::set> DisplayNameSet; - - struct AccountProvider - { - AccountProvider() : - m_multiAccountSupport(false) - { } - - bool m_multiAccountSupport; - IconSet m_iconSet; - DisplayNameSet m_displayNameSet; - CapabilityList m_capabilityList; - }; - - typedef std::list DependsPkgList; - typedef std::set CategoryList; - - struct AllowNavigationInfo - { - AllowNavigationInfo(DPL::String scheme, - DPL::String host) : - m_scheme(scheme), - m_host(host) - { } - DPL::String m_scheme; - DPL::String m_host; - }; - typedef std::list AllowNavigationInfoList; - - struct Metadata - { - Metadata(const DPL::OptionalString& _key, - const DPL::OptionalString& _value) : - key(_key), - value(_value) - {} - DPL::OptionalString key; - DPL::OptionalString value; - - bool operator==(const Metadata&) const; - bool operator!=(const Metadata&) const; - }; - typedef std::list MetadataList; - - enum class SecurityModelVersion { - SECURITY_MODEL_V1 = 0, // WARP - SECURITY_MODEL_V2 // CSP, allow-navigation - }; - - LiveboxList m_livebox; - StringsList nameSpaces; - - LocalizedDataSet localizedDataSet; - - DPL::OptionalString authorName; - DPL::OptionalString authorHref; - DPL::OptionalString authorEmail; - - FeaturesList featuresList; - PrivilegeList privilegeList; - - SettingsList settingsList; - - DPL::OptionalInt width; - DPL::OptionalInt height; - - DPL::OptionalString widget_id; - DPL::OptionalString defaultlocale; - - PreferencesList preferencesList; - - DPL::OptionalString version; - StringsList windowModes; - - AccessInfoSet accessInfoSet; - - bool flashNeeded; - - DPL::OptionalString minVersionRequired; - - bool backSupported; - bool accessNetwork; - - // Unlocalized data, to be processed by WidgetConfigurationManager - bool startFileEncountered; - DPL::OptionalString startFile; - DPL::OptionalString startFileEncoding; - DPL::OptionalString startFileContentType; - DPL::OptionalString startFileNamespace; - IconsList iconsList; - - // tizen id / required platform min version for TIZEN webapp - DPL::OptionalString tizenMinVersionRequired; - DPL::OptionalString tizenPkgId; - DPL::OptionalString tizenAppId; - - // allow-navigation - bool allowNavigationEncountered; - AllowNavigationInfoList allowNavigationInfoList; - - //csp polic for widget - DPL::OptionalString cspPolicy; - DPL::OptionalString cspPolicyReportOnly; - - //AppControl model list - AppControlInfoList appControlList; - - // For link shared directory - DependsPkgList dependsPkgList; - // Splash image path - DPL::OptionalString splashImgSrc; - // Background page filename - DPL::OptionalString backgroundPage; - // For category - CategoryList categoryList; - // For Account - AccountProvider accountProvider; - // security model version - SecurityModelVersion securityModelVersion; - // security model version - MetadataList metadataList; - - ConfigParserData() : - flashNeeded(false), - minVersionRequired(), - backSupported(false), - accessNetwork(false), - startFileEncountered(false), - allowNavigationEncountered(false), - securityModelVersion(SecurityModelVersion::SECURITY_MODEL_V1) - {} -}; -} // namespace WrtDB - -#endif //CONFIG_PARSER_DATA_H_ diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h deleted file mode 100644 index f366012..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_dao_read_only.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file feature_dao_read_only.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of feature dao read only - */ - -#ifndef WRT_SRC_CONFIGURATION_FEATURE_DAO_READ_ONLY_H_ -#define WRT_SRC_CONFIGURATION_FEATURE_DAO_READ_ONLY_H_ - -#include -#include -#include -#include -#include "feature_model.h" -#include -#include - -namespace WrtDB { -// TODO: Move to feature_model.h -typedef std::set DeviceCapabilitySet; - -class FeatureDAOReadOnly -{ - public: - /** - * Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, FeatureNotExist) - }; - - // TODO: Move to feature_model.h - typedef std::set DeviceCapabilitiesList; - typedef std::multimap DeviceCapabilitiesMap; - typedef std::map NameMap; - typedef std::map FeatureMap; - - static bool isDeviceCapabilityInstalled(const std::string &deviceCapName); - - FeatureDAOReadOnly(FeatureHandle); - FeatureDAOReadOnly(const std::string &featureName); - - static FeatureHandleListPtr GetFeatureHandleListForPlugin( - DbPluginHandle pluginHandle); - - static bool isFeatureInstalled(const std::string &featureName); - static bool isFeatureInstalled(FeatureHandle handle); - static FeatureHandleList GetHandleList(); - - std::string GetName() const; - FeatureHandle GetFeatureHandle() const; - std::string GetLibraryPath() const; - std::string GetLibraryName() const; - DeviceCapabilitiesList GetDeviceCapabilities() const; - DbPluginHandle GetPluginHandle() const; - - static NameMap GetNames(); - static DeviceCapabilitiesMap GetDevCapWithFeatureHandle(); - static DeviceCapabilitySet GetDeviceCapability(const DPL::String &apifeature); - - static FeatureMap GetFeatures(const std::list& featureNames); - - protected: - FeatureHandle m_featureHandle; -}; -} // namespace WrtDB - -#endif /* WRT_SRC_CONFIGURATION_FEATURE_DAO_READ_ONLY_H_ */ diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_model.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_model.h deleted file mode 100644 index 8698d4a..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/feature_model.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file feature_model.h - * @author Pawel Sikorski (p.sikorski@samgsung.com) - * @version - * @brief This file contains FeatureModel, FeatureHandle definitions. - */ -#ifndef FEATURE_MODEL_H -#define FEATURE_MODEL_H - -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -typedef int FeatureHandle; -typedef std::list FeatureHandleList; -typedef std::shared_ptr FeatureHandleListPtr; - -typedef int FeatureSetHandle; -typedef std::list FeatureSetHandleList; - -typedef struct { - std::string featureName; - DbPluginHandle pluginHandle; -} FeatureData; - -class FeatureModel : public DPL::Event::Model -{ - public: - DPL::Event::Property FHandle; - DPL::Event::Property Name; - - DPL::Event::Property > DeviceCapabilities; - DPL::Event::Property PHandle; - - FeatureModel(FeatureHandle handle) : - FHandle(this, handle), - Name(this), - DeviceCapabilities(this), - PHandle(this, -1) - {} - - void SetData(const std::string& name, - const std::set& deviceCapabilities, - const DbPluginHandle& pluginHandle) - { - Name.SetWithoutLock(name); - DeviceCapabilities.SetWithoutLock(deviceCapabilities); - PHandle.SetWithoutLock(pluginHandle); - } -}; - -typedef std::shared_ptr FeatureModelPtr; -} // namespace WrtDB - -#endif // FEATURE_MODEL_H diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/global_config.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/global_config.h deleted file mode 100644 index ab41158..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/global_config.h +++ /dev/null @@ -1,313 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file global_config.h - * @author Yang Jie (jie2.yang@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file contains global WRT config - */ -#ifndef GLOBAL_CONFIG_H -#define GLOBAL_CONFIG_H - -#include -#include - -namespace WrtDB { -namespace GlobalConfig { -/** - * WRT database path - */ -inline const char* GetWrtDatabaseFilePath() -{ - return "/opt/dbspace/.wrt.db"; -} - -/** - * WRT device plugin path - */ -inline const char* GetDevicePluginPath() -{ - return "/usr/lib/wrt-plugins"; -} - -/** - * WRT widgets that are downloaded and installed by user - */ -inline const char* GetUserInstalledWidgetPath() -{ - return "/opt/usr/apps"; -} - -/** - * WRT widgets that are preloaded - */ -inline const char* GetUserPreloadedWidgetPath() -{ - return "/usr/apps"; -} - -/** - * WRT widgets that are downloaded and installed by user - */ -inline const char* GetWidgetUserDataPath() -{ - return "/opt/usr/apps"; -} - -/** - * WRT widgets that are downloaded and installed by user - */ -inline const char* GetWidgetSrcPath() -{ - return "/res/wgt"; -} - -/** - * Directory for WebKit local storage files - */ -inline const char* GetPublicVirtualRootPath() -{ - return "/opt/share/widget/data/Public"; -} - -/** - * Directory for WebKit local storage files - */ -inline const char* GetWidgetLocalStoragePath() -{ - return "data/localStorage"; -} - -/** - * Directory for tests data (such as test widgets wgt) - */ -inline const char* GetTestsDataPath() -{ - return "/opt/share/widget/tests"; -} - -/** - * widgets exec path - */ -inline const char* GetUserWidgetExecPath() -{ - return "/bin"; -} - -/** - * widgets private data path - */ -inline const char* GetWidgetPrivateStoragePath() -{ - return "data"; -} - -/** - * widgets private temp data path - */ -inline const char* GetWidgetPrivateTempStoragePath() -{ - return "tmp"; -} - -/** - * widgets desktop files path - */ -inline const char* GetUserWidgetDesktopPath() -{ - return "/opt/share/applications"; -} - -/** - * wrt-client exec path - */ -inline const char* GetWrtClientExec() -{ - return "/usr/bin/wrt-client"; -} - -/** - * widgets desktop icon path - */ -inline const char* GetUserWidgetDesktopIconPath() -{ - return "/opt/share/icons/default/small"; -} - -/** - * widgets default icon file - */ -inline const char* GetUserWidgetDefaultIconFile() -{ - return "/usr/share/wrt-engine/wrt_widget_default_icon.png"; -} - -inline const char* GetSignatureXmlSchema() -{ - //TODO please rename, this filename is not descriptive enough - return "/usr/share/wrt-engine/schema.xsd"; -} - -/** - * Name of the w3c geolocation feature - */ -inline const char* GetW3CGeolocationFeatureName() -{ - return "http://www.w3.org/TR/geolocation-API/"; -} - -/** - * Prefix of package name for widgets - */ -inline const char* GetPkgnamePrefix() -{ - return "org.tizen."; -} - -/** - * Plugin Configuration Metafile name - */ -inline const char* GetPluginMetafileName() -{ - return "config.xml"; -} - -/** - * Plugin .so prefix - */ -inline const char* GetPluginPrefix() -{ - return "libwrt-plugins-"; -} - -/** - * Plugin .so suffix - */ -inline const char* GetPluginSuffix() -{ - return ".so"; -} - -/** - * WRT device plugins installation required - * File which indicate that new plugins - * are available and should be installed - */ -inline const char* GetPluginInstallInitializerName() -{ - return "/opt/share/widget/plugin-installation-required"; -} - -/** - * File with certificate fingerprints list. - */ - -inline const char* GetFingerprintListFile() -{ - return "/usr/share/wrt-engine/fingerprint_list.xml"; -} - -inline const char* GetFingerprintListSchema() -{ - return "/usr/share/wrt-engine/fingerprint_list.xsd"; -} - -inline const char* GetVCoreDatabaseFilePath() -{ - return "/opt/dbspace/.cert_svc_vcore.db"; -} - -/** - * widgets cookie database file name - */ -inline const char* GetCookieDatabaseFile() -{ - return ".cookie.db"; -} - -inline const char* GetTmpDirPath() -{ - return "/tmp"; -} - -inline const char* GetTizenVersion() -{ - return "2.2"; -} - -inline const char* GetShareDirectoryPath() -{ - return "/opt/share"; -} - -inline const char* GetTempInstallInfoPath() -{ - return "/opt/share/widget/temp_info"; -} - -inline const char* GetWidgetSharedPath() -{ - return "/shared"; -} - -inline const char* GetWidgetDataPath() -{ - return "/data"; -} - -inline const char* GetWidgetTrustedPath() -{ - return "/trusted"; -} - -inline const char* GetWidgetResPath() -{ - return "/res"; -} - -inline const char* GetNPRuntimePluginsPath() -{ -#ifdef __arm__ - return "plugins/arm"; -#else - return "plugins/x86"; -#endif -} - -inline const char* GetBackupDatabaseSuffix() -{ - return ".backup"; -} - -inline const char* GetManifestPath() -{ - return "/opt/share/packages"; -} - -inline const char* GetPreloadManifestPath() -{ - return "/usr/share/packages"; -} - -inline const char* GetRecoveryStatusPath() -{ - return "/usr/share/packages/.recovery/wgt"; -} -} // namespace GlobalConfig -} // namespace WrtDB - -#endif // GLOBAL_CONFIG_H diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/path_builder.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/path_builder.h deleted file mode 100644 index 4ea6a4f..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/path_builder.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file PathBuilder.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief Header file for PathBuilder class. - */ -#ifndef WRT_UTILS_PATHBUILDER_H -#define WRT_UTILS_PATHBUILDER_H - -#include -#include - -namespace WrtDB { -class PathBuilderImpl; - -class PathBuilder : private DPL::Noncopyable -{ - public: - PathBuilder(); - explicit PathBuilder(const std::string& path); - - ~PathBuilder(); - - PathBuilder& Append(const std::string& path); - - PathBuilder& Concat(const std::string& arg); - PathBuilder& Concat(int arg); - - PathBuilder& Reset(); - - bool Empty() const; - - std::string GetFullPath() const; - - private: - PathBuilderImpl* m_impl; -}; -} // namespace WrtDB - -#endif diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h deleted file mode 100644 index 88e308a..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/property_dao_read_only.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * property_dao_read_only.h - * - * Created on: Nov 16, 2011 - * Author: Krzysztof Jackiewicz(k.jackiewicz@samsung.com) - */ - -#ifndef PROPERTY_DAO_READ_ONLY_H_ -#define PROPERTY_DAO_READ_ONLY_H_ - -#include -#include -#include -#include -#include - -namespace WrtDB { -namespace PropertyDAOReadOnly { -typedef DPL::String WidgetPropertyKey; -typedef DPL::OptionalString WidgetPropertyValue; - -typedef std::list WidgetPropertyKeyList; - -struct WidgetPreferenceRow { - int appId; - TizenAppId tizen_appid; - WidgetPropertyKey key_name; - WidgetPropertyValue key_value; - DPL::OptionalInt readonly; -}; - -typedef std::list WidgetPreferenceList; - -/** - * PropertyDAO Exception classes - */ -class Exception -{ - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, ReadOnlyProperty) -}; - -//deprecated -/* This method checks read only flag for given property - */ -DPL::OptionalInt CheckPropertyReadFlag(DbWidgetHandle widgetHandle, - const WidgetPropertyKey &key) -__attribute__((deprecated)); - -/* This method checks read only flag for given property - */ -DPL::OptionalInt CheckPropertyReadFlag(TizenAppId tzAppid, - const WidgetPropertyKey &key); - -/* This method gets widget property key list - */ -WidgetPropertyKeyList GetPropertyKeyList(TizenAppId tzAppid); - -//deprecated -/* This method gets widget property list - */ -WidgetPreferenceList GetPropertyList(DbWidgetHandle widgetHandle) -__attribute__((deprecated)); - -/* This method gets widget property list - */ -WidgetPreferenceList GetPropertyList(TizenAppId tzAppid); - -/* This method get widget property value - */ -WidgetPropertyValue GetPropertyValue(TizenAppId tzAppid, - const WidgetPropertyKey &key); -} // PropertyDAOReadOnly -} // namespace WrtDB - -#endif /* PROPERTY_DAO_READ_ONLY_H_ */ diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_config.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_config.h deleted file mode 100644 index c452814..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_config.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file widget_config.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief Implementation file for widget config. - */ -#ifndef SRC_DOMAIN_WIDGET_CONFIG_H -#define SRC_DOMAIN_WIDGET_CONFIG_H - -#include -#include - -#include -#include -#include - -namespace WrtDB { -namespace WidgetConfig { -inline std::string GetWidgetBasePath(DPL::String tzPkgId) -{ - return PathBuilder() - .Append(GlobalConfig::GetWidgetUserDataPath()) - .Append(DPL::ToUTF8String(tzPkgId)) - .GetFullPath(); -} - -inline std::string GetWidgetWebLocalStoragePath(DPL::String tzPkgId) -{ - return PathBuilder(GetWidgetBasePath(tzPkgId)) - .Append(GlobalConfig::GetWidgetLocalStoragePath()) - .GetFullPath(); -} - -inline std::string GetWidgetPersistentStoragePath(DPL::String tzPkgId) -{ - return PathBuilder(GetWidgetBasePath(tzPkgId)) - .Append(GlobalConfig::GetWidgetPrivateStoragePath()) - .GetFullPath(); -} - -inline std::string GetWidgetTemporaryStoragePath(DPL::String tzPkgId) -{ - return PathBuilder(GetWidgetBasePath(tzPkgId)) - .Append(GlobalConfig::GetWidgetPrivateTempStoragePath()) - .GetFullPath(); -} - -inline std::string GetWidgetDesktopFilePath(DPL::String tzPkgId) -{ - return PathBuilder() - .Append(GlobalConfig::GetUserWidgetDesktopPath()) - .Append(DPL::ToUTF8String(tzPkgId)) - .Concat(".desktop") - .GetFullPath(); -} - -inline std::string GetWidgetSharedStoragePath(DPL::String tzPkgId) -{ - return PathBuilder() - .Append(GlobalConfig::GetWidgetUserDataPath()) - .Append(DPL::ToUTF8String(tzPkgId)) - .Concat(GlobalConfig::GetWidgetSharedPath()) - .GetFullPath(); -} - -inline std::string GetWidgetSharedDataStoragePath(DPL::String tzPkgId) -{ - return PathBuilder(GetWidgetSharedStoragePath(tzPkgId)) - .Concat(GlobalConfig::GetWidgetDataPath()) - .GetFullPath(); -} - -inline std::string GetWidgetSharedTrustedStoragePath(DPL::String tzPkgId) -{ - return PathBuilder(GetWidgetSharedStoragePath(tzPkgId)) - .Concat(GlobalConfig::GetWidgetTrustedPath()) - .GetFullPath(); -} - -inline std::string GetWidgetSharedResStoragePath(DPL::String tzPkgId) -{ - return PathBuilder(GetWidgetSharedStoragePath(tzPkgId)) - .Concat(GlobalConfig::GetWidgetResPath()) - .GetFullPath(); -} - -inline std::string GetWidgetNPRuntimePluginsPath(const DPL::String& tzPkgId) -{ - return PathBuilder(GetWidgetBasePath(tzPkgId)) - .Concat(GlobalConfig::GetWidgetSrcPath()) - .Append(GlobalConfig::GetNPRuntimePluginsPath()) - .GetFullPath(); -} -} // namespace WidgetConfig -} // namespace WrtDB - -#endif diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h deleted file mode 100644 index 56178d4..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_read_only.h +++ /dev/null @@ -1,812 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of widget dao class. - * - * @file widget_dao_read_only.h - * @author Yang Jie (jie2.yang@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of widget dao - */ - -#ifndef _WRT_SRC_CONFIGURATION_WIDGET_DAO_READ_ONLY_H_ -#define _WRT_SRC_CONFIGURATION_WIDGET_DAO_READ_ONLY_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -/** - * Widget's signature enum. - * This enumerates signature type of widget. - */ -enum WidgetSignatureType -{ - SIGNATURE_TYPE_CARRIER = 0, - SIGNATURE_TYPE_IDENTIFIED, - SIGNATURE_TYPE_UNIDENTIFIED -}; - -enum CertificateSource { - SIGNATURE_DISTRIBUTOR = 0, - SIGNATURE_AUTHOR = 1 -}; - -typedef std::list StringList; - -struct WidgetLocalizedInfo -{ - DPL::OptionalString name; - DPL::OptionalString shortName; - DPL::OptionalString description; - DPL::OptionalString license; - DPL::OptionalString licenseHref; -}; - -/** - * CertificateData - * A structure to hold certificate fingerprints. - */ -struct WidgetCertificateData -{ - enum Owner { AUTHOR, DISTRIBUTOR, UNKNOWN }; - enum Type { ROOT, ENDENTITY }; - - // type of signature: author/distributor - Owner owner; - // indicates whether this is ca certificate - Type type; - - // chain id number: relative BASE, where BASE is signatureBASE.xml - int chainId; - // certificate fingerprint digested by md5 - std::string strMD5Fingerprint; - // certificate fingerprint digestef by sha1 - std::string strSHA1Fingerprint; - // Common name field in certificate - DPL::String strCommonName; - - bool operator== (const WidgetCertificateData& certData) const - { - return certData.chainId == chainId && - certData.owner == owner && - certData.strCommonName == strCommonName && - certData.strMD5Fingerprint == strMD5Fingerprint && - certData.strSHA1Fingerprint == strSHA1Fingerprint; - } -}; - -typedef std::list WidgetCertificateDataList; - -typedef DPL::String Locale; -typedef std::set LocaleSet; -typedef std::list ExternalLocationList; - -/** - * WidgetRegisterInfo - * A structure to hold widget's information needed to be registered. - * @see WidgetConfigurationInfo - */ -struct WidgetRegisterInfo -{ - struct LocalizedIcon : public ConfigParserData::Icon - { - LocalizedIcon(const ConfigParserData::Icon& icon, - const LocaleSet& _availableLocales) : - ConfigParserData::Icon(icon), - availableLocales(_availableLocales) - {} - - LocaleSet availableLocales; - }; - - struct StartFileProperties - { - DPL::String encoding; - DPL::String type; - }; - - typedef std::map StartFilePropertiesForLocalesMap; - struct LocalizedStartFile - { - DPL::String path; - StartFilePropertiesForLocalesMap propertiesForLocales; - }; - - typedef std::list LocalizedIconList; - typedef std::list LocalizedStartFileList; - struct LocalizationData - { - LocalizedIconList icons; - LocalizedStartFileList startFiles; - }; - - enum SecurityDomain - { - Untrusted, - Trusted, - Operator, - None - }; - - //Constructor - WidgetRegisterInfo() : - webAppType(APP_TYPE_UNKNOWN), - signatureType(SIGNATURE_TYPE_UNIDENTIFIED), - configInfo(), - packagingType(PKG_TYPE_UNKNOWN) - {} - - WidgetType webAppType; - DPL::OptionalString guid; - DPL::OptionalString version; - DPL::OptionalString minVersion; - std::string shareHref; - std::string baseFolder; - WidgetSignatureType signatureType; - ConfigParserData configInfo; - LocalizationData localizationData; - - TizenPkgId tzPkgid; - TizenAppId tzAppid; - - time_t installedTime; - PackagingType packagingType; - EncryptedFileList encryptedFiles; - ExternalLocationList externalLocations; - DPL::OptionalString widgetInstalledPath; -}; - -typedef std::list CertificateChainList; -class IWidgetSecurity -{ - public: - virtual ~IWidgetSecurity(); - - virtual const WidgetCertificateDataList& getCertificateList() const = 0; - - virtual bool isRecognized() const = 0; - - virtual bool isDistributorSigned() const = 0; - - virtual void getCertificateChainList(CertificateChainList& list, - CertificateSource source) const = 0; -}; - -/** - * WidgetAuthorInfo. - * Structure to hold the information of widget's author. - */ -struct WidgetAuthorInfo -{ - DPL::OptionalString name; - DPL::OptionalString email; - DPL::OptionalString href; -}; - -/** - * Widget update policy - */ -enum WidgetUpdatePolicy -{ - WIDGET_UPDATE_MONTHLY = 0, //< monthly update - WIDGET_UPDATE_WEEKLY, //< weekly update - WIDGET_UPDATE_DAILY, //< daily update - WIDGET_UPDATE_STARTUP, //< update when cell phone boots - WIDGET_UPDATE_NEVER //< never update -}; - -typedef std::list WidgetCertificateCNList; -typedef std::list LanguageTagList; -typedef std::list HostList; -typedef std::list FingerPrintList; -typedef std::list ResourceAttributeList; - -class WidgetDAOReadOnly -{ - public: - /** - * WidgetDAO Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, ReadOnlyProperty) - DECLARE_EXCEPTION_TYPE(Base, GUIDisNull) - DECLARE_EXCEPTION_TYPE(Base, UnexpectedEmptyResult) - DECLARE_EXCEPTION_TYPE(Base, WidgetNotExist) - DECLARE_EXCEPTION_TYPE(Base, AlreadyRegistered) - }; - - protected: - DbWidgetHandle m_widgetHandle; - - public: - struct WidgetLocalizedIconRow - { - int appId; - int iconId; - DPL::String widgetLocale; - }; - typedef std::list WidgetLocalizedIconList; - - struct WidgetIconRow - { - int iconId; - int appId; - DPL::String iconSrc; - DPL::OptionalInt iconWidth; - DPL::OptionalInt iconHeight; - }; - typedef std::list WidgetIconList; - - struct WidgetStartFileRow - { - int startFileId; - int appId; - DPL::String src; - }; - typedef std::list WidgetStartFileList; - - struct WidgetLocalizedStartFileRow - { - int startFileId; - int appId; - DPL::String widgetLocale; - DPL::String type; - DPL::String encoding; - }; - typedef std::list LocalizedStartFileList; - - /** - * This is a constructor. - * - * @param[in] widgetHandle application id of widget. - */ - WidgetDAOReadOnly(DbWidgetHandle widgetHandle); - WidgetDAOReadOnly(DPL::OptionalString widgetGUID); - WidgetDAOReadOnly(WrtDB::TizenAppId tzAppid); - - /** - * Destructor - */ - virtual ~WidgetDAOReadOnly(); - - /** - * This method returns widget handle(m_widgetHandle). - * - * @return widget handle(m_widgetHandle). - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DbWidgetHandle getHandle() const; - static DbWidgetHandle getHandle(const WidgetGUID GUID); - static DbWidgetHandle getHandle(const DPL::String pkgName); - - /** - * Returns tizenAppId for the specified widget - * - * @return tzAppid; - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - - TizenAppId getTzAppId() const; - static TizenAppId getTzAppId(const WidgetGUID GUID); - static TizenAppId getTzAppId(const DbWidgetHandle handle); - static TizenAppId getTzAppId(const TizenPkgId tzPkgid); - - /** - * Returns TizenPkgId for the specified widget - * - * @return TizenPkgId; - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - - TizenPkgId getTzPkgId() const; - static TizenPkgId getTzPkgId(const DbWidgetHandle handle); - static TizenPkgId getTzPkgId(const TizenAppId tzAppid); - - /** - * This method returns the root directory of widget resource. - * - * @return path name of root directory. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - virtual DPL::String getPath() const; - - DPL::String getFullPath() const; - - /** - * This method returns the preferred size of the widget, - * including width and height. - * - * @see DbWidgetSize - * @return An structure type variable to hold widget's size. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching - * DB table. - */ - DbWidgetSize getPreferredSize() const; - - /** - * This method returns the type of the widget. - * - * @return WidgetType - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching - * records in DB table. - */ - WidgetType getWidgetType() const; - - /** - * This method returns the id of the widget. - * - * @return widget id - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - WidgetGUID getGUID() const; - - /** - * This method returns the App id of the widget. - * - * @return appid - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DPL::OptionalString getTizenAppId() const; - - /** - * This method returns the defaultlocale for the widget. - * - * @return defaultlocale - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DPL::OptionalString getDefaultlocale() const; - - /** - * This method returns list of localized icons files; - * - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - WidgetLocalizedIconList getLocalizedIconList() const; - - /** - * This method returns list of icons files; - * - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - WidgetIconList getIconList() const; - - /** - * This method returns list of localized start files; - * - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - LocalizedStartFileList getLocalizedStartFileList() const; - - /** - * This method returns list of start files; - * - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - WidgetStartFileList getStartFileList() const; - - /** - * @param[out] outAccessInfoList list filled with access info structures - */ - void getWidgetAccessInfo(WidgetAccessInfoList& outAccessInfoList) const; - void getWidgetAllowNavigationInfo( - WidgetAllowNavigationInfoList& allowNavigationInfoList) const; - - /** - * WAC 2.0 extension - * @return recognized status - */ - bool isRecognized() const; - - /** - * WAC 2.0 extension - * @return - */ - bool isDistributorSigned() const; - - /** - * WAC 2.0 extension - * @return trusted status - */ - bool isTrusted() const; - - /** - * This method returns window mode of widget. - * - * @return window modes of widget - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - WindowModeList getWindowModes() const; - - /** - * This method returns the version of the widget. - * - * @return version of widget - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DPL::OptionalString getVersion() const; - - /** - * This method is used as a getter for csp policy of widget. It should be - * provided in configuration file. - * @return global csp policy for widget - */ - DPL::OptionalString getCspPolicy() const; - - /** - * This method is used as a getter for report only csp policy of widget. - * It may be provided in configuration file. - * @return global csp report only policy for widget - */ - DPL::OptionalString getCspPolicyReportOnly() const; - - /** - * This method returns list filed with Common Name entries from certificate. - * - * @return Common Name of Distribuotor End Entity certificate. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - WidgetCertificateCNList getKeyCommonNameList( - WidgetCertificateData::Owner owner, - WidgetCertificateData::Type type) const; - - /** - * given a certificate owner (author / distributor) and type of certificate - * (end entity / ca) - * function returns list of matching fingerprints - */ - FingerPrintList getKeyFingerprints( - WidgetCertificateData::Owner owner, - WidgetCertificateData::Type type) const; - - /* - * This method gets certificate data list for a widget from database. - */ - WidgetCertificateDataList getCertificateDataList() const; - - /** - * This method returns a list of widget features. - * - * @see WidgetFeature - * @see FreeFeatureList() - * @return list of widget features, type of list element is structure - * WidgetFeature - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DbWidgetFeatureSet getFeaturesList() const; - - /** - * This method checks whether widget has specified feature. - * - * @return true if has, false if has not - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - */ - bool hasFeature(const std::string& featureName) const; - - /** - * This method gets host list that widget can connect to. - * - * @return See above comment - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - */ - HostList getAccessHostList() const; - - /** - * This method gets widget's access on network: true or false. - * - * @return true: widget can access network; false: widget can not access - * network. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - bool getAccessNetworkMode() const; - - /** - * This method gets if widget needs webkit plugins enabled - * - * @return true: widget needs webkit plugins enabled - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - bool getWebkitPluginsRequired() const; - - /** - * This method returns a list of all the installed widgets' app id. - * - * @return list of installed widgets' app id. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - static DbWidgetHandleList getHandleList(); - - /** - * This method returns list of tizen application list of installed packages - * @return list of TizenAppIdList of installed packages - */ - static TizenAppIdList getTizenAppidList(); - - /** - * This method returns list of tizen package list of installed packages - * @return list of TizenPkgIdList of installed packages - */ - static TizenPkgIdList getTizenPkgidList(); - - /** - * This method returns a list of all the installed widgets. - * - * @return list of installed widgets. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - static DbWidgetDAOReadOnlyList getWidgetList(); - - /** - * This method gets author's infomation of a widget which is parsed from - * configiration document. - * - * @see WidgetAuthorInfo - * @param[out] pAuthorInfo - * @return true if succeed, false if fail. - */ - WidgetAuthorInfo getAuthorInfo() const; - - /** - * This method gets author's name of a widget which is parsed from - * configiration document. - * - * @param[out] pAuthorInfo - * @return author's name. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DPL::OptionalString getAuthorName() const; - - /** - * This method gets author's email of a widget which is parsed from - * configiration document. - * - * @param[out] pAuthorInfo - * @return author's email. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DPL::OptionalString getAuthorEmail() const; - - /** - * This method gets author's email of a widget which is parsed from - * configiration document. - * - * @param[out] pAuthorInfo - * @return author's email. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DPL::OptionalString getAuthorHref() const; - - /** - * This method returns minimum version of WAC that WRT has to be compliant - * to to run this widget - * - * @return Minimum version - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - DPL::OptionalString getMinimumWacVersion() const; - - /* This method get widget' share href. - * - * @return widget's share href - */ - std::string getShareHref() const; - - /** - * This method get widget installed time - * - * @return time_t : return widget's install time - */ - time_t getInstallTime() const; - - /** - * This method gets widget base folder. - * - * @return widget base folder. - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching records in - * DB table. - */ - std::string getBaseFolder() const; - - /* This method checks read only flag for given property - */ - DPL::OptionalInt checkPropertyReadFlag( - const PropertyDAOReadOnly::WidgetPropertyKey &key) const; - - /* This method gets widget property key list - */ - PropertyDAOReadOnly::WidgetPropertyKeyList getPropertyKeyList() const; - - /* This method gets widget property list - */ - PropertyDAOReadOnly::WidgetPreferenceList getPropertyList() const; - - /* This method get widget property value - */ - PropertyDAOReadOnly::WidgetPropertyValue getPropertyValue( - const PropertyDAOReadOnly::WidgetPropertyKey &key) const; - - LanguageTagList getLanguageTags() const; - LanguageTagList getIconLanguageTags() const; - - WidgetLocalizedInfo getLocalizedInfo(const DPL::String& languageTag) const; - std::string getCookieDatabasePath() const; - // Local storage - std::string getPrivateLocalStoragePath() const; - - bool getBackSupported() const; - - static bool isWidgetInstalled(DbWidgetHandle handle); - static bool isWidgetInstalled(const TizenAppId & tzAppId); - - /* This method get path of the splash image. - * - * @return path of the widget's splash image - */ - DPL::OptionalString getSplashImgSrc() const; - - ExternalLocationList getWidgetExternalLocations() const; - - /* - * Default value is required to keep compatibility with - * wrt-installer and wrt. - */ - CertificateChainList getWidgetCertificate( - CertificateSource source = SIGNATURE_DISTRIBUTOR) const; - - void getWidgetSettings(WidgetSettings& outWidgetSettings) const; - - /** - * This method gets application control list that define AUL value - * - * @return See above comment - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - */ - void getAppControlList( - WidgetAppControlList& outAppControlList) const; - - /** - * This method returns the type of the package. - * - * @return PackagingType - * @exception WRT_CONF_ERR_EMDB_FAILURE - Fail to query DB table. - * @exception WRT_CONF_ERR_EMDB_NO_RECORD - Can not find matching - * records in DB table. - */ - PackagingType getPackagingType() const; - - void getEncryptedFileList(EncryptedFileList& filesList) const; - - /** - * This method returns widget's background page filename. - * - * @return Name of file containing background page - */ - DPL::OptionalString getBackgroundPage() const; - - /** - * @brief generateTizenId generates new package id - * - * If widget do not supplies it's own tizen package id, this method can be - * used, - * although it should be removed in future. - * - * @return new tizen package id - */ - static TizenPkgId generatePkgId(); - static TizenPkgId generateTizenId() - { - return generatePkgId(); - } - - /** - * @brief This method return each value for security setting - * - * @return SettingsType - * SETTINGS_TYPE_UNKNOWN : unknow value - * SETTINGS_TYPE_ON : enable - * SETTINGS_TYPE_ALWAYS_ASK : ask by popup - * SETTINGS_TYPE_OFF : disable - */ - SettingsType getSecurityPopupUsage() const; - SettingsType getGeolocationUsage() const; - SettingsType getWebNotificationUsage() const; - SettingsType getWebDatabaseUsage() const; - - /** - * This method returns widget's installed path - * - * @return path of widget installed - */ - DPL::OptionalString getWidgetInstalledPath() const; - - /** - * This method returns tizen package id - * - * @return tizen package id - */ - TizenPkgId getTizenPkgId() const; - PrivilegeList getWidgetPrivilege() const; - WidgetSecurityModelVersion getSecurityModelVersion() const; - -}; -} // namespace WrtDB - -#endif // _WRT_SRC_CONFIGURATION_WIDGET_DAO_READ_ONLY_H_ - diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h deleted file mode 100644 index 4cd3578..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/widget_dao_types.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file widget_dao_types.h - * @author Leerang Song (leerang.song@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of - * common data types forwidget database. - */ -#ifndef _WIDGET_DAO_TYPES_H_ -#define _WIDGET_DAO_TYPES_H_ - -#include -#include -#include -#include - -namespace WrtDB { - -enum Feature -{ - FEATURE_START = 0, - FEATURE_GEOLOCATION = 0, - FEATURE_WEB_NOTIFICATION, - FEATURE_USER_MEDIA, - FEATURE_FULLSCREEN_MODE, - FEATURE_WEB_DATABASE, - FEATURE_END = FEATURE_WEB_DATABASE -}; -extern const std::map g_W3CPrivilegeTextMap; -} // namespace WrtDB - -#endif // _WIDGET_DAO_TYPES_H_ diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h deleted file mode 100644 index 1702433..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-ro/wrt_db_types.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file wrt_db_types.h - * @author Krzysztof Jackiewicz - * @version 1.0 - * @brief This file contains the declaration of common data types for wrtdb - */ -#ifndef _WRT_DB_TYPES_H_ -#define _WRT_DB_TYPES_H_ - -#include - -typedef WrtDB::DbWidgetHandle WidgetHandle; -typedef WrtDB::DbWidgetHandleList WidgetHandleList; -typedef WrtDB::DbWidgetDAOReadOnlyList WidgetDAOReadOnlyList; - -typedef WrtDB::DbWidgetFeature WidgetFeature; -typedef WrtDB::DbWidgetFeatureSet WidgetFeatureSet; - -typedef WrtDB::DbWidgetSize WidgetSize; -typedef WrtDB::DbPluginHandle PluginHandle; - -#endif diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h deleted file mode 100644 index 6ee312a..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/feature_dao.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of feature dao class. - * - * @file feature_dao.h - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of feature dao - */ -#ifndef _FEATURE_DAO_H -#define _FEATURE_DAO_H - -#include - -namespace WrtDB { -namespace FeatureDAO { -FeatureHandle RegisterFeature(const PluginMetafileData::Feature &feature, - const DbPluginHandle pluginHandle); -void UnregisterFeature(FeatureHandle featureHandle); -} // namespace FeatureDB -} // namespace WrtDB - -#endif /* _FEATURE_DAO_H */ - diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/property_dao.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/property_dao.h deleted file mode 100644 index 7e3f215..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/property_dao.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file property_dao.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of property dao - */ - -#ifndef WRT_SRC_CONFIGURATION_PROPERTY_DAO_H_ -#define WRT_SRC_CONFIGURATION_PROPERTY_DAO_H_ - -#include - -namespace WrtDB { -struct WidgetRegisterInfo; //forward declaration - -namespace PropertyDAO { -void RemoveProperty(TizenAppId tzAppid, - const PropertyDAOReadOnly::WidgetPropertyKey &key); - -//deprecated -/* This method sets widget property - */ -void SetProperty(DbWidgetHandle widgetHandle, - const PropertyDAOReadOnly::WidgetPropertyKey &key, - const PropertyDAOReadOnly::WidgetPropertyValue &value, - bool readOnly = false) -__attribute__((deprecated)); - -/* This method sets widget property - */ -void SetProperty(TizenAppId tzAppid, - const PropertyDAOReadOnly::WidgetPropertyKey &key, - const PropertyDAOReadOnly::WidgetPropertyValue &value, - bool readOnly = false); - -/* This method registers properties for widget. - * Properties unregistering is done via "delete cascade" mechanism in SQL - */ -void RegisterProperties(DbWidgetHandle widgetHandle, TizenAppId tzAppid, - const WidgetRegisterInfo ®Info); -} // namespace PropertyDAO -} // namespace WrtDB - -#endif /* WRT_SRC_CONFIGURATION_PROPERTY_DAO_H_ */ diff --git a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h b/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h deleted file mode 100644 index 710249e..0000000 --- a/modules_mobile/widget_dao/include/dpl/wrt-dao-rw/widget_dao.h +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of widget dao class. - * - * @file widget_dao.h - * @author Yang Jie (jie2.yang@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of widget dao - */ -#ifndef WIDGET_DAO_H -#define WIDGET_DAO_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -class WidgetDAO : public WidgetDAOReadOnly -{ - public: - typedef std::list LanguageTagsList; - - WidgetDAO(DbWidgetHandle handle); - WidgetDAO(DPL::OptionalString widgetGUID); - WidgetDAO(DPL::String tzAppId); - - /** - * Destructor - */ - virtual ~WidgetDAO(); - - /** - * This method registers the widget information in the DB when it is - * installed. - * - * @see WidgetRegisterInfo - * @see UnRegisterWidget() - * @param[in] TizenAppId Widget app id that will be registered. - * @param[in] pWidgetRegisterInfo Specified the widget's information - * needed to be registered. - * @param[in] widgetSecurity Widget's security certificates. - */ - static void registerWidget( - const TizenAppId& tzAppId, - const WidgetRegisterInfo &widgetRegInfo, - const IWidgetSecurity &widgetSecurity); - - static DbWidgetHandle registerWidget( - const WidgetRegisterInfo &pWidgetRegisterInfo, - const IWidgetSecurity &widgetSecurity) __attribute__((deprecated)); - - /** - * @brief registerWidgetGenerateTizenId Registers widget with auto-generated - * tizen id - * - * This function is disadviced and should be used only in tests. - * Function is not thread-safe. - * - * @param pWidgetRegisterInfo registeration information - * @param widgetSecurity Widget's security certificates. - * @return tzAppId generated - */ - static TizenAppId registerWidgetGeneratePkgId( - const WidgetRegisterInfo &pWidgetRegisterInfo, - const IWidgetSecurity &widgetSecurity); - - static void updateTizenAppId(const TizenAppId & fromAppId, - const TizenAppId & toAppId); - /** - * This method removes a widget's information from EmDB. - * - * @see RegisterWidget() - * @param[in] tzAppId widgets name to be unregistered - */ - static void unregisterWidget(const TizenAppId & tzAppId); - - /* This method removes widget property - */ - void removeProperty(const PropertyDAOReadOnly::WidgetPropertyKey &key); - - /** - * @brief registerExternalLocations Removes rows from - * WidgetExternalLocations - */ - void unregisterAllExternalLocations(); - - /* This method sets widget property - */ - void setProperty(const PropertyDAOReadOnly::WidgetPropertyKey &key, - const PropertyDAOReadOnly::WidgetPropertyValue &value, - bool readOnly = false); - - /* set tzAppId - */ - void setTizenAppId(const DPL::OptionalString& tzAppId); - - /* This function will update of api-feature status. - * If status is true (feature rejected) plugin connected with this - * api feature mustn't be loaded durign widget launch. - */ - void updateFeatureRejectStatus(const DbWidgetFeature &widgetFeature); - - /* - * This method change security settings value - */ - void setSecurityPopupUsage(const SettingsType value); - void setGeolocationUsage(const SettingsType value); - void setWebNotificationUsage(const SettingsType value); - void setWebDatabaseUsage(const SettingsType value); - - private: - //Methods used during widget registering - static DbWidgetHandle registerWidgetInfo( - const TizenAppId & widgetName, - const WidgetRegisterInfo ®Info, - const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle = - DPL::Optional()); - static void registerWidgetExtendedInfo( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetLocalizedInfo( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetIcons( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetStartFile( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetPreferences( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetFeatures( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetPrivilege( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetWindowModes( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetWarpInfo( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetAllowNavigationInfo( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerWidgetCertificates( - DbWidgetHandle widgetHandle, - const IWidgetSecurity &widgetSecurity); - static void registerCertificatesChains( - DbWidgetHandle widgetHandle, - CertificateSource certificateSource, - const CertificateChainList &list); - static void registerWidgetSettings( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerAppControl( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - static void registerEncryptedResouceInfo( - DbWidgetHandle widgetHandle, - const WidgetRegisterInfo ®Info); - /** - * @brief registerExternalLocations Inserts new rows to - * WidgetExternalLocations - * @param externals list of files - */ - static void registerExternalLocations( - DbWidgetHandle widgetHandle, - const ExternalLocationList & - externals); - static void registerWidgetSecuritySettings(DbWidgetHandle widgetHandle); - - static void registerWidgetInternal( - const TizenAppId & tzAppId, - const WidgetRegisterInfo &widgetRegInfo, - const IWidgetSecurity &widgetSecurity, - const DPL::Optional handle = - DPL::Optional()); - static void unregisterWidgetInternal(const TizenAppId & tzAppId); - static void insertAppControlInfo(DbWidgetHandle handle, - DPL::String src, - DPL::String operation, - DPL::String uri, - DPL::String mime, - unsigned index, - unsigned disposition); -}; -} // namespace WrtDB - -#endif // WIDGET_DAO_H diff --git a/modules_mobile/widget_dao/orm/gen_db_md5.sh b/modules_mobile/widget_dao/orm/gen_db_md5.sh deleted file mode 100755 index 38587b7..0000000 --- a/modules_mobile/widget_dao/orm/gen_db_md5.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -CHECKSUM=`cat ${2} ${3} 2>/dev/null | md5sum 2>/dev/null | cut -d\ -f1 2>/dev/null` -echo "#define DB_CHECKSUM DB_VERSION_${CHECKSUM}" > ${1} -echo "#define DB_CHECKSUM_STR \"DB_VERSION_${CHECKSUM}\"" >> ${1} - diff --git a/modules_mobile/widget_dao/orm/orm_generator_wrt.h b/modules_mobile/widget_dao/orm/orm_generator_wrt.h deleted file mode 100644 index 09ac57e..0000000 --- a/modules_mobile/widget_dao/orm/orm_generator_wrt.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ORM_GENERATOR_WRT_H -#define ORM_GENERATOR_WRT_H - -#define ORM_GENERATOR_DATABASE_NAME wrt_db_definitions -#include -#undef ORM_GENERATOR_DATABASE_NAME - -#endif diff --git a/modules_mobile/widget_dao/orm/version_db b/modules_mobile/widget_dao/orm/version_db deleted file mode 100644 index 7e20d8d..0000000 --- a/modules_mobile/widget_dao/orm/version_db +++ /dev/null @@ -1,5 +0,0 @@ -SQL( - BEGIN TRANSACTION; - CREATE TABLE DB_CHECKSUM (version INT); - COMMIT; -) diff --git a/modules_mobile/widget_dao/orm/wrt_db b/modules_mobile/widget_dao/orm/wrt_db deleted file mode 100644 index b09fdf8..0000000 --- a/modules_mobile/widget_dao/orm/wrt_db +++ /dev/null @@ -1,339 +0,0 @@ -SQL( - PRAGMA foreign_keys = ON; - BEGIN TRANSACTION; -) - -CREATE_TABLE(WidgetInfo) - COLUMN_NOT_NULL(app_id, INTEGER, PRIMARY KEY AUTOINCREMENT) - COLUMN(widget_type, INT, DEFAULT 1) - COLUMN(widget_id, TEXT, DEFAULT '') - COLUMN(widget_version, TEXT, DEFAULT '') - COLUMN(widget_width, INT, DEFAULT 0) - COLUMN(widget_height, INT, DEFAULT 0) - COLUMN(author_name, TEXT, DEFAULT '') - COLUMN(author_email, TEXT, DEFAULT '') - COLUMN(author_href, TEXT, DEFAULT '') - COLUMN(base_folder, TEXT, DEFAULT '') - COLUMN(webkit_plugins_required, TINYINT, DEFAULT 0) - COLUMN(security_domain, INT, DEFAULT 0) - COLUMN(csp_policy, TEXT, DEFAULT '') - COLUMN(csp_policy_report_only, TEXT, DEFAULT '') - COLUMN(recognized, INT, DEFAULT 0) - COLUMN(wac_signed, INT, DEFAULT 0) - COLUMN(distributor_signed, INT, DEFAULT 0) - COLUMN(min_version, TEXT, DEFAULT '1.0') - COLUMN_NOT_NULL(back_supported, TINYINT, DEFAULT 0) - COLUMN(access_network, TINYINT, DEFAULT 0) - COLUMN(defaultlocale, TEXT, DEFAULT 0) - COLUMN_NOT_NULL(tizen_pkgid, TEXT, DEFAULT '') - COLUMN_NOT_NULL(tizen_appid, TEXT, DEFAULT 0 UNIQUE) - COLUMN(pkg_type, INT, DEFAULT 0) - COLUMN(security_model_version, INT, DEFAULT 0) -CREATE_TABLE_END() - -SQL( - CREATE INDEX IF NOT EXISTS WidgetInfo_AppidIndex ON WidgetInfo(tizen_appid); -) - -CREATE_TABLE(WidgetCertificate) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(cert_source, INT, CHECK(cert_source between 0 and 1)) - COLUMN_NOT_NULL(encoded_chain, VARCHAR(16000),) - TABLE_CONSTRAINTS( - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetWindowModes) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(window_mode, VARCHAR(256),) - TABLE_CONSTRAINTS( - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(LocalizedWidgetInfo) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(widget_locale, TEXT,) - COLUMN(widget_name, TEXT,) - COLUMN(widget_shortname, TEXT,) - COLUMN(widget_description, TEXT,) - COLUMN(widget_license, TEXT,) - COLUMN(widget_license_file, TEXT,) - COLUMN(widget_license_href, TEXT,) - - TABLE_CONSTRAINTS( - PRIMARY KEY (app_id, widget_locale), - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetExtendedInfo) - COLUMN_NOT_NULL(app_id, INTEGER, PRIMARY KEY) - COLUMN(last_update_time, BIGINT, DEFAULT 0) - COLUMN(install_time, BIGINT, DEFAULT 0) - COLUMN(option_state, INT, DEFAULT 0) - COLUMN(share_href, TEXT, DEFAULT '') - COLUMN(signature_type, INT, DEFAULT 0) - COLUMN(updated, INT, DEFAULT 0) - COLUMN(update_policy, INT, DEFAULT 0) - COLUMN_NOT_NULL(test_widget, INT, CHECK(test_widget between 0 and 1) DEFAULT 0) - COLUMN(splash_img_src, TEXT, DEFAULT '') - COLUMN(background_page, TEXT, DEFAULT '') - COLUMN(installed_path, TEXT, DEFAULT '') - TABLE_CONSTRAINTS( - FOREIGN KEY(app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetPreference) - COLUMN_NOT_NULL(app_id, INTEGER,) - COLUMN_NOT_NULL(tizen_appid, TEXT, DEFAULT 0) - COLUMN_NOT_NULL(key_name, TEXT,) - COLUMN(key_value, TEXT, DEFAULT '') - COLUMN(readonly, INT, DEFAULT 0) - - TABLE_CONSTRAINTS( - PRIMARY KEY(app_id, key_name), - FOREIGN KEY(app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetFeature) - COLUMN_NOT_NULL(widget_feature_id, INTEGER, primary key autoincrement) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(name, TEXT,) - COLUMN_NOT_NULL(rejected, INT,) - TABLE_CONSTRAINTS( - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetPrivilege) - COLUMN_NOT_NULL(widget_privilege_id, INTEGER, primary key autoincrement) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(name, TEXT,) - TABLE_CONSTRAINTS( - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetIcon) - COLUMN_NOT_NULL(icon_id, INTEGER, primary key autoincrement) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(icon_src, TEXT,) - COLUMN(icon_width, INT, DEFAULT 0) - COLUMN(icon_height, INT, DEFAULT 0) - TABLE_CONSTRAINTS( - FOREIGN KEY(app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetLocalizedIcon) - COLUMN_NOT_NULL(app_id, INT,) /* TODO key duplicated for efficiency - ORM doesn't support JOIN */ - COLUMN_NOT_NULL(icon_id, INTEGER,) - COLUMN_NOT_NULL(widget_locale, TEXT,) - TABLE_CONSTRAINTS( - FOREIGN KEY(icon_id) REFERENCES WidgetIcon (icon_id) ON DELETE CASCADE, - PRIMARY KEY(icon_id, widget_locale) - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetStartFile) - COLUMN_NOT_NULL(start_file_id, INTEGER, primary key autoincrement) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(src, TEXT,) - TABLE_CONSTRAINTS( - FOREIGN KEY(app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetLocalizedStartFile) - COLUMN_NOT_NULL(app_id, INT,) /* TODO key duplicated for efficiency - ORM doesn't support JOIN */ - COLUMN_NOT_NULL(start_file_id, INTEGER,) - COLUMN_NOT_NULL(widget_locale, TEXT,) - COLUMN_NOT_NULL(type, TEXT,) - COLUMN_NOT_NULL(encoding, TEXT,) - TABLE_CONSTRAINTS( - FOREIGN KEY(start_file_id) REFERENCES WidgetStartFile (start_file_id) ON DELETE CASCADE, - PRIMARY KEY(start_file_id, widget_locale) - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetExternalLocations) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(path, TEXT,) - TABLE_CONSTRAINTS( - FOREIGN KEY(app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE, - PRIMARY KEY(app_id, path) - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetAccessHost) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(host, TEXT,) - - TABLE_CONSTRAINTS( - PRIMARY KEY(app_id, host) - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetCertificateFingerprint) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(owner, INT,) - COLUMN_NOT_NULL(chainid, INT,) - COLUMN_NOT_NULL(type, INT,) - COLUMN(md5_fingerprint, TEXT,) - COLUMN(sha1_fingerprint, TEXT,) - COLUMN(common_name, VARCHAR(64),) - - TABLE_CONSTRAINTS( - PRIMARY KEY(app_id, chainid, owner, type) - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetWARPInfo) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(iri, TEXT,) - COLUMN(subdomain_access, INT, CHECK(subdomain_access between 0 and 1)) - - TABLE_CONSTRAINTS( - PRIMARY KEY(app_id, iri) - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetAllowNavigation) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(scheme, TEXT,) - COLUMN_NOT_NULL(host, TEXT,) - - TABLE_CONSTRAINTS( - PRIMARY KEY(app_id, scheme, host) - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(WidgetSecuritySettings) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(security_popup_usage, INT, DEFAULT 1) - COLUMN_NOT_NULL(geolocation_usage, INT, DEFAULT 1) - COLUMN_NOT_NULL(web_notification_usage, INT, DEFAULT 1) - COLUMN_NOT_NULL(web_database_usage, INT, DEFAULT 1) - TABLE_CONSTRAINTS( - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(FeaturesList) - COLUMN_NOT_NULL(FeatureUUID, INTEGER, primary key autoincrement) - COLUMN_NOT_NULL(FeatureName, TEXT, unique) - COLUMN_NOT_NULL(PluginPropertiesId, INT,) - - TABLE_CONSTRAINTS( - FOREIGN KEY (PluginPropertiesId) REFERENCES PluginProperties (PluginPropertiesId) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(PluginProperties) - COLUMN_NOT_NULL(PluginPropertiesId, INTEGER, primary key autoincrement) - COLUMN_NOT_NULL(InstallationState, INTEGER, DEFAULT 0) - COLUMN_NOT_NULL(PluginLibraryName, TEXT, unique) - COLUMN(PluginLibraryPath, TEXT,) -CREATE_TABLE_END() - -CREATE_TABLE(PluginDependencies) - COLUMN_NOT_NULL(PluginPropertiesId, INTEGER, not null) - COLUMN_NOT_NULL(RequiredPluginPropertiesId, INTEGER, not null) - - TABLE_CONSTRAINTS( - FOREIGN KEY (PluginPropertiesId) REFERENCES PluginProperties (PluginPropertiesId) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(PluginImplementedObjects) - COLUMN_NOT_NULL(PluginObject, TEXT, unique) - COLUMN_NOT_NULL(PluginPropertiesId, INTEGER, not null) - - TABLE_CONSTRAINTS( - FOREIGN KEY (PluginPropertiesId) REFERENCES PluginProperties (PluginPropertiesId) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(PluginRequiredObjects) - COLUMN_NOT_NULL(PluginPropertiesId, INTEGER, not null) - COLUMN_NOT_NULL(PluginObject, TEXT, not null) - - TABLE_CONSTRAINTS( - FOREIGN KEY (PluginPropertiesId) REFERENCES PluginProperties (PluginPropertiesId) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(DeviceCapabilities) - COLUMN_NOT_NULL(DeviceCapID, INTEGER, primary key autoincrement) - COLUMN_NOT_NULL(DeviceCapName, TEXT, unique) - COLUMN(DeviceCapDefaultValue, INT,) -CREATE_TABLE_END() - -CREATE_TABLE(FeatureDeviceCapProxy) - COLUMN_NOT_NULL(FeatureUUID, INT, not null) - COLUMN_NOT_NULL(DeviceCapID, INT, not null) - - TABLE_CONSTRAINTS( - FOREIGN KEY (FeatureUUID) REFERENCES FeaturesList (FeatureUUID) ON DELETE CASCADE - FOREIGN KEY (DeviceCapID) REFERENCES DeviceCapabilities (DeviceCapID) ON DELETE CASCADE - PRIMARY KEY(FeatureUUID,DeviceCapID) - ) -CREATE_TABLE_END() - -CREATE_TABLE(OCSPResponseStorage) - COLUMN_NOT_NULL(cert_chain, TEXT, primary key) - COLUMN(end_entity_check, INT,) - COLUMN(ocsp_status, INT,) - COLUMN(next_update_time, BIGINT,) -CREATE_TABLE_END() - -CREATE_TABLE(CRLResponseStorage) - COLUMN_NOT_NULL(distribution_point,TEXT, primary key) - COLUMN_NOT_NULL(crl_body, TEXT,) - COLUMN(next_update_time, BIGINT,) -CREATE_TABLE_END() - -CREATE_TABLE(SettingsList) - COLUMN_NOT_NULL(appId, INT,) - COLUMN_NOT_NULL(settingName, TEXT,) - COLUMN_NOT_NULL(settingValue, TEXT,) - TABLE_CONSTRAINTS( - FOREIGN KEY (appId) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(AppControlInfo) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(execute_index, INT,) - COLUMN_NOT_NULL(src, TEXT,) - COLUMN_NOT_NULL(operation, TEXT,) - COLUMN_NOT_NULL(uri, TEXT,) - COLUMN_NOT_NULL(mime, TEXT,) - COLUMN_NOT_NULL(disposition, TINYINT, DEFAULT 0) - - TABLE_CONSTRAINTS( - PRIMARY KEY(app_id, operation, uri, mime) - FOREIGN KEY(app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -CREATE_TABLE(EncryptedResourceList) - COLUMN_NOT_NULL(app_id, INT,) - COLUMN_NOT_NULL(resource, TEXT,) - COLUMN_NOT_NULL(size, INT,) - - TABLE_CONSTRAINTS( - FOREIGN KEY (app_id) REFERENCES WidgetInfo (app_id) ON DELETE CASCADE - ) -CREATE_TABLE_END() - -SQL( - COMMIT; -) diff --git a/modules_mobile/widget_dao/orm/wrt_db_definitions b/modules_mobile/widget_dao/orm/wrt_db_definitions deleted file mode 100644 index f2a4a2e..0000000 --- a/modules_mobile/widget_dao/orm/wrt_db_definitions +++ /dev/null @@ -1,6 +0,0 @@ -DATABASE_START(wrt) - -#include "wrt_db" -#include "version_db" - -DATABASE_END() diff --git a/modules_mobile/widget_dao/orm/wrt_db_sql_generator.h b/modules_mobile/widget_dao/orm/wrt_db_sql_generator.h deleted file mode 100644 index 1b69679..0000000 --- a/modules_mobile/widget_dao/orm/wrt_db_sql_generator.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file wrt_db_sql_generator.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL input file from - * database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. - -#include - -#include "wrt_db_definitions" diff --git a/modules_mobile/widget_interface_dao/CMakeLists.txt b/modules_mobile/widget_interface_dao/CMakeLists.txt deleted file mode 100644 index 8acad9b..0000000 --- a/modules_mobile/widget_interface_dao/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -SET(TARGET_WIDGET_INTERFACE_DAO_DB "Sqlite3DbWidgetInterface") - -ADD_CUSTOM_COMMAND( OUTPUT .widget_interface.db - COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.widget_interface.db - COMMAND gcc -Wall -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm -E ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm/widget_interface_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/widget_interface_db.sql - COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.widget_interface.db ".read ${CMAKE_CURRENT_BINARY_DIR}/widget_interface_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.widget_interface.db - DEPENDS ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm/widget_interface_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm/widget_interface_db - ) - -ADD_CUSTOM_TARGET(${TARGET_WIDGET_INTERFACE_DAO_DB} ALL DEPENDS .widget_interface.db) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/widget_interface_db.sql DESTINATION share/wrt-engine/) - -INCLUDE(FindPkgConfig) - -PKG_CHECK_MODULES(WIDGET_INTERFACE_DAO_DEPS - glib-2.0 - REQUIRED) - -SET(WIDGET_INTERFACE_DAO_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/include - ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm - ${PROJECT_SOURCE_DIR}/modules/core/include - ${PROJECT_SOURCE_DIR}/modules/db/include - ${PROJECT_SOURCE_DIR}/modules/log/include - ${PROJECT_SOURCE_DIR}/modules/widget_dao/include -) - -SET(WIDGET_INTERFACE_DAO_SOURCES - dao/widget_interface_dao.cpp -) - -INCLUDE_DIRECTORIES(SYSTEM ${WIDGET_INTERFACE_DAO_DEPS_INCLUDE_DIRS} ) -INCLUDE_DIRECTORIES(${WIDGET_INTERFACE_DAO_INCLUDE_DIRS}) - -ADD_LIBRARY(${TARGET_WIDGET_INTERFACE_DAO_LIB} SHARED ${WIDGET_INTERFACE_DAO_SOURCES}) -SET_TARGET_PROPERTIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) -TARGET_LINK_LIBRARIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} ${TARGET_DPL_EFL} ${TARGET_DPL_DB_EFL} ${TARGET_WRT_DAO_RO_LIB} ${WIDGET_INTERFACE_DAO_DEPS_LIBRARIES}) -ADD_DEPENDENCIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} ${TARGET_WIDGET_INTERFACE_DAO_DB}) - -INSTALL(TARGETS ${TARGET_WIDGET_INTERFACE_DAO_LIB} DESTINATION lib) - -INSTALL(FILES - include/wrt-commons/widget-interface-dao/widget_interface_dao.h - DESTINATION include/dpl-efl/wrt-commons/widget-interface-dao -) diff --git a/modules_mobile/widget_interface_dao/dao/widget_interface_dao.cpp b/modules_mobile/widget_interface_dao/dao/widget_interface_dao.cpp deleted file mode 100644 index e56ce42..0000000 --- a/modules_mobile/widget_interface_dao/dao/widget_interface_dao.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @author Lukasz Marek (l.marek@samsung.com) - * @version 0.1 - * @brief - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "orm_generator_widget_interface.h" - -namespace WidgetInterfaceDB { -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::widget_interface; - -#define SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN Try -#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ - ReThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, \ - message); \ - } - -namespace { -DPL::DB::SqlConnection::Flag::Type DATABASE_FLAG = - DPL::DB::SqlConnection::Flag::UseLucene; -DPL::DB::SqlConnection::Flag::Option DATABASE_OPTION = - DPL::DB::SqlConnection::Flag::RW; -const char *KEY_WIDGET_ARG = "widget_arg"; - -const char* const DATABASE_NAME = ".widget_interface.db"; -const char* const DATABASE_FILE_PATH = - "/usr/share/wrt-engine/widget_interface_db.sql"; -const char* const DATABASE_JOURNAL_FILENAME = "-journal"; - -const int APP_UID = 5000; -const int APP_GUID = 5000; -} // anonymous namespace - -WidgetInterfaceDAO::WidgetInterfaceDAO(int widgetHandle) : - m_widgetHandle(widgetHandle), - m_databaseInterface(databaseFileName(widgetHandle), DATABASE_FLAG) -{ - checkDatabase(); - m_databaseInterface.AttachToThread(DATABASE_OPTION); -} - -WidgetInterfaceDAO::~WidgetInterfaceDAO() -{ - m_databaseInterface.DetachFromThread(); -} - -void WidgetInterfaceDAO::checkDatabase() -{ - std::string databaseFile = databaseFileName(m_widgetHandle); - struct stat buffer; - if (stat(databaseFile.c_str(), &buffer) != 0) { - //Create fresh database - LogDebug("Creating database " << databaseFile); - - std::fstream file; - file.open(DATABASE_FILE_PATH, std::ios_base::in); - if (!file) { - ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, - "Cannot create database. SQL file is missing."); - } - - std::stringstream stream; - stream << file.rdbuf(); - - file.close(); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - DPL::DB::SqlConnection con(databaseFile, - DATABASE_FLAG, - DATABASE_OPTION); - con.ExecCommand(stream.str().c_str()); - copyPropertiesFromWrtDatabase(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot create database") - - if(chown(databaseFile.c_str(), APP_UID, APP_GUID) != 0) { - ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - std::string databaseJournal = - databaseFile + DATABASE_JOURNAL_FILENAME; - if(chown(databaseJournal.c_str(), APP_UID, APP_GUID) != 0) { - ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - } -} - -void WidgetInterfaceDAO::copyPropertiesFromWrtDatabase() -{ - WrtDB::WrtDatabase::attachToThreadRO(); - m_databaseInterface.AttachToThread(DPL::DB::SqlConnection::Flag::RW); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WrtDB::PropertyDAOReadOnly::WidgetPreferenceList existing = - WrtDB::PropertyDAOReadOnly::GetPropertyList( - WrtDB::WidgetDAOReadOnly::getTzAppId(m_widgetHandle) - ); - - //save all properties read from config.xml - FOREACH(prop, existing) { - std::string key = DPL::ToUTF8String(prop->key_name); - if (key != KEY_WIDGET_ARG) { - std::string value; - if (!prop->key_value.IsNull()) { - value = DPL::ToUTF8String(*(prop->key_value)); - } - bool readonly = !prop->readonly.IsNull() && (*prop->readonly); - setItem(key, value, readonly, true); - } - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END( - "Cannot copy properties read from config.xml"); - - WrtDB::WrtDatabase::detachFromThread(); - m_databaseInterface.DetachFromThread(); -} - -void WidgetInterfaceDAO::setItem(const std::string& key, - const std::string& value, - bool readOnly) -{ - setItem(key, value, readOnly, false); -} - -void WidgetInterfaceDAO::setItem(const std::string& key, - const std::string& value, - bool readOnly, - bool fromConfigXml) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction tran(&m_databaseInterface); - //check if key exists - Properties::Select select(&m_databaseInterface); - select.Where(Equals(DPL::FromUTF8String(key))); - std::list rows = select.GetRowList(); - - if (rows.empty()) { - Properties::Insert insert(&m_databaseInterface); - Properties::Row row; - row.Set_key(DPL::FromUTF8String(key)); - row.Set_value(DPL::FromUTF8String(value)); - row.Set_readonly(readOnly ? 1 : 0); - row.Set_configxml(fromConfigXml ? 1 : 0); - insert.Values(row); - insert.Execute(); - } else { - Assert(rows.size() == 1); - Properties::Row row = rows.front(); - if (row.Get_readonly() != 0) { - Throw(Exception::LocalStorageValueNoModifableException); - } - row.Set_value(DPL::FromUTF8String(value)); - row.Set_readonly(readOnly ? 1 : 0); - Properties::Update update(&m_databaseInterface); - update.Where(Equals(DPL::FromUTF8String(key))); - update.Values(row); - update.Execute(); - } - tran.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot set item"); -} - -void WidgetInterfaceDAO::removeItem(const std::string& key) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - select.Where(Equals(DPL::FromUTF8String(key))); - bool readonly = select.GetSingleValue(); - if (readonly) { - ThrowMsg(Exception::LocalStorageValueNoModifableException, - "Cannot delete item. Item is readonly"); - } - Properties::Delete deleteItem(&m_databaseInterface); - deleteItem.Where(Equals(DPL::FromUTF8String(key))); - deleteItem.Execute(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot delete item"); -} - -DPL::Optional WidgetInterfaceDAO::getValue( - const std::string& key) const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - select.Where(Equals(DPL::FromUTF8String(key))); - std::list value = - select.GetValueList(); - if (value.empty()) { - return DPL::Optional(); - } - return DPL::Optional(DPL::ToUTF8String(value.front())); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Not found item"); -} - -void WidgetInterfaceDAO::clear(bool removeReadOnly) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Delete deleteItem(&m_databaseInterface); - if (!removeReadOnly) { - deleteItem.Where(Equals(0)); - } - deleteItem.Execute(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot delete all items"); -} - -size_t WidgetInterfaceDAO::getStorageSize() const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - std::list list = - select.GetValueList(); - return list.size(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot get item count"); -} - -std::string WidgetInterfaceDAO::getKeyByIndex(size_t index) const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - select.OrderBy("key"); - std::list list = select.GetValueList(); - if (index >= list.size()) { - Throw(Exception::InvalidArgumentException); - } - for (size_t i = 0; i < index; ++i) { - list.pop_front(); - } - return DPL::ToUTF8String(list.front()); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot get item count"); -} - -std::string WidgetInterfaceDAO::databaseFileName(int widgetHandle) -{ - using namespace DPL::DB::ORM; - using namespace WrtDB::WidgetConfig; - - WrtDB::WrtDatabase::attachToThreadRO(); - std::stringstream filename; - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WrtDB::WidgetDAOReadOnly widgetDAO(widgetHandle); - WrtDB::TizenPkgId pkgid = widgetDAO.getTizenPkgId(); - - filename << GetWidgetPersistentStoragePath(pkgid) - << "/" - << DATABASE_NAME; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot get item count"); - WrtDB::WrtDatabase::detachFromThread(); - return filename.str(); -} -} // namespace WidgetInterfaceDB diff --git a/modules_mobile/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h b/modules_mobile/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h deleted file mode 100644 index 8b35344..0000000 --- a/modules_mobile/widget_interface_dao/include/wrt-commons/widget-interface-dao/widget_interface_dao.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @author Lukasz Marek (l.marek@samsung.com) - * @version 0.1 - * @brief - */ - -#ifndef _WIDGET_INTERFACE_DAO_H_ -#define _WIDGET_INTERFACE_DAO_H_ - -#include -#include -#include - -namespace WidgetInterfaceDB { -class WidgetInterfaceDAO -{ - public: - - /** - * WidgetInterfaceDAO Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, LocalStorageValueNoModifableException) - DECLARE_EXCEPTION_TYPE(Base, InvalidArgumentException) - }; - WidgetInterfaceDAO(int widgetHandle); - virtual ~WidgetInterfaceDAO(); - - static std::string databaseFileName(int widgetHandle); - void setItem(const std::string& key, - const std::string& value, - bool readOnly, - bool fromConfigXml); - void setItem(const std::string& key, - const std::string& value, - bool readOnly); - void removeItem(const std::string& key); - DPL::Optional getValue(const std::string& key) const; - void clear(bool removeReadOnly); - size_t getStorageSize() const; - std::string getKeyByIndex(size_t index) const; - - protected: - int m_widgetHandle; - mutable DPL::DB::ThreadDatabaseSupport m_databaseInterface; - - private: - void checkDatabase(); - void copyPropertiesFromWrtDatabase(); -}; -typedef std::unique_ptr WidgetInterfaceDAOPtr; -} -#endif //_WIDGET_INTERFACE_DAO_H_ diff --git a/modules_mobile/widget_interface_dao/orm/orm_generator_widget_interface.h b/modules_mobile/widget_interface_dao/orm/orm_generator_widget_interface.h deleted file mode 100644 index 87a3e05..0000000 --- a/modules_mobile/widget_interface_dao/orm/orm_generator_widget_interface.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ORM_GENERATOR_WIDGET_INTERFACE_H_ -#define ORM_GENERATOR_WIDGET_INTERFACE_H_ - -#define ORM_GENERATOR_DATABASE_NAME widget_interface_db_definitions -#include -#undef ORM_GENERATOR_DATABASE_NAME - -#endif diff --git a/modules_mobile/widget_interface_dao/orm/widget_interface_db b/modules_mobile/widget_interface_dao/orm/widget_interface_db deleted file mode 100644 index d33ec48..0000000 --- a/modules_mobile/widget_interface_dao/orm/widget_interface_db +++ /dev/null @@ -1,17 +0,0 @@ -SQL( - PRAGMA foreign_keys = ON; - BEGIN TRANSACTION; -) - -CREATE_TABLE(Properties) - COLUMN_NOT_NULL(key, TEXT,) - COLUMN_NOT_NULL(value, TEXT,) - COLUMN_NOT_NULL(readonly, INTEGER, check(readonly between 0 and 1)) - COLUMN_NOT_NULL(configxml, INTEGER, check(readonly between 0 and 1) DEFAULT 0) - - TABLE_CONSTRAINTS(unique(key)) -CREATE_TABLE_END() - -SQL( - COMMIT; -) diff --git a/modules_mobile/widget_interface_dao/orm/widget_interface_db_definitions b/modules_mobile/widget_interface_dao/orm/widget_interface_db_definitions deleted file mode 100644 index 85f627d..0000000 --- a/modules_mobile/widget_interface_dao/orm/widget_interface_db_definitions +++ /dev/null @@ -1,5 +0,0 @@ -DATABASE_START(widget_interface) - -#include "widget_interface_db" - -DATABASE_END() diff --git a/modules_mobile/widget_interface_dao/orm/widget_interface_db_sql_generator.h b/modules_mobile/widget_interface_dao/orm/widget_interface_db_sql_generator.h deleted file mode 100644 index b4ce0b6..0000000 --- a/modules_mobile/widget_interface_dao/orm/widget_interface_db_sql_generator.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file wrt_db_sql_generator.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL input file from - * database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. - -#include - -#include "widget_interface_db_definitions" diff --git a/modules_wearable/CMakeLists.txt b/modules_wearable/CMakeLists.txt deleted file mode 100644 index 07c4c05..0000000 --- a/modules_wearable/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file CMakeLists.txt -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -include(core/config.cmake) -include(dbus/config.cmake) -include(db/config.cmake) -include(event/config.cmake) -include(socket/config.cmake) -include(rpc/config.cmake) -include(test/config.cmake) -include(log/config.cmake) -ADD_SUBDIRECTORY(widget_dao) -ADD_SUBDIRECTORY(widget_interface_dao) -ADD_SUBDIRECTORY(security_origin_dao) -ADD_SUBDIRECTORY(custom_handler_dao) -ADD_SUBDIRECTORY(certificate_dao) -ADD_SUBDIRECTORY(i18n) -include(utils/config.cmake) -include(localization/config.cmake) -include(support/config.cmake) diff --git a/modules_wearable/certificate_dao/CMakeLists.txt b/modules_wearable/certificate_dao/CMakeLists.txt deleted file mode 100755 index f55ee45..0000000 --- a/modules_wearable/certificate_dao/CMakeLists.txt +++ /dev/null @@ -1,57 +0,0 @@ -SET(TARGET_CERTIFICATE_DAO_DB "Sqlite3DbCertificate") - -ADD_CUSTOM_COMMAND( OUTPUT .certificate.db - COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.certificate.db - COMMAND gcc -Wall -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/certificate_dao/orm -E ${PROJECT_SOURCE_DIR}/modules/certificate_dao/orm/certificate_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/certificate_db.sql - COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.certificate.db ".read ${CMAKE_CURRENT_BINARY_DIR}/certificate_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.certificate.db - DEPENDS ${PROJECT_SOURCE_DIR}/modules/certificate_dao/orm/certificate_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/certificate_dao/orm/certificate_db - ) - -ADD_CUSTOM_COMMAND( OUTPUT .certificate.db-journal - COMMAND touch - ARGS ${CMAKE_CURRENT_BINARY_DIR}/.certificate.db-journal - ) - -ADD_CUSTOM_TARGET(${TARGET_CERTIFICATE_DAO_DB} ALL DEPENDS .certificate.db .certificate.db-journal) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/certificate_db.sql DESTINATION share/wrt-engine/) - -############################################################################### - -INCLUDE(FindPkgConfig) - -PKG_CHECK_MODULES(CERTIFICATE_DAO_DEPS - glib-2.0 - REQUIRED) - -SET(CERTIFICATE_DAO_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/modules/certificate_dao/include - ${PROJECT_SOURCE_DIR}/modules/certificate_dao/orm - ${PROJECT_SOURCE_DIR}/modules/core/include - ${PROJECT_SOURCE_DIR}/modules/db/include - ${PROJECT_SOURCE_DIR}/modules/log/include - ${PROJECT_SOURCE_DIR}/modules/widget_dao/include -) - -SET(CERTIFICATE_DAO_SOURCES - dao/certificate_dao_types.cpp - dao/certificate_dao.cpp - dao/certificate_database.cpp -) - -INCLUDE_DIRECTORIES(SYSTEM ${CERTIFICATE_DAO_DEPS_INCLUDE_DIRS} ) -INCLUDE_DIRECTORIES(${CERTIFICATE_DAO_INCLUDE_DIRS}) - -ADD_LIBRARY(${TARGET_CERTIFICATE_DAO_LIB} SHARED ${CERTIFICATE_DAO_SOURCES}) -SET_TARGET_PROPERTIES(${TARGET_CERTIFICATE_DAO_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) -TARGET_LINK_LIBRARIES(${TARGET_CERTIFICATE_DAO_LIB} ${TARGET_DPL_EFL} ${TARGET_DPL_DB_EFL} ${TARGET_WRT_DAP_RO_LIB} ${CERTIFICATE_DAO_DEPS_LIBRARIES}) -ADD_DEPENDENCIES(${TARGET_CERTIFICATE_DAO_LIB} ${TARGET_CERTIFICATE_DAO_DB}) - -INSTALL(TARGETS ${TARGET_CERTIFICATE_DAO_LIB} DESTINATION lib) - -INSTALL(FILES - include/wrt-commons/certificate-dao/certificate_dao_types.h - include/wrt-commons/certificate-dao/certificate_database.h - include/wrt-commons/certificate-dao/certificate_dao.h - DESTINATION include/dpl-efl/wrt-commons/certificate-dao -) - diff --git a/modules_wearable/certificate_dao/dao/certificate_dao_types.cpp b/modules_wearable/certificate_dao/dao/certificate_dao_types.cpp deleted file mode 100755 index 35e8a58..0000000 --- a/modules_wearable/certificate_dao/dao/certificate_dao_types.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file certificate_dao_types.cpp - * @author Leerang Song (leerang.song@samsung.com) - * @version 1.0 - * @brief This file contains the implementation of - * common data types for certificate.db - */ - -#include -#include - -namespace CertificateDB { - -} // namespace CertificateDB diff --git a/modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h b/modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h deleted file mode 100644 index 26e981b..0000000 --- a/modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_dao.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file certificate_dao.h - * @author Leerang Song (leerang.song@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of certificate dao - */ -#ifndef _CERTIFICATE_DAO_H_ -#define _CERTIFICATE_DAO_H_ - -#include -#include -#include - -namespace CertificateDB { -class CertificateDAO -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, DataNotExist) - }; - - explicit CertificateDAO(const WrtDB::TizenPkgId &pkgName); - virtual ~CertificateDAO(); - CertificateDataList getCertificateDataList(); - Result getResult(const CertificateData &certificateData); - void setCertificateData(const CertificateData &certificateData, - const Result result); - void removeCertificateData(const CertificateData &certificateData); - void removeCertificateData(const Result result); - - private: - std::string m_certificateDBPath; - DPL::DB::ThreadDatabaseSupport m_certificateDBInterface; - bool hasResult(const CertificateData &certificateData); -}; - -typedef std::shared_ptr CertificateDAOPtr; -} // namespace CertificateDB - -#endif // _CERTIFICATE_DAO_H_ \ No newline at end of file diff --git a/modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h b/modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h deleted file mode 100755 index f0ee954..0000000 --- a/modules_wearable/certificate_dao/include/wrt-commons/certificate-dao/certificate_database.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _CERTIFICATE_DATABASE_H_ -#define _CERTIFICATE_DATABASE_H_ - -#include -#include - -extern DPL::Mutex g_certificateDBQueriesMutex; - -#define CERTIFICATE_DB_INTERNAL(tlsCommand, InternalType, interface) \ - static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ - { \ - DPL::Mutex::ScopedLock lock(&g_certificateDBQueriesMutex); \ - if (!tlsCommand##Ptr) { \ - static DPL::ThreadLocalVariable tmp; \ - tlsCommand##Ptr = &tmp; \ - } \ - } \ - DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ - if (tlsCommand.IsNull()) { tlsCommand = InternalType(interface); } - -#define CERTIFICATE_DB_SELECT(name, type, interface) \ - CERTIFICATE_DB_INTERNAL(name, type::Select, interface) - -#define CERTIFICATE_DB_INSERT(name, type, interface) \ - CERTIFICATE_DB_INTERNAL(name, type::Insert, interface) - -#define CERTIFICATE_DB_UPDATE(name, type, interface) \ - CERTIFICATE_DB_INTERNAL(name, type::Update, interface) - -#define CERTIFICATE_DB_DELETE(name, type, interface) \ - CERTIFICATE_DB_INTERNAL(name, type::Delete, interface) - -#endif // _CERTIFICATE_DATABASE_H_ - diff --git a/modules_wearable/core/include/dpl/binary_queue.h b/modules_wearable/core/include/dpl/binary_queue.h deleted file mode 100644 index f4fa278..0000000 --- a/modules_wearable/core/include/dpl/binary_queue.h +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file binary_queue.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of binary queue - */ -#ifndef DPL_BINARY_QUEUE_H -#define DPL_BINARY_QUEUE_H - -#include -#include -#include -#include -#include - -namespace DPL { -/** - * Binary stream implemented as constant size bucket list - * - * @todo Add optimized implementation for FlattenConsume - */ -class BinaryQueue : - public AbstractInputOutput -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, OutOfData) - }; - - typedef void (*BufferDeleter)(const void *buffer, size_t bufferSize, - void *userParam); - static void BufferDeleterFree(const void *buffer, - size_t bufferSize, - void *userParam); - - class BucketVisitor - { - public: - /** - * Destructor - */ - virtual ~BucketVisitor(); - - /** - * Visit bucket - * - * @return none - * @param[in] buffer Constant pointer to bucket data buffer - * @param[in] bufferSize Number of bytes in bucket - */ - virtual void OnVisitBucket(const void *buffer, size_t bufferSize) = 0; - }; - - private: - struct Bucket : - private Noncopyable - { - const void *buffer; - const void *ptr; - size_t size; - size_t left; - - BufferDeleter deleter; - void *param; - - Bucket(const void *buffer, - size_t bufferSize, - BufferDeleter deleter, - void *userParam); - virtual ~Bucket(); - }; - - typedef std::list BucketList; - BucketList m_buckets; - size_t m_size; - - static void DeleteBucket(Bucket *bucket); - - class BucketVisitorCall - { - private: - BucketVisitor *m_visitor; - - public: - BucketVisitorCall(BucketVisitor *visitor); - virtual ~BucketVisitorCall(); - - void operator()(Bucket *bucket) const; - }; - - public: - /** - * Construct empty binary queue - */ - BinaryQueue(); - - /** - * Construct binary queue via bare copy of other binary queue - * - * @param[in] other Other binary queue to copy from - * @warning One cannot assume that bucket structure is preserved during copy - */ - BinaryQueue(const BinaryQueue &other); - - /** - * Destructor - */ - virtual ~BinaryQueue(); - - /** - * Construct binary queue via bare copy of other binary queue - * - * @param[in] other Other binary queue to copy from - * @warning One cannot assume that bucket structure is preserved during copy - */ - const BinaryQueue &operator=(const BinaryQueue &other); - - /** - * Append copy of @a bufferSize bytes from memory pointed by @a buffer - * to the end of binary queue. Uses default deleter based on free. - * - * @return none - * @param[in] buffer Pointer to buffer to copy data from - * @param[in] bufferSize Number of bytes to copy - * @exception std::bad_alloc Cannot allocate memory to hold additional data - * @see BinaryQueue::BufferDeleterFree - */ - void AppendCopy(const void *buffer, size_t bufferSize); - - /** - * Append @a bufferSize bytes from memory pointed by @a buffer - * to the end of binary queue. Uses custom provided deleter. - * Responsibility for deleting provided buffer is transfered to BinaryQueue. - * - * @return none - * @param[in] buffer Pointer to data buffer - * @param[in] bufferSize Number of bytes available in buffer - * @param[in] deleter Pointer to deleter procedure used to free provided - * buffer - * @param[in] userParam User parameter passed to deleter routine - * @exception std::bad_alloc Cannot allocate memory to hold additional data - */ - void AppendUnmanaged( - const void *buffer, - size_t bufferSize, - BufferDeleter deleter = - &BinaryQueue::BufferDeleterFree, - void *userParam = NULL); - - /** - * Append copy of other binary queue to the end of this binary queue - * - * @return none - * @param[in] other Constant reference to other binary queue to copy data - * from - * @exception std::bad_alloc Cannot allocate memory to hold additional data - * @warning One cannot assume that bucket structure is preserved during copy - */ - void AppendCopyFrom(const BinaryQueue &other); - - /** - * Move bytes from other binary queue to the end of this binary queue. - * This also removes all bytes from other binary queue. - * This method is designed to be as fast as possible (only pointer swaps) - * and is suggested over making copies of binary queues. - * Bucket structure is preserved after operation. - * - * @return none - * @param[in] other Reference to other binary queue to move data from - * @exception std::bad_alloc Cannot allocate memory to hold additional data - */ - void AppendMoveFrom(BinaryQueue &other); - - /** - * Append copy of binary queue to the end of other binary queue - * - * @return none - * @param[in] other Constant reference to other binary queue to copy data to - * @exception std::bad_alloc Cannot allocate memory to hold additional data - * @warning One cannot assume that bucket structure is preserved during copy - */ - void AppendCopyTo(BinaryQueue &other) const; - - /** - * Move bytes from binary queue to the end of other binary queue. - * This also removes all bytes from binary queue. - * This method is designed to be as fast as possible (only pointer swaps) - * and is suggested over making copies of binary queues. - * Bucket structure is preserved after operation. - * - * @return none - * @param[in] other Reference to other binary queue to move data to - * @exception std::bad_alloc Cannot allocate memory to hold additional data - */ - void AppendMoveTo(BinaryQueue &other); - - /** - * Retrieve total size of all data contained in binary queue - * - * @return Number of bytes in binary queue - */ - size_t Size() const; - - /** - * Remove all data from binary queue - * - * @return none - */ - void Clear(); - - /** - * Check if binary queue is empty - * - * @return true if binary queue is empty, false otherwise - */ - bool Empty() const; - - /** - * Remove @a size bytes from beginning of binary queue - * - * @return none - * @param[in] size Number of bytes to remove - * @exception BinaryQueue::Exception::OutOfData Number of bytes is larger - * than available bytes in binary queue - */ - void Consume(size_t size); - - /** - * Retrieve @a bufferSize bytes from beginning of binary queue and copy them - * to user supplied buffer - * - * @return none - * @param[in] buffer Pointer to user buffer to receive bytes - * @param[in] bufferSize Size of user buffer pointed by @a buffer - * @exception BinaryQueue::Exception::OutOfData Number of bytes to flatten - * is larger than available bytes in binary queue - */ - void Flatten(void *buffer, size_t bufferSize) const; - - /** - * Retrieve @a bufferSize bytes from beginning of binary queue, copy them - * to user supplied buffer, and remove from binary queue - * - * @return none - * @param[in] buffer Pointer to user buffer to receive bytes - * @param[in] bufferSize Size of user buffer pointed by @a buffer - * @exception BinaryQueue::Exception::OutOfData Number of bytes to flatten - * is larger than available bytes in binary queue - */ - void FlattenConsume(void *buffer, size_t bufferSize); - - /** - * Visit each buffer with data using visitor object - * - * @return none - * @param[in] visitor Pointer to bucket visitor - * @see BinaryQueue::BucketVisitor - */ - void VisitBuckets(BucketVisitor *visitor) const; - - /** - * IAbstractInput interface - */ - virtual BinaryQueueAutoPtr Read(size_t size); - - /** - * IAbstractOutput interface - */ - virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize); -}; - -/** - * Binary queue auto pointer - */ -typedef std::auto_ptr BinaryQueueAutoPtr; -} // namespace DPL - -#endif // DPL_BINARY_QUEUE_H diff --git a/modules_wearable/core/include/dpl/enable_shared_from_this.h b/modules_wearable/core/include/dpl/enable_shared_from_this.h deleted file mode 100644 index 0a0fb3a..0000000 --- a/modules_wearable/core/include/dpl/enable_shared_from_this.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file enable_shared_from_this.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of shared pointer RAII - */ -#ifndef DPL_ENABLE_SHARED_FROM_THIS_H -#define DPL_ENABLE_SHARED_FROM_THIS_H - -#include -#include -#include - -namespace DPL { -template -class EnableSharedFromThis : private Noncopyable -{ - private: - // A weak pointer to shared counter - SharedCounter *m_counter; - Class *m_ptr; - - public: - DPL::SharedPtr SharedFromThis() - { - Assert(m_counter != NULL && "Pointer is not shared!"); - return SharedPtr(m_counter, m_ptr); - } - - DPL::SharedPtr SharedFromThis() const - { - Assert(m_counter != NULL && "Pointer is not shared!"); - return SharedPtr(m_counter, m_ptr); - } - - // For internal SharedPtr usage only. Do not call directly. - void _Internal_AcceptSharedPtr(SharedCounter *counter, Class *ptr) - { - m_counter = counter; - m_ptr = ptr; - } - - EnableSharedFromThis() : - m_counter(NULL), - m_ptr(NULL) - {} - - virtual ~EnableSharedFromThis() - {} -}; -} // namespace DPL - -#endif // DPL_ENABLE_SHARED_FROM_THIS_H diff --git a/modules_wearable/core/include/dpl/exception.h b/modules_wearable/core/include/dpl/exception.h deleted file mode 100644 index cdbdc53..0000000 --- a/modules_wearable/core/include/dpl/exception.h +++ /dev/null @@ -1,385 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file exception.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for base exception - */ -#ifndef DPL_EXCEPTION_H -#define DPL_EXCEPTION_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -void LogUnhandledException(const std::string &str); -void LogUnhandledException(const std::string &str, - const char *filename, - int line, - const char *function); -} - -namespace DPL { -class Exception -{ - private: - static unsigned int m_exceptionCount; - static Exception* m_lastException; - static void (*m_terminateHandler)(); - - static void AddRef(Exception* exception) - { - if (!m_exceptionCount) { - m_terminateHandler = std::set_terminate(&TerminateHandler); - } - - ++m_exceptionCount; - m_lastException = exception; - } - - static void UnRef(Exception* e) - { - if (m_lastException == e) { - m_lastException = NULL; - } - - --m_exceptionCount; - - if (!m_exceptionCount) { - std::set_terminate(m_terminateHandler); - m_terminateHandler = NULL; - } - } - - static void TerminateHandler() - { - if (m_lastException != NULL) { - DisplayKnownException(*m_lastException); - abort(); - } else { - DisplayUnknownException(); - abort(); - } - } - - Exception *m_reason; - std::string m_path; - std::string m_function; - int m_line; - - protected: - std::string m_message; - std::string m_className; - - public: - static std::string KnownExceptionToString(const Exception &e) - { - std::ostringstream message; - message << - "\033[1;5;31m\n=== Unhandled DPL exception occurred ===\033[m\n\n"; - message << "\033[1;33mException trace:\033[m\n\n"; - message << e.DumpToString(); - message << "\033[1;31m\n=== Will now abort ===\033[m\n"; - - return message.str(); - } - - static std::string UnknownExceptionToString() - { - std::ostringstream message; - message << - "\033[1;5;31m\n=== Unhandled non-DPL exception occurred ===\033[m\n\n"; - message << "\033[1;31m\n=== Will now abort ===\033[m\n"; - - return message.str(); - } - - static void DisplayKnownException(const Exception& e) - { - LogUnhandledException(KnownExceptionToString(e).c_str()); - } - - static void DisplayUnknownException() - { - LogUnhandledException(UnknownExceptionToString().c_str()); - } - - Exception(const Exception &other) - { - // Deep copy - if (other.m_reason != NULL) { - m_reason = new Exception(*other.m_reason); - } else { - m_reason = NULL; - } - - m_message = other.m_message; - m_path = other.m_path; - m_function = other.m_function; - m_line = other.m_line; - - m_className = other.m_className; - - AddRef(this); - } - - const Exception &operator =(const Exception &other) - { - if (this == &other) { - return *this; - } - - // Deep copy - if (other.m_reason != NULL) { - m_reason = new Exception(*other.m_reason); - } else { - m_reason = NULL; - } - - m_message = other.m_message; - m_path = other.m_path; - m_function = other.m_function; - m_line = other.m_line; - - m_className = other.m_className; - - AddRef(this); - - return *this; - } - - Exception(const char *path, - const char *function, - int line, - const std::string &message) : - m_reason(NULL), - m_path(path), - m_function(function), - m_line(line), - m_message(message) - { - AddRef(this); - } - - Exception(const char *path, - const char *function, - int line, - const Exception &reason, - const std::string &message) : - m_reason(new Exception(reason)), - m_path(path), - m_function(function), - m_line(line), - m_message(message) - { - AddRef(this); - } - - virtual ~Exception() throw() - { - if (m_reason != NULL) { - delete m_reason; - m_reason = NULL; - } - - UnRef(this); - } - - void Dump() const - { - // Show reason first - if (m_reason != NULL) { - m_reason->Dump(); - } - - // Afterward, dump exception - const char *file = strchr(m_path.c_str(), '/'); - - if (file == NULL) { - file = m_path.c_str(); - } else { - ++file; - } - - printf("\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n", - file, m_line, - m_function.c_str(), - m_className.c_str(), - m_message.empty() ? "" : m_message.c_str()); - } - - std::string DumpToString() const - { - std::string ret; - if (m_reason != NULL) { - ret = m_reason->DumpToString(); - } - - const char *file = strchr(m_path.c_str(), '/'); - - if (file == NULL) { - file = m_path.c_str(); - } else { - ++file; - } - - char buf[1024]; - snprintf(buf, - sizeof(buf), - "\033[0;36m[%s:%i]\033[m %s() \033[4;35m%s\033[m: %s\033[m\n", - file, - m_line, - m_function.c_str(), - m_className.c_str(), - m_message.empty() ? "" : m_message.c_str()); - - buf[sizeof(buf) - 1] = '\n'; - ret += buf; - - return ret; - } - - Exception *GetReason() const - { - return m_reason; - } - - std::string GetPath() const - { - return m_path; - } - - std::string GetFunction() const - { - return m_function; - } - - int GetLine() const - { - return m_line; - } - - std::string GetMessage() const - { - return m_message; - } - - std::string GetClassName() const - { - return m_className; - } -}; -} // namespace DPL - -#define Try try - -#define Throw(ClassName) \ - throw ClassName(__FILE__, __FUNCTION__, __LINE__) - -#define ThrowMsg(ClassName, Message) \ - do \ - { \ - std::ostringstream dplLoggingStream; \ - dplLoggingStream << Message; \ - throw ClassName(__FILE__, __FUNCTION__, __LINE__, dplLoggingStream.str()); \ - } while (0) - -#define ReThrow(ClassName) \ - throw ClassName(__FILE__, __FUNCTION__, __LINE__, _rethrown_exception) - -#define ReThrowMsg(ClassName, Message) \ - throw ClassName(__FILE__, \ - __FUNCTION__, \ - __LINE__, \ - _rethrown_exception, \ - Message) - -#define Catch(ClassName) \ - catch (const ClassName &_rethrown_exception) - -#define DECLARE_EXCEPTION_TYPE(BaseClass, Class) \ - class Class : \ - public BaseClass \ - { \ - public: \ - Class(const char *path, \ - const char *function, \ - int line, \ - const std::string & message = std::string()) : \ - BaseClass(path, function, line, message) \ - { \ - BaseClass::m_className = #Class; \ - } \ - \ - Class(const char *path, \ - const char *function, \ - int line, \ - const DPL::Exception & reason, \ - const std::string & message = std::string()) : \ - BaseClass(path, function, line, reason, message) \ - { \ - BaseClass::m_className = #Class; \ - } \ - }; - -#define UNHANDLED_EXCEPTION_HANDLER_BEGIN try - -#define UNHANDLED_EXCEPTION_HANDLER_END \ - catch (const DPL::Exception &exception) \ - { \ - std::ostringstream msg; \ - msg << DPL::Exception::KnownExceptionToString(exception); \ - DPL::LogUnhandledException(msg.str(), __FILE__, __LINE__, __FUNCTION__); \ - abort(); \ - } \ - catch (std::exception& e) \ - { \ - std::ostringstream msg; \ - msg << e.what(); \ - msg << "\n"; \ - msg << DPL::Exception::UnknownExceptionToString(); \ - DPL::LogUnhandledException(msg.str(), __FILE__, __LINE__, __FUNCTION__); \ - abort(); \ - } \ - catch (...) \ - { \ - std::ostringstream msg; \ - msg << DPL::Exception::UnknownExceptionToString(); \ - DPL::LogUnhandledException(msg.str(), __FILE__, __LINE__, __FUNCTION__); \ - abort(); \ - } - -namespace DPL { -namespace CommonException { -/** - * Internal exception definitions - * - * These should normally not happen. - * Usually, exception trace with internal error includes - * important messages. - */ -DECLARE_EXCEPTION_TYPE(Exception, InternalError) ///< Unexpected error from - // underlying libraries or - // kernel -} -} - -#endif // DPL_EXCEPTION_H diff --git a/modules_wearable/core/include/dpl/framework_appcore.h b/modules_wearable/core/include/dpl/framework_appcore.h deleted file mode 100644 index 034134a..0000000 --- a/modules_wearable/core/include/dpl/framework_appcore.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file framework_appcore.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the forward header file for APPCORE framework - */ -#pragma GCC system_header -#include diff --git a/modules_wearable/core/include/dpl/generic_event.h b/modules_wearable/core/include/dpl/generic_event.h deleted file mode 100644 index b20d913..0000000 --- a/modules_wearable/core/include/dpl/generic_event.h +++ /dev/null @@ -1,639 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_event.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC generic event - */ -#ifndef DPL_GENERIC_EVENT_H -#define DPL_GENERIC_EVENT_H - -namespace DPL { -class EventSender -{ - public: - explicit EventSender(void *sender) : - m_sender(sender) - {} - - void* GetSender() const - { - return m_sender; - } - - private: - void *m_sender; -}; - -class GenericEvent -{ - protected: - void *m_sender; - - public: - explicit GenericEvent(const EventSender &sender) : - m_sender(sender.GetSender()) - {} - - virtual ~GenericEvent() - {} - - void *GetSender() const - { - return m_sender; - } -}; - -class GenericEvent0 : - public GenericEvent -{ - public: - explicit GenericEvent0(const EventSender &sender) : - GenericEvent(sender) - {} - - virtual ~GenericEvent0() - {} -}; - -template -class GenericEvent1 : - public GenericEvent0 -{ - public: - typedef Arg0Type Arg0; - - protected: - Arg0 m_arg0; - - public: - explicit GenericEvent1(const EventSender &sender) : - GenericEvent0(sender) - {} - - GenericEvent1(Arg0 arg0, const EventSender &sender) : - GenericEvent0(sender), - m_arg0(arg0) - {} - - virtual ~GenericEvent1() - {} - - Arg0 GetArg0() const - { - return m_arg0; - } -}; - -template -class GenericEvent2 : - public GenericEvent1 -{ - public: - typedef Arg0Type Arg0; - typedef Arg1Type Arg1; - - protected: - Arg1 m_arg1; - - public: - explicit GenericEvent2(const EventSender &sender) : - GenericEvent1(sender) - {} - - GenericEvent2(Arg0 arg0, Arg1 arg1, const EventSender &sender) : - GenericEvent1(arg0, sender), - m_arg1(arg1) - {} - - virtual ~GenericEvent2() - {} - - Arg1 GetArg1() const - { - return m_arg1; - } -}; - -template -class GenericEvent3 : - public GenericEvent2 -{ - public: - typedef Arg0Type Arg0; - typedef Arg1Type Arg1; - typedef Arg2Type Arg2; - - protected: - Arg2 m_arg2; - - public: - explicit GenericEvent3(const EventSender &sender) : - GenericEvent2(sender) - {} - - GenericEvent3(Arg0 arg0, Arg1 arg1, Arg2 arg2, const EventSender &sender) : - GenericEvent2(arg0, arg1, sender), - m_arg2(arg2) - {} - - virtual ~GenericEvent3() - {} - - Arg2 GetArg2() const - { - return m_arg2; - } -}; - -template -class GenericEvent4 : - public GenericEvent3 -{ - public: - typedef Arg0Type Arg0; - typedef Arg1Type Arg1; - typedef Arg2Type Arg2; - typedef Arg3Type Arg3; - - protected: - Arg3 m_arg3; - - public: - explicit GenericEvent4(const EventSender &sender) : - GenericEvent3(sender) - {} - - GenericEvent4(Arg0 arg0, - Arg1 arg1, - Arg2 arg2, - Arg3 arg3, - const EventSender &sender) : - GenericEvent3(arg0, arg1, arg2, sender), - m_arg3(arg3) - {} - - virtual ~GenericEvent4() - {} - - Arg3 GetArg3() const - { - return m_arg3; - } -}; - -template -class GenericEvent5 : - public GenericEvent4 -{ - public: - typedef Arg0Type Arg0; - typedef Arg1Type Arg1; - typedef Arg2Type Arg2; - typedef Arg3Type Arg3; - typedef Arg4Type Arg4; - - protected: - Arg4 m_arg4; - - public: - explicit GenericEvent5(const EventSender &sender) : - GenericEvent4(sender) - {} - - GenericEvent5(Arg0 arg0, - Arg1 arg1, - Arg2 arg2, - Arg3 arg3, - Arg4 arg4, - const EventSender &sender) : - GenericEvent4(arg0, arg1, arg2, - arg3, sender), - m_arg4(arg4) - {} - - virtual ~GenericEvent5() - {} - - Arg4 GetArg4() const - { - return m_arg4; - } -}; - -template -class GenericEvent6 : - public GenericEvent5 -{ - public: - typedef Arg0Type Arg0; - typedef Arg1Type Arg1; - typedef Arg2Type Arg2; - typedef Arg3Type Arg3; - typedef Arg4Type Arg4; - typedef Arg5Type Arg5; - - protected: - Arg5 m_arg5; - - public: - explicit GenericEvent6(const EventSender &sender) : - GenericEvent5(sender) - {} - - GenericEvent6(Arg0 arg0, - Arg1 arg1, - Arg2 arg2, - Arg3 arg3, - Arg4 arg4, - Arg5 arg5, - const EventSender &sender) : - GenericEvent5(arg0, - arg1, - arg2, - arg3, - arg4, - sender), - m_arg5(arg5) - {} - - virtual ~GenericEvent6() - {} - - Arg5 GetArg5() const - { - return m_arg5; - } -}; - -template -class GenericEvent7 : - public GenericEvent6 -{ - public: - typedef Arg0Type Arg0; - typedef Arg1Type Arg1; - typedef Arg2Type Arg2; - typedef Arg3Type Arg3; - typedef Arg4Type Arg4; - typedef Arg5Type Arg5; - typedef Arg6Type Arg6; - - protected: - Arg6 m_arg6; - - public: - explicit GenericEvent7(const EventSender &sender) : - GenericEvent6(sender) - {} - - GenericEvent7(Arg0 arg0, - Arg1 arg1, - Arg2 arg2, - Arg3 arg3, - Arg4 arg4, - Arg5 arg5, - Arg6 arg6, - const EventSender &sender) : - GenericEvent6(arg0, arg1, arg2, arg3, arg4, arg5, sender), - m_arg6(arg6) - {} - - virtual ~GenericEvent7() - {} - - Arg6 GetArg6() const - { - return m_arg6; - } -}; - -template -class GenericEvent8 : - public GenericEvent7 -{ - public: - typedef Arg0Type Arg0; - typedef Arg1Type Arg1; - typedef Arg2Type Arg2; - typedef Arg3Type Arg3; - typedef Arg4Type Arg4; - typedef Arg5Type Arg5; - typedef Arg6Type Arg6; - typedef Arg7Type Arg7; - - protected: - Arg7 m_arg7; - - public: - explicit GenericEvent8(const EventSender &sender) : - GenericEvent7(sender) - {} - - GenericEvent8(Arg0 arg0, - Arg1 arg1, - Arg2 arg2, - Arg3 arg3, - Arg4 arg4, - Arg5 arg5, - Arg6 arg6, - Arg7 arg7, - const EventSender &sender) : - GenericEvent7(arg0, arg1, arg2, arg3, arg4, arg5, - arg6, sender), - m_arg7(arg7) - {} - - virtual ~GenericEvent8() - {} - - Arg7 GetArg7() const - { - return m_arg7; - } -}; -} // namespace DPL - -#define DECLARE_GENERIC_EVENT_0(ClassName) \ - class ClassName : \ - public DPL::GenericEvent0 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent0(sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_1(ClassName, Arg0Type) \ - class ClassName : \ - public DPL::GenericEvent1 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent1(sender) \ - { \ - } \ - \ - explicit ClassName(Arg0Type arg0, \ - const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent1(arg0, sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_2(ClassName, Arg0Type, Arg1Type) \ - class ClassName : \ - public DPL::GenericEvent2 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent2(sender) \ - { \ - } \ - \ - ClassName(Arg0Type arg0, Arg1Type arg1, \ - const DPL::EventSender & sender = DPL::EventSender(NULL)) : \ - DPL::GenericEvent2(arg0, arg1, sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_3(ClassName, Arg0Type, Arg1Type, Arg2Type) \ - class ClassName : \ - public DPL::GenericEvent3 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent3(sender) \ - { \ - } \ - \ - ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, \ - const DPL::EventSender & sender = DPL::EventSender(NULL)) : \ - DPL::GenericEvent3(arg0, \ - arg1, \ - arg2, \ - sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_4(ClassName, \ - Arg0Type, \ - Arg1Type, \ - Arg2Type, \ - Arg3Type) \ - class ClassName : \ - public DPL::GenericEvent4 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent4(sender) \ - { \ - } \ - \ - ClassName(Arg0Type arg0, Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, \ - const DPL::EventSender & sender = DPL::EventSender(NULL)) : \ - DPL::GenericEvent4(arg0, \ - arg1, \ - arg2, \ - arg3, \ - sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_5(ClassName, \ - Arg0Type, \ - Arg1Type, \ - Arg2Type, \ - Arg3Type, \ - Arg4Type) \ - class ClassName : \ - public DPL::GenericEvent5 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent5( \ - sender) \ - { \ - } \ - \ - ClassName(Arg0Type arg0, \ - Arg1Type arg1, \ - Arg2Type arg2, \ - Arg3Type arg3, \ - Arg4Type arg4, \ - const DPL::EventSender & sender = DPL::EventSender(NULL)) : \ - DPL::GenericEvent5( \ - arg0, \ - arg1, \ - arg2, \ - arg3, \ - arg4, \ - sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_6(ClassName, \ - Arg0Type, \ - Arg1Type, \ - Arg2Type, \ - Arg3Type, \ - Arg4Type, \ - Arg5Type) \ - class ClassName : \ - public DPL::GenericEvent6 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent6(sender) \ - { \ - } \ - \ - ClassName(Arg0Type arg0, \ - Arg1Type arg1, \ - Arg2Type arg2, \ - Arg3Type arg3, \ - Arg4Type arg4, \ - Arg5Type arg5, \ - const DPL::EventSender & sender = DPL::EventSender(NULL)) : \ - DPL::GenericEvent6(arg0, \ - arg1, \ - arg2, \ - arg3, \ - arg4, \ - arg5, \ - sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_7(ClassName, \ - Arg0Type, \ - Arg1Type, \ - Arg2Type, \ - Arg3Type, \ - Arg4Type, \ - Arg5Type, \ - Arg6Type) \ - class ClassName : \ - public DPL::GenericEvent7 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent7(sender) \ - { \ - } \ - \ - ClassName(Arg0Type arg0, \ - Arg1Type arg1, \ - Arg2Type arg2, \ - Arg3Type arg3, \ - Arg4Type arg4, \ - Arg5Type arg5, \ - Arg6Type arg6, \ - const DPL::EventSender & sender = DPL::EventSender(NULL)) : \ - DPL::GenericEvent7(arg0, \ - arg1, \ - arg2, \ - arg3, \ - arg4, \ - arg5, \ - arg6, \ - sender) \ - { \ - } \ - }; - -#define DECLARE_GENERIC_EVENT_8(ClassName, \ - Arg0Type, \ - Arg1Type, \ - Arg2Type, \ - Arg3Type, \ - Arg4Type, \ - Arg5Type, \ - Arg6Type, \ - Arg7Type) \ - class ClassName : \ - public DPL::GenericEvent8 \ - { \ - public: \ - explicit ClassName(const DPL::EventSender & sender = \ - DPL::EventSender(NULL)) : \ - DPL::GenericEvent8(sender) \ - { \ - } \ - \ - ClassName(Arg0Type arg0, \ - Arg1Type arg1, \ - Arg2Type arg2, \ - Arg3Type arg3, \ - Arg4Type arg4, \ - Arg5Type arg5, \ - Arg6Type arg6, \ - Arg7Type arg7, \ - const DPL::EventSender & sender = DPL::EventSender(NULL)) : \ - DPL::GenericEvent8(arg0, \ - arg1, \ - arg2, \ - arg3, \ - arg4, \ - arg5, \ - arg6, \ - arg7, \ - sender) \ - { \ - } \ - }; - -#endif // DPL_GENERIC_EVENT_H diff --git a/modules_wearable/core/include/dpl/mutex.h b/modules_wearable/core/include/dpl/mutex.h deleted file mode 100644 index 315a92c..0000000 --- a/modules_wearable/core/include/dpl/mutex.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file mutex.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of mutex - */ -#ifndef DPL_MUTEX_H -#define DPL_MUTEX_H - -#include -#include -#include - -namespace DPL { -class Mutex : - private Noncopyable -{ - public: - class ScopedLock : - private Noncopyable - { - private: - Mutex *m_mutex; - - public: - explicit ScopedLock(Mutex *mutex); - ~ScopedLock(); - }; - - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, LockFailed) - DECLARE_EXCEPTION_TYPE(Base, UnlockFailed) - }; - - private: - mutable pthread_mutex_t m_mutex; - - void Lock() const; - void Unlock() const; - - public: - Mutex(); - ~Mutex(); -}; -} // namespace DPL - -#endif // DPL_MUTEX_H diff --git a/modules_wearable/core/include/dpl/optional.h b/modules_wearable/core/include/dpl/optional.h deleted file mode 100644 index d1ec5f3..0000000 --- a/modules_wearable/core/include/dpl/optional.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file optional_value.h - * @author Lukasz Wrzosek (l.wrzosek@samsung.com) - * @version 1.0 - */ - -#ifndef DPL_OPTIONAL_H -#define DPL_OPTIONAL_H - -#include -#include - -namespace DPL { -template -class Optional -{ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, NullReference) - }; - - public: - Optional() : - m_null(true), - m_value() - {} - - Optional(const Type& t) : - m_null(false), - m_value(t) - {} - - bool IsNull() const - { - return m_null; - } - - Type& operator*() - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return m_value; - } - - const Type& operator*() const - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return m_value; - } - - const Type* operator->() const - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return &m_value; - } - - Type* operator->() - { - if (m_null) { - Throw(typename Exception::NullReference); - } - return &m_value; - } - - bool operator!() const - { - return m_null; - } - - Optional& operator=(const Type& other) - { - m_null = false; - m_value = other; - return *this; - } - - bool operator==(const Optional& aSecond) const - { - return LogicalOperator(*this, aSecond, - std::equal_to(), std::equal_to()); - } - - bool operator==(const Type& aSecond) const - { - return Optional(aSecond) == *this; - } - - bool operator!=(const Optional& aSecond) const - { - return !(*this == aSecond); - } - - bool operator<(const Optional& aSecond) const - { - return LogicalOperator(*this, aSecond, - std::less(), std::less()); - } - - bool operator>(const Optional& aSecond) const - { - return LogicalOperator(*this, aSecond, - std::greater(), std::greater()); - } - - bool operator<=(const Optional& aSecond) const - { - return *this == aSecond || *this < aSecond; - } - - bool operator>=(const Optional& aSecond) const - { - return *this == aSecond || *this > aSecond; - } - - static Optional Null; - - private: - bool m_null; - Type m_value; - - template - static bool LogicalOperator(const Optional& aFirst, - const Optional& aSecond, - taComparator aComparator, - taNullComparator aNullComparator) - { - if (aFirst.m_null == aSecond.m_null) { - if (aFirst.m_null) { - return taEquality; - } else { - return aComparator(aFirst.m_value, aSecond.m_value); - } - } else { - return aNullComparator(aFirst.m_null, aSecond.m_null); - } - } -} DPL_DEPRECATED_WITH_MESSAGE("Use boost::optional instead"); - -template -Optional Optional::Null = Optional(); -} //namespace DPL - -template -std::ostream& operator<<(std::ostream& aStream, - const DPL::Optional& aOptional) -{ - if (aOptional.IsNull()) { - return aStream << "null optional"; - } else { - return aStream << *aOptional; - } -} - -#endif // DPL_OPTIONAL_VALUE_H diff --git a/modules_wearable/core/include/dpl/platform.h b/modules_wearable/core/include/dpl/platform.h deleted file mode 100644 index 0049db4..0000000 --- a/modules_wearable/core/include/dpl/platform.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file platform.h - * @author Jihoon Chung (jihoon.chung@samsung.com) - * @version 1.0 - */ -#ifndef DPL_PLATFORM_H -#define DPL_PLATFORM_H - -// Use Features definition -// Use a particular optional platform service or third-party library -// -// Description : -// -// Author : () - -// #define USE__ (0 or 1) -#define USE(FEATURE) (defined USE_##FEATURE && USE_##FEATURE) - -// Description : Application side patch to use manual rotation feature in webkit -// Author : Jihoon Chung(jihoon.chung@samsung.com) - 10.26.2013 -#define USE_WEBKIT_MANUAL_ROTATION 1 - -// Description : Temporary patch about enable/disable webapp specific settings, especially for web-provider. -// Author : Jihoon Chung(jihoon.chung@samsung.com) - 11.09.2013 -#define USE_WEB_PROVIDER_EXCEPTION_IN_EWK_CONTEXT 1 - -// Description : Enhanced "progress bar" user experience. -// Show "progress bar" in "load,started" webkit callback to show earlier. -// Confirmed by webkit loader team. -// Author : Jihoon Chung(jihoon.chung@samsung.com) - 11.21.2013 -#define USE_WEBKIT_SHOW_PROGRESS_BAR_EARLIER 1 - -// Description : Webkit version-up -// Author : Jihoon Chung(jihoon.chung@samsung.com) - 01.14.2013 -#define USE_WEBKIT_UPVERSION 0 - -// Enable Features definition -// Turn on a specific feature of WRT -// -// Description : -// -// Author : () - -// #define ENABLE_ (0 or 1) -#define ENABLE(FEATURE) (defined ENABLE_##FEATURE && ENABLE_##FEATURE) - -// Description : Support onbeforeunload event -// Author : Jihoon Chung(jihoon.chung@samsung.com) - 11.15.2013 -#define ENABLE_JAVASCRIPT_ONBEFOREUNLOAD_EVENT 0 - -// Description : Support app scheme(app://) -// App scheme(app://) supports special scheme to packaged resources. -// Main reason of requirement is that enhance cross origin security and deprecate file scheme(file://). -// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 11.16.2013 -#define ENABLE_APP_SCHEME 0 - -// Description : Custom user agent support by tizen widget setting -// Author : Tae-Jeong Lee (taejeong.lee@samsung.com) - 11.26.2013 -#define ENABLE_CUSTOM_USER_AGENT_SUPPORT 0 - -// Description : Support CORS(Cross-origin resource sharing) whitelisting -// Allow to use resource by trust origin. Basically, trust domain includes own app scheme(app://). -// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 01.02.2014 -#define ENABLE_CORS_WHITELISTING 0 - -// Description : Support CSP(Content security policy) -// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 01.03.2014 -#define ENABLE_CONTENT_SECURITY_POLICY 1 - -// Description : Enabling background decryption for encrypted resources -// Author : Tomasz Iwanek(t.iwanek@samsung.com) - 16.12.2013 -#define ENABLE_BACKGROUND_THREAD_DECRYPTION 0 - -// Description : Support allow-navigation -// Origin based navigation control of main resource. -// Author : Jihoon Chung (jihoon.chung@samsung.com) - 01.08.2014 -#define ENABLE_ALLOW_NAVIGATION 1 - -#endif // DPL_PLATFORM_H diff --git a/modules_wearable/core/include/dpl/scope_guard.h b/modules_wearable/core/include/dpl/scope_guard.h deleted file mode 100644 index 21a7b0c..0000000 --- a/modules_wearable/core/include/dpl/scope_guard.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2013 Facebook, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scope_guard.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scope guard RAII - */ -#ifndef DPL_SCOPE_GUARD_H_ -#define DPL_SCOPE_GUARD_H_ - -#include -#include -#include -#include -#include - -namespace DPL { -template -class ScopeGuard -{ - public: - explicit ScopeGuard(const FunctionType& function) - : m_function{function}, - m_released{false} - {} - - explicit ScopeGuard(FunctionType&& function) - : m_function{std::move(function)}, - m_released{false} - {} - - ScopeGuard(ScopeGuard&& other) - : m_function{std::move(other.m_function)}, - m_released{other.m_released} - { - other.Release(); - } - - ScopeGuard(const ScopeGuard&) = delete; - - ~ScopeGuard() - { - if (!m_released) - { - Execute(); - } - } - - ScopeGuard& operator=(const ScopeGuard&) = delete; - - void Release() - { - m_released = true; - } - - void* operator new(size_t) = delete; - - private: - // FIXME change to noexcept when available - void Execute() throw() - { - m_function(); - } - - FunctionType m_function; - bool m_released; -}; - -template -inline ScopeGuard::type> -MakeScopeGuard(FunctionType&& function) -{ - return ScopeGuard::type>( - std::forward(function)); -} - -namespace detail { -enum class ScopeGuardOnExit {}; - -template -inline ScopeGuard::type> -operator+(detail::ScopeGuardOnExit, FunctionType&& function) -{ - return ScopeGuard::type>( - std::forward(function)); -} -} -} - -// FIXME provide support for compilers not supporting variadic macros; -// instead of using variadic macros (for compatibility) we could -// capture all by '&' (only referenced variables would be captured) -#define DPL_SCOPE_EXIT(...) \ - auto DPL_ANONYMOUS_VARIABLE(DPL_SCOPE_EXIT_STATE) \ - = ::DPL::detail::ScopeGuardOnExit() + [__VA_ARGS__]() - -#endif // DPL_SCOPE_GUARD_H_ diff --git a/modules_wearable/core/include/dpl/scoped_array.h b/modules_wearable/core/include/dpl/scoped_array.h deleted file mode 100644 index 1be91bd..0000000 --- a/modules_wearable/core/include/dpl/scoped_array.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_ptr.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped array RAII - * - * This module is deprecated, please use standard C++11 feature: std::unique_ptr - */ -#ifndef DPL_SCOPED_ARRAY_H -#define DPL_SCOPED_ARRAY_H - -#include - -#include -#include -#include - -namespace DPL { -template -struct ScopedArrayPolicy -{ - typedef Class* Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type ptr) - { - delete[] ptr; - } -}; - -template -class ScopedArray : public ScopedResource > -{ - typedef ScopedArrayPolicy Policy; - typedef ScopedResource BaseType; - - public: - explicit ScopedArray(Class *ptr = Policy::NullValue()) : BaseType(ptr) { } - - Class &operator [](std::ptrdiff_t k) const - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL array!"); - Assert(k >= 0 && "Negative array index"); - - return this->m_value[k]; - } -} DPL_DEPRECATED_WITH_MESSAGE("use standard C++11 feature: std::unique_ptr"); -} // namespace DPL - -#endif // DPL_SCOPED_PTR_H diff --git a/modules_wearable/core/include/dpl/scoped_close.h b/modules_wearable/core/include/dpl/scoped_close.h deleted file mode 100644 index 45477af..0000000 --- a/modules_wearable/core/include/dpl/scoped_close.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_close.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped close RAII - */ -#ifndef DPL_SCOPED_CLOSE_H -#define DPL_SCOPED_CLOSE_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -struct ScopedClosePolicy -{ - typedef int Type; - static Type NullValue() - { - return -1; - } - static void Destroy(Type handle) - { - if (handle != -1) { - if (TEMP_FAILURE_RETRY(::fsync(handle)) == -1) { - std::string errString = GetErrnoString(); - LogPedantic("Failed to fsync scoped close error: " - << errString); - } - - if (::close(handle) == -1) { - std::string errString = GetErrnoString(); - LogPedantic("Failed to scoped close error: " - << errString); - } - } - } -}; - -class ScopedClose : public ScopedResource -{ - typedef ScopedClosePolicy Policy; - typedef ScopedResource BaseType; - typedef ScopedClosePolicy::Type Type; - - public: - explicit ScopedClose(Type handle = Policy::NullValue()) : - BaseType(handle) - { } -}; -} // namespace DPL - -#endif // DPL_SCOPED_CLOSE_H diff --git a/modules_wearable/core/include/dpl/scoped_fclose.h b/modules_wearable/core/include/dpl/scoped_fclose.h deleted file mode 100644 index b029803..0000000 --- a/modules_wearable/core/include/dpl/scoped_fclose.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_fclose.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped fclose RAII - */ -#ifndef DPL_SCOPED_FCLOSE_H -#define DPL_SCOPED_FCLOSE_H - -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -struct ScopedFClosePolicy -{ - typedef FILE* Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type file) - { - if (file != NULL) { - // Try to flush first - if (TEMP_FAILURE_RETRY(fflush(file)) != 0) { - std::string errString = GetErrnoString(); - LogPedantic("Failed to fflush scoped fclose error: " - << errString); - } - - // fclose cannot be retried, try to close once - if (fclose(file) != 0) { - std::string errString = GetErrnoString(); - LogPedantic("Failed scoped fclose error: " << errString); - } - } - } -}; - -class ScopedFClose : public ScopedResource -{ - typedef ScopedFClosePolicy Policy; - typedef ScopedResource BaseType; - - public: - explicit ScopedFClose(FILE* argFileStream = Policy::NullValue()) : - BaseType(argFileStream) - {} -}; -} // namespace DPL - -#endif // DPL_SCOPED_FCLOSE_H diff --git a/modules_wearable/core/include/dpl/scoped_gpointer.h b/modules_wearable/core/include/dpl/scoped_gpointer.h deleted file mode 100644 index 6ccfd9e..0000000 --- a/modules_wearable/core/include/dpl/scoped_gpointer.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*! - * @file scoped_gpointer.h - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped_gpointer - * - * This module is deprecated and may be removed in future. - */ - -#ifndef DPL_SCOPED_GPOINTER_H -#define DPL_SCOPED_GPOINTER_H - -#include -#include -#include -#include -#include - -namespace DPL { -struct ScopedGPointerPolicy -{ - typedef gpointer Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type pointer) - { - if (pointer != NULL) { - g_object_unref(pointer); - } - } -}; - -template -class ScopedGPointer : public DPL::ScopedResource -{ - typedef ScopedGPointerPolicy Policy; - typedef DPL::ScopedResource BaseType; - - public: - explicit ScopedGPointer(typename Policy::Type pointer = - Policy::NullValue()) : - BaseType(pointer) - {} - - Class *operator->() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return static_cast(this->m_value); - } - - Class & operator *() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return *static_cast(this->m_value); - } -} DPL_DEPRECATED; -} // namespace DPL - -#endif // DPL_SCOPED_GPOINTER_H diff --git a/modules_wearable/core/include/dpl/scoped_ptr.h b/modules_wearable/core/include/dpl/scoped_ptr.h deleted file mode 100644 index 0a2d01d..0000000 --- a/modules_wearable/core/include/dpl/scoped_ptr.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file scoped_ptr.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of scoped pointer RAII - * - * This module is deprecated, please use standard C++11 feature: std::unique_ptr - */ -#ifndef DPL_SCOPED_PTR_H -#define DPL_SCOPED_PTR_H - -#include - -#include -#include -#include - -namespace DPL { -template -struct ScopedPtrPolicy -{ - typedef Class* Type; - static Type NullValue() - { - return NULL; - } - static void Destroy(Type ptr) - { - delete ptr; - } -}; - -template > -class ScopedPtr : public ScopedResource -{ - typedef ClassPolicy Policy; - typedef ScopedResource BaseType; - - public: - explicit ScopedPtr(Class *ptr = Policy::NullValue()) : BaseType(ptr) { } - - Class *operator->() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return this->m_value; - } - - Class &operator *() const throw() - { - Assert(this->m_value != Policy::NullValue() && - "Dereference of scoped NULL pointer!"); - return *this->m_value; - } -} DPL_DEPRECATED_WITH_MESSAGE("use standard C++11 feature: std::unique_ptr"); -} // namespace DPL - -#endif // DPL_SCOPED_PTR_H diff --git a/modules_wearable/core/include/dpl/shared_ptr.h b/modules_wearable/core/include/dpl/shared_ptr.h deleted file mode 100644 index 27f8b60..0000000 --- a/modules_wearable/core/include/dpl/shared_ptr.h +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file shared_ptr.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of shared pointer RAII - * - * This module is deprecated, please use standard C++11 feature: std::shared_ptr - */ -#ifndef DPL_SHARED_PTR_H -#define DPL_SHARED_PTR_H - -#include - -#include -#include -#include -#include -#include - -namespace DPL { -struct StaticPointerCastTag {}; -struct ConstPointerCastTag {}; -struct DynamicPointerCastTag {}; - -struct SharedCounter -{ - SharedCounter() : - ref(1) - {} - - Atomic ref; -}; - -template -class EnableSharedFromThis; - -template -inline void _Internal_AcceptSharedPtr(SharedCounter *counter, - Other *other, - EnableSharedFromThis *otherBase) -{ - otherBase->_Internal_AcceptSharedPtr(counter, other); -} - -struct AnyPointer -{ - template - AnyPointer(Other *) - {} -}; - -inline void _Internal_AcceptSharedPtr(SharedCounter *, AnyPointer, AnyPointer) -{} - -template -class SharedPtr -{ - public: - typedef Class ValueType; - typedef SharedPtr ThisType; - - private: - SharedCounter *m_counter; - Class *m_ptr; - - void AttachCounter(const SharedCounter *counter) - { - // Attention: R-Value const cast - m_counter = const_cast(counter); - - if (m_counter != NULL) { - ++m_counter->ref; - } - } - - void DetachCounter() - { - if (m_counter) { - if (!--m_counter->ref) { - delete m_ptr; - delete m_counter; - } - - m_counter = NULL; - m_ptr = NULL; - } - } - - public: - SharedPtr() : - m_counter(NULL), - m_ptr(NULL) - {} - - explicit SharedPtr(Class *ptr) : - m_counter(NULL), - m_ptr(ptr) - { - if (m_ptr != NULL) { - m_counter = new SharedCounter(); - _Internal_AcceptSharedPtr(m_counter, m_ptr, m_ptr); - } - } - - SharedPtr(const SharedPtr &other) : - m_counter(NULL), - m_ptr(other.m_ptr) - { - AttachCounter(other.m_counter); - } - - SharedPtr(SharedCounter *counter, Class *ptr) : - m_counter(NULL), - m_ptr(ptr) - { - AttachCounter(counter); - } - - template - friend class SharedPtr; - - template - SharedPtr(const SharedPtr &other, const StaticPointerCastTag &) : - m_counter(NULL), - m_ptr(NULL) - { - m_ptr = static_cast(other.m_ptr); - AttachCounter(other.m_counter); - } - - template - SharedPtr(const SharedPtr &other, const ConstPointerCastTag &) : - m_counter(NULL), - m_ptr(NULL) - { - m_ptr = const_cast(other.m_ptr); - AttachCounter(other.m_counter); - } - - template - SharedPtr(const SharedPtr &other, const DynamicPointerCastTag &) : - m_counter(NULL), - m_ptr(NULL) - { - Class *ptr = dynamic_cast(other.Get()); - - if (ptr == NULL) { - return; - } - - m_ptr = ptr; - AttachCounter(other.m_counter); - } - - virtual ~SharedPtr() - { - DetachCounter(); - } - - Class *Get() const - { - return m_counter == NULL ? NULL : m_ptr; - } - - Class *operator->() const - { - Assert(m_counter != NULL && "Dereference of shared NULL pointer!"); - return m_ptr; - } - - Class &operator *() const - { - Assert(m_counter != NULL && "Dereference of shared NULL pointer!"); - return *m_ptr; - } - - void Reset(Class *ptr = NULL) - { - DetachCounter(); - - if (ptr != NULL) { - m_ptr = ptr; - m_counter = new SharedCounter(); - _Internal_AcceptSharedPtr(m_counter, m_ptr, m_ptr); - } - } - - SharedPtr &operator=(const SharedPtr &other) - { - if (this != &other) { - DetachCounter(); - m_ptr = other.m_ptr; - AttachCounter(other.m_counter); - } - - return *this; - } - - Atomic::ValueType GetUseCount() const - { - if (m_counter == NULL) { - return Atomic::ValueType(0); - } - - return m_counter->ref; - } - - DPL_IMPLEMENT_BOOL_OPERATOR(ValueType, ThisType, m_counter, m_ptr) -} DPL_DEPRECATED_WITH_MESSAGE("use standard C++11 feature: std::shared_ptr"); - -template -SharedPtr StaticPointerCast(const SharedPtr &ptr) -{ - return SharedPtr(ptr, StaticPointerCastTag()); -} - -template -SharedPtr ConstPointerCast(const SharedPtr &ptr) -{ - return SharedPtr(ptr, ConstPointerCastTag()); -} - -template -SharedPtr DynamicPointerCast(const SharedPtr &ptr) -{ - return SharedPtr(ptr, DynamicPointerCastTag()); -} - -template -inline bool operator ==(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() == second.Get(); -} - -template -inline bool operator !=(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() != second.Get(); -} - -template -inline bool operator <(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() < second.Get(); -} -template -inline bool operator >(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() > second.Get(); -} - -template -inline bool operator <=(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() <= second.Get(); -} - -template -inline bool operator >=(const SharedPtr &first, - const SharedPtr &second) -{ - return first.Get() >= second.Get(); -} -} // namespace DPL - -#endif // DPL_SHARED_PTR_H diff --git a/modules_wearable/core/include/dpl/type_list.h b/modules_wearable/core/include/dpl/type_list.h deleted file mode 100644 index 88afaf2..0000000 --- a/modules_wearable/core/include/dpl/type_list.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file type_list.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Generic type list template - */ -#ifndef DPL_TYPE_LIST_H -#define DPL_TYPE_LIST_H - -#include - -namespace DPL { -class TypeListGuard -{ - public: - template - struct Element - { - struct ERROR_TypeListElementIndexIsOutOfBounds; - typedef ERROR_TypeListElementIndexIsOutOfBounds Type; - }; - - static const size_t Size = 0; -}; - -template -class TypeList -{ - private: - class DummyClass - {}; - - template - struct TypeCounter : public TypeCounter - {}; - - template - struct TypeCounter - { - static const size_t Size = Enum; - }; - - public: - typedef TailType Tail; - typedef HeadType Head; - typedef TypeList ThisType; - - template - struct Element - { - typedef typename TailType::template Element::Type Type; - }; - - template - struct Element<0, DummyType> - { - typedef HeadType Type; - }; - - template - struct Contains - { - typedef typename TailType::template Contains::Yes Yes; - }; - - template - struct Contains - { - typedef int Yes; - }; - - static const size_t Size = TypeCounter::Size; -}; - -template -struct TypeListDecl -{ - typedef TypeList::Type> Type; -}; - -template<> -struct TypeListDecl -{ - typedef TypeListGuard Type; -}; -} // namespace DPL - -#endif // DPL_TYPE_LIST_H diff --git a/modules_wearable/core/include/dpl/union_cast.h b/modules_wearable/core/include/dpl/union_cast.h deleted file mode 100644 index 3f499a4..0000000 --- a/modules_wearable/core/include/dpl/union_cast.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file union_cast.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for union cast - */ -#ifndef DPL_UNION_CAST_H -#define DPL_UNION_CAST_H - -#include - -namespace DPL { -template -TargetType union_cast(const SourceType &data) -{ - union - { - SourceType source; - TargetType target; - } cast; - - std::memset(&cast, 0, sizeof(cast)); - - cast.source = data; - return cast.target; -} -} // namespace DPL - -#endif // DPL_UNION_CAST_H diff --git a/modules_wearable/core/src/application.cpp b/modules_wearable/core/src/application.cpp deleted file mode 100644 index b2c9cc0..0000000 --- a/modules_wearable/core/src/application.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file application.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC application support - */ -#include -#include -#include - -namespace // anonymous -{ -static DPL::Application *g_application = NULL; -} // namespace anonymous - -namespace DPL { -int Application::app_create(void *data) -{ - Application *This = static_cast(data); - This->OnCreate(); - return 0; -} - -int Application::app_terminate(void *data) -{ - Application *This = static_cast(data); - This->OnTerminate(); - return 0; -} - -int Application::app_pause(void *data) -{ - Application *This = static_cast(data); - This->OnPause(); - return 0; -} - -int Application::app_resume(void *data) -{ - Application *This = static_cast(data); - This->OnResume(); - return 0; -} - -int Application::app_reset(bundle *b, void *data) -{ - Application *This = static_cast(data); - This->OnReset(b); - return 0; -} - -Application::Application(int argc, char** argv, - const std::string& applicationName, - bool showMainWindow) : - m_argc(argc), - m_argv(argv), - m_applicationName(applicationName), - m_mainWindowVisible(showMainWindow) -{ - if (g_application != NULL) { - ThrowMsg(Exception::TooManyInstances, - "Only single instance of Application allowed at one time!"); - } - - g_application = this; -} - -Application::~Application() -{ - g_application = NULL; -} - -int Application::Exec() -{ - LogPedantic("Starting application framework..."); - - struct appcore_ops ops; - ops.create = app_create; - ops.terminate = app_terminate; - ops.pause = app_pause; - ops.resume = app_resume; - ops.reset = app_reset; - ops.data = this; - - int result = appcore_efl_main( - m_applicationName.c_str(), &m_argc, &m_argv, &ops); - - LogPedantic("Exited application framework"); - - return result; -} - -void Application::OnCreate() -{ - LogPedantic("On application create"); -} - -void Application::OnStart() -{ - LogPedantic("On application start"); -} - -void Application::OnStop() -{ - LogPedantic("On application stop"); -} - -void Application::OnResume() -{ - LogPedantic("On application resume"); -} - -void Application::OnPause() -{ - LogPedantic("On application pause"); -} - -void Application::OnRelaunch() -{ - LogPedantic("On application relaunch"); -} - -void Application::OnReset(bundle *b) -{ - (void)b; - LogPedantic("On application reset"); -} - -void Application::OnTerminate() -{ - LogPedantic("On application terminate"); -} - -void Application::OnLowMemory() -{ - LogPedantic("On application low memory"); -} - -void Application::OnLowBattery() -{ - LogPedantic("On application low battery"); -} - -void Application::OnLanguageChanged() -{ - LogPedantic("On application language changed"); -} - -void Application::Quit() -{ - elm_exit(); -} - -DPL::Atomic ApplicationExt::m_useCount(0); - -ApplicationExt::ApplicationExt(int argc, - char** argv, - const std::string& applicationName, - bool showMainWindow) : - Application(argc, argv, applicationName, showMainWindow) -{} - -ApplicationExt::~ApplicationExt() -{} - -int ApplicationExt::Exec() -{ - if (0 == m_useCount.CompareAndExchange(0, 1)) { - return Application::Exec(); - } else { - elm_run(); - } - return 0; -} - -void ApplicationExt::Quit() -{ - elm_exit(); -} -} // namespace DPL diff --git a/modules_wearable/core/src/exception.cpp b/modules_wearable/core/src/exception.cpp deleted file mode 100644 index d3673e6..0000000 --- a/modules_wearable/core/src/exception.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file exception.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation of exception system - */ -#include -#include -#include -#include - -namespace DPL { -Exception* Exception::m_lastException = NULL; -unsigned int Exception::m_exceptionCount = 0; -void (*Exception::m_terminateHandler)() = NULL; - -void LogUnhandledException(const std::string &str) -{ - // Logging to console - printf("%s\n", str.c_str()); - - // Logging to dlog - LogPedantic(str); -} - -void LogUnhandledException(const std::string &str, - const char *filename, - int line, - const char *function) -{ - // Logging to console - std::ostringstream msg; - msg << "\033[1;5;31m\n=== [" << filename << ":" << line << "] " << - function << " ===\033[m"; - msg << str; - printf("%s\n", msg.str().c_str()); - - // Logging to dlog - DPL::Log::LogSystemSingleton::Instance().Error( - str.c_str(), filename, line, function); -} -} // namespace DPL diff --git a/modules_wearable/core/src/file_input.cpp b/modules_wearable/core/src/file_input.cpp deleted file mode 100644 index 36fb4b5..0000000 --- a/modules_wearable/core/src/file_input.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file file_input.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of named input pipe - */ -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace // anonymous -{ -const size_t DEFAULT_READ_BUFFER_SIZE = 4096; -} // namespace anonymous - -FileInput::FileInput() : - m_fd(-1) -{} - -FileInput::FileInput(const std::string& fileName) : - m_fd(-1) -{ - Open(fileName); -} - -FileInput::~FileInput() -{ - Close(); -} - -void FileInput::Open(const std::string& fileName) -{ - // Open non-blocking - int fd = TEMP_FAILURE_RETRY(open(fileName.c_str(), O_RDONLY | O_NONBLOCK)); - - // Throw an exception if an error occurred - if (fd == -1) { - ThrowMsg(Exception::OpenFailed, fileName); - } - - // Close if any existing - Close(); - - // Save new descriptor - m_fd = fd; - - LogPedantic("Opened file: " << fileName); -} - -void FileInput::Close() -{ - if (m_fd == -1) { - return; - } - - if (TEMP_FAILURE_RETRY(close(m_fd)) == -1) { - Throw(Exception::CloseFailed); - } - - m_fd = -1; - - LogPedantic("Closed file"); -} - -BinaryQueueAutoPtr FileInput::Read(size_t size) -{ - size_t bytesToRead = size > - DEFAULT_READ_BUFFER_SIZE ? DEFAULT_READ_BUFFER_SIZE : size; - - // Malloc default read buffer size - // It is unmanaged, so it can be then attached directly to binary queue - void *buffer = malloc(bytesToRead); - - if (buffer == NULL) { - throw std::bad_alloc(); - } - - LogPedantic("Trying to read " << bytesToRead << " bytes"); - - ssize_t result = TEMP_FAILURE_RETRY(read(m_fd, buffer, bytesToRead)); - - LogPedantic("Read " << result << " bytes from file"); - - if (result > 0) { - // Succedded to read socket data - BinaryQueueAutoPtr binaryQueue(new BinaryQueue()); - - // Append unmanaged memory - binaryQueue->AppendUnmanaged(buffer, - result, - &BinaryQueue::BufferDeleterFree, - NULL); - - // Return buffer - return binaryQueue; - } else if (result == 0) { - // Socket was gracefuly closed - free(buffer); - - // Return empty buffer - return BinaryQueueAutoPtr(new BinaryQueue()); - } else { - // Must first save errno value, because it may be altered - int lastErrno = errno; - - // Free buffer - free(buffer); - - // Interpret error result - (void)lastErrno; - - // FIXME: Handle specific errno - Throw(AbstractInput::Exception::ReadFailed); - } -} - -WaitableHandle FileInput::WaitableReadHandle() const -{ - return static_cast(m_fd); -} -} // namespace DPL diff --git a/modules_wearable/core/src/file_output.cpp b/modules_wearable/core/src/file_output.cpp deleted file mode 100644 index 8342698..0000000 --- a/modules_wearable/core/src/file_output.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file file_output.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of file output - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -FileOutput::FileOutput() : - m_fd(-1) -{} - -FileOutput::FileOutput(const std::string& fileName) : - m_fd(-1) -{ - Open(fileName); -} - -FileOutput::~FileOutput() -{ - Close(); -} - -void FileOutput::Open(const std::string& fileName) -{ - // Open non-blocking - int fd = - TEMP_FAILURE_RETRY(open(fileName.c_str(), O_WRONLY | O_CREAT | - O_TRUNC | - O_NONBLOCK, 0664)); - - // Throw an exception if an error occurred - if (fd == -1) { - ThrowMsg(Exception::OpenFailed, fileName); - } - - // Close if any existing - Close(); - - // Save new descriptor - m_fd = fd; - - LogPedantic("Opened file: " << fileName); -} - -void FileOutput::Close() -{ - if (m_fd == -1) { - return; - } - - if (TEMP_FAILURE_RETRY(close(m_fd)) == -1) { - Throw(Exception::CloseFailed); - } - - m_fd = -1; - - LogPedantic("Closed file"); -} - -size_t FileOutput::Write(const BinaryQueue &buffer, size_t bufferSize) -{ - // Adjust write size - if (bufferSize > buffer.Size()) { - bufferSize = buffer.Size(); - } - - // FIXME: User write visitor to write ! - // WriteVisitor visitor - - ScopedFree flattened(malloc(bufferSize)); - buffer.Flatten(flattened.Get(), bufferSize); - - LogPedantic("Trying to write " << bufferSize << " bytes"); - - ssize_t result = TEMP_FAILURE_RETRY(write(m_fd, flattened.Get(), bufferSize)); - - LogPedantic("Wrote " << result << " bytes to file"); - - if (result > 0) { - // Successfuly written some bytes - return static_cast(result); - } else if (result == 0) { - // This is abnormal result - ThrowMsg(CommonException::InternalError, - "Invalid write result, 0 bytes written"); - } else { - // Interpret error result - // FIXME: Handle errno - Throw(AbstractOutput::Exception::WriteFailed); - } -} - -WaitableHandle FileOutput::WaitableWriteHandle() const -{ - return static_cast(m_fd); -} -} // namespace DPL diff --git a/modules_wearable/core/src/main.cpp b/modules_wearable/core/src/main.cpp deleted file mode 100644 index 1d0326b..0000000 --- a/modules_wearable/core/src/main.cpp +++ /dev/null @@ -1,473 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file main.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of main for EFL - */ -#include -#include -#include -#include -#include -#include -#include -#include - -IMPLEMENT_SINGLETON(DPL::Main) - -namespace DPL { -namespace // anonymous -{ -// Late EFL event handling -Main *g_lateMain = NULL; -} // namespace anonymous - -Main::Main() -#ifdef DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND -// GLIB loop intergration workaround - : m_oldEcoreSelect(NULL) -#endif // DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND -{ - // Late EFL event handling - Assert(g_lateMain == NULL); - g_lateMain = this; - - // Increment ECORE init count to ensure we have all - // subsystems correctly set-up until main dispatcher dtor - // This is especially important when MainEventDispatcher - // is a global object destroyed no earlier than crt destroy routine - ecore_init(); - -#ifdef DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND - // GLIB loop intergration workaround - union ConvertPointer - { - Ecore_Select_Function pointer; - EcoreSelectType function; - } convert; - - convert.pointer = ecore_main_loop_select_func_get(); - m_oldEcoreSelect = convert.function; - - ecore_main_loop_select_func_set(&EcoreSelectInterceptor); -#endif // DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND - - // Register event invoker - m_invokerHandler = ecore_main_fd_handler_add( - WaitableHandleWatchSupport::WaitableInvokerHandle(), - ECORE_FD_READ, - &StaticDispatchInvoker, - this, - NULL, - NULL); - - if (m_invokerHandler == NULL) { - ThrowMsg(Exception::CreateFailed, "Failed to register invoker handler!"); - } - - // It is impossible that there exist watchers at this time - // No need to add watchers - LogPedantic("ECORE event handler registered"); -} - -Main::~Main() -{ - // Remove any watchers - for (EcoreFdHandlerList::iterator iterator = m_readWatchersList.begin(); - iterator != m_readWatchersList.end(); - ++iterator) - { - ecore_main_fd_handler_del(*iterator); - } - - m_readWatchersList.clear(); - - for (EcoreFdHandlerList::iterator iterator = m_writeWatchersList.begin(); - iterator != m_writeWatchersList.end(); - ++iterator) - { - ecore_main_fd_handler_del(*iterator); - } - - m_writeWatchersList.clear(); - - // Remove event invoker - ecore_main_fd_handler_del(m_invokerHandler); - m_invokerHandler = NULL; - - //set old ecore select function, because after ecore_shutdown() call, - //it is being called once again and it may crash. - ecore_main_loop_select_func_set(m_oldEcoreSelect); - // Decrement ECORE init count - // We do not need ecore routines any more - ecore_shutdown(); - - // Late EFL event handling - Assert(g_lateMain == this); - g_lateMain = NULL; -} - -Eina_Bool Main::StaticDispatchInvoker(void *data, Ecore_Fd_Handler *fd_handler) -{ - LogPedantic("Static ECORE dispatch invoker"); - - Main *This = static_cast
(data); - (void)fd_handler; - - Assert(This != NULL); - - // Late EFL event handling - if (g_lateMain == NULL) { - LogPedantic("WARNING: Late EFL invoker dispatch!"); - } else { - This->DispatchInvoker(); - } - - return ECORE_CALLBACK_RENEW; -} - -Eina_Bool Main::StaticDispatchReadWatcher(void* data, - Ecore_Fd_Handler* fd_handler) -{ - LogPedantic("Static ECORE dispatch read watcher"); - - Main *This = static_cast
(data); - - Assert(This != NULL); - - // Late EFL event handling - if (g_lateMain == NULL) { - LogPedantic("WARNING: Late EFL read watcher dispatch!"); - } else { - This->DispatchReadWatcher(static_cast( - ecore_main_fd_handler_fd_get(fd_handler))); - } - - return ECORE_CALLBACK_RENEW; -} - -Eina_Bool Main::StaticDispatchWriteWatcher(void* data, - Ecore_Fd_Handler* fd_handler) -{ - LogPedantic("Static ECORE dispatch write watcher"); - - Main *This = static_cast
(data); - - Assert(This != NULL); - - // Late EFL event handling - if (g_lateMain == NULL) { - LogPedantic("WARNING: Late EFL write watcher dispatch!"); - } else { - This->DispatchWriteWatcher(static_cast( - ecore_main_fd_handler_fd_get(fd_handler))); - } - - return ECORE_CALLBACK_RENEW; -} - -void Main::DispatchInvoker() -{ - LogPedantic("Dispatching invoker..."); - - // Reload watch list - ReloadWatchList(); - - // Handle base invoker - WaitableHandleWatchSupport::InvokerFinished(); - - LogPedantic("Invoker dispatched"); -} - -void Main::ReloadWatchList() -{ - LogPedantic( - "Reloading watch list... (" << m_readWatchersList.size() << " + " << - m_writeWatchersList.size() << ")"); - - // Reload list of watchers - WaitableHandleListEx waitableWatcherHandles = - WaitableHandleWatchSupport::WaitableWatcherHandles(); - - // Remove not existing read watchers - EcoreFdHandlerList::iterator watchersIterator = m_readWatchersList.begin(); - WaitableHandleListEx::iterator handlesIterator; - - while (watchersIterator != m_readWatchersList.end()) { - bool found = false; - - for (handlesIterator = waitableWatcherHandles.begin(); - handlesIterator != waitableWatcherHandles.end(); - ++handlesIterator) - { - if (handlesIterator->second == WaitMode::Read && - handlesIterator->first == - static_cast(ecore_main_fd_handler_fd_get(* - watchersIterator))) - { - found = true; - break; - } - } - - if (!found) { - // Unregister handler - ecore_main_fd_handler_del(*watchersIterator); - - // Remove iterator - EcoreFdHandlerList::iterator next = watchersIterator; - ++next; - - m_readWatchersList.erase(watchersIterator); - watchersIterator = next; - } else { - ++watchersIterator; - } - } - - // Remove not existing write watchers - watchersIterator = m_writeWatchersList.begin(); - - while (watchersIterator != m_writeWatchersList.end()) { - bool found = false; - - for (handlesIterator = waitableWatcherHandles.begin(); - handlesIterator != waitableWatcherHandles.end(); - ++handlesIterator) - { - if (handlesIterator->second == WaitMode::Write && - handlesIterator->first == - static_cast(ecore_main_fd_handler_fd_get(* - watchersIterator))) - { - found = true; - break; - } - } - - if (!found) { - // Unregister handler - ecore_main_fd_handler_del(*watchersIterator); - - // Remove iterator - EcoreFdHandlerList::iterator next = watchersIterator; - ++next; - - m_writeWatchersList.erase(watchersIterator); - watchersIterator = next; - } else { - ++watchersIterator; - } - } - - // Add new read/write watchers - for (handlesIterator = waitableWatcherHandles.begin(); - handlesIterator != waitableWatcherHandles.end(); - ++handlesIterator) - { - if (handlesIterator->second == WaitMode::Read) { - bool found = false; - - for (watchersIterator = m_readWatchersList.begin(); - watchersIterator != m_readWatchersList.end(); - ++watchersIterator) - { - if (handlesIterator->first == - static_cast(ecore_main_fd_handler_fd_get(* - watchersIterator))) - { - found = true; - break; - } - } - - if (!found) { - Ecore_Fd_Handler *handler = ecore_main_fd_handler_add( - handlesIterator->first, - ECORE_FD_READ, - &StaticDispatchReadWatcher, - this, - NULL, - NULL); - if (handler == NULL) { - ThrowMsg(Exception::CreateFailed, - "Failed to register read watcher handler!"); - } - - // Push new watcher to list - m_readWatchersList.push_back(handler); - } - } else if (handlesIterator->second == WaitMode::Write) { - bool found = false; - - for (watchersIterator = m_writeWatchersList.begin(); - watchersIterator != m_writeWatchersList.end(); - ++watchersIterator) - { - if (handlesIterator->first == - static_cast(ecore_main_fd_handler_fd_get(* - watchersIterator))) - { - found = true; - break; - } - } - - if (!found) { - Ecore_Fd_Handler *handler = ecore_main_fd_handler_add( - handlesIterator->first, - ECORE_FD_WRITE, - &StaticDispatchWriteWatcher, - this, - NULL, - NULL); - if (handler == NULL) { - ThrowMsg(Exception::CreateFailed, - "Failed to register write watcher handler!"); - } - - // Push new watcher to list - m_writeWatchersList.push_back(handler); - } - } else { - Assert(0); - } - } - - LogPedantic( - "Watch list reloaded (" << m_readWatchersList.size() << " + " << - m_writeWatchersList.size() << ")"); -} - -void Main::DispatchReadWatcher(WaitableHandle waitableHandle) -{ - LogPedantic("Dispatching read watcher..."); - - // Handle watcher - WaitableHandleWatchSupport::HandleWatcher(waitableHandle, WaitMode::Read); - - LogPedantic("Watcher dispatched"); -} - -void Main::DispatchWriteWatcher(WaitableHandle waitableHandle) -{ - LogPedantic("Dispatching write watcher..."); - - // Handle watcher - WaitableHandleWatchSupport::HandleWatcher(waitableHandle, WaitMode::Write); - - LogPedantic("Watcher dispatched"); -} - -Thread *Main::GetInvokerThread() -{ - return NULL; -} - -void Main::HandleDirectInvoker() -{ - // Handle direct invoker - ReloadWatchList(); -} - -#ifdef DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND -// GLIB loop intergration workaround -int Main::EcoreSelectInterceptor(int nfds, - fd_set *readfds, - fd_set *writefds, - fd_set *exceptfds, - struct timeval *timeout) -{ - // We have to check error code here and make another try because of some - // glib error's. - fd_set rfds, wfds, efds; - memcpy(&rfds, readfds, sizeof(fd_set)); - memcpy(&wfds, writefds, sizeof(fd_set)); - memcpy(&efds, exceptfds, sizeof(fd_set)); - - int ret = MainSingleton::Instance().m_oldEcoreSelect(nfds, - readfds, - writefds, - exceptfds, - timeout); - - if (ret == -1) { - // Check each descriptor to see if it is valid - for (int i = 0; i < nfds; i++) { - if (FD_ISSET(i, - readfds) || - FD_ISSET(i, writefds) || FD_ISSET(i, exceptfds)) - { - // Try to get descriptor flags - int result = fcntl(i, F_GETFL); - - if (result == -1) { - if (errno == EBADF) { - // This a bad descriptor. Remove all occurrences of it. - if (FD_ISSET(i, readfds)) { - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad read descriptor: " - << i); - FD_CLR(i, readfds); - } - - if (FD_ISSET(i, writefds)) { - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad write descriptor: " - << i); - FD_CLR(i, writefds); - } - - if (FD_ISSET(i, exceptfds)) { - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad exception descriptor: " - << i); - FD_CLR(i, exceptfds); - } - } else { - // Unexpected error - Assert(0); - } - } - } - } - - LogPedantic( - "GLIB_LOOP_INTEGRATION_WORKAROUND: Bad read descriptor. Retrying with default select."); - - //Retry with old values and return new error - memcpy(readfds, &rfds, sizeof(fd_set)); - memcpy(writefds, &wfds, sizeof(fd_set)); - memcpy(exceptfds, &efds, sizeof(fd_set)); - - // Trying to do it very short - timeval tm; - tm.tv_sec = 0; - tm.tv_usec = 10; - - if (timeout) { - ret = select(nfds, readfds, writefds, exceptfds, &tm); - } else { - ret = select(nfds, readfds, writefds, exceptfds, NULL); - } - } - - return ret; -} -#endif // DPL_ENABLE_GLIB_LOOP_INTEGRATION_WORKAROUND -} // namespace DPL diff --git a/modules_wearable/core/src/mutex.cpp b/modules_wearable/core/src/mutex.cpp deleted file mode 100644 index eed1f2e..0000000 --- a/modules_wearable/core/src/mutex.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file mutex.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of mutex - */ -#include -#include -#include -#include -#include - -namespace DPL { -Mutex::Mutex() -{ - if (pthread_mutex_init(&m_mutex, NULL) != 0) { - int error = errno; - - LogPedantic("Failed to create mutex. Errno: " << error); - - ThrowMsg(Exception::CreateFailed, - "Failed to create mutex. Errno: " << error); - } -} - -Mutex::~Mutex() -{ - if (pthread_mutex_destroy(&m_mutex) != 0) { - int error = errno; - - LogPedantic("Failed to destroy mutex. Errno: " << error); - } -} - -void Mutex::Lock() const -{ - if (pthread_mutex_lock(&m_mutex) != 0) { - int error = errno; - - LogPedantic("Failed to lock mutex. Errno: " << error); - - ThrowMsg(Exception::LockFailed, - "Failed to lock mutex. Errno: " << error); - } -} - -void Mutex::Unlock() const -{ - if (pthread_mutex_unlock(&m_mutex) != 0) { - int error = errno; - - LogPedantic("Failed to unlock mutex. Errno: " << error); - - ThrowMsg(Exception::UnlockFailed, - "Failed to unlock mutex. Errno: " << error); - } -} - -Mutex::ScopedLock::ScopedLock(Mutex *mutex) : - m_mutex(mutex) -{ - Assert(mutex != NULL); - m_mutex->Lock(); -} - -Mutex::ScopedLock::~ScopedLock() -{ - Try - { - m_mutex->Unlock(); - } - Catch(Mutex::Exception::UnlockFailed) - { - LogPedantic("Failed to leave mutex scoped lock"); - } -} -} // namespace DPL diff --git a/modules_wearable/core/src/once.cpp b/modules_wearable/core/src/once.cpp deleted file mode 100644 index f2d4a1a..0000000 --- a/modules_wearable/core/src/once.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file once.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of once - */ -#include -#include - -namespace DPL { -void Once::Call(Delegate delegate) -{ - // First chance test - if (m_atomic == 1) { - return; - } - - // Enter mutex - Mutex::ScopedLock lock(&m_mutex); - - // Second chance test - if (m_atomic == 1) { - return; - } - - // Initialization: call delegate - delegate(); - - // Initialization: done - ++m_atomic; -} -} // namespace DPL diff --git a/modules_wearable/core/src/scoped_dir.cpp b/modules_wearable/core/src/scoped_dir.cpp deleted file mode 100644 index 96550e6..0000000 --- a/modules_wearable/core/src/scoped_dir.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file scoped_dir.cpp - * @author Iwanek Tomasz (t.iwanek@samsung.com) - * @version 1.0 - * @brief This file is the implementation scoped directory - */ -#include -#include -#include - -#include -#include -#include - -namespace { - -bool removeRecusive(const char * path) -{ - FTS *fts; - FTSENT *ftsent; - bool rv = true; - char * const paths[] = { const_cast(path), NULL }; - if ((fts = fts_open(paths, FTS_PHYSICAL | FTS_NOCHDIR, NULL)) == NULL) { - return false; - } - while ((ftsent = fts_read(fts)) != NULL) { - switch (ftsent->fts_info) { - case FTS_D: - break; - case FTS_DP: - if (rmdir(ftsent->fts_accpath) != 0) { - rv = false; - } - break; - case FTS_DC: - case FTS_F: - case FTS_NSOK: - case FTS_SL: - case FTS_SLNONE: - case FTS_DEFAULT: - if (unlink(ftsent->fts_accpath) != 0) { - rv = false; - } - break; - case FTS_NS: - rv = false; - break; - case FTS_DOT: - case FTS_DNR: - case FTS_ERR: - default: - rv = false; - break; - } - } - if (fts_close(fts) == -1) { - rv = false; - } - return rv; -} - -} - -namespace DPL { - -ScopedDirPolicy::Type ScopedDirPolicy::NullValue() -{ - return std::string(); -} - -void ScopedDirPolicy::Destroy(Type str) -{ - if(!str.empty()) - { - bool status = removeRecusive(str.c_str()); - if(!status) - { - LogError("Error while removing recursively: " << str); - } - } -} - -ScopedDir::ScopedDir(const std::string & str, mode_t mode) : BaseType(str) -{ - if(!str.empty()) - { - if (mkdir(str.c_str(), mode) == -1) - { - std::string errstr = DPL::GetErrnoString(); - LogError("Error while creating directory: " << str - << " [" << errstr << "]"); - } - } -} - -} // namespace DPL - diff --git a/modules_wearable/core/src/string.cpp b/modules_wearable/core/src/string.cpp deleted file mode 100644 index e81ae22..0000000 --- a/modules_wearable/core/src/string.cpp +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file string.cpp - * @author Piotr Marcinkiewicz (p.marcinkiew@samsung.com) - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// TODO: Completely move to ICU -namespace DPL { -namespace //anonymous -{ -class ASCIIValidator -{ - const std::string& m_TestedString; - - public: - ASCIIValidator(const std::string& aTestedString); - - void operator()(char aCharacter) const; -}; - -ASCIIValidator::ASCIIValidator(const std::string& aTestedString) : - m_TestedString(aTestedString) -{} - -void ASCIIValidator::operator()(char aCharacter) const -{ - // Check for ASCII data range - if (aCharacter <= 0) { - ThrowMsg( - StringException::InvalidASCIICharacter, - "invalid character code " << static_cast(aCharacter) - << " from string [" << - m_TestedString - << "] passed as ASCII"); - } -} - -const iconv_t gc_IconvOperError = reinterpret_cast(-1); -const size_t gc_IconvConvertError = static_cast(-1); -} // namespace anonymous - -String FromUTF8String(const std::string& aIn) -{ - if (aIn.empty()) { - return String(); - } - - size_t inbytes = aIn.size(); - - // Default iconv UTF-32 module adds BOM (4 bytes) in from of string - // The worst case is when 8bit UTF-8 char converts to 32bit UTF-32 - // newsize = oldsize * 4 + end + bom - // newsize - bytes for UTF-32 string - // oldsize - letters in UTF-8 string - // end - end character for UTF-32 (\0) - // bom - Unicode header in front of string (0xfeff) - size_t outbytes = sizeof(wchar_t) * (inbytes + 2); - std::vector output(inbytes + 2, 0); - - size_t outbytesleft = outbytes; - char* inbuf = const_cast(aIn.c_str()); - - // vector is used to provide buffer for iconv which expects char* buffer - // but during conversion from UTF32 uses internaly wchar_t - char* outbuf = reinterpret_cast(&output[0]); - - iconv_t iconvHandle = iconv_open("UTF-32", "UTF-8"); - - if (gc_IconvOperError == iconvHandle) { - int error = errno; - - ThrowMsg(StringException::IconvInitErrorUTF8ToUTF32, - "iconv_open failed for " << "UTF-32 <- UTF-8" << - "error: " << GetErrnoString(error)); - } - - size_t iconvRet = iconv(iconvHandle, - &inbuf, - &inbytes, - &outbuf, - &outbytesleft); - - iconv_close(iconvHandle); - - if (gc_IconvConvertError == iconvRet) { - ThrowMsg(StringException::IconvConvertErrorUTF8ToUTF32, - "iconv failed for " << "UTF-32 <- UTF-8" << "error: " - << GetErrnoString()); - } - - // Ignore BOM in front of UTF-32 - return &output[1]; -} - -std::string ToUTF8String(const DPL::String& aIn) -{ - if (aIn.empty()) { - return std::string(); - } - - size_t inbytes = aIn.size() * sizeof(wchar_t); - size_t outbytes = inbytes + sizeof(char); - - // wstring returns wchar_t but iconv expects char* - // iconv internally is processing input as wchar_t - char* inbuf = reinterpret_cast(const_cast(aIn.c_str())); - std::vector output(inbytes, 0); - char* outbuf = &output[0]; - - size_t outbytesleft = outbytes; - - iconv_t iconvHandle = iconv_open("UTF-8", "UTF-32"); - - if (gc_IconvOperError == iconvHandle) { - ThrowMsg(StringException::IconvInitErrorUTF32ToUTF8, - "iconv_open failed for " << "UTF-8 <- UTF-32" - << "error: " << GetErrnoString()); - } - - size_t iconvRet = iconv(iconvHandle, - &inbuf, - &inbytes, - &outbuf, - &outbytesleft); - - iconv_close(iconvHandle); - - if (gc_IconvConvertError == iconvRet) { - ThrowMsg(StringException::IconvConvertErrorUTF32ToUTF8, - "iconv failed for " << "UTF-8 <- UTF-32" - << "error: " << GetErrnoString()); - } - - return &output[0]; -} - -String FromASCIIString(const std::string& aString) -{ - String output; - - std::for_each(aString.begin(), aString.end(), ASCIIValidator(aString)); - std::copy(aString.begin(), aString.end(), std::back_inserter(output)); - - return output; -} - -String FromUTF32String(const std::wstring& aString) -{ - return String(&aString[0]); -} - -static UChar *ConvertToICU(const String &inputString) -{ - ScopedArray outputString; - int32_t size = 0; - int32_t convertedSize = 0; - UErrorCode error = U_ZERO_ERROR; - - // Calculate size of output string - ::u_strFromWCS(NULL, - 0, - &size, - inputString.c_str(), - -1, - &error); - - if (error == U_ZERO_ERROR || - error == U_BUFFER_OVERFLOW_ERROR) - { - // What buffer size is ok ? - LogPedantic("ICU: Output buffer size: " << size); - } else { - ThrowMsg(StringException::ICUInvalidCharacterFound, - "ICU: Failed to retrieve output string size. Error: " - << error); - } - - // Allocate proper buffer - outputString.Reset(new UChar[size + 1]); - ::memset(outputString.Get(), 0, sizeof(UChar) * (size + 1)); - - error = U_ZERO_ERROR; - - // Do conversion - ::u_strFromWCS(outputString.Get(), - size + 1, - &convertedSize, - inputString.c_str(), - -1, - &error); - - if (!U_SUCCESS(error)) { - ThrowMsg(StringException::ICUInvalidCharacterFound, - "ICU: Failed to convert string. Error: " << error); - } - - // Done - return outputString.Release(); -} - -int StringCompare(const String &left, - const String &right, - bool caseInsensitive) -{ - // Convert input strings - ScopedArray leftICU(ConvertToICU(left)); - ScopedArray rightICU(ConvertToICU(right)); - - if (caseInsensitive) { - return static_cast(u_strcasecmp(leftICU.Get(), rightICU.Get(), 0)); - } else { - return static_cast(u_strcmp(leftICU.Get(), rightICU.Get())); - } -} -} //namespace DPL - -std::ostream& operator<<(std::ostream& aStream, const DPL::String& aString) -{ - return aStream << DPL::ToUTF8String(aString); -} diff --git a/modules_wearable/core/src/thread.cpp b/modules_wearable/core/src/thread.cpp deleted file mode 100644 index 0e75810..0000000 --- a/modules_wearable/core/src/thread.cpp +++ /dev/null @@ -1,623 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file thread.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of thread - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace // anonymous -{ -static const size_t NANOSECONDS_PER_SECOND = - static_cast(1000 * 1000 * 1000); - -static const size_t NANOSECONDS_PER_MILISECOND = - static_cast(1000 * 1000); - -static const size_t NANOSECONDS_PER_MICROSECOND = - static_cast(1000); - -static const pthread_t g_mainThread = pthread_self(); - -class ThreadSpecific -{ - public: - pthread_key_t threadSpecific; - - ThreadSpecific() : - threadSpecific(0) - { - threadSpecific = 0; - pthread_key_create(&threadSpecific, NULL); - } - - virtual ~ThreadSpecific() - { - pthread_key_delete(threadSpecific); - } -}; - -static ThreadSpecific g_threadSpecific; -} // namespace anonymous - -namespace DPL { -bool g_TLSforMainCreated = false; - -Thread::Thread() : - m_thread(0), - m_abandon(false), - m_running(false), - m_directInvoke(false) -{} - -Thread::~Thread() -{ - // Ensure that we quit thread - // Always wait thread by yourself; if thread is still running - // this may be sometimes very bad. When derived, some resources - // may leak or be doubly freed - Quit(); - - // Remove any remainig events - // Thread proc is surely not running now - for (InternalEventList::iterator iterator = m_eventList.begin(); - iterator != m_eventList.end(); - ++iterator) - { - iterator->eventDeleteProc(iterator->event, iterator->userParam); - } - - m_eventList.clear(); -} - -bool Thread::IsMainThread() -{ - return (pthread_equal(pthread_self(), g_mainThread)); -} - -Thread *Thread::GetCurrentThread() -{ - if (pthread_equal(pthread_self(), g_mainThread)) { - return NULL; - } - - void *threadSpecific = pthread_getspecific(g_threadSpecific.threadSpecific); - - // Is this a managed thread ? - if (threadSpecific == NULL) { - Throw(Exception::UnmanagedThread); - } - - return static_cast(threadSpecific); -} - -void *Thread::StaticThreadEntry(void *param) -{ - LogPedantic("Entered static thread entry"); - - // Retrieve context - Thread *This = static_cast(param); - Assert(This != NULL); - - // Set thread specific - int result = pthread_setspecific(g_threadSpecific.threadSpecific, This); - - if (result != 0) { - LogError("Failed to set threadSpecific. Error: " << strerror(result)); - } - - // Enter thread proc - // Do not allow exceptions to hit pthread core - UNHANDLED_EXCEPTION_HANDLER_BEGIN - { - This->ThreadEntry(); - } - UNHANDLED_EXCEPTION_HANDLER_END - - // Critical section - { - // Leave running state - Mutex::ScopedLock lock(&This->m_stateMutex); - - This->m_running = false; - - // Abandon thread - if (This->m_abandon) { - LogPedantic("Thread was abandoned"); - pthread_detach(This->m_thread); - } else { - LogPedantic("Thread is joinable"); - } - } - - return NULL; -} - -int Thread::ThreadEntry() -{ - LogPedantic("Entered default thread entry"); - return Exec(); -} - -void Thread::ProcessEvents() -{ - LogPedantic("Processing events"); - - // Steal current event list - InternalEventList stolenEvents; - - // Enter event list critical section - { - Mutex::ScopedLock lock(&m_eventMutex); - m_eventList.swap(stolenEvents); - m_eventInvoker.Reset(); - } - - // Process event list - LogPedantic("Stolen " << stolenEvents.size() << " internal events"); - - for (InternalEventList::iterator iterator = stolenEvents.begin(); - iterator != stolenEvents.end(); - ++iterator) - { - // Dispatch immediate event - iterator->eventDispatchProc(iterator->event, iterator->userParam); - - // Delete event - iterator->eventDeleteProc(iterator->event, iterator->userParam); - } -} - -void Thread::ProcessTimedEvents() -{ - // Critical section on timed events mutex - { - Mutex::ScopedLock lock(&m_timedEventMutex); - - // Get current time - unsigned long currentTimeMiliseconds = GetCurrentTimeMiliseconds(); - - // Info - LogPedantic( - "Processing timed events. Time now: " << currentTimeMiliseconds << - " ms"); - - // All timed events are sorted chronologically - // Emit timed out events - while (!m_timedEventVector.empty() && - currentTimeMiliseconds >= - m_timedEventVector.begin()->registerTimeMiliseconds + - m_timedEventVector.begin()->dueTimeMiliseconds) - { - // Info - LogPedantic( - "Transforming timed event into immediate event. Absolute due time: " - << - (m_timedEventVector.begin()->registerTimeMiliseconds + - m_timedEventVector.begin()->dueTimeMiliseconds) << - " ms"); - - // Emit immediate event - PushEvent(m_timedEventVector.begin()->event, - m_timedEventVector.begin()->eventDispatchProc, - m_timedEventVector.begin()->eventDeleteProc, - m_timedEventVector.begin()->userParam); - - // Remove timed eventand fix heap - std::pop_heap(m_timedEventVector.begin(), m_timedEventVector.end()); - m_timedEventVector.pop_back(); - } - } -} - -unsigned long Thread::GetCurrentTimeMiliseconds() const -{ - timeval tv; - gettimeofday(&tv, NULL); - return static_cast(tv.tv_sec) * 1000 + - static_cast(tv.tv_usec) / 1000; -} - -int Thread::Exec() -{ - LogPedantic("Executing thread event processing"); - - const std::size_t MIN_HANDLE_LIST_SIZE = 4; - - // Start processing of events - WaitableHandleListEx handleList; - - // index 0: Quit waitable event handle - handleList.push_back(std::make_pair(m_quitEvent.GetHandle(), WaitMode::Read)); - - // index 1: Event occurred event handle - handleList.push_back(std::make_pair(m_eventInvoker.GetHandle(), - WaitMode::Read)); - - // index 2: Timed event occurred event handle - handleList.push_back(std::make_pair(m_timedEventInvoker.GetHandle(), - WaitMode::Read)); - - // index 3: Waitable handle watch support invoker - handleList.push_back(std::make_pair(WaitableHandleWatchSupport:: - WaitableInvokerHandle(), - WaitMode::Read)); - - // - // Watch list might have been initialized before threaded started - // Need to fill waitable event watch list in this case - // - { - WaitableHandleListEx waitableHandleWatchHandles = - WaitableHandleWatchSupport::WaitableWatcherHandles(); - std::copy( - waitableHandleWatchHandles.begin(), - waitableHandleWatchHandles.end(), std::back_inserter(handleList)); - } - - // Quit flag - bool quit = false; - - while (!quit) { - // Retrieve minimum wait time, according to timed events list - unsigned long minimumWaitTime; - - // Critical section on timed events mutex - { - Mutex::ScopedLock lock(&m_timedEventMutex); - - if (!m_timedEventVector.empty()) { - unsigned long currentTimeMiliseconds = - GetCurrentTimeMiliseconds(); - unsigned long destinationTimeMiliseconds = - m_timedEventVector.begin()->registerTimeMiliseconds + - m_timedEventVector.begin()->dueTimeMiliseconds; - - // Are we already late with timed event ? - if (currentTimeMiliseconds > destinationTimeMiliseconds) { - minimumWaitTime = 0; - } else { - minimumWaitTime = destinationTimeMiliseconds - - currentTimeMiliseconds; - } - } else { - minimumWaitTime = 0xFFFFFFFF; // Infinity - } - } - - // Info - LogPedantic( - "Thread loop minimum wait time: " << minimumWaitTime << " ms"); - - // Do thread waiting - WaitableHandleIndexList waitableHandleIndexList = - WaitForMultipleHandles(handleList, minimumWaitTime); - - if (waitableHandleIndexList.empty()) { - // Timeout occurred. Process timed events. - LogPedantic("Timed event list elapsed invoker"); - ProcessTimedEvents(); - continue; - } - - // Go through each index - for (WaitableHandleIndexList::const_iterator - waitableHandleIndexIterator = waitableHandleIndexList.begin(); - waitableHandleIndexIterator != waitableHandleIndexList.end(); - ++waitableHandleIndexIterator) - { - size_t index = *waitableHandleIndexIterator; - - LogPedantic("Event loop triggered with index: " << index); - - switch (index) { - case 0: - // Quit waitable event handle - quit = true; - break; - - case 1: - // Event occurred event handle - ProcessEvents(); - - // Handle direct invoker - if (m_directInvoke) { - m_directInvoke = false; - - LogPedantic("Handling direct invoker"); - - // Update list - while (handleList.size() > MIN_HANDLE_LIST_SIZE) { - handleList.pop_back(); - } - - // Insert current waitable event handles instead - { - WaitableHandleListEx waitableHandleWatchHandles = - WaitableHandleWatchSupport::WaitableWatcherHandles(); - std::copy( - waitableHandleWatchHandles.begin(), - waitableHandleWatchHandles.end(), - std::back_inserter(handleList)); - } - } - - // Done - break; - - case 2: - // Timed event list changed - LogPedantic("Timed event list changed invoker"); - ProcessTimedEvents(); - - // Reset timed event invoker - m_timedEventInvoker.Reset(); - - // Done - break; - - case 3: - // Waitable handle watch support invoker - LogPedantic("Waitable handle watch invoker event occurred"); - - // First, remove all previous handles - while (handleList.size() > MIN_HANDLE_LIST_SIZE) { - handleList.pop_back(); - } - - // Insert current waitable event handles instead - { - WaitableHandleListEx waitableHandleWatchHandles = - WaitableHandleWatchSupport::WaitableWatcherHandles(); - std::copy( - waitableHandleWatchHandles.begin(), - waitableHandleWatchHandles.end(), - std::back_inserter(handleList)); - } - - // Handle invoker in waitable watch support - WaitableHandleWatchSupport::InvokerFinished(); - - LogPedantic("Waitable handle watch invoker event handled"); - - // Done - break; - - default: - // Waitable event watch list - LogPedantic("Waitable handle watch event occurred"); - - // Handle event in waitable handle watch - { - std::pair handle = handleList[index]; - WaitableHandleWatchSupport::HandleWatcher(handle.first, - handle.second); - } - - if (m_directInvoke) { - m_directInvoke = false; - - LogPedantic("Handling direct invoker"); - - // Update list - while (handleList.size() > MIN_HANDLE_LIST_SIZE) { - handleList.pop_back(); - } - - // Insert current waitable event handles instead - { - WaitableHandleListEx waitableHandleWatchHandles = - WaitableHandleWatchSupport:: - WaitableWatcherHandles(); - std::copy(waitableHandleWatchHandles.begin(), - waitableHandleWatchHandles.end(), - std::back_inserter(handleList)); - } - } - - LogPedantic("Waitable handle watch event handled"); - - // Done - break; - } - } - } - - LogPedantic("Leaving thread event processing"); - return 0; -} - -void Thread::Run() -{ - LogPedantic("Running thread"); - - // Critical section - { - Mutex::ScopedLock lock(&m_stateMutex); - - if (m_running) { - return; - } - - // Try to create new thread - if (pthread_create(&m_thread, NULL, &StaticThreadEntry, this) != 0) { - Throw(Exception::RunFailed); - } - - // At default, we abandon thread - m_abandon = true; - - // Enter running state - m_running = true; - } - - LogPedantic("Thread run"); -} - -void Thread::Quit() -{ - pthread_t joinableThread; - - // Critical section - { - Mutex::ScopedLock lock(&m_stateMutex); - - // Is thread running ? - if (!m_running) { - return; - } - - LogPedantic("Quitting thread..."); - - // Do not abandon thread, we will join - m_abandon = false; - - // Singal quit waitable event - m_quitEvent.Signal(); - - // Copy joinable thread identifier, because - // we are leaving critical section - joinableThread = m_thread; - } - - // Wait for joinable thread - void *result; - - if (pthread_join(joinableThread, &result) != 0) { - Throw(Exception::QuitFailed); - } - - LogPedantic("Thread quit"); -} - -void Thread::PushEvent(void *event, - EventDispatchProc eventDispatchProc, - EventDeleteProc eventDeleteProc, - void *userParam) -{ - // Enter event list critical section - Mutex::ScopedLock lock(&m_eventMutex); - - // Push new event - m_eventList.push_back(InternalEvent(event, userParam, eventDispatchProc, - eventDeleteProc)); - - // Trigger invoker - m_eventInvoker.Signal(); - - LogPedantic("Event pushed and invoker signaled"); -} - -void Thread::PushTimedEvent(void *event, - double dueTimeSeconds, - EventDispatchProc eventDispatchProc, - EventDeleteProc eventDeleteProc, - void *userParam) -{ - // Check for developer errors - Assert(dueTimeSeconds >= 0.0); - - // Enter timed event list critical section - Mutex::ScopedLock lock(&m_timedEventMutex); - - // Get current time - unsigned long currentTimeMiliseconds = GetCurrentTimeMiliseconds(); - - // Convert to miliseconds - unsigned long dueTimeMiliseconds = - static_cast(1000.0 * dueTimeSeconds); - - // Push new timed event - m_timedEventVector.push_back(InternalTimedEvent(event, userParam, - dueTimeMiliseconds, - currentTimeMiliseconds, - eventDispatchProc, - eventDeleteProc)); - - // Heapify timed events - std::make_heap(m_timedEventVector.begin(), m_timedEventVector.end()); - - // Trigger invoker - m_timedEventInvoker.Signal(); - - LogPedantic( - "Timed event pushed and invoker signaled: due time: " << - dueTimeMiliseconds << " ms, absolute due time: " << - currentTimeMiliseconds + dueTimeMiliseconds << " ms"); -} - -Thread *Thread::GetInvokerThread() -{ - return this; -} - -void Thread::HandleDirectInvoker() -{ - // We must be in ProcessEvents call stack - // Mark that situation to handle direct invoker - m_directInvoke = true; -} - -void Thread::Sleep(uint64_t seconds) -{ - NanoSleep(seconds * NANOSECONDS_PER_SECOND); -} - -void Thread::MiliSleep(uint64_t miliseconds) -{ - NanoSleep(miliseconds * NANOSECONDS_PER_MILISECOND); -} - -void Thread::MicroSleep(uint64_t microseconds) -{ - NanoSleep(microseconds * NANOSECONDS_PER_MICROSECOND); -} - -void Thread::NanoSleep(uint64_t nanoseconds) -{ - timespec requestedTime = { - static_cast( - nanoseconds / NANOSECONDS_PER_SECOND), - - static_cast( - nanoseconds % NANOSECONDS_PER_SECOND) - }; - - timespec remainingTime; - - for (;;) { - if (nanosleep(&requestedTime, &remainingTime) == 0) { - break; - } - - int error = errno; - Assert(error == EINTR); - - requestedTime = remainingTime; - } -} -} // namespace DPL diff --git a/modules_wearable/core/src/waitable_handle_watch_support.cpp b/modules_wearable/core/src/waitable_handle_watch_support.cpp deleted file mode 100644 index 53f8b65..0000000 --- a/modules_wearable/core/src/waitable_handle_watch_support.cpp +++ /dev/null @@ -1,394 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_handle_watch_support.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of waitable handle watch - * support - */ -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -WaitableHandleWatchSupport::WaitableHandleWatchSupport() -{} - -WaitableHandleWatchSupport::~WaitableHandleWatchSupport() -{ - // Developer assertions - if (!m_watchersMap.empty()) { - LogWarning("### Leaked watchers map dump ###"); - - for (WaitableHandleWatchersMap::const_iterator iterator = - m_watchersMap.begin(); - iterator != m_watchersMap.end(); - ++iterator) - { - LogWarning("### Waitable handle: " << iterator->first); - - LogWarning( - "### Read listeners: " << - iterator->second.readListenersCount); - LogWarning( - "### Write listeners: " << - iterator->second.writeListenersCount); - - for (WaitableHandleListenerList::const_iterator listenersIterator = - iterator->second.listeners.begin(); - listenersIterator != iterator->second.listeners.end(); - ++listenersIterator) - { - LogWarning( - "### Mode: " << listenersIterator->mode << - ". Listener: 0x" << std::hex << listenersIterator->listener); - } - } - } -} - -WaitableHandle WaitableHandleWatchSupport::WaitableInvokerHandle() const -{ - return m_watchersInvoker.GetHandle(); -} - -WaitableHandleListEx WaitableHandleWatchSupport::WaitableWatcherHandles() const -{ - // Critical section - { - RecursiveMutex::ScopedLock lock(&m_watchersMutex); - - WaitableHandleListEx handleList; - - for (WaitableHandleWatchersMap::const_iterator iterator = - m_watchersMap.begin(); - iterator != m_watchersMap.end(); - ++iterator) - { - // Register waitable event id for wait - // Check if there are any read listeners and write listeners - // and register for both if applicable - if (iterator->second.readListenersCount > 0) { - handleList.push_back(std::make_pair(iterator->first, - WaitMode::Read)); - } - - if (iterator->second.writeListenersCount > 0) { - handleList.push_back(std::make_pair(iterator->first, - WaitMode::Write)); - } - } - - return handleList; - } -} - -void WaitableHandleWatchSupport::InvokerFinished() -{ - LogPedantic("Invoker finished called"); - - // Reset invoker - m_watchersInvoker.Reset(); - - // Commit invoke - m_watchersInvokerCommit.Signal(); -} - -void WaitableHandleWatchSupport::HandleWatcher(WaitableHandle waitableHandle, - WaitMode::Type mode) -{ - // - // Waitable event occurred - // Now call all listeners for that waitable event. It is possible - // that some of listeners early disappeared. This is not a problem. - // Warning: Listeners and/or watcher may also disappear during dispatching - // handlers! - // - LogPedantic("Waitable event occurred"); - - // Critical section for other threads - { - RecursiveMutex::ScopedLock lock(&m_watchersMutex); - - // Notice: We must carefully call watchers here as they may disappear - // (zero listeners) or be created during each of handler call - // All removed listeners are handled correctly. Adding - // additional listener to the same waitable handle - // during handler dispatch sequence is _not_ supported. - WaitableHandleWatchersMap trackedWatchers = m_watchersMap; - - for (WaitableHandleWatchersMap::const_iterator trackedWatchersIterator - = trackedWatchers.begin(); - trackedWatchersIterator != trackedWatchers.end(); - ++trackedWatchersIterator) - { - // Check if this watcher still exists - // If not, go to next tracked watcher - if (m_watchersMap.find(trackedWatchersIterator->first) == - m_watchersMap.end()) - { - LogPedantic("Watcher disappeared during watcher handler"); - continue; - } - - // Is this is a waitable handle that we are searching for ? - if (waitableHandle != trackedWatchersIterator->first) { - continue; - } - - // Track watcher listeners list - WaitableHandleListenerList trackedListeners = - trackedWatchersIterator->second.listeners; - - LogPedantic( - "Calling waitable event listeners (" << - trackedListeners.size() << ")..."); - - // Notice: We must carefully call listeners here as they may - // disappear or be created during each of handler call - // All removed listeners are handled correctly. Adding - // additional listener to the same waitable handle - // during handler dispatch sequence is should be also - // handled, as an extremly case. - - // Call all waitable event listeners who listen for that event - for (WaitableHandleListenerList::const_iterator - trackedListenersIterator = trackedListeners.begin(); - trackedListenersIterator != trackedListeners.end(); - ++trackedListenersIterator) - { - // Check if this watcher still exists - // If not, there cannot be another one. Must exit now (after - // break, we actually exit) - if (m_watchersMap.find(trackedWatchersIterator->first) == - m_watchersMap.end()) - { - LogPedantic("Watcher disappeared during watcher handler"); - break; - } - - // Check if this watcher listener still exists - // If not, go to next tracked watcher listener - bool listenerStillExists = false; - - for (WaitableHandleListenerList::const_iterator - searchListenerIterator = - trackedWatchersIterator->second.listeners.begin(); - searchListenerIterator != - trackedWatchersIterator->second.listeners.end(); - ++searchListenerIterator) - { - if (searchListenerIterator->listener == - trackedListenersIterator->listener && - searchListenerIterator->mode == - trackedListenersIterator->mode) - { - listenerStillExists = true; - break; - } - } - - if (!listenerStillExists) { - LogPedantic( - "Watcher listener disappeared during watcher handler"); - break; - } - - // Is this is a listener mode that we are searching for ? - if (mode != trackedListenersIterator->mode) { - continue; - } - - // Call waitable event watch listener - LogPedantic("Before tracker listener call..."); - trackedListenersIterator->listener->OnWaitableHandleEvent( - trackedWatchersIterator->first, - trackedListenersIterator->mode); - LogPedantic("After tracker listener call..."); - } - - // Now call all those listeners who registered during listener calls - // FIXME: Implement! Notice, that scenario may be recursive! - - LogPedantic("Waitable event listeners called"); - - // No more waitable events possible - consistency check - break; - } - } -} - -void WaitableHandleWatchSupport::AddWaitableHandleWatch( - WaitableHandleListener* listener, - WaitableHandle waitableHandle, - WaitMode::Type mode) -{ - // Enter waitable event list critical section - RecursiveMutex::ScopedLock lock(&m_watchersMutex); - - // Find proper list to register into - WaitableHandleWatchersMap::iterator mapIterator = m_watchersMap.find( - waitableHandle); - - if (mapIterator != m_watchersMap.end()) { - // Assert if there is no such listener already that is listening in this - // mode - for (WaitableHandleListenerList::iterator listenersIterator = - mapIterator->second.listeners.begin(); - listenersIterator != mapIterator->second.listeners.end(); - ++listenersIterator) - { - // Must not insert same listener-mode pair - Assert( - listenersIterator->listener != listener || - listenersIterator->mode != mode); - } - } - - LogPedantic("Adding waitable handle watch: " << waitableHandle); - - // Push new waitable event watch - if (mapIterator != m_watchersMap.end()) { - mapIterator->second.listeners.push_back(WaitableHandleWatcher(listener, - mode)); - } else { - m_watchersMap[waitableHandle].listeners.push_back(WaitableHandleWatcher( - listener, mode)); - } - - // Update counters - switch (mode) { - case WaitMode::Read: - m_watchersMap[waitableHandle].readListenersCount++; - break; - - case WaitMode::Write: - m_watchersMap[waitableHandle].writeListenersCount++; - break; - - default: - Assert(0); - } - - // Trigger waitable event invoker to commit changes - CommitInvoker(); - - LogPedantic("Waitable event watch added and invoker signaled"); -} - -void WaitableHandleWatchSupport::RemoveWaitableHandleWatch( - WaitableHandleListener *listener, - WaitableHandle waitableHandle, - WaitMode::Type mode) -{ - // Enter waitable event list critical section - RecursiveMutex::ScopedLock lock(&m_watchersMutex); - - // Find proper list with listener - WaitableHandleWatchersMap::iterator mapIterator = m_watchersMap.find( - waitableHandle); - - Assert(mapIterator != m_watchersMap.end()); - - // Assert if there is such listener and mode - WaitableHandleListenerList::iterator listIterator = - mapIterator->second.listeners.end(); - - for (WaitableHandleListenerList::iterator listenersIterator = - mapIterator->second.listeners.begin(); - listenersIterator != mapIterator->second.listeners.end(); - ++listenersIterator) - { - // Check same pair listener-mode - if (listenersIterator->listener == listener && - listenersIterator->mode == mode) - { - listIterator = listenersIterator; - break; - } - } - - // Same pair listener-mode must exist - Assert(listIterator != mapIterator->second.listeners.end()); - - LogPedantic("Removing waitable handle watch: " << waitableHandle); - - // Remove waitable event watch - mapIterator->second.listeners.erase(listIterator); - - // Update counters - switch (mode) { - case WaitMode::Read: - mapIterator->second.readListenersCount--; - break; - - case WaitMode::Write: - mapIterator->second.writeListenersCount--; - break; - - default: - Assert(0); - } - - // If list is empty, remove it too - if (mapIterator->second.listeners.empty()) { - m_watchersMap.erase(mapIterator); - } - - // Trigger waitable event invoker to commit changes - CommitInvoker(); - - LogPedantic("Waitable event watch removed and invoker signaled"); -} - -void WaitableHandleWatchSupport::CommitInvoker() -{ - // Check calling context and execute invoker - if (Thread::GetCurrentThread() == GetInvokerThread()) { - LogPedantic("Calling direct invoker"); - - // Direct invoker call - HandleDirectInvoker(); - } else { - LogPedantic("Calling indirect invoker"); - - // Indirect invoker call - m_watchersInvoker.Signal(); - - WaitableHandleList waitHandles; - waitHandles.push_back(m_watchersInvokerCommit.GetHandle()); - WaitForMultipleHandles(waitHandles); - - m_watchersInvokerCommit.Reset(); - } -} - -WaitableHandleWatchSupport *WaitableHandleWatchSupport::InheritedContext() -{ - // In threaded context, return thread waitable handle watch implementation - // In main loop, return main waitable handle watch implementation - if (Thread::GetCurrentThread() != NULL) { - return Thread::GetCurrentThread(); - } else { - return &MainSingleton::Instance(); - } -} -} // namespace DPL diff --git a/modules_wearable/core/src/zip_input.cpp b/modules_wearable/core/src/zip_input.cpp deleted file mode 100644 index fadc60f..0000000 --- a/modules_wearable/core/src/zip_input.cpp +++ /dev/null @@ -1,637 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file zip_input.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of zip input - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace // anonymous -{ -const size_t EXTRACT_BUFFER_SIZE = 4096; - -class ScopedUnzClose -{ - private: - unzFile m_file; - - public: - ScopedUnzClose(unzFile file) : - m_file(file) - {} - - ~ScopedUnzClose() - { - if (!m_file) { - return; - } - - if (unzClose(m_file) != UNZ_OK) { - LogPedantic("Failed to close zip input file"); - } - } - - unzFile Release() - { - unzFile file = m_file; - - m_file = NULL; - - return file; - } -}; -} // namespace anonymous - -/* - * Seekable multiplexing device - * - * Explanation: - * Minizip library lacks serious support for multithreaded - * access to zip files. Thus, they cannot be easily extracted - * simulateously. Here is introduced seekable device which does - * have a context with seek index for each file. File is mapped to - * memory and because of that no real synchronization is needed. - * Memory addresses can be indexed. - * - * About generalization: - * To achieve the same results on abstract input device, there must be - * provided a mechanism to read data from random address without - * synchronization. - * In other words: stateless. As described above, stateless property can be - * achieved via memory mapping. - */ -class Device -{ - private: - int m_handle; - off64_t m_size; // file mapping size - unsigned char *m_address; // mapping base address - - struct File - { - off64_t offset; - Device *device; - - File(Device *d) : - offset(0), - device(d) - {} - }; - - public: - Device(const std::string &fileName) - { - LogPedantic("Creating file mapping"); - // Open device and map it to user space - int file = TEMP_FAILURE_RETRY(open(fileName.c_str(), O_RDONLY)); - - if (file == -1) { - int error = errno; - ThrowMsg(ZipInput::Exception::OpenFailed, - "Failed to open file. errno = " << error); - } - - // Scoped close on file - ScopedClose scopedClose(file); - - // Calculate file size - off64_t size = lseek64(file, 0, SEEK_END); - - if (size == static_cast(-1)) { - int error = errno; - ThrowMsg(ZipInput::Exception::OpenFailed, - "Failed to seek file. errno = " << error); - } - - // Map file to usespace - void *address = mmap(0, static_cast(size), - PROT_READ, MAP_SHARED, file, 0); - - if (address == MAP_FAILED) { - int error = errno; - ThrowMsg(ZipInput::Exception::OpenFailed, - "Failed to map file. errno = " << error); - } - - // Release scoped close - m_handle = scopedClose.Release(); - - // Save mapped up address - m_size = size; - m_address = static_cast(address); - - LogPedantic("Created file mapping: " << fileName << - " of size: " << m_size << - " at address: " << std::hex << - static_cast(m_address)); - } - - ~Device() - { - // Close mapping - if (munmap(m_address, static_cast(m_size)) == -1) { - int error = errno; - LogPedantic("Failed to munmap file. errno = " << error); - } - - // Close file descriptor - if (close(m_handle) == -1) { - int error = errno; - LogPedantic("Failed to close file. errno = " << error); - } - } - - // zlib_filefunc64_def interface: files - static voidpf ZCALLBACK open64_file(voidpf opaque, - const void* /*filename*/, - int /*mode*/) - { - Device *device = static_cast(opaque); - - // Open file for master device - return new File(device); - } - - static uLong ZCALLBACK read_file(voidpf opaque, - voidpf pstream, - void* buf, - uLong size) - { - Device *device = static_cast(opaque); - File *deviceFile = static_cast(pstream); - - // Check if offset is out of bounds - if (deviceFile->offset >= device->m_size) { - LogPedantic("Device: read offset out of bounds"); - return -1; - } - - off64_t bytesLeft = device->m_size - - deviceFile->offset; - - off64_t bytesToRead; - - // Calculate bytes to read - if (static_cast(size) > bytesLeft) { - bytesToRead = bytesLeft; - } else { - bytesToRead = static_cast(size); - } - - // Do copy - memcpy(buf, - device->m_address + deviceFile->offset, - static_cast(bytesToRead)); - - // Increment file offset - deviceFile->offset += bytesToRead; - - // Return bytes that were actually read - return static_cast(bytesToRead); - } - - static uLong ZCALLBACK write_file(voidpf /*opaque*/, - voidpf /*stream*/, - const void* /*buf*/, - uLong /*size*/) - { - // Not supported by device - LogPedantic("Unsupported function called!"); - return -1; - } - - static int ZCALLBACK close_file(voidpf /*opaque*/, voidpf stream) - { - File *deviceFile = static_cast(stream); - - // Delete file - delete deviceFile; - - // Always OK - return 0; - } - - static int ZCALLBACK testerror_file(voidpf /*opaque*/, voidpf /*stream*/) - { - // No errors - return 0; - } - - static ZPOS64_T ZCALLBACK tell64_file(voidpf /*opaque*/, voidpf stream) - { - File *deviceFile = static_cast(stream); - - return static_cast(deviceFile->offset); - } - - static long ZCALLBACK seek64_file(voidpf opaque, - voidpf stream, - ZPOS64_T offset, - int origin) - { - Device *device = static_cast(opaque); - File *deviceFile = static_cast(stream); - - switch (origin) { - case ZLIB_FILEFUNC_SEEK_SET: - deviceFile->offset = static_cast(offset); - - break; - - case ZLIB_FILEFUNC_SEEK_CUR: - deviceFile->offset += static_cast(offset); - - break; - - case ZLIB_FILEFUNC_SEEK_END: - deviceFile->offset = - device->m_size - - static_cast(offset); - - break; - - default: - return -1; - } - - return 0; - } -}; - -ZipInput::ZipInput(const std::string &fileName) : - m_device(NULL), - m_numberOfFiles(0), - m_globalComment(), - m_totalUncompressedSize(0), - m_fileInfos() -{ - LogPedantic("Zip input file: " << fileName); - - // Create master device - LogPedantic("Creating master device"); - std::unique_ptr device(new Device(fileName)); - - // Open master file - zlib_filefunc64_def interface; - interface.zopen64_file = &Device::open64_file; - interface.zread_file = &Device::read_file; - interface.zwrite_file = &Device::write_file; - interface.ztell64_file = &Device::tell64_file; - interface.zseek64_file = &Device::seek64_file; - interface.zclose_file = &Device::close_file; - interface.zerror_file = &Device::testerror_file; - interface.opaque = device.get(); - - LogPedantic("Opening zip file"); - unzFile file = unzOpen2_64(NULL, &interface); - - if (file == NULL) { - LogPedantic("Failed to open zip file"); - - // Some errror occured - ThrowMsg(Exception::OpenFailed, - "Failed to open zip file: " << fileName); - } - - // Begin scope - ScopedUnzClose scopedUnzClose(file); - - // Read contents - ReadGlobalInfo(file); - ReadGlobalComment(file); - ReadInfos(file); - - // Release scoped unz close - m_masterFile = scopedUnzClose.Release(); - m_device = device.release(); - - LogPedantic("Zip file opened"); -} - -ZipInput::~ZipInput() -{ - // Close zip - if (unzClose(static_cast(m_masterFile)) != UNZ_OK) { - LogPedantic("Failed to close zip input file"); - } - - // Close device - delete m_device; -} - -void ZipInput::ReadGlobalInfo(void *masterFile) -{ - // Read number of entries and global comment - unz_global_info globalInfo; - - if (unzGetGlobalInfo(static_cast(masterFile), - &globalInfo) != UNZ_OK) - { - LogPedantic("Failed to read zip global info"); - - ThrowMsg(Exception::ReadGlobalInfoFailed, - "Failed to read global info"); - } - - m_numberOfFiles = static_cast(globalInfo.number_entry); - m_globalCommentSize = static_cast(globalInfo.size_comment); - - LogPedantic("Number of files: " << m_numberOfFiles); - LogPedantic("Global comment size: " << m_globalCommentSize); -} - -void ZipInput::ReadGlobalComment(void *masterFile) -{ - ScopedArray comment(new char[m_globalCommentSize + 1]); - - if (unzGetGlobalComment(static_cast(masterFile), - comment.Get(), - m_globalCommentSize + 1) != UNZ_OK) - { - LogPedantic("Failed to read zip global comment"); - - ThrowMsg(Exception::ReadGlobalCommentFailed, - "Failed to read global comment"); - } - - m_globalComment = comment.Get(); - LogPedantic("Global comment: " << m_globalComment); -} - -void ZipInput::ReadInfos(void *masterFile) -{ - // Read infos - m_fileInfos.reserve(m_numberOfFiles); - - if (unzGoToFirstFile(static_cast(masterFile)) != UNZ_OK) { - LogPedantic("Failed to go to first file"); - ThrowMsg(Exception::SeekFileFailed, "Failed to seek first file"); - } - - for (size_t i = 0; i < m_numberOfFiles; ++i) { - unz_file_pos_s filePos; - - if (unzGetFilePos(static_cast(masterFile), - &filePos) != UNZ_OK) - { - LogPedantic("Failed to get file pos"); - ThrowMsg(Exception::FileInfoFailed, "Failed to get zip file info"); - } - - unz_file_info64 fileInfo; - - if (unzGetCurrentFileInfo64(static_cast(masterFile), - &fileInfo, - NULL, - 0, - NULL, - 0, - NULL, - 0) != UNZ_OK) - { - LogPedantic("Failed to get file pos"); - ThrowMsg(Exception::FileInfoFailed, "Failed to get zip file info"); - } - - ScopedArray fileName(new char[fileInfo.size_filename + 1]); - ScopedArray fileComment(new char[fileInfo.size_file_comment + 1]); - - if (unzGetCurrentFileInfo64(static_cast(masterFile), - &fileInfo, - fileName.Get(), - fileInfo.size_filename + 1, - NULL, - 0, - fileComment.Get(), - fileInfo.size_file_comment + 1) != UNZ_OK) - { - LogPedantic("Failed to get file pos"); - ThrowMsg(Exception::FileInfoFailed, "Failed to get zip file info"); - } - - m_fileInfos.push_back( - FileInfo( - FileHandle( - static_cast(filePos.pos_in_zip_directory), - static_cast(filePos.num_of_file) - ), - std::string(fileName.Get()), - std::string(fileComment.Get()), - static_cast(fileInfo.compressed_size), - static_cast(fileInfo.uncompressed_size) - ) - ); - m_totalUncompressedSize += static_cast(fileInfo.uncompressed_size); - - // If this is not the last file, go to next one - if (i != m_numberOfFiles - 1) { - if (unzGoToNextFile( - static_cast(masterFile)) != UNZ_OK) - { - LogPedantic("Failed to go to next file"); - - ThrowMsg(Exception::FileInfoFailed, - "Failed to go to next file"); - } - } - } -} - -ZipInput::const_iterator ZipInput::begin() const -{ - return m_fileInfos.begin(); -} - -ZipInput::const_iterator ZipInput::end() const -{ - return m_fileInfos.end(); -} - -ZipInput::const_reverse_iterator ZipInput::rbegin() const -{ - return m_fileInfos.rbegin(); -} - -ZipInput::const_reverse_iterator ZipInput::rend() const -{ - return m_fileInfos.rend(); -} - -ZipInput::size_type ZipInput::size() const -{ - return m_fileInfos.size(); -} - -ZipInput::File *ZipInput::OpenFile(const std::string &fileName) -{ - FOREACH(iterator, m_fileInfos) - { - if (iterator->name == fileName) { - return new File(m_device, iterator->handle); - } - } - - ThrowMsg(Exception::OpenFileFailed, - "Failed to open zip file: " << fileName); -} - -ZipInput::File::File(class Device *device, FileHandle handle) -{ - // Open file file - zlib_filefunc64_def interface; - interface.zopen64_file = &Device::open64_file; - interface.zread_file = &Device::read_file; - interface.zwrite_file = &Device::write_file; - interface.ztell64_file = &Device::tell64_file; - interface.zseek64_file = &Device::seek64_file; - interface.zclose_file = &Device::close_file; - interface.zerror_file = &Device::testerror_file; - interface.opaque = device; - - LogPedantic("Opening zip file"); - unzFile file = unzOpen2_64(NULL, &interface); - - if (file == NULL) { - LogPedantic("Failed to open zip file"); - - // Some errror occured - ThrowMsg(ZipInput::Exception::OpenFileFailed, - "Failed to open zip file"); - } - - // Begin scope - ScopedUnzClose scopedUnzClose(file); - - // Look up file handle - unz64_file_pos filePos = { - static_cast(handle.first), - static_cast(handle.second) - }; - - if (unzGoToFilePos64(file, &filePos) != UNZ_OK) { - LogPedantic("Failed to seek to zip file"); - - // Some errror occured - ThrowMsg(ZipInput::Exception::OpenFileFailed, - "Failed to seek into zip file"); - } - - // Open current file for reading - if (unzOpenCurrentFile(file) != UNZ_OK) { - LogPedantic("Failed to open current zip file"); - - // Some errror occured - ThrowMsg(ZipInput::Exception::OpenFileFailed, - "Failed to open current zip file"); - } - - // Release scoped unz close - m_file = scopedUnzClose.Release(); - - LogPedantic("Zip file opened"); -} - -ZipInput::File::~File() -{ - // Close current file for reading - if (unzCloseCurrentFile(static_cast(m_file)) != UNZ_OK) { - LogPedantic("Failed to close current zip input file"); - } - - // Close zip file - if (unzClose(static_cast(m_file)) != UNZ_OK) { - LogPedantic("Failed to close zip input file"); - } -} - -DPL::BinaryQueueAutoPtr ZipInput::File::Read(size_t size) -{ - // Do not even try to unzip if requested zero bytes - if (size == 0) { - return DPL::BinaryQueueAutoPtr(new DPL::BinaryQueue()); - } - - // Calc data to read - size_t sizeToRead = size > EXTRACT_BUFFER_SIZE ? - EXTRACT_BUFFER_SIZE : - size; - - // Extract zip file data (one-copy) - ScopedFree rawBuffer(malloc(sizeToRead)); - - if (!rawBuffer) { - throw std::bad_alloc(); - } - - // Do unpack - int bytes = unzReadCurrentFile(static_cast(m_file), - rawBuffer.Get(), - sizeToRead); - - // Internal unzipper error - if (bytes < 0) { - LogPedantic("Extract failed. Error: " << bytes); - - ThrowMsg(ZipInput::Exception::ReadFileFailed, - "Failed to extract file with error: " << bytes); - } - - // Data was read (may be zero bytes) - DPL::BinaryQueueAutoPtr buffer(new DPL::BinaryQueue()); - - buffer->AppendUnmanaged(rawBuffer.Get(), - static_cast(bytes), - &DPL::BinaryQueue::BufferDeleterFree, - NULL); - - rawBuffer.Release(); - - return buffer; -} - -const std::string &ZipInput::GetGlobalComment() const -{ - return m_globalComment; -} - -bool ZipInput::empty() const -{ - return m_fileInfos.empty(); -} - -size_t ZipInput::GetTotalUncompressedSize() const -{ - return m_totalUncompressedSize; -} -} // namespace DPL diff --git a/modules_wearable/custom_handler_dao/CMakeLists.txt b/modules_wearable/custom_handler_dao/CMakeLists.txt deleted file mode 100644 index 1afddd5..0000000 --- a/modules_wearable/custom_handler_dao/CMakeLists.txt +++ /dev/null @@ -1,83 +0,0 @@ -SET(TARGET_CUSTOM_HANDLER_DAO_DB "Sqlite3DbCustomHandler") - -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_BINARY_DIR}/modules/custom_handler_dao/database_checksum_custom_handler.h - COMMAND ${CMAKE_SOURCE_DIR}/modules/custom_handler_dao/orm/gen_db_md5.sh - ARGS ${CMAKE_BINARY_DIR}/modules/custom_handler_dao/database_checksum_custom_handler.h - ${CMAKE_SOURCE_DIR}/modules/custom_handler_dao/orm/custom_handler_db - DEPENDS ${CMAKE_SOURCE_DIR}/modules/custom_handler_dao/orm/custom_handler_db - ${CMAKE_SOURCE_DIR}/modules/custom_handler_dao/orm/gen_db_md5.sh - COMMENT "Generating WRT custom handlers database checksum" - ) - -ADD_CUSTOM_COMMAND( OUTPUT .wrt_custom_handler.db - COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt_custom_handler.db - COMMAND gcc -Wall -include ${CMAKE_BINARY_DIR}/modules/custom_handler_dao/database_checksum_custom_handler.h -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/custom_handler_dao/orm -E ${PROJECT_SOURCE_DIR}/modules/custom_handler_dao/orm/custom_handler_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/wrt_custom_handler_db.sql - COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.wrt_custom_handler.db ".read ${CMAKE_CURRENT_BINARY_DIR}/wrt_custom_handler_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.wrt_custom_handler.db - DEPENDS ${CMAKE_BINARY_DIR}/modules/custom_handler_dao/database_checksum_custom_handler.h ${PROJECT_SOURCE_DIR}/modules/custom_handler_dao/orm/custom_handler_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/custom_handler_dao/orm/custom_handler_db - ) - -ADD_CUSTOM_COMMAND( OUTPUT .wrt_custom_handler.db-journal - COMMAND touch - ARGS ${CMAKE_CURRENT_BINARY_DIR}/.wrt_custom_handler.db-journal - ) - -ADD_CUSTOM_TARGET(${TARGET_CUSTOM_HANDLER_DAO_DB} ALL DEPENDS .wrt_custom_handler.db .wrt_custom_handler.db-journal) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/wrt_custom_handler_db.sql DESTINATION share/wrt-engine/) - -############################################################################### - -INCLUDE(FindPkgConfig) - -PKG_CHECK_MODULES(CUSTOM_HANDLER_DAO_DEPS - glib-2.0 - REQUIRED) - -SET(CUSTOM_HANDLER_DAO_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/modules/custom_handler_dao/include - ${PROJECT_SOURCE_DIR}/modules/custom_handler_dao/orm - ${PROJECT_SOURCE_DIR}/modules/core/include - ${PROJECT_SOURCE_DIR}/modules/db/include - ${PROJECT_SOURCE_DIR}/modules/log/include -) - - -SET(CUSTOM_HANDLER_DAO_RO_SOURCES - dao/CustomHandlerDatabase.cpp - dao/custom_handler_dao_read_only.cpp -) - -SET(CUSTOM_HANDLER_DAO_RW_SOURCES - dao/custom_handler_dao.cpp -) - - -INCLUDE_DIRECTORIES(${CUSTOM_HANDLER_DAO_INCLUDE_DIRS}) -INCLUDE_DIRECTORIES(SYSTEM ${CUSTOM_HANDLER_DAO_DEPS_INCLUDE_DIRS}) - -ADD_LIBRARY(${TARGET_CUSTOM_HANDLER_DAO_RO_LIB} SHARED ${CUSTOM_HANDLER_DAO_RO_SOURCES}) -SET_TARGET_PROPERTIES(${TARGET_CUSTOM_HANDLER_DAO_RO_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) -SET_TARGET_PROPERTIES(${TARGET_CUSTOM_HANDLER_DAO_RO_LIB} PROPERTIES COMPILE_FLAGS "-include ${CMAKE_BINARY_DIR}/modules/custom_handler_dao/database_checksum_custom_handler.h") -TARGET_LINK_LIBRARIES(${TARGET_CUSTOM_HANDLER_DAO_RO_LIB} ${TARGET_CUSTOM_HANDLER_DAO_LIB}) -ADD_DEPENDENCIES(${TARGET_CUSTOM_HANDLER_DAO_RO_LIB} ${TARGET_CUSTOM_HANDLER_DAO_DB}) - -ADD_LIBRARY(${TARGET_CUSTOM_HANDLER_DAO_RW_LIB} SHARED ${CUSTOM_HANDLER_DAO_RW_SOURCES}) -SET_TARGET_PROPERTIES(${TARGET_CUSTOM_HANDLER_DAO_RW_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) -SET_TARGET_PROPERTIES(${TARGET_CUSTOM_HANDLER_DAO_RW_LIB} PROPERTIES COMPILE_FLAGS "-include ${CMAKE_BINARY_DIR}/modules/custom_handler_dao/database_checksum_custom_handler.h") -TARGET_LINK_LIBRARIES(${TARGET_CUSTOM_HANDLER_DAO_RW_LIB} ${TARGET_CUSTOM_HANDLER_DAO_RO_LIB}) -ADD_DEPENDENCIES(${TARGET_CUSTOM_HANDLER_DAO_RW_LIB} ${TARGET_CUSTOM_HANDLER_DAO_DB}) - -INSTALL(TARGETS ${TARGET_CUSTOM_HANDLER_DAO_RO_LIB} DESTINATION lib) -INSTALL(TARGETS ${TARGET_CUSTOM_HANDLER_DAO_RW_LIB} DESTINATION lib) - -INSTALL(FILES - include/wrt-commons/custom-handler-dao-ro/common_dao_types.h - include/wrt-commons/custom-handler-dao-ro/CustomHandlerDatabase.h - include/wrt-commons/custom-handler-dao-ro/custom_handler_dao_read_only.h - DESTINATION include/dpl-efl/wrt-commons/custom-handler-dao-ro -) - -INSTALL(FILES - include/wrt-commons/custom-handler-dao-rw/custom_handler_dao.h - DESTINATION include/dpl-efl/wrt-commons/custom-handler-dao-rw -) diff --git a/modules_wearable/custom_handler_dao/dao/CustomHandlerDatabase.cpp b/modules_wearable/custom_handler_dao/dao/CustomHandlerDatabase.cpp deleted file mode 100644 index 5f26fd7..0000000 --- a/modules_wearable/custom_handler_dao/dao/CustomHandlerDatabase.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include - -namespace CustomHandlerDB { -namespace Interface { -namespace { -const char* CustomHandler_DB_DATABASE = "/opt/usr/dbspace/.wrt_custom_handler.db"; -DPL::DB::SqlConnection::Flag::Type CustomHandler_DB_FLAGS = - DPL::DB::SqlConnection::Flag::UseLucene; -} - -DPL::Mutex g_dbQueriesMutex; -DPL::DB::ThreadDatabaseSupport g_dbInterface(CustomHandler_DB_DATABASE, - CustomHandler_DB_FLAGS); - -void attachDatabaseRO() -{ - g_dbInterface.AttachToThread(DPL::DB::SqlConnection::Flag::RO); -} - -void attachDatabaseRW() -{ - g_dbInterface.AttachToThread(DPL::DB::SqlConnection::Flag::RW); -} - -void detachDatabase() -{ - g_dbInterface.DetachFromThread(); -} -} //namespace Interface -} //namespace CustomHandlerDB diff --git a/modules_wearable/dbus/include/dpl/dbus/method_proxy.h b/modules_wearable/dbus/include/dpl/dbus/method_proxy.h deleted file mode 100644 index 19c3b90..0000000 --- a/modules_wearable/dbus/include/dpl/dbus/method_proxy.h +++ /dev/null @@ -1,228 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file method_proxy.h - * @author Zbigniew Kostrzewa (z.kostrzewa@samsung.com) - * @version 1.0 - * @brief - */ - -#ifndef DPL_DBUS_METHOD_PROXY_H -#define DPL_DBUS_METHOD_PROXY_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace DBus { -class ObjectProxy; - -/** - * Represents a remote method. - */ -template -class MethodProxy -{ - public: - ~MethodProxy() - { - g_object_unref(m_connection); - } - - /** - * Invokes remote method. - * - * @param args Input arguments for remote method. - * @return Value returned by remote method. - * @throw DBus::InvalidArgumentException If invalid argument(s) supplied. - * @throw DBus::ConnectionClosedException If connection is closed. - * @throw DBus::Exception If some other error occurs. - */ - Result operator()(const Args& ... args) - { - return invoke(args ...); - } - - private: - friend class ObjectProxy; - - MethodProxy(GDBusConnection* connection, - const std::string& serviceName, - const std::string& objectPath, - const std::string& interfaceName, - const std::string& methodName) : - m_connection(connection), - m_serviceName(serviceName), - m_objectPath(objectPath), - m_interfaceName(interfaceName), - m_methodName(methodName) - { - Assert(m_connection && "Connection is not set."); - - g_object_ref(m_connection); - } - - /** - * @remarks Making it a template with parameter set by default to class - * template parameter to overload on return type by utilizing - * the SFINAE concept. - */ - template - typename std::enable_if::value, R>::type - invoke(const Args& ... args) - { - GVariant* parameters = serialize(args ...); - - GVariant* invokeResult = invokeSync(parameters); - - R result; - - ServerDeserialization::deserialize(invokeResult, &result); - - g_variant_unref(invokeResult); - - return result; - } - - /** - * @remarks Void return type overload. - */ - template - typename std::enable_if::value>::type - invoke(const Args& ... args) - { - GVariant* parameters = serialize(args ...); - - GVariant* invokeResult = invokeSync(parameters); - - g_variant_unref(invokeResult); - } - - /** - * @remarks ArgsM... are the same as Args...; it has been made a template - * to make overloading/specialization possible. - */ - template - GVariant* serialize(ArgsM && ... args) - { - return ServerSerialization::serialize(std::forward(args) ...); - } - - /** - * @remarks Specialization for zero-argument functions. - */ - GVariant* serialize() - { - return NULL; - } - - /** - * Calls remote method over DBus. - * - * @param parameters Input parameters for the remote method. - * @return Result returned by the remote method. - * @throw DBus::InvalidArgumentException If invalid argument(s) supplied. - * @throw DBus::ConnectionClosedException If connection is closed. - * @throw DBus::Exception If some other error occurs. - */ - GVariant* invokeSync(GVariant* parameters) - { - GError* error = NULL; - - LogPedantic( - "Invoking method: " << m_interfaceName << "." << m_methodName); - GVariant* result = g_dbus_connection_call_sync(m_connection, - m_serviceName.c_str(), - m_objectPath.c_str(), - m_interfaceName.c_str(), - m_methodName.c_str(), - parameters, - G_VARIANT_TYPE_TUPLE, - G_DBUS_CALL_FLAGS_NONE, - DBUS_SYNC_CALL_TIMEOUT, - NULL, - &error); - if (NULL == result) { - std::ostringstream oss; - oss << "Error while invoking: " - << m_interfaceName << "." << m_methodName - << " <" << error->message << ">"; - std::string message = oss.str(); - - gint code = error->code; - - g_error_free(error); - - switch (code) { - case G_IO_ERROR_INVALID_ARGUMENT: - ThrowMsg(DBus::InvalidArgumentException, message); - case G_IO_ERROR_CLOSED: - ThrowMsg(DBus::ConnectionClosedException, message); - default: - ThrowMsg(DBus::Exception, message); - } - } - - return result; - } - - /** - * Default timeout for synchronous method call. - * - * @see GIO::GDBusConnection::g_dbus_connection_call_sync() for details. - */ - static const gint DBUS_SYNC_CALL_TIMEOUT = -1; - - GDBusConnection* m_connection; - std::string m_serviceName; - std::string m_objectPath; - std::string m_interfaceName; - std::string m_methodName; -}; - -/** - * Smart pointer for MethodProxy objects. - */ -template -class MethodProxyPtr -{ - public: - explicit MethodProxyPtr(MethodProxy* method = NULL) : - m_method(method) - {} - - Result operator()(const Args& ... args) const - { - Assert(NULL != m_method.get() && "Method not set."); - - return (*m_method)(args ...); - } - - private: - std::shared_ptr > m_method; -}; -} -} - -#endif diff --git a/modules_wearable/event/include/dpl/event/main_event_dispatcher.h b/modules_wearable/event/include/dpl/event/main_event_dispatcher.h deleted file mode 100644 index db86b1f..0000000 --- a/modules_wearable/event/include/dpl/event/main_event_dispatcher.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file main_event_dispatcher.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of main event dispatcher - * for EFL - */ -#ifndef DPL_MAIN_EVENT_DISPATCHER_H -#define DPL_MAIN_EVENT_DISPATCHER_H - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Event { -class MainEventDispatcher : - public AbstractEventDispatcher -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, CreateFailed) - DECLARE_EXCEPTION_TYPE(Base, AddEventFailed) - DECLARE_EXCEPTION_TYPE(Base, AddTimedEventFailed) - }; - - protected: - struct WrappedEventCall - { - AbstractEventCall *abstractEventCall; - bool timed; - double dueTime; - - WrappedEventCall(AbstractEventCall *abstractEventCallArg, - bool timedArg, - double dueTimeArg) : - abstractEventCall(abstractEventCallArg), - timed(timedArg), - dueTime(dueTimeArg) - {} - }; - - typedef std::list WrappedEventCallList; - - // Cross thread send support - WrappedEventCallList m_wrappedCrossEventCallList; - Mutex m_crossEventCallMutex; - WaitableEvent* m_crossEventCallInvoker; - - Ecore_Event_Handler *m_eventCallHandler; - Ecore_Fd_Handler *m_crossEventCallHandler; - - int m_eventId; - - // Timed event support - struct TimedEventStruct - { - AbstractEventCall *abstractEventCall; - MainEventDispatcher *This; - - TimedEventStruct(AbstractEventCall *abstractEventCallArg, - MainEventDispatcher *ThisArg) : - abstractEventCall(abstractEventCallArg), - This(ThisArg) - {} - }; - - void InternalAddEvent(AbstractEventCall *abstractEventCall, - bool timed, - double dueTime); - - static void StaticDeleteEvent(void *data, void *event); - static Eina_Bool StaticDispatchEvent(void *data, int type, void *event); - static Eina_Bool StaticDispatchTimedEvent(void *event); - static Eina_Bool StaticDispatchCrossInvoker(void *data, - Ecore_Fd_Handler *fd_handler); - - void DeleteEvent(AbstractEventCall *abstractEventCall); - void DispatchEvent(AbstractEventCall *abstractEventCall); - void DispatchTimedEvent(AbstractEventCall *abstractEventCall); - void DispatchCrossInvoker(); - - public: - explicit MainEventDispatcher(); - virtual ~MainEventDispatcher(); - - virtual void AddEventCall(AbstractEventCall *abstractEventCall); - virtual void AddTimedEventCall(AbstractEventCall *abstractEventCall, - double dueTime); - virtual void ResetCrossEventCallHandler(); -}; - -MainEventDispatcher& GetMainEventDispatcherInstance(); -} -} // namespace DPL - -#endif // DPL_MAIN_EVENT_DISPATCHER_H diff --git a/modules_wearable/event/src/event_support.cpp b/modules_wearable/event/src/event_support.cpp deleted file mode 100644 index d2e643c..0000000 --- a/modules_wearable/event/src/event_support.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file event_support.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of MVC event support - */ -#include -#include - -namespace DPL { -namespace Event { -namespace // anonymous -{ -int dummyInitializerProc() -{ - GetMainEventDispatcherInstance(); - return 0; -} - -int g_dummyInitializer = dummyInitializerProc(); -} // namespace anonymous -} -} // namespace DPL - diff --git a/modules_wearable/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h b/modules_wearable/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h deleted file mode 100644 index 3492f63..0000000 --- a/modules_wearable/i18n/dao/include/wrt-commons/i18n-dao-ro/i18n_database.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _I18N_DATABASE_H_ -#define _I18N_DATABASE_H_ - -#include -#include -#include - -namespace I18n { -namespace DB { -namespace Interface { -void attachDatabaseRO(); -void detachDatabase(); - -extern DPL::Mutex g_dbQueriesMutex; -extern DPL::DB::ThreadDatabaseSupport g_dbInterface; -} // namespace Interface -} // namespace DB -} // namespace I18n - -#define I18N_DB_INTERNAL(tlsCommand, InternalType) \ - static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ - { \ - DPL::Mutex::ScopedLock lock( \ - &I18n::DB::Interface::g_dbQueriesMutex); \ - if (!tlsCommand##Ptr) { \ - static DPL::ThreadLocalVariable tmp; \ - tlsCommand##Ptr = &tmp; \ - } \ - } \ - DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ - if (tlsCommand.IsNull()) \ - { \ - tlsCommand = InternalType(&I18n::DB::Interface::g_dbInterface); \ - } - -#define I18N_DB_SELECT(name, type) \ - I18N_DB_INTERNAL(name, type::Select) - -#endif /* _I18N_DATABASE_H_ */ - diff --git a/modules_wearable/i18n/dao/src/i18n_database.cpp b/modules_wearable/i18n/dao/src/i18n_database.cpp deleted file mode 100644 index e1a1fc5..0000000 --- a/modules_wearable/i18n/dao/src/i18n_database.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include - -namespace I18n { -namespace DB { -namespace Interface { -namespace { -const char* const I18N_DB_FILE_PATH = "/opt/usr/dbspace/.wrt_i18n.db"; - -DPL::DB::SqlConnection::Flag::Type I18N_DB_FLAGS = - DPL::DB::SqlConnection::Flag::UseLucene; -} - -DPL::Mutex g_dbQueriesMutex; -DPL::DB::ThreadDatabaseSupport g_dbInterface(I18N_DB_FILE_PATH, - I18N_DB_FLAGS); - -void attachDatabaseRO() -{ - g_dbInterface.AttachToThread(DPL::DB::SqlConnection::Flag::RO); -} - -void detachDatabase() -{ - g_dbInterface.DetachFromThread(); -} -} //namespace Interface -} //namespace DB -} //namespace I18n diff --git a/modules_wearable/localization/include/LanguageTagsProvider.h b/modules_wearable/localization/include/LanguageTagsProvider.h deleted file mode 100644 index 529101f..0000000 --- a/modules_wearable/localization/include/LanguageTagsProvider.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file LanguageTagsProvider.h - * @author Marcin Kaminski (marcin.ka@samsung.com) - * @version 1.0 - */ - -#ifndef LANGUAGETAGSPROVIDER_H -#define LANGUAGETAGSPROVIDER_H - -#include -#include -#include -#include - -typedef std::list LanguageTags; - -class LanguageTagsProvider -{ - public: - /* - * Get list of currently set language tags - */ - const LanguageTags getLanguageTags() const; - - /* - * Set new language tags (other than based on system locales) - */ - void setLanguageTags(const LanguageTags& taglist); - - /* - * Set language tags from given locales. - * Supported format is: xx[-yy[-zz]][.encoding] - */ - void setLanguageTagsFromLocales(const char* locales); - - /* - * Set language tags based on system language settings - */ - void resetLanguageTags(); - - /* - * Adds default widget locales to language tags if - * it doesn't exist within actual tags. - * Default locales i added: - * - at the beginning if less then 2 tags exists on list - * - just before empty ("") locales - pre-last position - * - at the end if last position is not empty locale - */ - void addWidgetDefaultLocales(const DPL::String&); - - /* - * Function converts language tag string (i.e. en-US) - * into locales string (en_US). - */ - static DPL::String BCP47LanguageTagToLocale(const DPL::String&); - - /* - * Function converts locales string (i.e. en_US.UTF-8) into language tag - * (i.e. en-US) - */ - static DPL::String LocaleToBCP47LanguageTag(const DPL::String&); - - private: - friend class DPL::Singleton; - - LanguageTags m_languageTagsList; - - LanguageTagsProvider(); - virtual ~LanguageTagsProvider(); - - void loadSystemTags(); - void createTagsFromLocales(const char* language); -}; - -typedef DPL::Singleton LanguageTagsProviderSingleton; - -#endif /* LANGUAGETAGSPROVIDER_H */ diff --git a/modules_wearable/log/config.cmake b/modules_wearable/log/config.cmake deleted file mode 100644 index 30ad033..0000000 --- a/modules_wearable/log/config.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file config.cmake -# @author Lukasz Marek (l.marek@samsung.com) -# @version 1.0 -# @brief -# - -SET(DPL_LOG_SOURCES - ${PROJECT_SOURCE_DIR}/modules/log/src/abstract_log_provider.cpp - ${PROJECT_SOURCE_DIR}/modules/log/src/dlog_log_provider.cpp - ${PROJECT_SOURCE_DIR}/modules/log/src/log.cpp - ${PROJECT_SOURCE_DIR}/modules/log/src/old_style_log_provider.cpp - PARENT_SCOPE -) - -SET(DPL_LOG_HEADERS - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/abstract_log_provider.h - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/dlog_log_provider.h - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/log.h - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/old_style_log_provider.h - ${PROJECT_SOURCE_DIR}/modules/log/include/dpl/log/secure_log.h - PARENT_SCOPE -) - -SET(DPL_LOG_INCLUDE_DIR - ${PROJECT_SOURCE_DIR}/modules/log/include/ - PARENT_SCOPE -) diff --git a/modules_wearable/log/include/dpl/log/log.h b/modules_wearable/log/include/dpl/log/log.h deleted file mode 100644 index d4d95ed..0000000 --- a/modules_wearable/log/include/dpl/log/log.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file log.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of log system - */ -#ifndef DPL_LOG_H -#define DPL_LOG_H - -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Log { -/** - * DPL log system - * - * To switch logs into old style, export - * DPL_USE_OLD_STYLE_LOGS before application start - */ -class LogSystem : - private Noncopyable -{ - private: - typedef std::list AbstractLogProviderPtrList; - AbstractLogProviderPtrList m_providers; - - DLOGLogProvider *m_dlogProvider; - OldStyleLogProvider *m_oldStyleProvider; - - bool m_isLoggingEnabled; - - public: - bool IsLoggingEnabled() const; - LogSystem(); - virtual ~LogSystem(); - - /** - * Log debug message - */ - void Debug(const char *message, - const char *filename, - int line, - const char *function); - - /** - * Log info message - */ - void Info(const char *message, - const char *filename, - int line, - const char *function); - - /** - * Log warning message - */ - void Warning(const char *message, - const char *filename, - int line, - const char *function); - - /** - * Log error message - */ - void Error(const char *message, - const char *filename, - int line, - const char *function); - - /** - * Log pedantic message - */ - void Pedantic(const char *message, - const char *filename, - int line, - const char *function); - - /** - * Set default's DLOG provider Tag - */ - void SetTag(const char *tag); - - /** - * Add abstract provider to providers list - * - * @notice Ownership is transfered to LogSystem and deleted upon exit - */ - void AddProvider(AbstractLogProvider *provider); - - /** - * Remove abstract provider from providers list - */ - void RemoveProvider(AbstractLogProvider *provider); -}; - -/* - * Replacement low overhead null logging class - */ -class NullStream -{ - public: - NullStream() {} - - template - NullStream& operator<<(const T&) - { - return *this; - } -}; - -/** - * Log system singleton - */ -typedef Singleton LogSystemSingleton; -} -} // namespace DPL - -// -// Log support -// -// - -#ifdef DPL_LOGS_ENABLED - #define DPL_MACRO_FOR_LOGGING(message, function) \ - do \ - { \ - if (DPL::Log::LogSystemSingleton::Instance().IsLoggingEnabled()) \ - { \ - std::ostringstream platformLog; \ - platformLog << message; \ - DPL::Log::LogSystemSingleton::Instance().function( \ - platformLog.str().c_str(), \ - __FILE__, __LINE__, __FUNCTION__); \ - } \ - } while (0) -#else -/* avoid warnings about unused variables */ - #define DPL_MACRO_FOR_LOGGING(message, function) \ - do { \ - DPL::Log::NullStream ns; \ - ns << message; \ - } while (0) -#endif - -#define LogDebug(message) DPL_MACRO_FOR_LOGGING(message, Debug) -#define LogInfo(message) DPL_MACRO_FOR_LOGGING(message, Info) -#define LogWarning(message) DPL_MACRO_FOR_LOGGING(message, Warning) -#define LogError(message) DPL_MACRO_FOR_LOGGING(message, Error) -#define LogPedantic(message) DPL_MACRO_FOR_LOGGING(message, Pedantic) - -#endif // DPL_LOG_H diff --git a/modules_wearable/log/include/dpl/log/secure_log.h b/modules_wearable/log/include/dpl/log/secure_log.h deleted file mode 100644 index 6402c4f..0000000 --- a/modules_wearable/log/include/dpl/log/secure_log.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file secure_log.h - * @author Jihoon Chung(jihoon.chung@samsung.com) - * @version 0.1 - * @brief - */ - -#ifndef DPL_SECURE_LOG_H -#define DPL_SECURE_LOG_H - -#include - -#define COLOR_ERROR "\e[1;31m" -#define COLOR_WARNING "\e[2;31m" -#define COLOR_END "\e[0m" -#define COLOR_TAG "\e[0m" - -// default TAG -#undef LOG_TAG -#define LOG_TAG "WRT_UNDEFINED" - -#ifdef WRT_LOG -#undef LOG_TAG -#define LOG_TAG "WRT" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;32m" -#endif - -#ifdef WRT_BUNDLE_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_BUNDLE" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;34m" -#endif - -#ifdef WRT_PLUGINS_COMMON_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_PLUGINS/COMMON" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;36m" -#endif - -#ifdef WRT_PLUGINS_WIDGET_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_PLUGINS/WIDGET" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;35m" -#endif - -#ifdef WRT_INSTALLER_LOG -#undef LOG_TAG -#define LOG_TAG "WRT_INSTALLER" -#undef COLOR_TAG -#define COLOR_TAG "\e[1;32m" -#endif - -#ifndef SECURE_SLOGD -#define SECURE_SLOGD(fmt, arg...) SLOGD(fmt,##arg) -#endif - -#ifndef SECURE_SLOGW -#define SECURE_SLOGW(fmt, arg...) SLOGW(fmt,##arg) -#endif - -#ifndef SECURE_SLOGE -#define SECURE_SLOGE(fmt, arg...) SLOGE(fmt,##arg) -#endif - -#undef _D -#define _D(fmt, arg ...) SECURE_SLOGD(COLOR_TAG fmt COLOR_END,##arg) -#undef _W -#define _W(fmt, arg ...) SECURE_SLOGW(COLOR_WARNING fmt COLOR_END,##arg) -#undef _E -#define _E(fmt, arg ...) SECURE_SLOGE(COLOR_ERROR fmt COLOR_END,##arg) - -#endif // DPL_SECURE_LOG_H - diff --git a/modules_wearable/log/src/log.cpp b/modules_wearable/log/src/log.cpp deleted file mode 100644 index 7c0ebc2..0000000 --- a/modules_wearable/log/src/log.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file log.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of log system - */ -#include -#include -#include - -IMPLEMENT_SINGLETON(DPL::Log::LogSystem) - -namespace DPL { -namespace Log { -namespace // anonymous -{ -const char *OLD_STYLE_LOGS_ENV_NAME = "DPL_USE_OLD_STYLE_LOGS"; -const char *OLD_STYLE_PEDANTIC_LOGS_ENV_NAME = - "DPL_USE_OLD_STYLE_PEDANTIC_LOGS"; -const char *OLD_STYLE_LOGS_MASK_ENV_NAME = "DPL_USE_OLD_STYLE_LOGS_MASK"; -const char *DPL_LOG_OFF = "DPL_LOG_OFF"; -} // namespace anonymous - -bool LogSystem::IsLoggingEnabled() const -{ - return m_isLoggingEnabled; -} - -LogSystem::LogSystem() : - m_dlogProvider(NULL), - m_oldStyleProvider(NULL), - m_isLoggingEnabled(!getenv(DPL_LOG_OFF)) -{ - bool oldStyleLogs = false; - bool oldStyleDebugLogs = true; - bool oldStyleInfoLogs = true; - bool oldStyleWarningLogs = true; - bool oldStyleErrorLogs = true; - bool oldStylePedanticLogs = false; - - // Check environment settings about pedantic logs - const char *value = getenv(OLD_STYLE_LOGS_ENV_NAME); - - if (value != NULL && !strcmp(value, "1")) { - oldStyleLogs = true; - } - - value = getenv(OLD_STYLE_PEDANTIC_LOGS_ENV_NAME); - - if (value != NULL && !strcmp(value, "1")) { - oldStylePedanticLogs = true; - } - - value = getenv(OLD_STYLE_LOGS_MASK_ENV_NAME); - - if (value != NULL) { - size_t len = strlen(value); - - if (len >= 1) { - if (value[0] == '0') { - oldStyleDebugLogs = false; - } else if (value[0] == '1') { - oldStyleDebugLogs = true; - } - } - - if (len >= 2) { - if (value[1] == '0') { - oldStyleInfoLogs = false; - } else if (value[1] == '1') { - oldStyleInfoLogs = true; - } - } - - if (len >= 3) { - if (value[2] == '0') { - oldStyleWarningLogs = false; - } else if (value[2] == '1') { - oldStyleWarningLogs = true; - } - } - - if (len >= 4) { - if (value[3] == '0') { - oldStyleErrorLogs = false; - } else if (value[3] == '1') { - oldStyleErrorLogs = true; - } - } - } - - // Setup default DLOG and old style logging - if (oldStyleLogs) { - // Old style - m_oldStyleProvider = new OldStyleLogProvider(oldStyleDebugLogs, - oldStyleInfoLogs, - oldStyleWarningLogs, - oldStyleErrorLogs, - oldStylePedanticLogs); - AddProvider(m_oldStyleProvider); - } else { - // DLOG - m_dlogProvider = new DLOGLogProvider(); - AddProvider(m_dlogProvider); - } -} - -LogSystem::~LogSystem() -{ - // Delete all providers - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - delete *iterator; - } - - m_providers.clear(); - - // And even default providers - m_dlogProvider = NULL; - m_oldStyleProvider = NULL; -} - -void LogSystem::SetTag(const char* tag) -{ - if (m_dlogProvider != NULL) { - m_dlogProvider->SetTag(tag); - } -} - -void LogSystem::AddProvider(AbstractLogProvider *provider) -{ - m_providers.push_back(provider); -} - -void LogSystem::RemoveProvider(AbstractLogProvider *provider) -{ - m_providers.remove(provider); -} - -void LogSystem::Debug(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Debug(message, filename, line, function); - } -} - -void LogSystem::Info(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Info(message, filename, line, function); - } -} - -void LogSystem::Warning(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Warning(message, filename, line, function); - } -} - -void LogSystem::Error(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Error(message, filename, line, function); - } -} - -void LogSystem::Pedantic(const char *message, - const char *filename, - int line, - const char *function) -{ - for (AbstractLogProviderPtrList::iterator iterator = m_providers.begin(); - iterator != m_providers.end(); - ++iterator) - { - (*iterator)->Pedantic(message, filename, line, function); - } -} -} -} // namespace DPL diff --git a/modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_client.h b/modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_client.h deleted file mode 100644 index 9629e61..0000000 --- a/modules_wearable/rpc/include/dpl/rpc/generic_socket_rpc_client.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket_rpc_client.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for generic socket RPC client - */ -#ifndef DPL_GENERIC_SOCKET_RPC_CLIENT_H -#define DPL_GENERIC_SOCKET_RPC_CLIENT_H - -#include -#include -#include - -namespace DPL { -namespace RPC { -template -class GenericSocketRPCClient : - public AbstractRPCConnector, - private DPL::Event::EventListener -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, OpenFailed) - DECLARE_EXCEPTION_TYPE(Base, CloseFailed) - }; - - protected: - // Derived class implementations for connection managment - virtual AbstractRPCConnection *OpenSpecificConnection(SocketType *socket) = - 0; - - private: - typedef std::set InternalConnectionSet; - InternalConnectionSet m_internalConnectionSet; - - virtual void OnEventReceived( - const DPL::Socket::AbstractSocketEvents::ConnectedEvent &event) - { - // Retrieve socket sender - SocketType *socket = static_cast(event.GetSender()); - - LogPedantic("Connection with RPC server established"); - - // Is this connection still tracked ? - // It might have disappeared on close - typename InternalConnectionSet::iterator iterator = - m_internalConnectionSet.find(socket); - - if (iterator == m_internalConnectionSet.end()) { - LogPedantic("RPC client connection socket disappeared"); - return; - } - - // Open specific connection implementation - AbstractRPCConnection *connection = OpenSpecificConnection(socket); - - // Remove internal connection - socket->EventSupport - ::RemoveListener(this); - m_internalConnectionSet.erase(iterator); - - // Retrieve ID once again - AbstractRPCConnectionID connectionID = - static_cast(socket); - - // Inform listeners - DPL::Event::EventSupport:: - EmitEvent(AbstractRPCConnectorEvents::ConnectionEstablishedEvent( - connectionID, connection, EventSender( - this)), DPL::Event::EmitMode::Queued); - } - - public: - explicit GenericSocketRPCClient() - {} - - virtual ~GenericSocketRPCClient() - { - // Always close all connections - CloseAll(); - } - - AbstractRPCConnectionID Open(const Address &socketAddress) - { - LogPedantic("Starting client: " << socketAddress.ToString()); - - // Alloc new socket - SocketType *socket = new SocketType(); - - // Add socket listeners - socket->EventSupport - ::AddListener(this); - - Try - { - // Open socket - socket->Open(); - - // Start connecting to server - socket->Connect(Address(socketAddress)); - } - Catch(DPL::Socket::AbstractSocket::Exception::Base) - { - // Remove back socket listener - socket->EventSupport::RemoveListener(this); - - // Log debug message - LogPedantic("Cannot connect to: " << socketAddress.ToString()); - - // Problem with client startup - ReThrowMsg(typename Exception::OpenFailed, socketAddress.ToString()); - } - - // Register new internal connection - m_internalConnectionSet.insert(socket); - - // Debug info - LogPedantic( - "Client started on interface: " << - socket->GetLocalAddress().ToString()); - - // Return unique identifier - return static_cast(socket); - } - - void Close(AbstractRPCConnectionID connectionID) - { - LogPedantic("Closing client interface..."); - - // Get socket from ID - SocketType *socket = static_cast(connectionID); - - // Find corresponding internal connection - typename InternalConnectionSet::iterator iterator = - m_internalConnectionSet.find(socket); - - if (iterator == m_internalConnectionSet.end()) { - return; - } - - // Close socket - socket->Close(); - - // Remove internal socket - socket->EventSupport - ::RemoveListener(this); - delete socket; - - m_internalConnectionSet.erase(iterator); - - // Done - LogPedantic("Closed"); - } - - void CloseAll() - { - while (!m_internalConnectionSet.empty()) { - Close(static_cast(*m_internalConnectionSet - .begin())); - } - } -}; -} -} // namespace DPL - -#endif // DPL_GENERIC_SOCKET_RPC_CLIENT_H diff --git a/modules_wearable/rpc/include/dpl/rpc/rpc_function.h b/modules_wearable/rpc/include/dpl/rpc/rpc_function.h deleted file mode 100644 index a01235f..0000000 --- a/modules_wearable/rpc/include/dpl/rpc/rpc_function.h +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file rpc_function.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file for RPC function - */ -#ifndef DPL_RPC_FUNCTION_H -#define DPL_RPC_FUNCTION_H - -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace RPC { -class RPCFunction : public IStream -{ - protected: - BinaryQueue m_buffer; ///< Serialized RPC function call as a binary queue - - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, ParseFailed) - }; - - /** - * Constructor - */ - RPCFunction() - {} - - /** - * Constructor - * - * @param buffer Binary queue to copy initialization data from - */ - RPCFunction(const BinaryQueue &buffer) - { - m_buffer.AppendCopyFrom(buffer); - } - - /** - * Destructor - */ - virtual ~RPCFunction() - {} - - /** - * Append argument to call - * - * @param[in] arg Template based argument to append - * @return none - * @warning Carefully add any pointers to buffer because of template nature - * of this method - */ - template - void AppendArg(const Type &arg) - { - size_t argSize = sizeof(arg); - m_buffer.AppendCopy(&argSize, sizeof(argSize)); - m_buffer.AppendCopy(&arg, sizeof(arg)); - } - - /** - * Append @a std::string argument to call - * - * @param[in] arg String to append to function call - * @return none - */ - void AppendArg(const std::string &arg) - { - size_t argSize = arg.size(); - m_buffer.AppendCopy(&argSize, sizeof(argSize)); - m_buffer.AppendCopy(arg.c_str(), argSize); - } - - /** - * Append @a DPL::String argument to call - * - * @param[in] arg String to append to function call - * @return none - */ - void AppendArg(const String &arg) - { - std::string localStdString = ToUTF8String(arg); - AppendArg(localStdString); - } - - /** - * Consume argument from call. Arguments are retrieved in non-reversed order - * (same as they were pushed onto RPC function argument stack) - * - * @param[out] arg Reference to output template based argument - * @warning Carefully add any pointers to buffer because of template nature - * of this method - * @return none - */ - template - void ConsumeArg(Type &arg) - { - Try - { - size_t argSize = sizeof(arg); - m_buffer.FlattenConsume(&argSize, sizeof(argSize)); - - if (argSize != sizeof(arg)) { - ThrowMsg(Exception::ParseFailed, "Stream parse CRC failed"); - } - - m_buffer.FlattenConsume(&arg, sizeof(arg)); - } - Catch(BinaryQueue::Exception::OutOfData) - { - ReThrowMsg(Exception::ParseFailed, "Unexpected end of stream"); - } - } - - /** - * Consume @a std::string argument from call. Arguments are retrieved in - * non-reversed order - * (same as they were pushed onto RPC function argument stack) - * - * @param[out] arg Reference to output @a std::string argument - * @return none - */ - void ConsumeArg(std::string &arg) - { - Try - { - std::string::size_type size; - m_buffer.FlattenConsume(&size, sizeof(size)); - ScopedArray str(new char[size]); - m_buffer.FlattenConsume(str.Get(), size); - arg = std::string(str.Get(), str.Get() + size); - } - Catch(BinaryQueue::Exception::OutOfData) - { - ReThrowMsg(Exception::ParseFailed, "Unexpected end of stream"); - } - } - - /** - * Consume @a DPL::String argument from call. Arguments are converted to - * UTF-8 string - * - * @param[out] arg Reference to output @a DPL::String argument - * @return none - */ - void ConsumeArg(String &arg) - { - std::string consumedStdString; - ConsumeArg(consumedStdString); - arg = FromUTF8String(consumedStdString); - } - - /** - * Serialize all function parameters into single binary queue - * - * @return Serialized binary queue representation of RPC function - */ - BinaryQueue Serialize() const - { - return m_buffer; - } - - /** - * Reads binary data from serialized stream - * - * @param num number of bytes to read - * @param bytes buffer for read data - */ - virtual void Read(size_t num, void * bytes) - { - m_buffer.FlattenConsume(bytes, num); - } - - /** - * Writes binary data to serialized stream - * - * @param num number of bytes to write to serialization buffer - * @param bytes buffer for data to write - */ - virtual void Write(size_t num, const void * bytes) - { - m_buffer.AppendCopy(bytes, num); - } -}; -} -} // namespace DPL - -#endif // DPL_RPC_FUNCTION_H diff --git a/modules_wearable/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h b/modules_wearable/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h deleted file mode 100644 index d922764..0000000 --- a/modules_wearable/security_origin_dao/include/wrt-commons/security-origin-dao/security_origin_dao.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file securoty_origin_dao.h - * @author Jihoon Chung (jihoon.chung@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of security origin dao - */ -#ifndef _SECURITY_ORIGIN_DAO_H_ -#define _SECURITY_ORIGIN_DAO_H_ - -#include -#include -#include -#include - -namespace SecurityOriginDB { -class SecurityOriginDAO -{ - public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, DataNotExist) - }; - - explicit SecurityOriginDAO(const WrtDB::TizenPkgId &pkgName); - virtual ~SecurityOriginDAO(); - SecurityOriginDataList getSecurityOriginDataList(); - Result getResult(const SecurityOriginData &data); - bool isReadOnly(const SecurityOriginData &data); - void setSecurityOriginData(const SecurityOriginData &data, - const Result result, - const bool readOnly = false); - void setPrivilegeSecurityOriginData(const WrtDB::Feature feature, - bool isOnlyAllowedLocalOrigin = true); - void removeSecurityOriginData(const SecurityOriginData &data); - void removeSecurityOriginData(const Result result); - - private: - std::string m_dbPath; - DPL::DB::ThreadDatabaseSupport m_dbInterface; - - bool hasResult(const SecurityOriginData &data); - void insertData(const SecurityOriginData &data, - const Result result, - const bool readOnly); - void updateData(const SecurityOriginData &data, - const Result result, - const bool readOnly); -}; - -typedef std::shared_ptr SecurityOriginDAOPtr; -} // namespace SecurityOriginDB - -#endif // _SECURITY_ORIGIN_DAO_H_ diff --git a/modules_wearable/socket/include/dpl/socket/generic_socket.h b/modules_wearable/socket/include/dpl/socket/generic_socket.h deleted file mode 100644 index 3ed9b86..0000000 --- a/modules_wearable/socket/include/dpl/socket/generic_socket.h +++ /dev/null @@ -1,934 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file generic_socket.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the header file of generic socket - */ -#ifndef DPL_GENERIC_SOCKET_H -#define DPL_GENERIC_SOCKET_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace DPL { -namespace Socket { -// -// Generic abstract socket implementation -// Execution context is inherited -// -template -class GenericSocket : - public AbstractSocket, - private WaitableHandleWatchSupport::WaitableHandleListener -{ - protected: - /** - * Translate generic Address to specific socket kernel structure - * - * @warning Must be implemented in derived class - */ - virtual std::pair TranslateAddressGenericToSpecific( - const Address &address) const = 0; - - /** - * Translate specific socket kernel structure to generic Address - * - * @warning Must be implemented in derived class - */ - virtual Address TranslateAddressSpecificToGeneric(sockaddr *, - socklen_t) const = 0; - - /** - * Get specific socket kernel structure size - * - * @warning Must be implemented in derived class - */ - virtual socklen_t GetSpecificAddressSize() const = 0; - - /** - * Alloc specific implementation of socket from descriptor - * - * @warning Must be implemented in derived class - */ - virtual SocketType *AllocAcceptedSpecificSocket() const = 0; - - /** - * Alloc specific implementation of socket descriptor - * - * @warning Must be implemented in derived class - */ - virtual int AllocSpecificDescriptor() const = 0; - - private: - // Constants - static const size_t DEFAULT_READ_BUFFER_SIZE = 4096; - - // Socket handle - int m_socket; // FIXME: Consider generalization to WaitableHandle upon - // leaving nix platform - - // Internal state - enum InternalState - { - InternalState_None, ///< Not connected and not listening state - InternalState_Prepare, ///< Descriptor allocated, but not connected - InternalState_Listening, ///< Listening state - InternalState_Connecting, ///< Connecting state - InternalState_Connected ///< Connected state - }; - - InternalState m_internalState; - - void SetNonBlocking() - { - // Set non-blocking mode - if (fcntl(m_socket, F_SETFL, O_NONBLOCK | - fcntl(m_socket, F_GETFL)) == -1) - { - Throw(AbstractSocket::Exception::SetNonBlockingFailed); - } - } - - // WaitableHandleWatchSupport::WaitableHandleListener - virtual void OnWaitableHandleEvent(WaitableHandle waitableHandle, - WaitMode::Type mode) - { - (void)waitableHandle; - Assert(waitableHandle == m_socket); - - switch (m_internalState) { - case InternalState_None: - break; - - case InternalState_Prepare: - Assert(0 && "Invalid internal generic socket state!"); - break; - - case InternalState_Listening: - Assert(mode == WaitMode::Read); - - // New client waiting for accept - DPL::Event::EventSupport:: - EmitEvent(AbstractSocketEvents::AcceptEvent( - EventSender(this)), DPL::Event::EmitMode::Queued); - - // Done - break; - - case InternalState_Connecting: - Assert(mode == WaitMode::Write); - - // Connected to server - RemoveConnectWatch(); - m_internalState = InternalState_Connected; - - // Add read watch - AddReadWatch(); - - // Emit event - DPL::Event::EventSupport:: - EmitEvent(AbstractSocketEvents::ConnectedEvent( - EventSender(this)), DPL::Event::EmitMode::Queued); - - // Done - break; - - case InternalState_Connected: - if (mode == WaitMode::Read) { - // Emit ReadEvent - DPL::Event::EventSupport:: - EmitEvent(AbstractSocketEvents::ReadEvent( - EventSender( - this)), DPL::Event::EmitMode::Queued); - } else if (mode == WaitMode::Write) { - // Emit WriteEvent - DPL::Event::EventSupport:: - EmitEvent(AbstractSocketEvents::WriteEvent( - EventSender( - this)), DPL::Event::EmitMode::Queued); - } else { - Assert(0); - } - - break; - - default: - Assert(0); - break; - } - } - - void AddAcceptWatch() - { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Read); - } - - void RemoveAcceptWatch() - { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Read); - } - - void AddConnectWatch() - { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Write); - } - - void RemoveConnectWatch() - { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Write); - } - - void AddReadWatch() - { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Read); - } - - void RemoveReadWatch() - { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Read); - } - - void AddWriteWatch() - { - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_socket, - WaitMode::Write); - } - - void RemoveWriteWatch() - { - WaitableHandleWatchSupport::InheritedContext()-> - RemoveWaitableHandleWatch(this, m_socket, WaitMode::Write); - } - - public: - GenericSocket() : - m_socket(-1), - m_internalState(InternalState_None) - {} - - virtual ~GenericSocket() - { - // Always ensure to close socket - Try - { - Close(); - } - Catch(Exception::CloseFailed) - { - LogPedantic("Close failed and ignored"); - } - - // Check consistency - Assert(m_socket == -1); - } - - virtual void Open() - { - if (m_internalState != InternalState_None) { - ThrowMsg(AbstractSocket::Exception::OpenFailed, - "Invalid socket state, should be 'None'"); - } - - LogPedantic("Opening socket..."); - - // Check consistency - Assert(m_socket == -1); - - // Allocate specific socket descriptor - m_socket = AllocSpecificDescriptor(); - - // Set socket non-blocking - SetNonBlocking(); - - // State is prepared - m_internalState = InternalState_Prepare; - - LogPedantic("Socket opened"); - } - - virtual void Connect(const Address &address) - { - if (m_internalState != InternalState_Prepare) { - ThrowMsg(AbstractSocket::Exception::ConnectFailed, - "Invalid socket state, should be 'Prepare'"); - } - - LogPedantic("Connecting to: " << address.ToString()); - - // Try to convert address - std::pair socketAddress; - - Try - { - // Translate address to specific socket address struct - socketAddress = TranslateAddressGenericToSpecific(address); - } - Catch(Address::Exception::InvalidAddress) - { - // This address is invalid. Cannot connect. - ReThrowMsg(AbstractSocket::Exception::ConnectFailed, - address.ToString()); - } - - // Do connect - int result = - TEMP_FAILURE_RETRY(connect(m_socket, socketAddress.first, - socketAddress.second)); - - if (result == 0) { - // Immediate connect - LogPedantic("Immediate connected to: " << address.ToString()); - - // Add read watch - AddReadWatch(); - m_internalState = InternalState_Connected; - - // Emit connected event - DPL::Event::EventSupport:: - EmitEvent(AbstractSocketEvents::ConnectedEvent( - EventSender(this)), DPL::Event::EmitMode::Queued); - } else { - if (errno == EINTR || errno == EINPROGRESS) { - LogPedantic( - "Asynchronous connect in progress: " << address.ToString()); - - // Connecting in progress - AddConnectWatch(); - m_internalState = InternalState_Connecting; - } else { - // Free translation structure - free(socketAddress.first); - - // Error occurred - ThrowMsg(AbstractSocket::Exception::ConnectFailed, - address.ToString()); - } - } - - // Free translation structure - free(socketAddress.first); - } - - virtual void Close() - { - if (m_internalState == InternalState_None) { - return; - } - - Assert(m_socket != -1); - - if (m_internalState == InternalState_Listening) { - // Remove watch in listening state - LogPedantic("Removing accept watch"); - RemoveAcceptWatch(); - m_internalState = InternalState_None; - } else if (m_internalState == InternalState_Connecting) { - // Remove watch in connecting state - LogPedantic("Removing connect watch"); - RemoveConnectWatch(); - m_internalState = InternalState_None; - } else if (m_internalState == InternalState_Connected) { - // Remove watch in connected state - LogPedantic("Removing read watch"); - RemoveReadWatch(); - m_internalState = InternalState_None; - } else { - // State must be just prepared only - Assert(m_internalState == InternalState_Prepare); - } - - if (TEMP_FAILURE_RETRY(close(m_socket)) == -1) { - Throw(Exception::CloseFailed); - } - - // Reset socket - m_socket = -1; - - // Reset socket state - m_internalState = InternalState_None; - - LogPedantic("Socket closed"); - } - - virtual void Bind(const Address &address) - { - if (m_internalState != InternalState_Prepare) { - ThrowMsg(AbstractSocket::Exception::BindFailed, - "Invalid socket state, should be 'Prepare'"); - } - - LogPedantic( - "Binding to: " << address.GetAddress() << ":" << address.GetPort()); - - // Translate address to specific socket address struct - std::pair socketAddress = TranslateAddressGenericToSpecific( - address); - - // Do bind - if (::bind(m_socket, socketAddress.first, - socketAddress.second) == -1) - { - ThrowMsg(AbstractSocket::Exception::BindFailed, address.ToString()); - } - - // Free translation structure - free(socketAddress.first); - - // Show info - LogPedantic( - "Bound to address: " << address.GetAddress() << ":" << - address.GetPort()); - } - - virtual void Listen(int backlog) - { - if (m_internalState != InternalState_Prepare) { - ThrowMsg(AbstractSocket::Exception::ListenFailed, - "Invalid socket state, should be 'None'"); - } - - LogPedantic("Starting to listen..."); - - // Do listen - if (listen(m_socket, backlog) != 0) { - Throw(AbstractSocket::Exception::ListenFailed); - } - - // Begin read watch - AddAcceptWatch(); - m_internalState = InternalState_Listening; - - LogPedantic("Listen started"); - } - - virtual AbstractSocket *Accept() - { - if (m_internalState != InternalState_Listening) { - ThrowMsg(AbstractSocket::Exception::AcceptFailed, - "Invalid socket state, should be 'Listening'"); - } - - LogPedantic("Accepting..."); - - // Do listen - socklen_t length = 0; - int client = TEMP_FAILURE_RETRY(accept(m_socket, NULL, &length)); - - LogPedantic("Socket accept returned " << client); - if (client == -1) { - // Check if there is any client waiting - if (errno == EWOULDBLOCK || errno == EAGAIN) { - return NULL; - } - int err = errno; - if (errno == ENOENT) { - return NULL; - } - LogPedantic("throwing error. errrno " << err); - // Error occurred - Throw(AbstractSocket::Exception::AcceptFailed); - } - - LogPedantic("Accepted client. Seting up..."); - - // Create derived class type - GenericSocket *acceptedSocket = AllocAcceptedSpecificSocket(); - - // Save client socket specific descriptor - acceptedSocket->m_socket = client; - - // Enter proper states and add read watch - acceptedSocket->AddReadWatch(); - acceptedSocket->m_internalState = InternalState_Connected; - - // Set non-blocking mode for new socket - acceptedSocket->SetNonBlocking(); - - // Show info - LogPedantic("Accepted client set up"); - - // return new conneced client socket - return acceptedSocket; - } - - virtual Address GetLocalAddress() const - { - // FIXME: Additional internal state check - - socklen_t length = GetSpecificAddressSize(); - ScopedFree address(static_cast(calloc( - static_cast< - size_t>( - length), - 1))); - - if (getsockname(m_socket, address.Get(), &length) == -1) { - ThrowMsg(AbstractSocket::Exception::GetPeerNameFailed, - "Failed to get local address"); - } - - return TranslateAddressSpecificToGeneric(address.Get(), length); - } - - virtual Address GetRemoteAddress() const - { - // FIXME: Additional internal state check - - socklen_t length = GetSpecificAddressSize(); - ScopedFree address(static_cast(calloc( - static_cast< - size_t>( - length), - 1))); - - if (getpeername(m_socket, address.Get(), &length) == -1) { - ThrowMsg(AbstractSocket::Exception::GetPeerNameFailed, - "Failed to get remote address"); - } - - return TranslateAddressSpecificToGeneric(address.Get(), length); - } - - virtual BinaryQueueAutoPtr Read(size_t size) - { - if (m_internalState != InternalState_Connected) { - ThrowMsg(AbstractSocket::Exception::AcceptFailed, - "Invalid socket state, should be 'Connected'"); - } - - Try - { - // Adjust bytes to be read - size_t bytesToRead = size > - DEFAULT_READ_BUFFER_SIZE ? DEFAULT_READ_BUFFER_SIZE : size; - - // Malloc default read buffer size - // It is unmanaged, so it can be then attached directly to binary - // queue - void *buffer = malloc(bytesToRead); - - if (buffer == NULL) { - throw std::bad_alloc(); - } - - // Receive bytes from socket - ssize_t result = - TEMP_FAILURE_RETRY(recv(m_socket, buffer, bytesToRead, 0)); - - if (result > 0) { - // Succedded to read socket data - BinaryQueueAutoPtr binaryQueue(new BinaryQueue()); - - // Append unmanaged memory - binaryQueue->AppendUnmanaged(buffer, - result, - &BinaryQueue::BufferDeleterFree, - NULL); - - // Return buffer - return binaryQueue; - } else if (result == 0) { - // Socket was gracefuly closed - free(buffer); - - // Return empty buffer - return BinaryQueueAutoPtr(new BinaryQueue()); - } else { - // Must first save errno value, because it may be altered - int lastErrno = errno; - - // Free buffer - free(buffer); - - // Interpret error result - switch (lastErrno) { - case EAGAIN: // = EWOULDBLOCK - // - // * The socket's file descriptor is marked O_NONBLOCK and - // no data is waiting - // to be received; or MSG_OOB is set and no out-of-band - // data is available - // and either the socket's file descriptor is marked - // O_NONBLOCK or the socket - // does not support blocking to await out-of-band data. - // - // return null data buffer to indicate no data waiting - // - return BinaryQueueAutoPtr(); - - case EBADF: - // - // * The socket argument is not a valid file descriptor. - // - // This is internal error - // - ThrowMsg(CommonException::InternalError, - "Invalid socket descriptor"); - - case ECONNRESET: - // - // * A connection was forcibly closed by a peer. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case EINTR: - // - // * The recv() function was interrupted by a signal that - // was caught, before any - // data was available. - // - // No interrupt here is expected, due to fact that we used - // TEMP_FAILURE_RETRY - // - ThrowMsg(CommonException::InternalError, - "Unexpected interrupt occurred"); - - case EINVAL: - // - // * The MSG_OOB flag is set and no out-of-band data is - // available. - // - // We did not specified OOB data. This is an error. - // - ThrowMsg(CommonException::InternalError, - "Unexpected OOB error occurred"); - - case ENOTCONN: - // - // * A receive is attempted on a connection-mode socket that - // is not connected. - // - // FIXME: Is this proper exception here ? - // - ThrowMsg(CommonException::InternalError, - "Socket is not connected"); - - case ENOTSOCK: - // - // * The socket argument does not refer to a socket. - // - ThrowMsg(CommonException::InternalError, - "Handle is not a socket"); - - case EOPNOTSUPP: - // - // * The specified flags are not supported for this socket - // type or protocol. - // - ThrowMsg(CommonException::InternalError, - "Socket flags not supported"); - - case ETIMEDOUT: - // - // * The connection timed out during connection - // establishment, or due to a transmission timeout on active - // connection. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case EIO: - // - // * An I/O error occurred while reading from or writing to - // the file system. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case ENOBUFS: - // - // * Insufficient resources were available in the system to - // perform the operation. - // - ThrowMsg(CommonException::InternalError, - "Insufficient system resources"); - - case ENOMEM: - // - // * Insufficient memory was available to fulfill the - // request. - // - ThrowMsg(CommonException::InternalError, - "Insufficient system memory"); - - default: - // Some kernel error occurred, should never happen - ThrowMsg(CommonException::InternalError, - "Unknown kernel read error returned"); - break; - } - } - } - Catch(CommonException::InternalError) - { - // If any internal error occurred, this is fatal for Write method - // interpret this as WriteError exception and rethrow - ReThrow(AbstractSocket::Exception::ReadFailed); - } - } - - virtual size_t Write(const BinaryQueue &buffer, size_t bufferSize) - { - if (m_internalState != InternalState_Connected) { - ThrowMsg(AbstractSocket::Exception::AcceptFailed, - "Invalid socket state, should be 'Connected'"); - } - - Try - { - // Adjust write size - if (bufferSize > buffer.Size()) { - bufferSize = buffer.Size(); - } - - // FIXME: User write visitor to write ! - // WriteVisitor visitor - - ScopedFree flattened(malloc(bufferSize)); - buffer.Flatten(flattened.Get(), bufferSize); - - // Linux: MSG_NOSIGNAL is supported, but it is not an ideal solution - // FIXME: Should we setup signal PIPE ignoring for whole process ? - // In BSD, there is: setsockopt(c, SOL_SOCKET, SO_NOSIGPIPE, (void - // *)&on, sizeof(on)) - ssize_t result = - TEMP_FAILURE_RETRY(send(m_socket, flattened.Get(), bufferSize, - MSG_NOSIGNAL)); - - if (result > 0) { - // Successfuly written some bytes - return static_cast(result); - } else if (result == 0) { - // This is abnormal result - ThrowMsg(CommonException::InternalError, - "Invalid socket write result, 0 bytes written"); - } else if (result == -1) { - // Interpret error result - switch (errno) { - case EAGAIN: // = EWOULDBLOCK - // - // * The socket's file descriptor is marked O_NONBLOCK and - // the requested operation would block. - // - // We should wait for writability - // - return 0; - - case EBADF: - // - // * The socket argument is not a valid file descriptor. - // - // This is internal error - // - ThrowMsg(CommonException::InternalError, - "Invalid socket descriptor"); - - case ECONNRESET: - // - // * A connection was forcibly closed by a peer. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case EDESTADDRREQ: - // - // * The socket is not connection-mode and no peer address - // is set. - // - // FIXME: Is this proper exception here ? - // - ThrowMsg(CommonException::InternalError, - "Socket is not connected"); - - case EINTR: - // - // * A signal interrupted send() before any data was - // transmitted. - // - // No interrupt here is expected, due to fact that we used - // TEMP_FAILURE_RETRY - // - ThrowMsg(CommonException::InternalError, - "Unexpected interrupt occurred"); - - case EMSGSIZE: - // - // * The message is too large to be sent all at once, as the - // socket requires. - // - // FIXME: Is this proper exception here ? - // - ThrowMsg(CommonException::InternalError, - "Socket message is too big"); - - case ENOTCONN: - // - // * The socket is not connected or otherwise has not had - // the peer pre-specified. - // - // FIXME: Is this proper exception here ? - // - ThrowMsg(CommonException::InternalError, - "Socket is not connected"); - - case ENOTSOCK: - // - // * The socket argument does not refer to a socket. - // - ThrowMsg(CommonException::InternalError, - "Handle is not a socket"); - - case EOPNOTSUPP: - // - // * The socket argument is associated with a socket that - // does not support one or more of the values set in flags. - // - ThrowMsg(CommonException::InternalError, - "Socket flags not supported"); - - case EPIPE: - // - // * The socket is shut down for writing, or the socket is - // connection-mode and - // is no longer connected. In the latter case, and if the - // socket is of type - // SOCK_STREAM, the SIGPIPE signal is generated to the - // calling thread. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case EACCES: - // - // * The calling process does not have the appropriate - // privileges. - // - // Priviledges might have changed. - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case EIO: - // - // * An I/O error occurred while reading from or writing to - // the file system. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case ENETDOWN: - // - // * The local network interface used to reach the - // destination is down. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case ENETUNREACH: - // - // * No route to the network is present. - // - // In result, we can interpret this error as a broken - // connection - // - Throw(AbstractSocket::Exception::ConnectionBroken); - - case ENOBUFS: - // - // * Insufficient resources were available in the system to - // perform the operation. - // - ThrowMsg(CommonException::InternalError, - "Insufficient system resources"); - - default: - // Some kernel error occurred, should never happen - ThrowMsg(CommonException::InternalError, - "Unknown kernel write error returned"); - break; - } - } - } - Catch(CommonException::InternalError) - { - // If any internal error occurred, this is fatal for Write method - // interpret this as WriteError exception and rethrow - ReThrow(AbstractSocket::Exception::WriteFailed); - } - - // Does not apply - return 0; - } - - // AbstractWaitableInput - virtual WaitableHandle WaitableReadHandle() const - { - return m_socket; - } - - // AbstractWaitableOutput - virtual WaitableHandle WaitableWriteHandle() const - { - return m_socket; - } -}; -} -} // namespace DPL - -#endif // DPL_GENERIC_SOCKET_H diff --git a/modules_wearable/socket/src/waitable_input_output_execution_context_support.cpp b/modules_wearable/socket/src/waitable_input_output_execution_context_support.cpp deleted file mode 100644 index 35635b5..0000000 --- a/modules_wearable/socket/src/waitable_input_output_execution_context_support.cpp +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file waitable_input_output_execution_context_support.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of waitable input-output - * execution context support - */ -#include -#include -#include -#include // FIXME: Remove !!! -#include -#include - -namespace DPL { -namespace Socket { -namespace // anonymous -{ -const size_t DEFAULT_READ_SIZE = 2048; -} // namespace anonymous - -WaitableInputOutputExecutionContextSupport:: - WaitableInputOutputExecutionContextSupport() : - m_opened(false), - m_waitableInputOutput(NULL), - m_hasReadWatch(false), - m_hasWriteWatch(false) -{} - -WaitableInputOutputExecutionContextSupport::~ -WaitableInputOutputExecutionContextSupport() -{ - // Ensure support is closed - Close(); -} - -void WaitableInputOutputExecutionContextSupport::Open( - AbstractWaitableInputOutput *inputOutput) -{ - if (m_opened) { - Throw(Exception::AlreadyOpened); - } - - LogPedantic("Opening waitable input-output execution context support..."); - - // Save IO handle - m_waitableInputOutput = inputOutput; - - // Register read watch - Assert(m_hasReadWatch == false); - - AddReadWatch(); - m_hasReadWatch = true; - - // Done - m_opened = true; - - LogPedantic("Waitable input-output execution context support opened"); -} - -void WaitableInputOutputExecutionContextSupport::Close() -{ - if (!m_opened) { - return; - } - - LogPedantic("Closing waitable input-output execution context support..."); - - // Remove read and write watches - CheckedRemoveReadWriteWatch(); - - // Set proper state - m_opened = false; - - LogPedantic("Waitable input-output execution context support closed"); -} - -void WaitableInputOutputExecutionContextSupport::AddReadWatch() -{ - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_waitableInputOutput - ->WaitableReadHandle(), - WaitMode - ::Read); -} - -void WaitableInputOutputExecutionContextSupport::RemoveReadWatch() -{ - WaitableHandleWatchSupport::InheritedContext()->RemoveWaitableHandleWatch( - this, - m_waitableInputOutput->WaitableReadHandle(), - WaitMode::Read); -} - -void WaitableInputOutputExecutionContextSupport::AddWriteWatch() -{ - WaitableHandleWatchSupport::InheritedContext()->AddWaitableHandleWatch( - this, - m_waitableInputOutput - ->WaitableWriteHandle(), - WaitMode - ::Write); -} - -void WaitableInputOutputExecutionContextSupport::RemoveWriteWatch() -{ - WaitableHandleWatchSupport::InheritedContext()->RemoveWaitableHandleWatch( - this, - m_waitableInputOutput->WaitableWriteHandle(), - WaitMode::Write); -} - -void WaitableInputOutputExecutionContextSupport::CheckedRemoveReadWatch() -{ - if (!m_hasReadWatch) { - return; - } - - RemoveReadWatch(); - m_hasReadWatch = false; -} - -void WaitableInputOutputExecutionContextSupport::CheckedRemoveWriteWatch() -{ - if (!m_hasWriteWatch) { - return; - } - - RemoveWriteWatch(); - m_hasWriteWatch = false; -} - -void WaitableInputOutputExecutionContextSupport::CheckedRemoveReadWriteWatch() -{ - // Remove read watch if any - CheckedRemoveReadWatch(); - - // Remove write watch if any - CheckedRemoveWriteWatch(); -} - -void WaitableInputOutputExecutionContextSupport::OnWaitableHandleEvent( - WaitableHandle waitableHandle, - WaitMode::Type mode) -{ - (void)waitableHandle; - - switch (mode) { - case WaitMode::Read: - LogPedantic("Read event occurred"); - - // Read and parse bytes - ReadInput(); - - // Done - break; - - case WaitMode::Write: - LogPedantic("Write event occurred"); - - // Push bytes and unregister from write event - FeedOutput(); - - // Unregister write watch only if no more data is available - if (m_outputStream.Empty()) { - Assert(m_hasWriteWatch == true); - CheckedRemoveWriteWatch(); - } - - // Done - break; - - default: - Assert(0); - break; - } -} - -void WaitableInputOutputExecutionContextSupport::ReadInput() -{ - LogPedantic("Reading input bytes"); - - Try - { - BinaryQueueAutoPtr inputBuffer = m_waitableInputOutput->Read( - DEFAULT_READ_SIZE); - - if (inputBuffer.get() == NULL) { - // No data, should not occur - LogPedantic("WARNING: Spontaneous ReadSocket occurred"); - return; - } - - if (inputBuffer->Empty()) { - // Connection was closed - OnInputStreamClosed(); - - // Unregister from further event insisting - Assert(m_hasReadWatch == true); - CheckedRemoveReadWriteWatch(); - - // Set proper state - m_opened = false; - - // Done - return; - } - - LogPedantic("Read " << inputBuffer->Size() << " input bytes"); - - // Append all read data - m_inputStream.AppendMoveFrom(*inputBuffer); - } - Catch(AbstractSocket::Exception::ConnectionBroken) - { - //FIXME: Inproper exception abstraction!!! - // Some errors occurred while feeding abstract IO - // Interpret connection broken errors, and pass futher other ones - LogPedantic("Abstract IO connection was broken during read"); - - // Signal broken connection - OnInputStreamBroken(); - - // Unregister from further event insisting - Assert(m_hasReadWatch == true); - CheckedRemoveReadWriteWatch(); - - // Set proper state - m_opened = false; - - // Do not continue - return; - } - - // Interpret data - OnInputStreamRead(); -} - -void WaitableInputOutputExecutionContextSupport::FeedOutput() -{ - if (!m_opened) { - Throw(Exception::NotOpened); - } - - // Anything to feed ? - if (m_outputStream.Empty()) { - return; - } - - // OK to feed output - LogPedantic("Feeding output"); - - Try - { - // Try to write some bytes - size_t bytes = m_waitableInputOutput->Write(m_outputStream, - m_outputStream.Size()); - - if (bytes < m_outputStream.Size()) { - // Start exhaustive output feeding if it is blocked and not already - // started - if (!m_hasWriteWatch) { - AddWriteWatch(); - m_hasWriteWatch = true; - - LogPedantic("Started exhaustive output feeding"); - } - } - - // Some bytes were written, consume them - m_outputStream.Consume(bytes); - } - Catch(AbstractSocket::Exception::ConnectionBroken) // FIXME: Inproper - // exception abstraction - // !!! - { - // Some errors occurred while feeding abstract IO - // Interpret connection broken errors, and pass futher other ones - LogPedantic("Abstract IO connection was broken during write"); - - // Signal broken connection - OnInputStreamBroken(); - - // Unregister from further event insisting - Assert(m_hasReadWatch == true); - CheckedRemoveReadWriteWatch(); - - // Set proper state - m_opened = false; - - // Do not continue - return; - } -} -} -} // namespace DPL diff --git a/modules_wearable/support/wrt_plugin_export.h b/modules_wearable/support/wrt_plugin_export.h deleted file mode 100755 index 0cf4e37..0000000 --- a/modules_wearable/support/wrt_plugin_export.h +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_plugin_export.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief Header file for plugin export API - */ -#ifndef WRT_PLUGIN_EXPORT_H -#define WRT_PLUGIN_EXPORT_H - -#include - -/** - * Widget handle type - */ -typedef int widget_handle_t; - -/** - * Parameter which should be used during policy evaluation. - */ -typedef struct ace_param_s -{ - const char *name; - const char *value; -} ace_param_t; - -/** - * List of additional parameters which should be used during policy evaluation. - */ -typedef struct ace_param_list_s -{ - size_t count; - ace_param_t *param; -} ace_param_list_t; - -/** - * Contains list of device capabilities. Each device capability may have - * associated list of function params. - */ -typedef struct ace_device_cap_s -{ - size_t devcapsCount; - const char** dev_cap_names; - size_t paramsCount; - ace_param_list_t* params; -} ace_device_cap_t; - -/** - * List of device capabilities which must be check. - */ -typedef struct ace_device_capabilities_s -{ - size_t count; - const char **device_cap; -} ace_device_capabilities_t; - -/** - * List of api features that must be checked - */ -typedef struct ace_api_features_s -{ - size_t count; - const char **api_feature; -} ace_api_features_t; - -/** - * Data from request will be used to evaluate policy file. - */ -typedef struct ace_request_s -{ - widget_handle_t widget_handle; - const char* feature_api; - const char* function_name; - ace_device_capabilities_t device_capabilities; - ace_param_list_t param_list; -} ace_request_t; - -/** - * Data from request will be used to evaluate policy file. - */ -typedef struct ace_request_2_s -{ - widget_handle_t widget_handle; - ace_api_features_t api_features; - const char* function_name; - ace_device_cap_t device_capabilities; -} ace_request_2_t; - -/** - * info returned by plugin_api_check_access - */ -#define PLUGIN_API_ACCESS_GRANTED 1 -#define PLUGIN_API_ACCESS_DENIED 0 -#define PLUGIN_API_ACCESS_ERROR -1 - -typedef const void* java_script_context_t; - -typedef struct js_object_properties_s -{ - size_t count; - char** properties; -} js_object_properties_t; - -typedef const void* js_class_template_t; -typedef void* js_object_ref_t; -typedef const void* js_value_ref_t; - -typedef js_class_template_t (*js_class_template_getter)(void); -typedef void* (*js_class_constructor_cb_t)(js_class_template_t, - js_object_ref_t, size_t, - js_value_ref_t[], - js_value_ref_t*); - -typedef enum class_definition_type_e -{ - JS_CLASS, - JS_FUNCTION, - JS_INTERFACE -} class_definition_type_t; - -typedef enum class_definition_iframe_behaviour_e -{ - //object should not be initalized in iframes - //it is default one - NONE, - //object should be copied as reference to each iframe - REFERENCE, // deprecated - //object should be created for each iframe and NOT inform plugin - CREATE_INSTANCE -} class_definition_iframe_behaviour_t; - -typedef enum class_definition_iframe_notice_e -{ - //it is default one - NONE_NOTICE, - ALWAYS_NOTICE -} class_definition_iframe_notice_t; - -typedef enum class_definition_iframe_overlay_e -{ - IGNORED, - USE_OVERLAYED, //deprecated - OVERLAYED_BEFORE_ORIGINAL //deprecated -} class_definition_iframe_overlay_t; //deprecated - -typedef void* js_object_instance_t; -//global_context - id -typedef void (*iframe_loaded_cb)(java_script_context_t global_context, - js_object_instance_t iframe, - js_object_instance_t object); - -typedef void* (*js_function_impl)(void*); - -typedef struct class_definition_options_s -{ - class_definition_type_t type; - class_definition_iframe_behaviour_t iframe_option; - class_definition_iframe_notice_t iframe_notice; - class_definition_iframe_overlay_t iframe_overlay; //deprecated - iframe_loaded_cb cb; - void * private_data; - js_function_impl function; -} class_definition_options_t; - -/* - * list of device caps - */ -typedef struct devcaps_s -{ - char** deviceCaps; - size_t devCapsCount; -} devcaps_t; - -/* - * mapping from a feature to corresponding list of device capabilities - */ -typedef struct feature_devcaps_s -{ - char* feature_name; - devcaps_t devCaps; -} feature_devcaps_t; - -/* - * list of feature_devcaps_t structs - */ -typedef struct feature_mapping_s -{ - feature_devcaps_t* features; - size_t featuresCount; -} feature_mapping_t; - -typedef feature_mapping_t* pfeature_mapping_t; - -typedef pfeature_mapping_t (*features_getter)(void); - -typedef const devcaps_t* (*devcaps_getter)(pfeature_mapping_t /*features*/, - const char* /*featureName*/); -typedef void (*deinitializer)(pfeature_mapping_t /*features*/); - -typedef struct feature_mapping_interface_s -{ - features_getter featGetter; /* returns a list of api features */ - devcaps_getter dcGetter; /* - * for a given api feature returns a list of - * corresponding device capabilities - */ - - deinitializer release; /* as memory ownership of features is - * transfered to callee you have to call - * the release function ptr on features - */ -} feature_mapping_interface_t; - -/* - * This is a structure describing a JS entity template (a class, an interface - * or function), object name and it's parent class name (parent_name). JS - * entity will be bind to a parent class name (parent_name.js_entity_name). - * @param parent_name - parent name (ie Widget.Device) - * @param object_name - object name (DeviceStatus) - * @param interface_name - interface name (e.g. Widget) - * @param js_class_template_getter_fun - js_class_template required to create - * JS object - * @param js_class_consturctor_cb - constructor to call to when instance of - * certain interface is created - * @param private_data private data for object creator if required (usually - * NULL) - */ -typedef struct js_entity_definition_s -{ - const char *parent_name; - const char *object_name; - const char *interface_name; - js_class_template_getter js_class_template_getter_fun; - js_class_constructor_cb_t js_class_constructor_cb; - //class options may be null - default - class_definition_options_t* class_options; -} js_entity_definition_t; - -typedef const js_entity_definition_t *js_entity_definition_ptr_t; - -/** - * Plugin export names - */ -#define PLUGIN_WIDGET_START_PROC on_widget_start -#define PLUGIN_WIDGET_INIT_PROC on_widget_init -#define PLUGIN_WIDGET_STOP_PROC on_widget_stop -#define PLUGIN_FRAME_LOAD_PROC on_frame_load -#define PLUGIN_FRAME_UNLOAD_PROC on_frame_unload -#define PLUGIN_CLASS_MAP class_map -#define PLUGIN_GET_CLASS_PROC_MAP get_widget_class_map - -#define PLUGIN_WIDGET_START_PROC_NAME "on_widget_start" -#define PLUGIN_WIDGET_INIT_PROC_NAME "on_widget_init" -#define PLUGIN_WIDGET_STOP_PROC_NAME "on_widget_stop" -#define PLUGIN_FRAME_LOAD_PROC_NAME "on_frame_load" -#define PLUGIN_FRAME_UNLOAD_PROC_NAME "on_frame_unload" -#define PLUGIN_CLASS_MAP_NAME "class_map" -#define PLUGIN_GET_CLASS_MAP_PROC_NAME "get_widget_class_map" - -/** - * Plugin export typedefs - */ -typedef void (*on_widget_start_proc)(int widgetId); - -typedef void (*on_widget_init_proc)(feature_mapping_interface_t *interface); - -/** - * FIXME: Add documentation - */ -typedef void (*on_widget_stop_proc)(int widgetId); - -typedef void (*on_frame_load_proc)(java_script_context_t context); - -typedef void (*on_frame_unload_proc)(java_script_context_t context); - -typedef const js_entity_definition_t* (*get_widget_entity_map_proc)(); - -#endif // WRT_PLUGIN_EXPORT_H diff --git a/modules_wearable/test/include/dpl/test/abstract_input_reader.h b/modules_wearable/test/include/dpl/test/abstract_input_reader.h deleted file mode 100644 index 6b23dd6..0000000 --- a/modules_wearable/test/include/dpl/test/abstract_input_reader.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_input_reader.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Simple output reader template - * - * This generic skeleton for parser which assume being composed from abstract two logical components: - * - * - parser, - * - tokenizer/lexer, - * which implements token flow logic. Logic of components may be arbitrary. See depending change for uses. - * - * Components are created at start time of reader (constructor which moves arguments). - * Virtuality (abstract base classes) are for enforcing same token type. - * I assumed it's more clear than writen static asserts in code enforcing this. - */ - -#ifndef ABSTRACT_INPUT_READER_H -#define ABSTRACT_INPUT_READER_H - -#include - -#include -#include -#include -#include - -namespace DPL { - -/** - * Base reader class that can be used with any AbstractInput instance - * - * This class is encapsulation class for tokenizer and reader subelements - * and contains basic calculation pattern - * - * There a waste in form of virtuality for parser and tokenizer - * -> this for forcing same tokenT type in both components - */ -template class AbstractInputReader -{ -public: - typedef ResultT TokenType; - typedef TokenT ResultType; - typedef AbstractInputParser ParserBase; - typedef AbstractInputTokenizer TokenizerBase; - - class Exception - { - public: - typedef typename TokenizerBase::Exception::TokenizerError TokenizerError; - typedef typename ParserBase::Exception::ParserError ParserError; - }; - - AbstractInputReader(std::shared_ptr ia, - std::unique_ptr && parser, - std::unique_ptr && tokenizer) - : m_parser(std::move(parser)), m_tokenizer(std::move(tokenizer)) - { - m_tokenizer->Reset(ia); - } - - virtual ~AbstractInputReader() {} - - ResultT ReadInput() - { - typedef typename Exception::TokenizerError TokenizerError; - typedef typename Exception::ParserError ParserError; - - while(true) - { - std::unique_ptr token = m_tokenizer->GetNextToken(); - if(!token) - { - if(!m_tokenizer->IsStateValid()) - { - ThrowMsg(TokenizerError, "Tokenizer error"); - } - if(!m_parser->IsStateValid()) - { - ThrowMsg(ParserError, "Parser error"); - } - - return m_parser->GetResult(); - } - m_parser->ConsumeToken(std::move(token)); - } - } - -protected: - std::unique_ptr m_parser; - std::unique_ptr m_tokenizer; -}; - -} - -#endif diff --git a/modules_wearable/test/include/dpl/test/abstract_input_tokenizer.h b/modules_wearable/test/include/dpl/test/abstract_input_tokenizer.h deleted file mode 100644 index a376341..0000000 --- a/modules_wearable/test/include/dpl/test/abstract_input_tokenizer.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file abstract_input_tokenizer.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @brief Simple tokenizer abstraction - */ - -#ifndef ABSTRACT_INPUT_TOKENIZER_H -#define ABSTRACT_INPUT_TOKENIZER_H - -#include -#include - -#include -#include -#include - -namespace DPL { - -/** - * Tokenizer abstract base class - * - * This class is supposed to accept AbstractInput in constructor - * and produce tokens until end of source. If parsing ends in invalid state - * then IsStateValid() should return false - */ -template class AbstractInputTokenizer -{ -public: - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, TokenizerError) - }; - - typedef Token TokenType; - - AbstractInputTokenizer() {} - virtual ~AbstractInputTokenizer() {} - - /** - * @brief Reset resets data source - * @param wia AbstractWaitableInputAdapter instance - */ - virtual void Reset(std::shared_ptr wia) - { - m_input = wia; - } - - /** - * @brief GetNextToken - * - * Parses next token. - * Returns pointer to token - * @throw TokenizerError in condition of input source error - * If returned empty pointer IsStateValid() == true -> end of input - * IsStateValid() == false -> error - * - * @param token token to be set - * @return - */ - virtual std::unique_ptr GetNextToken() = 0; - virtual bool IsStateValid() = 0; - -protected: - std::shared_ptr m_input; -}; - -} - -#endif diff --git a/modules_wearable/test/src/test_runner_multiprocess.cpp b/modules_wearable/test/src/test_runner_multiprocess.cpp deleted file mode 100644 index 691966f..0000000 --- a/modules_wearable/test/src/test_runner_multiprocess.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_runner_multiprocess.cpp - * @author Marcin Niesluchowski (m.niesluchow@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of multiprocess test runner - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace { - -const int MULTI_TEST_ERROR = -1; -const int MULTI_TEST_PASS = 0; -const int MULTI_TEST_FAILED = 1; -const int MULTI_TEST_IGNORED = 2; -const int MULTI_TEST_INTERNAL = 3; - -} - -namespace DPL { -namespace Test { - -SimplePipeWrapper::SimplePipeWrapper() -: PipeWrapper() -{ - -} - -SimplePipeWrapper::~SimplePipeWrapper() -{ - -} - -PipeWrapper::Status SimplePipeWrapper::send(std::string &message) -{ - if (m_pipefd[1] == PIPE_CLOSED) { - return ERROR; - } - - if (message.size() > PIPE_BUF-1) { - return ERROR; - } - - char buffer[PIPE_BUF] = { 0 }; - - - for(unsigned int i = 0; i < message.size(); ++i) { - buffer[i] = message[i]; - } - - return writeHelp(buffer, PIPE_BUF); -} - -PipeWrapper::Status SimplePipeWrapper::receive(std::string &data, bool &empty, time_t deadline) -{ - if (m_pipefd[0] == PIPE_CLOSED) { - return ERROR; - } - - empty = false; - - data.resize(PIPE_BUF); - - char buffer[PIPE_BUF] = { 0 }; - - int ready = 0; - while (ready != PIPE_BUF) { - time_t wait = deadline - time(0); - wait = wait < 1 ? 1 : wait; - pollfd fds = { m_pipefd[0], POLLIN, 0 }; - - int pollReturn = poll(&fds, 1, wait * 1000); - - if (pollReturn == 0) { - return TIMEOUT; // Timeout - } - - if (pollReturn < -1) { - return ERROR; - } - int ret = read(m_pipefd[0], &buffer[ready], PIPE_BUF - ready); - if (ret == -1 && (errno == EAGAIN || errno == EINTR)) { - continue; - } - - if (ret == -1) { - closeHelp(0); - return ERROR; - } - if (ret == 0) { - empty = true; - break; - } - - ready += ret; - } - - - for(unsigned int i = 0; i < PIPE_BUF; ++i){ - if(buffer[i] == 0) { - data.resize(i); - return SUCCESS; - } - data[i] = buffer[i]; - } - - return ERROR; -} - -void RunMultiProc(TestRunner::TestCase procMulti) -{ - SimplePipeWrapper pipe; - int code = MULTI_TEST_PASS; - std::string msg = ""; - int pipeReturn; - - int waitStatus; - - pid_t top_pid = getpid(); - - if (!pipe.isReady()) { - throw TestRunner::TestFailed("Pipe creation failed"); - } - // pipe - - try { - procMulti(); - } catch (const TestRunner::TestFailed &e) { - code = MULTI_TEST_FAILED; - msg = e.GetMessage(); - } catch (const TestRunner::Ignored &e) { - code = MULTI_TEST_IGNORED; - msg = e.GetMessage(); - } catch (const DPL::Exception &e) { - code = MULTI_TEST_INTERNAL; - msg = "DPL exception:" + e.GetMessage(); - } catch (const std::exception &) { - code = MULTI_TEST_INTERNAL; - msg = "std exception"; - } catch (...) { - // Unknown exception failure - code = MULTI_TEST_INTERNAL; - msg = "unknown exception"; - } - - while (true) { - pid_t child_pid = wait(&waitStatus); - if (child_pid == -1) { - if (errno == ECHILD) { - if (top_pid == getpid()) { - std::string recMsg=""; - - pipe.setUsage(PipeWrapper::READONLY); - - bool empty=false; - while(true) { - pipeReturn = pipe.receive(recMsg, empty, time(0) + 10); - - if (empty) { - break; - } - if (pipeReturn == PipeWrapper::ERROR) { - pipe.closeAll(); - throw TestRunner::TestFailed("Reading pipe error"); - } else if (pipeReturn == PipeWrapper::TIMEOUT) { - pipe.closeAll(); - throw TestRunner::TestFailed("Timeout error"); - } - msg = msg + "\n" + recMsg; - } - pipe.closeAll(); - - switch(code) { - case MULTI_TEST_PASS: - return; - case MULTI_TEST_FAILED: - throw TestRunner::TestFailed(msg); - case MULTI_TEST_IGNORED: - throw TestRunner::Ignored(msg); - case MULTI_TEST_INTERNAL: - throw TestRunner::TestFailed(msg); - default: - throw TestRunner::TestFailed(msg); - } - } else { - pipe.setUsage(PipeWrapper::WRITEONLY); - - pipeReturn = pipe.send(msg); - - if (pipeReturn == PipeWrapper::ERROR) { - pipe.closeAll(); - code = MULTI_TEST_ERROR; - } - - exit(code); - } - } - } else if (WIFEXITED(waitStatus)) { - if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_FAILED) { - switch (code) { - case MULTI_TEST_PASS: - code = MULTI_TEST_FAILED; - break; - case MULTI_TEST_FAILED: - break; - case MULTI_TEST_IGNORED: - code = MULTI_TEST_FAILED; - break; - case MULTI_TEST_INTERNAL: - break; - default: - break; - } - } else if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_IGNORED) { - switch (code) { - case MULTI_TEST_PASS: - code = MULTI_TEST_IGNORED; - break; - case MULTI_TEST_FAILED: - break; - case MULTI_TEST_IGNORED: - break; - case MULTI_TEST_INTERNAL: - break; - default: - break; - } - } else if ((signed char)WEXITSTATUS(waitStatus) == MULTI_TEST_INTERNAL) { - switch (code) { - case MULTI_TEST_PASS: - code = MULTI_TEST_INTERNAL; - break; - case MULTI_TEST_FAILED: - code = MULTI_TEST_INTERNAL; - break; - case MULTI_TEST_IGNORED: - code = MULTI_TEST_INTERNAL; - break; - case MULTI_TEST_INTERNAL: - break; - default: - break; - } - } else if ((signed char)WEXITSTATUS(waitStatus) != MULTI_TEST_PASS) { - code = MULTI_TEST_ERROR; - msg = "PROCESS BAD CODE RETURN"; - } - } - } -} -} // namespace Test -} // namespace DPL diff --git a/modules_wearable/utils/include/dpl/utils/path.h b/modules_wearable/utils/include/dpl/utils/path.h deleted file mode 100644 index 83290d0..0000000 --- a/modules_wearable/utils/include/dpl/utils/path.h +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file path.h - * @author Tomasz Iwanek (t.iwanek@samsung.com) - * @version 1.0 - */ -#ifndef PATH_H -#define PATH_H - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -namespace DPL { -namespace Utils { -class Path; -} -} - -std::ostream & operator<<(std::ostream & str, const DPL::Utils::Path & path); - -namespace DPL { -namespace Utils { -/** - * @brief The Path class path abstraction - * - * Class for expressing paths not limited not existing ones. - * It's possible to check if path exists, remove it or iterate it if it's directory - * - * Created Path object allways contains absolute path, never relative path. - * Simplifies common usage cases: - * - path construction (with /= and / operators) - * - directory iterator (begin(), end(), iterator construction) - * - receiving filenames and directory names of given paths - * - checking what is pointed by path (Exists(), IsFile(), IsDir()) - * - * Check tests for details of usage. - */ -class Path -{ -public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, BaseException) - DECLARE_EXCEPTION_TYPE(BaseException, AlreadyExists) //path already exists - DECLARE_EXCEPTION_TYPE(BaseException, NotPrefix) //given path is not prefix of this path - DECLARE_EXCEPTION_TYPE(BaseException, NotExists) //file not exists - DECLARE_EXCEPTION_TYPE(BaseException, NotDirectory) //directory nto exists - DECLARE_EXCEPTION_TYPE(BaseException, OperationFailed) //operation failed due to system error(permission etc..) - DECLARE_EXCEPTION_TYPE(BaseException, EmptyPath) //object cannot be constructed with empty path - DECLARE_EXCEPTION_TYPE(BaseException, InternalError) //internal error / wrong path usage - DECLARE_EXCEPTION_TYPE(BaseException, CannotCopy) //cannot make copy - DECLARE_EXCEPTION_TYPE(BaseException, RootDirectoryError) //operation cannot be done with root diretory - - class Iterator : public std::iterator - { - public: - Iterator(); - Iterator(const char *); - Iterator& operator++(); - Iterator operator++(int); - bool operator==(const Iterator& rhs) const; - bool operator!=(const Iterator& rhs) const; - const Path & operator*(); - const Path * operator->(); - private: - void ReadNext(); - - std::shared_ptr m_dir; - std::shared_ptr m_path; - std::shared_ptr m_root; - }; - - explicit Path(const DPL::String & str); - explicit Path(const std::string & str); - explicit Path(const char * str); - Path(); - - /** - * @brief DirectoryPath shell's dirname equivalent as path - * @return directory path - */ - Path DirectoryPath() const; - /** - * @brief DirectoryName shell's dirname equivalent - * @return directory name of given path - */ - std::string DirectoryName() const; - /** - * @brief Basename shell's basename equivalent - * @return base name of given path - */ - std::string Filename() const; - /** - * @brief Fullpath fullpath based on current working diretory - * @return full path - */ - std::string Fullpath() const; - /** - * @brief Extension - * @return extension - */ - std::string Extension() const; - - bool Exists() const; - bool IsDir() const; - bool IsFile() const; - bool ExistsAndIsFile() const; - bool ExistsAndIsDir() const; - bool IsSymlink() const; - std::size_t Size() const; - /** - * @brief isSubPath Returns relative path to given base - * @param prefix base path - * @return reltive path - * - * @throws If prefix does not match to this path object - */ - bool isSubPath(const Path & other) const; - bool hasExtension(const std::string& extension) const; - - bool operator==(const Path & other) const; - bool operator!=(const Path & other) const; - - //appending to path - Path operator/(const DPL::String& part) const; - Path operator/(const std::string& part) const; - Path operator/(const char * part) const; - - Path & operator/=(const DPL::String& part); - Path & operator/=(const std::string& part); - Path & operator/=(const char * part); - - //foreach - Iterator begin() const; - Iterator end() const; - - //root error - throws error on root directory - void RootGuard() const; - -private: - - void Append(const std::string& part); - void Construct(const std::string & src); - - std::vector m_parts; - - friend std::ostream & ::operator<<(std::ostream & str, const DPL::Utils::Path & path); -}; - -/** - * @brief MkDir creates 'current path' as directory - * @param path path - * @param mode mode - */ -void MakeDir(const Path & path, mode_t mode = 0755); - -/** - * @brief MkFile creates 'current path' as empty file - * @param path path - */ -void MakeEmptyFile(const Path & path); - -/** - * @brief Remove removes 'current path' - * @param path path to remove - */ -void Remove(const Path & path); - -/** - * @brief TryRemove tries to remvoe path - * @param path returns status of removal - */ -bool TryRemove(const Path & path); - -/** - * @brief Rename renames(moves) current path - * - * If you uses this method string to path is internally change - * and this object will store new path not only anymore - * @param from source path - * @param to target path - */ -void Rename(const Path & from, const Path & to); - -/** - * @brief Exists Checks if given path exists - * @param path path - * @return true if path exists - */ -bool Exists(const Path & path); - -/** - * @brief Copy file - * - * @param from source path - * @param to target path - */ -void CopyFile(const Path & from, const Path & to); - -/** - * @brief Copy directory recursively - * - * @param from source directory path - * @param to target directory path - */ -void CopyDir(const Path & from, const Path & to); - -Path CreateTempPath(const Path & path); -} - -} - -//TODO: uncomment when user defiend literals are supported -///Path operator"" p(const char * str); - -#endif // PATH_H diff --git a/modules_wearable/utils/include/dpl/utils/wrt_utility.h b/modules_wearable/utils/include/dpl/utils/wrt_utility.h deleted file mode 100644 index 165e167..0000000 --- a/modules_wearable/utils/include/dpl/utils/wrt_utility.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_utility.h - * @version 0.8 - * @author Janusz Majnert - * @brief Common utility functions - */ - -#ifndef _WRT_UTILITY_H_ -#define _WRT_UTILITY_H_ - -#include - -/** - * Joins two paths into one - * - * @param[out] joined String for storing joined paths - * @param[in] parent String containing the first part of path - * @param[in] child String containing the second part of the path - * - * Data stored in joined before the function call will be replaced with joined - * paths. - */ -void WrtUtilJoinPaths(std::string &joined, - const std::string &parent, - const std::string &child); - -/** - * Creates directories specified by path - * - * @param[in] path Path to create - * @param[in] mode access flags, default to 0755 - * @return true on success, false on failure - * - * Function creates directory specified by path argument and all directories - * leading up to it, if they don't exist. Note that if yout wish to create - * several nested directories, you must make sure that the mode flag allows you - * to write and search the direcotries you create. - */ -bool WrtUtilMakeDir(const std::string &newpath, mode_t mode = 0755); - -/** - * This function removes the directory or file pointed to by path - * - * @param[in] path Path to the file/directory to be deleted - * - * @return true on success, false otherwise - */ -bool WrtUtilRemove(const std::string &path); - -/** - * Checks if path exists and is a regular file - * - * @param[in] path the string representing path to check - * - * @return true if regular file is accessible under path, false otherwise - */ -bool WrtUtilFileExists(const std::string &path); - -/** - * Checks if path exists and is a directory - * - * @param[in] path the string representing path to check - * - * @return true if directory is accessible under path, false otherwise - */ -bool WrtUtilDirExists(const std::string &path); - -#endif //_WRT_UTILITY_H_ - diff --git a/modules_wearable/utils/src/bash_utils.cpp b/modules_wearable/utils/src/bash_utils.cpp deleted file mode 100644 index 1222eda..0000000 --- a/modules_wearable/utils/src/bash_utils.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file bash_utils.cpp - * @author Iwanek Tomasz - * @version 1.0 - */ -#include -#include -#include - -#include - -namespace BashUtils { -std::string escape_arg(const std::string & source) -{ - static const std::string special("!$`\\\""); - std::string ret = "\""; - for (std::string::const_iterator iter = source.begin(); - iter != source.end(); - ++iter) - { - if (special.find(*iter) != std::string::npos) { - ret += std::string("\\") + *iter; - } else { - ret += *iter; - } - } - return ret + "\""; -} -} diff --git a/modules_wearable/utils/src/folder_size.cpp b/modules_wearable/utils/src/folder_size.cpp deleted file mode 100644 index 522216a..0000000 --- a/modules_wearable/utils/src/folder_size.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * - * @file folder_size.cpp - * @author Jaroslaw Osmanski (j.osmanski@samsung.com) - * @version 1.0 - * @brief Implementation for function calculating directory size - */ -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -namespace Utils { -size_t getFolderSize(const std::string& path) -{ - size_t size = 0; - FTS *fts; - FTSENT *ftsent; - char * const paths[] = { const_cast(path.c_str()), NULL }; - - if ((fts = fts_open(paths, FTS_PHYSICAL | FTS_NOCHDIR, NULL)) == NULL) { - //ERROR - int error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_open failed with error: " - << strerror(error)); - return 0; - } - - while ((ftsent = fts_read(fts)) != NULL) { - switch (ftsent->fts_info) { - case FTS_DP: - case FTS_DC: - //directory in postorder and directory causing a loop - break; - case FTS_F: - case FTS_D: - case FTS_NSOK: - case FTS_SL: - case FTS_SLNONE: - case FTS_DEFAULT: - //regular files and other objects that can be counted - size += ftsent->fts_statp->st_size; - break; - case FTS_NS: - case FTS_DOT: - case FTS_DNR: - case FTS_ERR: - default: - LogWarning(__PRETTY_FUNCTION__ - << ": traversal failed on file: " - << ftsent->fts_path - << " with error: " - << strerror(ftsent->fts_errno)); - return 0; - } - } - - if (fts_close(fts) == -1) { - int error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_close failed with error: " - << strerror(error)); - return 0; - } - - return size; -} - -namespace { -#define DECLARE_PREFIX_STRUCT(name) \ - struct Prefix##name \ - { \ - static std::string get() \ - { \ - return std::string(#name); \ - } \ - }; \ - -DECLARE_PREFIX_STRUCT(B) -DECLARE_PREFIX_STRUCT(KB) -DECLARE_PREFIX_STRUCT(MB) -DECLARE_PREFIX_STRUCT(GB) - -#undef DECLARE_PREFIX_STRUCT - -const int stepSize = 1024; -template -struct Pre; - -template -struct Pre -{ - static const double value; - static std::string printSize(double fileSize) - { - if (fileSize >= Pre::value) { - double now = fileSize / Pre::value; - std::ostringstream outputStream; - outputStream.setf(std::ios::fixed, std::ios::floatfield); - outputStream.precision(2); - outputStream << now << Postfix::get(); - return outputStream.str(); - } else { - return Pre::printSize(fileSize); - } - } -}; - -template<> -struct Pre<> -{ - static const double value; - static std::string printSize(double /*fileSize*/) - { - return "0B"; - } -}; - -const double Pre<>::value = 1.0; -template const double Pre:: - value(Pre<>::value * stepSize); - -typedef Pre FolderSizeToStringType; -} //anonymous namespace - -DPL::String fromFileSizeString(size_t fileSize) -{ - std::string output = - FolderSizeToStringType::printSize(static_cast(fileSize)); - return DPL::FromUTF8String(output); -} -} // end of namespace Utils diff --git a/modules_wearable/utils/src/warp_iri.cpp b/modules_wearable/utils/src/warp_iri.cpp deleted file mode 100644 index bd8650a..0000000 --- a/modules_wearable/utils/src/warp_iri.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file have been implemented in compliance with W3C WARP SPEC. - * but there are some patent issue between W3C WARP SPEC and APPLE. - * so if you want to use this file, refer to the README file in root directory - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include - -namespace { -// All schemes which are supported by external application should be ignored -// by WARP engine. -// -// Warp specification require from iri to have host element. File protocol -// does not contain host element so it's always denied by warp. -// Unfortunatly all widgets are using file protocol to load its data from -// hard drive. What's why we cannot check any iri with file schema. - -const char *IRI_IGNORED_SCHEME[] = { "file://", "widget://", "app://", "tel:", - "sms:", "smsto:", "mmsto:", "mailto:", "data:", "blob:", - "tizen-service:", 0 }; - -const DPL::String SCHEMA_HTTP = DPL::FromUTF8String("http"); -const DPL::String SCHEMA_HTTPS = DPL::FromUTF8String("https"); -const DPL::String SCHEMA_FTP = DPL::FromUTF8String("ftp"); -} // namespace anonymous - -WarpIRI::WarpIRI() : - m_domain(false), - m_port(UNKNOWN_PORT), - m_isAccessDefinition(false), - m_isIRIValid(false) -{} - -void WarpIRI::set(const char *p_iri, - bool domain) -{ - if (!p_iri) { - m_isAccessDefinition = m_isIRIValid = false; - return; - } - - m_domain = domain; - m_isAccessDefinition = true; - m_isIRIValid = true; - m_host.clear(); - - if (strcmp(p_iri, "*") == 0) { - return; - } - std::unique_ptr iri(iri_parse(p_iri), iri_destroy); - - if (!iri.get()) { - LogError("Error in iri_parse!"); - m_isIRIValid = false; - m_isAccessDefinition = false; - return; - } - - if (iri->scheme == NULL || iri->host == NULL) { - m_isIRIValid = false; - m_isAccessDefinition = false; - return; - } - - // all of this must be NULL in WARP definition - if (iri->user || iri->path || iri->query || iri->anchor) { - m_isAccessDefinition = false; - } - - m_schema = DPL::FromASCIIString(std::string(iri->scheme)); - m_port = static_cast(iri->port); - - if (m_port == 0) { - m_port = getPort(m_schema); - if (m_port == UNKNOWN_PORT) { - m_isAccessDefinition = false; - return; - } - } - - std::string utf8host = iri->host; - std::list hostTokenList; - DPL::Tokenize(utf8host, ".", std::front_inserter(hostTokenList)); - - if (SCHEMA_HTTP == m_schema || SCHEMA_HTTPS == m_schema) { - FOREACH(i, hostTokenList) { - char *output = NULL; - int rc = idna_to_ascii_8z(i->c_str(), - &output, - IDNA_USE_STD3_ASCII_RULES); - - if (IDNA_SUCCESS != rc) { - LogWarning("libidn error: " << rc << " " << - idna_strerror((Idna_rc)rc)); - m_isIRIValid = false; - m_isAccessDefinition = false; - } else { - std::string token(output); - std::transform(token.begin(), - token.end(), - token.begin(), - ::tolower); - m_host.push_back(DPL::FromUTF8String(token)); - } - free(output); - } - } else { - FOREACH(i, hostTokenList){ - m_host.push_back(DPL::FromUTF8String(*i)); - } - } -} - -void WarpIRI::set(const DPL::String &iristring, - bool domain) -{ - set(DPL::ToUTF8String(iristring).c_str(), domain); -} - -unsigned int WarpIRI::getPort(const DPL::String &schema) const -{ - unsigned int port = UNKNOWN_PORT; - if (schema == SCHEMA_HTTP) { - port = 80; - } else if (schema == SCHEMA_HTTPS) { - port = 443; - } else if (schema == SCHEMA_FTP) { - port = 21; - } - return port; -} - -bool WarpIRI::isSubDomain(const WarpIRI &second) const -{ - if (!m_isAccessDefinition || !second.m_isIRIValid) { - return false; - } - if (m_schema != second.m_schema) { - return false; - } - if (m_port != second.m_port) { - return false; - } - - size_t size = m_host.size() < second.m_host.size() ? - m_host.size() : second.m_host.size(); - - if (m_host.size() > second.m_host.size()) { - return false; - } - - if (!m_domain && (m_host.size() != second.m_host.size())) { - return false; - } - - for (size_t i = 0; i < size; ++i) { - if (DPL::StringCompare(m_host[i], second.m_host[i])) { - return false; - } - } - return true; -} - -bool WarpIRI::isAccessDefinition() const -{ - return m_isAccessDefinition; -} - -bool WarpIRI::getSubDomain() const -{ - return m_domain; -} - -bool WarpIRI::isIRISchemaIgnored(const char *iri) -{ - for (int i = 0; IRI_IGNORED_SCHEME[i]; ++i) { - if (0 == - strncmp(iri, IRI_IGNORED_SCHEME[i], - strlen(IRI_IGNORED_SCHEME[i]))) - { - return true; - } - } - return false; -} diff --git a/modules_wearable/utils/src/wrt_utility.cpp b/modules_wearable/utils/src/wrt_utility.cpp deleted file mode 100644 index 44044f2..0000000 --- a/modules_wearable/utils/src/wrt_utility.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file wrt_utility.cpp - * @version 0.8 - * @author Janusz Majnert - * @brief Implementation of some common utility functions - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void WrtUtilJoinPaths(std::string &joined, - const std::string &parent, - const std::string &child) -{ - size_t parent_len = parent.length(); - joined = parent; - joined += child; - //In case someone used windows-style paths - std::replace(joined.begin(), joined.end(), '\\', '/'); - - if (parent_len != 0 && child.length() != 0) { - if (joined[parent_len - 1] != '/' && joined[parent_len] != '/') { - joined.insert(parent_len, "/"); - } else if (joined[parent_len - 1] == '/' && joined[parent_len] == - '/') - { - joined.erase(parent_len, 1); - } - } -} - -bool WrtUtilMakeDir(const std::string &newpath, mode_t mode) -{ - size_t pos = 0; - int error; - - if (newpath.length() == 0) { - return false; - } - - std::string path = newpath; - - if (*(path.rbegin()) != '/') { - path += '/'; - } - - while ((pos = path.find('/', pos + 1)) != std::string::npos) { - if (mkdir(path.substr(0, pos).c_str(), mode) != 0) { - error = errno; - if (error == EEXIST) { - continue; - } - LogWarning(__PRETTY_FUNCTION__ << ": failed to create directory " - << path.substr(0, pos) - << ". Error: " - << strerror(error)); - return false; - } - } - return true; -} - -bool WrtUtilRemove(const std::string &path) -{ - FTS *fts; - FTSENT *ftsent; - bool rv = true; - int error = 0; - char * const paths[] = { const_cast(path.c_str()), NULL }; - - if ((fts = fts_open(paths, FTS_PHYSICAL | FTS_NOCHDIR, NULL)) == NULL) { - //ERROR - error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_open failed with error: " - << strerror(error)); - return false; - } - - while ((ftsent = fts_read(fts)) != NULL) { - switch (ftsent->fts_info) { - case FTS_D: - //directory in preorder - do nothing - break; - case FTS_DP: - //directory in postorder - remove - if (rmdir(ftsent->fts_accpath) != 0) { - error = errno; - LogWarning(__PRETTY_FUNCTION__ - << ": rmdir failed with error: " - << strerror(error)); - rv = false; - } - break; - case FTS_DC: - case FTS_F: - case FTS_NSOK: - case FTS_SL: - case FTS_SLNONE: - case FTS_DEFAULT: - //regular files and other objects that can safely be removed - if (unlink(ftsent->fts_accpath) != 0) { - error = errno; - LogWarning(__PRETTY_FUNCTION__ - << ": unlink failed with error: " - << strerror(error)); - rv = false; - } - break; - case FTS_NS: - LogWarning(__PRETTY_FUNCTION__ - << ": couldn't get stat info for file: " - << ftsent->fts_path - << ". The error was: " - << strerror(ftsent->fts_errno)); - rv = false; - break; - case FTS_DOT: - case FTS_DNR: - case FTS_ERR: - default: - LogWarning(__PRETTY_FUNCTION__ - << ": traversal failed with error: " - << strerror(ftsent->fts_errno)); - rv = false; - break; - } - } - - if (fts_close(fts) == -1) { - error = errno; - LogWarning(__PRETTY_FUNCTION__ << ": fts_close failed with error: " - << strerror(error)); - rv = false; - } - return rv; -} - -bool WrtUtilFileExists(const std::string &path) -{ - struct stat tmp; - if (stat(path.c_str(), &tmp) == 0) { - return S_ISREG(tmp.st_mode); - } else { - return false; - } -} - -bool WrtUtilDirExists(const std::string &path) -{ - struct stat tmp; - if (stat(path.c_str(), &tmp) == 0) { - return S_ISDIR(tmp.st_mode); - } else { - return false; - } -} - diff --git a/modules_wearable/widget_dao/dao/WrtDatabase.cpp b/modules_wearable/widget_dao/dao/WrtDatabase.cpp deleted file mode 100644 index 1cf6773..0000000 --- a/modules_wearable/widget_dao/dao/WrtDatabase.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include - -#include -#include -#include -#include -#include - -namespace WrtDB { -const char* WrtDatabase::Address() -{ - using namespace WrtDB; - return GlobalConfig::GetWrtDatabaseFilePath(); -} - -DPL::DB::SqlConnection::Flag::Type WrtDatabase::Flags() -{ - return DPL::DB::SqlConnection::Flag::UseLucene; -} - -DPL::DB::ThreadDatabaseSupport WrtDatabase::m_interface( - WrtDatabase::Address(), - WrtDatabase::Flags()); - -void WrtDatabase::attachToThreadRO() -{ - m_interface.AttachToThread(DPL::DB::SqlConnection::Flag::RO); -} - -void WrtDatabase::attachToThreadRW() -{ - m_interface.AttachToThread(DPL::DB::SqlConnection::Flag::RW); -} - -void WrtDatabase::detachFromThread() -{ - m_interface.DetachFromThread(); -} - -DPL::DB::ThreadDatabaseSupport& WrtDatabase::interface() -{ - return m_interface; -} - -bool WrtDatabase::CheckTableExist(const char *name) -{ - return m_interface.CheckTableExist(name); -} -} diff --git a/modules_wearable/widget_dao/dao/common_dao_types.cpp b/modules_wearable/widget_dao/dao/common_dao_types.cpp deleted file mode 100644 index 7c0b8c3..0000000 --- a/modules_wearable/widget_dao/dao/common_dao_types.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * - * @file common_dao_types.h - * @author Michal Ciepielski (m.ciepielski@samsung.com) - * @version 1.0 - * @brief This file contains the implementation of common data types for wrtdb - */ -#include -namespace WrtDB {} // namespace WrtDB diff --git a/modules_wearable/widget_dao/dao/feature_dao_read_only.cpp b/modules_wearable/widget_dao/dao/feature_dao_read_only.cpp deleted file mode 100644 index ee188bd..0000000 --- a/modules_wearable/widget_dao/dao/feature_dao_read_only.cpp +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file feature_dao_read_only.cpp - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the implementation of feature dao read only - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -FeatureDAOReadOnly::FeatureDAOReadOnly(FeatureHandle featureHandle) : - m_featureHandle(featureHandle) -{ - if (!isFeatureInstalled(m_featureHandle)) { - std::ostringstream exc; - exc << "Feature " << m_featureHandle << " not installed."; - LogError(exc.str()); - ThrowMsg(FeatureDAOReadOnly::Exception::FeatureNotExist, exc.str()); - } -} - -FeatureDAOReadOnly::FeatureDAOReadOnly(const std::string &featureName) -{ - LogDebug("FeatureDAOReadOnly ( " << featureName << " )"); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(Equals( - DPL::FromUTF8String(featureName))); - - m_featureHandle = select->GetSingleValue(); - LogDebug(" >> FeatureHandle retrieved: " << m_featureHandle); - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during creating FeatureDAOReadOnly"); - } -} - -#define GET_PLUGIN_DATA(func) \ - Try { \ - DPL::DB::ORM::wrt::ScopedTransaction transaction( \ - &WrtDatabase::interface()); \ - LogDebug(#func << ". FeatureHandle: " << m_featureHandle); \ - std::string ret = PluginDAOReadOnly(GetPluginHandle()).func(); \ - transaction.Commit(); \ - return ret; \ - } \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - std::ostringstream failure("Failure during "); \ - failure << #func; \ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, \ - failure.str()); \ - } - -std::string FeatureDAOReadOnly::GetLibraryPath() const -{ - GET_PLUGIN_DATA(getLibraryPath) -} - -std::string FeatureDAOReadOnly::GetLibraryName() const -{ - GET_PLUGIN_DATA(getLibraryName) -} - -#undef GET_PLUGIN_DATA - -FeatureHandle FeatureDAOReadOnly::GetFeatureHandle() const -{ - return m_featureHandle; -} - -std::string FeatureDAOReadOnly::GetName() const -{ - LogDebug("Getting Feature Name. Handle: " << m_featureHandle); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(Equals(m_featureHandle)); - - std::string ret = DPL::ToUTF8String( - select->GetSingleValue< FeaturesList::FeatureName>()); - - LogDebug(" >> Feature name: " << ret); - return ret; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting GetName"); - } -} - -DbPluginHandle FeatureDAOReadOnly::GetPluginHandle() const -{ - LogDebug("Getting Plugin handle. FHandle: " << m_featureHandle); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(Equals(m_featureHandle)); - - DbPluginHandle pluginHandle = - select->GetSingleValue< FeaturesList::PluginPropertiesId>(); - - LogDebug(" >> Plugin Handle: " << pluginHandle); - return pluginHandle; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting Plugin Handle"); - } -} - -FeatureHandleList FeatureDAOReadOnly::GetHandleList() -{ - LogDebug("Getting FeatureHandle list."); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - - FeatureHandleList ret = - select->GetValueList(); - - std::ostringstream handles; - FOREACH(it, ret) - handles << *it << " "; - LogDebug(" >> FeatureHandle list retrieved: (" << handles << ")"); - - return ret; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting FeatureHandle list"); - } -} - -bool FeatureDAOReadOnly::isFeatureInstalled(const std::string &featureName) -{ - LogDebug("Check if Feature is installed. Name: " << featureName); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(Equals( - DPL::FromUTF8String(featureName))); - - FeaturesList::Select::RowList rows = select->GetRowList(); - - bool flag = !rows.empty(); - LogDebug(" >> Feature " << featureName << - (flag ? " found." : " not found.")); - - return flag; - } - Catch(DPL::DB::SqlConnection::Exception::Base) { - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during checking if Feature is installed"); - } -} - -bool FeatureDAOReadOnly::isFeatureInstalled(FeatureHandle handle) -{ - LogDebug("Check if Feature is installed. Handle: " << handle); - Try - { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(Equals(handle)); - - FeaturesList::Select::RowList rows = select->GetRowList(); - - bool flag = !rows.empty(); - LogDebug(" >> Feature " << handle << - (flag ? " found." : " not found.")); - - return flag; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during checking if Feature is installed"); - } -} - -bool FeatureDAOReadOnly::isDeviceCapabilityInstalled( - const std::string &deviceCapName) -{ - LogDebug("Check if DeviceCap is installed. Name: " << deviceCapName); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, DeviceCapabilities, &WrtDatabase::interface()) - select->Where(Equals( - DPL::FromUTF8String(deviceCapName))); - - DeviceCapabilities::Select::RowList rows = select->GetRowList(); - - bool flag = !rows.empty(); - LogDebug(" >> Device Cap " << deviceCapName << - (flag ? "found." : "not found.")); - - return flag; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during checking if DeviceCap is installed"); - } -} - -FeatureDAOReadOnly::DeviceCapabilitiesList -FeatureDAOReadOnly::GetDeviceCapabilities() const -{ - Try { - LogDebug("Get DeviceCap. FeatureHandle: " << m_featureHandle); - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(selectDevCP, - FeatureDeviceCapProxy, - &WrtDatabase::interface()) - selectDevCP->Where(Equals( - m_featureHandle)); - - DeviceCapabilitiesList devCap; - - std::list deviceIDs = - selectDevCP->GetValueList(); - FOREACH(devCId, deviceIDs) - { - WRT_DB_SELECT(selectDevC, - DeviceCapabilities, - &WrtDatabase::interface()) - selectDevC->Where(Equals(*devCId)); - - DPL::String devNames = - selectDevC->GetSingleValue(); - - devCap.insert(DPL::ToUTF8String(devNames)); - } - - transaction.Commit(); - return devCap; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting DeviceCapabilities names"); - } -} - -FeatureHandleListPtr FeatureDAOReadOnly::GetFeatureHandleListForPlugin( - DbPluginHandle pluginHandle) -{ - LogDebug("Getting FeatureHandle list for pluginHandle: " << pluginHandle); - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(Equals(pluginHandle)); - - FeatureHandleListPtr handles(new FeatureHandleList); - FeatureHandleList ret = - select->GetValueList(); - - FOREACH(it, ret) - { - LogDebug("feature handle: " << *it); - handles->push_back(*it); - } - - return handles; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg( - FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting FeatureHandle Set for plugin handle"); - } -} - -FeatureDAOReadOnly::NameMap -FeatureDAOReadOnly::GetNames() -{ - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - - NameMap nameMap; - - FeaturesList::Select::RowList rows = select->GetRowList(); - FOREACH(rowIt, rows) - { - nameMap.insert(std::pair(rowIt->Get_FeatureUUID(), - DPL::ToUTF8String(rowIt-> - Get_FeatureName()))); - } - - return nameMap; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting GetNames"); - } -} - -FeatureDAOReadOnly::DeviceCapabilitiesMap -FeatureDAOReadOnly::GetDevCapWithFeatureHandle() -{ - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - DECLARE_COLUMN_TYPE_LIST() - SELECTED_COLUMN(FeatureDeviceCapProxy, FeatureUUID) - SELECTED_COLUMN(DeviceCapabilities, DeviceCapName) - DECLARE_COLUMN_TYPE_LIST_END(DevCapNameList) - - WRT_DB_SELECT(select, FeatureDeviceCapProxy, &WrtDatabase::interface()) - select->Join(Equal()); - - DeviceCapabilitiesMap devCap; - - std::list< CustomRow > rowList = - select->GetCustomRowList< DevCapNameList, CustomRow >(); - FOREACH(rowIt, rowList) - { - FeatureHandle featureHandle = - (*rowIt).GetColumnData(); - std::string devName = - DPL::ToUTF8String((*rowIt).GetColumnData()); - devCap.insert(std::pair(featureHandle, - devName)); - } - - return devCap; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting DeviceCapabilities names"); - } -} - -DeviceCapabilitySet FeatureDAOReadOnly::GetDeviceCapability( - const DPL::String &apifeature) -{ - // This could be done with one simply sql query but support for join is - // needed in orm. - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - int featureUUID; - FeatureDeviceCapProxy::Select::RowList rows; - DeviceCapabilitySet result; - - { - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(Equals(apifeature)); - featureUUID = select->GetSingleValue(); - } - - { - WRT_DB_SELECT(select, - FeatureDeviceCapProxy, - &WrtDatabase::interface()) - select->Where(Equals( - featureUUID)); - rows = select->GetRowList(); - } - - FOREACH(it, rows){ - WRT_DB_SELECT(select, DeviceCapabilities, &WrtDatabase::interface()) - select->Where(Equals( - it->Get_DeviceCapID())); - result.insert(select-> - GetSingleValue()); - } - - return result; - } Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failed to get device capability"); - } -} - -FeatureDAOReadOnly::FeatureMap -FeatureDAOReadOnly::GetFeatures(const std::list& featureNames) -{ - Try { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - std::set nameList; - FOREACH(nm, featureNames) { - nameList.insert(DPL::FromUTF8String(*nm)); - } - - WRT_DB_SELECT(select, FeaturesList, &WrtDatabase::interface()) - select->Where(In(nameList)); - - FeatureMap featureMap; - FeatureData featureData; - FeaturesList::Select::RowList rows = select->GetRowList(); - FOREACH(rowIt, rows) { - featureData.featureName = DPL::ToUTF8String( - rowIt->Get_FeatureName()); - featureData.pluginHandle = rowIt->Get_PluginPropertiesId(); - featureMap.insert(std::pair( - rowIt->Get_FeatureUUID(), featureData)); - } - - return featureMap; - } - Catch(DPL::DB::SqlConnection::Exception::Base){ - ReThrowMsg(FeatureDAOReadOnly::Exception::DatabaseError, - "Failure during getting GetFeatures"); - } -} -} // namespace WrtDB diff --git a/modules_wearable/widget_dao/dao/plugin_dao.cpp b/modules_wearable/widget_dao/dao/plugin_dao.cpp deleted file mode 100644 index 5b899c3..0000000 --- a/modules_wearable/widget_dao/dao/plugin_dao.cpp +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_dao.cpp - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @author Grzegorz Krawczyk (g.krawczyk@samsung.com) - * @version 1.0 - * @brief This file contains the definition of plugin dao class. - */ -#include -#include -#include -#include -#include -#include -#include - -namespace WrtDB { -PluginDAO::PluginDAO(DbPluginHandle pluginHandle) : - PluginDAOReadOnly(pluginHandle) -{} - -PluginDAO::PluginDAO(const std::string &libraryName) : - PluginDAOReadOnly(libraryName) -{} - -DbPluginHandle PluginDAO::registerPlugin(const PluginMetafileData& metafile, - const std::string& pluginPath) -{ - LogDebug("Registering plugin. Path: " << pluginPath); - - Try { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - DbPluginHandle handle; - - if (isPluginInstalled(metafile.m_libraryName)) { - handle = PluginDAO(metafile.m_libraryName).getPluginHandle(); - LogDebug(" >> Library " << metafile.m_libraryName << - " is already registered. Handle: " << handle); - } else { - LogDebug("Register Plugin: " << metafile.m_libraryName); - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - typedef PluginProperties::Row PluginPropertiesRow; - - PluginPropertiesRow row; - row.Set_PluginLibraryName( - DPL::FromUTF8String(metafile.m_libraryName)); - row.Set_InstallationState(INSTALLATION_IN_PROGRESS); - row.Set_PluginLibraryPath( - DPL::FromUTF8String(pluginPath)); - - WRT_DB_INSERT(insert, PluginProperties, &WrtDatabase::interface()) - insert->Values(row); - handle = static_cast(insert->Execute()); - LogDebug(" >> Plugin Registered. Handle: " << handle); - } - transaction.Commit(); - return handle; - } - Catch(DPL::DB::SqlConnection::Exception::Base) - { - ReThrowMsg(PluginDAO::Exception::DatabaseError, - "Failed in RegisterPlugin"); - } -} - -void PluginDAO::registerPluginImplementedObject(const std::string& objectName, - DbPluginHandle pluginHandle) -{ - LogDebug("Registering plugin object: " << objectName); - - Try { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - LogDebug("Register Object: " << objectName); - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - typedef PluginImplementedObjects::Row PluginObjectsRow; - - PluginObjectsRow row; - row.Set_PluginObject(DPL::FromUTF8String(objectName)); - row.Set_PluginPropertiesId(pluginHandle); - - WRT_DB_INSERT(insert, PluginImplementedObjects, &WrtDatabase::interface()) - insert->Values(row); - insert->Execute(); - transaction.Commit(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) - { - ReThrowMsg(PluginDAO::Exception::DatabaseError, - "Failed in RegisterPluginObject"); - } -} - -void PluginDAO::registerPluginRequiredObject(const std::string& objectName, - DbPluginHandle pluginHandle) -{ - LogDebug("Registering plugin object: " << objectName); - - Try { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - LogDebug("Register Object: " << objectName); - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - typedef PluginRequiredObjects::Row PluginObjectsRow; - - PluginObjectsRow row; - row.Set_PluginPropertiesId(pluginHandle); - row.Set_PluginObject(DPL::FromUTF8String(objectName)); - - WRT_DB_INSERT(insert, PluginRequiredObjects, &WrtDatabase::interface()) - insert->Values(row); - insert->Execute(); - transaction.Commit(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) - { - ReThrowMsg(PluginDAO::Exception::DatabaseError, - "Failed in RegisterPluginObject"); - } -} - -void PluginDAO::registerPluginLibrariesDependencies( - DbPluginHandle pluginHandle, - const PluginHandleSetPtr& dependencies) -{ - LogDebug("Registering plugin library dependencies: " << pluginHandle); - - Try { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - typedef PluginDependencies::Row PluginDependeciesRow; - PluginDependeciesRow row; - - FOREACH(it, *dependencies) - { - row.Set_PluginPropertiesId(pluginHandle); - row.Set_RequiredPluginPropertiesId(*it); - - WRT_DB_INSERT(insert, PluginDependencies, &WrtDatabase::interface()) - insert->Values(row); - insert->Execute(); - transaction.Commit(); - } - } - Catch(DPL::DB::SqlConnection::Exception::Base) - { - ReThrowMsg(PluginDAO::Exception::DatabaseError, - "Failed in RegisterPluginObject"); - } -} - -void PluginDAO::setPluginInstallationStatus(DbPluginHandle pluginHandle, - PluginInstallationState state) -{ - Try { - LogDebug( - "Set installation state: " << state << " handle " << pluginHandle); - - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - ScopedTransaction transaction(&WrtDatabase::interface()); - - typedef wrt::PluginProperties::Row PluginPropertiesRow; - - PluginPropertiesRow row; - row.Set_InstallationState(state); - - WRT_DB_UPDATE(update, PluginProperties, &WrtDatabase::interface()) - update->Where( - Equals(pluginHandle)); - - update->Values(row); - update->Execute(); - transaction.Commit(); - } - Catch(DPL::DB::SqlConnection::Exception::Base) - { - ReThrowMsg(PluginDAO::Exception::DatabaseError, - "Failed in RegisterLibraryDependencies"); - } -} - -void PluginDAO::unregisterPlugin(DbPluginHandle pluginHandle) -{ - LogDebug("unregisterPlugin plugin. Handle: " << pluginHandle); - - Try { - DPL::DB::ORM::wrt::ScopedTransaction transaction( - &WrtDatabase::interface()); - - if (!isPluginInstalled(pluginHandle)) { - LogDebug("PluginHandle is invalid. Handle: " << pluginHandle); - return; - } else { - using namespace DPL::DB::ORM; - using namespace DPL::DB::ORM::wrt; - - WRT_DB_DELETE(del, PluginProperties, &WrtDatabase::interface()) - del->Where( - Equals(pluginHandle)); - del->Execute(); - - transaction.Commit(); - LogDebug(" >> Plugin Unregistered. Handle: " << pluginHandle); - } - } - Catch(DPL::DB::SqlConnection::Exception::Base) - { - ReThrowMsg(PluginDAO::Exception::DatabaseError, - "Failed in UnregisterPlugin"); - } -} -} // namespace WrtDB diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h b/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h deleted file mode 100644 index 3be2441..0000000 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/plugin_dao_read_only.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file plugin_dao_read_only.h - * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of plugin dao read only - */ - -#ifndef WRT_SRC_CONFIGURATION_PLUGIN_DAO_READ_ONLY_H_ -#define WRT_SRC_CONFIGURATION_PLUGIN_DAO_READ_ONLY_H_ - -#include -#include -#include -#include -#include - -namespace WrtDB { -typedef std::list PluginHandleList; -typedef std::set PluginHandleSet; -typedef std::list ImplementedObjectsList; -typedef std::shared_ptr PluginHandleSetPtr; - -//TODO make it friend to FeatureDAO or inherit -class PluginDAOReadOnly -{ - public: - enum PluginInstallationState - { - INSTALLATION_DEFAULT, - //when plugin data are up to date and plugin model may be created - INSTALLATION_COMPLETED, - //installation is in progress, some data may not be valid - INSTALLATION_IN_PROGRESS, - //installation not completed due to missing dependency - INSTALLATION_WAITING, - - UNKNOWN_ERROR - }; - - static int ToInt(PluginInstallationState state) - { - return static_cast(state); - } - - static PluginInstallationState ToState(int state) - { - return static_cast(state); - } - - /** - * PluginDAO Exception classes - */ - class Exception - { - public: - DECLARE_EXCEPTION_TYPE(DPL::Exception, Base) - DECLARE_EXCEPTION_TYPE(Base, DatabaseError) - DECLARE_EXCEPTION_TYPE(Base, PluginNotExist) - DECLARE_EXCEPTION_TYPE(Base, PluginInstallationNotCompleted) - }; - - public: - PluginDAOReadOnly(DbPluginHandle pluginHandle); - PluginDAOReadOnly(const std::string &libraryName); - - static PluginHandleList getPluginHandleList(); - static PluginHandleList getRootPluginHandleList(); - - static bool isPluginInstalled(const std::string &libraryName); - static bool isPluginInstalled(DbPluginHandle pluginHandle); - - static PluginHandleSetPtr getPluginHandleByStatus( - PluginInstallationState state); - - static DbPluginHandle getPluginHandleForImplementedObject( - const std::string& objectName); - - static ImplementedObjectsList getImplementedObjects(); - static ImplementedObjectsList getImplementedObjectsForPluginHandle( - DbPluginHandle handle); - - static PluginObjectsDAO::ObjectsPtr getRequiredObjectsForPluginHandle( - DbPluginHandle handle); - - static PluginInstallationState getInstallationStateForHandle( - DbPluginHandle handle); - - DbPluginHandle getPluginHandle() const; - PluginInstallationState getInstallationStatus() const; - std::string getLibraryPath() const; - std::string getLibraryName() const; - PluginHandleSetPtr getLibraryDependencies() const; - - private: - DbPluginHandle m_pluginHandle; - - void checkInstallationCompleted(); -}; -} // namespace WrtDB - -#endif /* WRT_SRC_CONFIGURATION_PLUGIN_DAO_READ_ONLY_H_ */ diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h b/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h deleted file mode 100644 index 67c88a9..0000000 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-ro/webruntime_database.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file webruntime_database.h - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of webruntime database - */ -#ifndef WRT_ENGINE_SRC_CONFIGURATION_WEBRUNTIME_DATABASE_H -#define WRT_ENGINE_SRC_CONFIGURATION_WEBRUNTIME_DATABASE_H - -#include -#include - -extern DPL::Mutex g_wrtDbQueriesMutex; - -#define WRT_DB_INTERNAL(tlsCommand, InternalType, interface) \ - static DPL::ThreadLocalVariable *tlsCommand##Ptr = NULL; \ - { \ - DPL::Mutex::ScopedLock lock(&g_wrtDbQueriesMutex); \ - if (!tlsCommand##Ptr) { \ - static DPL::ThreadLocalVariable tmp; \ - tlsCommand##Ptr = &tmp; \ - } \ - } \ - DPL::ThreadLocalVariable &tlsCommand = *tlsCommand##Ptr; \ - if (tlsCommand.IsNull()) { tlsCommand = InternalType(interface); } - -#define WRT_DB_SELECT(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Select, \ - interface) - -#define WRT_DB_INSERT(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Insert, \ - interface) - -#define WRT_DB_UPDATE(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Update, \ - interface) - -#define WRT_DB_DELETE(name, type, interface) WRT_DB_INTERNAL(name, \ - type::Delete, \ - interface) - -#endif // WRT_ENGINE_SRC_CONFIGURATION_WEBRUNTIME_DATABASE_H diff --git a/modules_wearable/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h b/modules_wearable/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h deleted file mode 100644 index 0b53eef..0000000 --- a/modules_wearable/widget_dao/include/dpl/wrt-dao-rw/plugin_dao.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * This file contains the declaration of plugin dao class. - * - * @file plugin_dao.h - * @author Pawel Sikorski (p.sikorski@samsung.com) - * @version 1.0 - * @brief This file contains the declaration of plugin dao - */ - -#ifndef WRT_SRC_CONFIGURATION_PLUGIN_DAO_H_ -#define WRT_SRC_CONFIGURATION_PLUGIN_DAO_H_ - -#include - -namespace WrtDB { -class PluginDAO : public PluginDAOReadOnly -{ - public: - PluginDAO(DbPluginHandle pluginHandle); - PluginDAO(const std::string &libraryName); - - static DbPluginHandle registerPlugin( - const PluginMetafileData& metafile, - const std::string& pluginPath); - - static void registerPluginImplementedObject( - const std::string& objectName, - DbPluginHandle pluginHandle); - - static void registerPluginRequiredObject( - const std::string& objectName, - DbPluginHandle pluginHandle); - - static void registerPluginLibrariesDependencies( - DbPluginHandle plugin, - const PluginHandleSetPtr& dependencies); - - static void setPluginInstallationStatus( - DbPluginHandle, - PluginInstallationState); - - static void unregisterPlugin(DbPluginHandle pluginHandle); -}; -} // namespace WrtDB - -#endif /* WRT_SRC_CONFIGURATION_PLUGIN_DAO_H_ */ diff --git a/modules_wearable/widget_interface_dao/CMakeLists.txt b/modules_wearable/widget_interface_dao/CMakeLists.txt deleted file mode 100644 index 8acad9b..0000000 --- a/modules_wearable/widget_interface_dao/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -SET(TARGET_WIDGET_INTERFACE_DAO_DB "Sqlite3DbWidgetInterface") - -ADD_CUSTOM_COMMAND( OUTPUT .widget_interface.db - COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/.widget_interface.db - COMMAND gcc -Wall -I${PROJECT_SOURCE_DIR}/modules/db/include -I${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm -E ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm/widget_interface_db_sql_generator.h | grep --invert-match "^#" > ${CMAKE_CURRENT_BINARY_DIR}/widget_interface_db.sql - COMMAND sqlite3 ${CMAKE_CURRENT_BINARY_DIR}/.widget_interface.db ".read ${CMAKE_CURRENT_BINARY_DIR}/widget_interface_db.sql" || rm -f ${CMAKE_CURRENT_BINARY_DIR}/.widget_interface.db - DEPENDS ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm/widget_interface_db_sql_generator.h ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm/widget_interface_db - ) - -ADD_CUSTOM_TARGET(${TARGET_WIDGET_INTERFACE_DAO_DB} ALL DEPENDS .widget_interface.db) -INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/widget_interface_db.sql DESTINATION share/wrt-engine/) - -INCLUDE(FindPkgConfig) - -PKG_CHECK_MODULES(WIDGET_INTERFACE_DAO_DEPS - glib-2.0 - REQUIRED) - -SET(WIDGET_INTERFACE_DAO_INCLUDE_DIRS - ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/include - ${PROJECT_SOURCE_DIR}/modules/widget_interface_dao/orm - ${PROJECT_SOURCE_DIR}/modules/core/include - ${PROJECT_SOURCE_DIR}/modules/db/include - ${PROJECT_SOURCE_DIR}/modules/log/include - ${PROJECT_SOURCE_DIR}/modules/widget_dao/include -) - -SET(WIDGET_INTERFACE_DAO_SOURCES - dao/widget_interface_dao.cpp -) - -INCLUDE_DIRECTORIES(SYSTEM ${WIDGET_INTERFACE_DAO_DEPS_INCLUDE_DIRS} ) -INCLUDE_DIRECTORIES(${WIDGET_INTERFACE_DAO_INCLUDE_DIRS}) - -ADD_LIBRARY(${TARGET_WIDGET_INTERFACE_DAO_LIB} SHARED ${WIDGET_INTERFACE_DAO_SOURCES}) -SET_TARGET_PROPERTIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} PROPERTIES SOVERSION ${API_VERSION} VERSION ${VERSION}) -TARGET_LINK_LIBRARIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} ${TARGET_DPL_EFL} ${TARGET_DPL_DB_EFL} ${TARGET_WRT_DAO_RO_LIB} ${WIDGET_INTERFACE_DAO_DEPS_LIBRARIES}) -ADD_DEPENDENCIES(${TARGET_WIDGET_INTERFACE_DAO_LIB} ${TARGET_WIDGET_INTERFACE_DAO_DB}) - -INSTALL(TARGETS ${TARGET_WIDGET_INTERFACE_DAO_LIB} DESTINATION lib) - -INSTALL(FILES - include/wrt-commons/widget-interface-dao/widget_interface_dao.h - DESTINATION include/dpl-efl/wrt-commons/widget-interface-dao -) diff --git a/modules_wearable/widget_interface_dao/dao/widget_interface_dao.cpp b/modules_wearable/widget_interface_dao/dao/widget_interface_dao.cpp deleted file mode 100644 index 1d66ed8..0000000 --- a/modules_wearable/widget_interface_dao/dao/widget_interface_dao.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @author Lukasz Marek (l.marek@samsung.com) - * @version 0.1 - * @brief - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "orm_generator_widget_interface.h" - -namespace WidgetInterfaceDB { -using namespace DPL::DB::ORM; -using namespace DPL::DB::ORM::widget_interface; - -#define SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN Try -#define SQL_CONNECTION_EXCEPTION_HANDLER_END(message) \ - Catch(DPL::DB::SqlConnection::Exception::Base) { \ - LogError(message); \ - ReThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, \ - message); \ - } - -namespace { -DPL::DB::SqlConnection::Flag::Type DATABASE_FLAG = - DPL::DB::SqlConnection::Flag::UseLucene; -DPL::DB::SqlConnection::Flag::Option DATABASE_OPTION = - DPL::DB::SqlConnection::Flag::RW; -const char *KEY_WIDGET_ARG = "widget_arg"; - -const char* const DATABASE_NAME = ".widget_interface.db"; -const char* const DATABASE_FILE_PATH = - "/usr/share/wrt-engine/widget_interface_db.sql"; -const char* const DATABASE_JOURNAL_FILENAME = "-journal"; - -const int APP_UID = 5000; -const int APP_GUID = 5000; -} // anonymous namespace - -WidgetInterfaceDAO::WidgetInterfaceDAO(int widgetHandle) : - m_widgetHandle(widgetHandle), - m_databaseInterface(databaseFileName(widgetHandle), DATABASE_FLAG) -{ - checkDatabase(); - m_databaseInterface.AttachToThread(DATABASE_OPTION); -} - -WidgetInterfaceDAO::~WidgetInterfaceDAO() -{ - m_databaseInterface.DetachFromThread(); -} - -void WidgetInterfaceDAO::checkDatabase() -{ - std::string databaseFile = databaseFileName(m_widgetHandle); - struct stat buffer; - if (stat(databaseFile.c_str(), &buffer) != 0) { - //Create fresh database - LogDebug("Creating database " << databaseFile); - - std::fstream file; - file.open(DATABASE_FILE_PATH, std::ios_base::in); - if (!file) { - ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, - "Cannot create database. SQL file is missing."); - } - - std::stringstream stream; - stream << file.rdbuf(); - - file.close(); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - DPL::DB::SqlConnection con(databaseFile, - DATABASE_FLAG, - DATABASE_OPTION); - con.ExecCommand(stream.str().c_str()); - copyPropertiesFromWrtDatabase(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot create database") - - if(chown(databaseFile.c_str(), APP_UID, APP_GUID) != 0) { - ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - std::string databaseJournal = - databaseFile + DATABASE_JOURNAL_FILENAME; - if(chown(databaseJournal.c_str(), APP_UID, APP_GUID) != 0) { - ThrowMsg(WidgetInterfaceDAO::Exception::DatabaseError, - "Fail to change uid/guid"); - } - } -} - -void WidgetInterfaceDAO::copyPropertiesFromWrtDatabase() -{ - WrtDB::WrtDatabase::attachToThreadRO(); - m_databaseInterface.AttachToThread(DPL::DB::SqlConnection::Flag::RW); - - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WrtDB::PropertyDAOReadOnly::WidgetPreferenceList existing = - WrtDB::PropertyDAOReadOnly::GetPropertyList( - WrtDB::WidgetDAOReadOnly::getTizenAppId(m_widgetHandle) - ); - - //save all properties read from config.xml - FOREACH(prop, existing) { - std::string key = DPL::ToUTF8String(prop->key_name); - if (key != KEY_WIDGET_ARG) { - std::string value; - if (!prop->key_value.IsNull()) { - value = DPL::ToUTF8String(*(prop->key_value)); - } - bool readonly = !prop->readonly.IsNull() && (*prop->readonly); - setItem(key, value, readonly, true); - } - } - } - SQL_CONNECTION_EXCEPTION_HANDLER_END( - "Cannot copy properties read from config.xml"); - - WrtDB::WrtDatabase::detachFromThread(); - m_databaseInterface.DetachFromThread(); -} - -void WidgetInterfaceDAO::setItem(const std::string& key, - const std::string& value, - bool readOnly) -{ - setItem(key, value, readOnly, false); -} - -void WidgetInterfaceDAO::setItem(const std::string& key, - const std::string& value, - bool readOnly, - bool fromConfigXml) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - ScopedTransaction tran(&m_databaseInterface); - //check if key exists - Properties::Select select(&m_databaseInterface); - select.Where(Equals(DPL::FromUTF8String(key))); - std::list rows = select.GetRowList(); - - if (rows.empty()) { - Properties::Insert insert(&m_databaseInterface); - Properties::Row row; - row.Set_key(DPL::FromUTF8String(key)); - row.Set_value(DPL::FromUTF8String(value)); - row.Set_readonly(readOnly ? 1 : 0); - row.Set_configxml(fromConfigXml ? 1 : 0); - insert.Values(row); - insert.Execute(); - } else { - Assert(rows.size() == 1); - Properties::Row row = rows.front(); - if (row.Get_readonly() != 0) { - Throw(Exception::LocalStorageValueNoModifableException); - } - row.Set_value(DPL::FromUTF8String(value)); - row.Set_readonly(readOnly ? 1 : 0); - Properties::Update update(&m_databaseInterface); - update.Where(Equals(DPL::FromUTF8String(key))); - update.Values(row); - update.Execute(); - } - tran.Commit(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot set item"); -} - -void WidgetInterfaceDAO::removeItem(const std::string& key) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - select.Where(Equals(DPL::FromUTF8String(key))); - bool readonly = select.GetSingleValue(); - if (readonly) { - ThrowMsg(Exception::LocalStorageValueNoModifableException, - "Cannot delete item. Item is readonly"); - } - Properties::Delete deleteItem(&m_databaseInterface); - deleteItem.Where(Equals(DPL::FromUTF8String(key))); - deleteItem.Execute(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot delete item"); -} - -DPL::Optional WidgetInterfaceDAO::getValue( - const std::string& key) const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - select.Where(Equals(DPL::FromUTF8String(key))); - std::list value = - select.GetValueList(); - if (value.empty()) { - return DPL::Optional(); - } - return DPL::Optional(DPL::ToUTF8String(value.front())); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Not found item"); -} - -void WidgetInterfaceDAO::clear(bool removeReadOnly) -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Delete deleteItem(&m_databaseInterface); - if (!removeReadOnly) { - deleteItem.Where(Equals(0)); - } - deleteItem.Execute(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot delete all items"); -} - -size_t WidgetInterfaceDAO::getStorageSize() const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - std::list list = - select.GetValueList(); - return list.size(); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot get item count"); -} - -std::string WidgetInterfaceDAO::getKeyByIndex(size_t index) const -{ - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - Properties::Select select(&m_databaseInterface); - select.OrderBy("key"); - std::list list = select.GetValueList(); - if (index >= list.size()) { - Throw(Exception::InvalidArgumentException); - } - for (size_t i = 0; i < index; ++i) { - list.pop_front(); - } - return DPL::ToUTF8String(list.front()); - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot get item count"); -} - -std::string WidgetInterfaceDAO::databaseFileName(int widgetHandle) -{ - using namespace DPL::DB::ORM; - using namespace WrtDB::WidgetConfig; - - WrtDB::WrtDatabase::attachToThreadRO(); - std::stringstream filename; - SQL_CONNECTION_EXCEPTION_HANDLER_BEGIN - { - WrtDB::WidgetDAOReadOnly widgetDAO(widgetHandle); - WrtDB::TizenPkgId pkgid = widgetDAO.getTizenPkgId(); - - filename << GetWidgetPersistentStoragePath(pkgid) - << "/" - << DATABASE_NAME; - } - SQL_CONNECTION_EXCEPTION_HANDLER_END("Cannot get item count"); - WrtDB::WrtDatabase::detachFromThread(); - return filename.str(); -} -} // namespace WidgetInterfaceDB diff --git a/modules_wearable/widget_interface_dao/orm/orm_generator_widget_interface.h b/modules_wearable/widget_interface_dao/orm/orm_generator_widget_interface.h deleted file mode 100644 index 87a3e05..0000000 --- a/modules_wearable/widget_interface_dao/orm/orm_generator_widget_interface.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ORM_GENERATOR_WIDGET_INTERFACE_H_ -#define ORM_GENERATOR_WIDGET_INTERFACE_H_ - -#define ORM_GENERATOR_DATABASE_NAME widget_interface_db_definitions -#include -#undef ORM_GENERATOR_DATABASE_NAME - -#endif diff --git a/modules_wearable/widget_interface_dao/orm/widget_interface_db b/modules_wearable/widget_interface_dao/orm/widget_interface_db deleted file mode 100644 index d33ec48..0000000 --- a/modules_wearable/widget_interface_dao/orm/widget_interface_db +++ /dev/null @@ -1,17 +0,0 @@ -SQL( - PRAGMA foreign_keys = ON; - BEGIN TRANSACTION; -) - -CREATE_TABLE(Properties) - COLUMN_NOT_NULL(key, TEXT,) - COLUMN_NOT_NULL(value, TEXT,) - COLUMN_NOT_NULL(readonly, INTEGER, check(readonly between 0 and 1)) - COLUMN_NOT_NULL(configxml, INTEGER, check(readonly between 0 and 1) DEFAULT 0) - - TABLE_CONSTRAINTS(unique(key)) -CREATE_TABLE_END() - -SQL( - COMMIT; -) diff --git a/modules_wearable/widget_interface_dao/orm/widget_interface_db_definitions b/modules_wearable/widget_interface_dao/orm/widget_interface_db_definitions deleted file mode 100644 index 85f627d..0000000 --- a/modules_wearable/widget_interface_dao/orm/widget_interface_db_definitions +++ /dev/null @@ -1,5 +0,0 @@ -DATABASE_START(widget_interface) - -#include "widget_interface_db" - -DATABASE_END() diff --git a/modules_wearable/widget_interface_dao/orm/widget_interface_db_sql_generator.h b/modules_wearable/widget_interface_dao/orm/widget_interface_db_sql_generator.h deleted file mode 100644 index b4ce0b6..0000000 --- a/modules_wearable/widget_interface_dao/orm/widget_interface_db_sql_generator.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file wrt_db_sql_generator.h - * @author Bartosz Janiak (b.janiak@samsung.com) - * @version 1.0 - * @brief Macro definitions for generating the SQL input file from - * database definition. - */ - -//Do not include this file directly! It is used only for SQL code generation. - -#include - -#include "widget_interface_db_definitions" diff --git a/packaging/wrt-commons.spec b/packaging/wrt-commons.spec index 563148b..4c22fdc 100755 --- a/packaging/wrt-commons.spec +++ b/packaging/wrt-commons.spec @@ -1,15 +1,17 @@ #git:framework/web/wrt-commons Name: wrt-commons Summary: Wrt common library -Version: 0.2.196_w7 +Version: 1.0.19 Release: 1 Group: Development/Libraries -License: Apache License, Version 2.0 +License: Apache-2.0 URL: N/A Source0: %{name}-%{version}.tar.gz +BuildRequires: boost-devel BuildRequires: cmake BuildRequires: pkgconfig(ecore) BuildRequires: pkgconfig(appcore-efl) +BuildRequires: pkgconfig(capi-appfw-application) BuildRequires: pkgconfig(libssl) BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(dlog) @@ -24,9 +26,7 @@ BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(libiri) BuildRequires: pkgconfig(libidn) BuildRequires: pkgconfig(minizip) -%if "%{_repository}" == "wearable" -BuildRequires: boost-devel -%endif +BuildRequires: pkgconfig(ttrace) %description Wrt common library @@ -35,9 +35,7 @@ Wrt common library Summary: Wrt common library development headers Group: Development/Libraries Requires: %{name} = %{version} -%if "%{_repository}" == "wearable" Requires: boost-devel -%endif %description devel Wrt common library development headers @@ -55,34 +53,33 @@ Wrt common library development headers %define with_child 1 %endif -%if "%{CARD_VIEWER_SUPPORT}" == "ON" || "%{CARD_VIEWER_SUPPORT}" == "Y" || "%{CARD_VIEWER_SUPPORT}" == "YES" || "%{CARD_VIEWER_SUPPORT}" == "TRUE" || "%{CARD_VIEWER_SUPPORT}" == "1" - %define CARD_VIEWER_SUPPORT 1 -%endif - %build -%if 0%{?sec_build_binary_debug_enable} export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE" export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE" export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE" -%endif - -%if "%{_repository}" == "wearable" -ln -sf build_wearable build -ln -sf etc_wearable etc -ln -sf modules_wearable modules -%else -ln -sf build_mobile build -ln -sf etc_mobile etc -ln -sf modules_mobile modules -%endif export LDFLAGS+="-Wl,--rpath=%{_libdir} -Wl,--hash-style=both -Wl,--as-needed" +%if "%{tizen_profile_name}" == "wearable" + %define device_profile WEARABLE +%endif +%if "%{tizen_profile_name}" == "mobile" + %define device_profile MOBILE +%endif +%if "%{tizen_profile_name}" == "tv" + %define device_profile TV +%endif + cmake . -DVERSION=%{version} \ - -DDPL_LOG="OFF" \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DCMAKE_BUILD_TYPE=%{?build_type:%build_type} \ - %{?CARD_VIEWER_SUPPORT:-DCARD_VIEWER_SUPPORT=%CARD_VIEWER_SUPPORT} \ + -DPRODUCT_FEATURE_OSP_DISABLE="ON" \ + -DDEVICE_PROFILE=%{?device_profile:%device_profile} \ + %if "%{tizen_profile_name}" == "tv" + -DDPL_LOG="ON" \ + %else + -DDPL_LOG="OFF" \ + %endif %{?WITH_TESTS:-DWITH_TESTS=%WITH_TESTS} \ %{?WITH_CHILD:-DWITH_CHILD=%WITH_CHILD} make %{?jobs:-j%jobs} diff --git a/tests/common/src/loop_control.cpp b/tests/common/src/loop_control.cpp index 5c690c2..b2773cc 100644 --- a/tests/common/src/loop_control.cpp +++ b/tests/common/src/loop_control.cpp @@ -22,7 +22,7 @@ #include #include -#include +#include #include @@ -34,7 +34,7 @@ void init_loop(int argc, char *argv[]) g_type_init(); g_thread_init(NULL); - LogDebug("Starting"); + WrtLogD("Starting"); elm_init(argc, argv); } diff --git a/tests/core/CMakeLists.txt b/tests/core/CMakeLists.txt index 44d2321..d80f1b3 100644 --- a/tests/core/CMakeLists.txt +++ b/tests/core/CMakeLists.txt @@ -38,14 +38,11 @@ SET(DPL_TESTS_CORE_SOURCES ${TESTS_DIR}/core/test_log_unhandled_exception.cpp ${TESTS_DIR}/core/test_once.cpp ${TESTS_DIR}/core/test_serialization.cpp - ${TESTS_DIR}/core/test_scoped_array.cpp ${TESTS_DIR}/core/test_scoped_close.cpp ${TESTS_DIR}/core/test_scoped_dir.cpp ${TESTS_DIR}/core/test_scoped_fclose.cpp ${TESTS_DIR}/core/test_scoped_free.cpp - ${TESTS_DIR}/core/test_scoped_ptr.cpp ${TESTS_DIR}/core/test_semaphore.cpp - ${TESTS_DIR}/core/test_shared_ptr.cpp ${TESTS_DIR}/core/test_static_block.cpp ${TESTS_DIR}/core/test_string.cpp ${TESTS_DIR}/core/test_thread.cpp diff --git a/tests/core/test_once.cpp b/tests/core/test_once.cpp index 5ba7ecb..dfbf37d 100644 --- a/tests/core/test_once.cpp +++ b/tests/core/test_once.cpp @@ -26,14 +26,15 @@ #include #include #include -#include + +#include #include RUNNER_TEST_GROUP_INIT(DPL) namespace // anonymous { -gint g_counter; +int g_counter; void Delegate() { @@ -70,14 +71,14 @@ class MyThread : } public: - MyThread(DPL::WaitableEvent *event, DPL::Once *once, DPL::Atomic *atom) : + MyThread(DPL::WaitableEvent *event, DPL::Once *once, std::atomic *atom) : m_event(event), m_once(once), m_atom(atom) {} private: DPL::WaitableEvent *m_event; DPL::Once *m_once; - DPL::Atomic *m_atom; + std::atomic *m_atom; }; /* @@ -93,7 +94,7 @@ RUNNER_TEST(Once_MultiThreadCall) ThreadPtr threads[NUM_THREADS]; DPL::WaitableEvent event; DPL::Once once; - DPL::Atomic atom; + std::atomic atom(0); for (size_t i = 0; i < NUM_THREADS; ++i) { (threads[i] = ThreadPtr(new MyThread(&event, &once, &atom)))->Run(); diff --git a/tests/core/test_scoped_array.cpp b/tests/core/test_scoped_array.cpp deleted file mode 100644 index f2a3b4b..0000000 --- a/tests/core/test_scoped_array.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_scoped_array.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of test scoped array - */ -#include -#include - -RUNNER_TEST_GROUP_INIT(DPL) - -/* -Name: ScopedArray_Zero -Description: tests emptiness of empty scoped array -Expected: array should be empty -*/ -RUNNER_TEST(ScopedArray_Zero) -{ - DPL::ScopedArray array; - - RUNNER_ASSERT(!array); - RUNNER_ASSERT(!!!array); -} - -/* -Name: ScopedArray_NonZero -Description: tests emptiness of not empty scoped array -Expected: array should be not empty -*/ -RUNNER_TEST(ScopedArray_NonZero) -{ - DPL::ScopedArray array(new char[7]); - - RUNNER_ASSERT(array); - RUNNER_ASSERT(!!array); -} - -/* -Name: ScopedArray_Reset -Description: tests reseting content of array -Expected: array should be empty after reset -*/ -RUNNER_TEST(ScopedArray_Reset) -{ - DPL::ScopedArray array(new char[7]); - array.Reset(); - - RUNNER_ASSERT(!array); - - array.Reset(new char); - RUNNER_ASSERT(array); -} - -/* -Name: ScopedArray_ArrayOperator -Description: tests accessing elements of array -Expected: returned values should be equal to those which were set -*/ -RUNNER_TEST(ScopedArray_ArrayOperator) -{ - DPL::ScopedArray array(new char[7]); - - array[1] = array[2] = 3; - - RUNNER_ASSERT(array[1] == 3); - RUNNER_ASSERT(array[2] == 3); -} diff --git a/tests/core/test_scoped_fclose.cpp b/tests/core/test_scoped_fclose.cpp index 7667a9e..2462e61 100644 --- a/tests/core/test_scoped_fclose.cpp +++ b/tests/core/test_scoped_fclose.cpp @@ -53,7 +53,7 @@ RUNNER_TEST(ScopedFClose_Zero) } /* -Name: ScopedArray_NonZero +Name: ScopedFClose_NonZero Description: tests if operator ! works correct for open file Expected: file should be open */ diff --git a/tests/core/test_scoped_ptr.cpp b/tests/core/test_scoped_ptr.cpp deleted file mode 100644 index af17bac..0000000 --- a/tests/core/test_scoped_ptr.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_scoped_ptr.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of test scoped ptr - */ -#include -#include - -RUNNER_TEST_GROUP_INIT(DPL) - -/* -Name: ScopedPtr_Zero -Description: Checks if operator! works -Expected: resource should be not set -*/ -RUNNER_TEST(ScopedPtr_Zero) -{ - DPL::ScopedPtr ptr; - - RUNNER_ASSERT(!ptr); - RUNNER_ASSERT(!!!ptr); -} - -/* -Name: ScopedPtr_NonZero -Description: Checks if operator! works -Expected: resource should be set -*/ -RUNNER_TEST(ScopedPtr_NonZero) -{ - DPL::ScopedPtr ptr(new char(7)); - - RUNNER_ASSERT(ptr); - RUNNER_ASSERT(!!ptr); -} - -/* -Name: ScopedPtr_Reset -Description: Checks reseting scoped ptr -Expected: resource should be not set after reset -*/ -RUNNER_TEST(ScopedPtr_Reset) -{ - DPL::ScopedPtr ptr(new char(7)); - ptr.Reset(); - - RUNNER_ASSERT(!ptr); - - ptr.Reset(new char); - RUNNER_ASSERT(ptr); -} - -/* -Name: ScopedPtr_Operators -Description: Checks access operator -Expected: address of resource should be same as this, received from Get() method -*/ -RUNNER_TEST(ScopedPtr_Operators) -{ - DPL::ScopedPtr ptr(new char(7)); - - RUNNER_ASSERT(*ptr == *ptr.Get()); -} diff --git a/tests/core/test_semaphore.cpp b/tests/core/test_semaphore.cpp index c93b365..9caeb25 100644 --- a/tests/core/test_semaphore.cpp +++ b/tests/core/test_semaphore.cpp @@ -23,7 +23,6 @@ #include #include #include -#include #include #include diff --git a/tests/core/test_shared_ptr.cpp b/tests/core/test_shared_ptr.cpp deleted file mode 100644 index 8e59075..0000000 --- a/tests/core/test_shared_ptr.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * @file test_shared_ptr.cpp - * @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com) - * @version 1.0 - * @brief This file is the implementation file of test shared ptr - */ -#include -#include - -RUNNER_TEST_GROUP_INIT(DPL) - -/* -Name: SharedPtr_Zero -Description: Tests behaviour of null shared pointer -Expected: pointer should imitate null pointer -*/ -RUNNER_TEST(SharedPtr_Zero) -{ - DPL::SharedPtr ptr; - - RUNNER_ASSERT(!ptr); - RUNNER_ASSERT(!!!ptr); - RUNNER_ASSERT(ptr == DPL::SharedPtr()); -} - -/* -Name: SharedPtr_NonZero -Description: Tests behaviour of not null shared pointer -Expected: pointer should imitate null pointer -*/ -RUNNER_TEST(SharedPtr_NonZero) -{ - DPL::SharedPtr ptr(new char(7)); - - RUNNER_ASSERT(ptr); - RUNNER_ASSERT(!!ptr); - RUNNER_ASSERT(ptr != DPL::SharedPtr()); -} - -/* -Name: SharedPtr_Copy -Description: Tests equality of shared pointer pointing same resource -Expected: pointers should imitate primitive pointer bahaviour -*/ -RUNNER_TEST(SharedPtr_Copy) -{ - DPL::SharedPtr ptr1(new char(7)); - DPL::SharedPtr ptr2(new char(7)); - - RUNNER_ASSERT(ptr1 != ptr2); - - ptr2 = ptr1; - - RUNNER_ASSERT(ptr1 == ptr2); -} - -/* -Name: SharedPtr_Reset -Description: Tests reseting shared pointer -Expected: pointers should imitate primitive pointer bahaviour after reset -*/ -RUNNER_TEST(SharedPtr_Reset) -{ - DPL::SharedPtr ptr(new char(7)); - ptr.Reset(); - - RUNNER_ASSERT(!ptr); - - ptr.Reset(new char); - RUNNER_ASSERT(ptr); -} - -/* -Name: SharedPtr_RefCounting -Description: Tests use count od shared pointer -Expected: counters should be equal for equal pointers - Count number should match expected -*/ -RUNNER_TEST(SharedPtr_RefCounting) -{ - DPL::SharedPtr ptr1(new char(7)); - DPL::SharedPtr ptr2; - - ptr2 = ptr1; - - RUNNER_ASSERT(ptr1 == ptr2); - RUNNER_ASSERT(ptr1.GetUseCount() == ptr2.GetUseCount()); - RUNNER_ASSERT(ptr1.GetUseCount() == 2); -} - -/* -Name: SharedPtr_Operators -Description: Tests use of operator* -Expected: pointers should imitate primitive pointer bahaviour -*/ -RUNNER_TEST(SharedPtr_Operators) -{ - DPL::SharedPtr ptr(new char(7)); - - RUNNER_ASSERT(*ptr == *ptr.Get()); -} diff --git a/tests/core/test_thread.cpp b/tests/core/test_thread.cpp index 8eec1f0..1c76698 100644 --- a/tests/core/test_thread.cpp +++ b/tests/core/test_thread.cpp @@ -21,7 +21,7 @@ */ #include #include -#include +#include RUNNER_TEST_GROUP_INIT(DPL) @@ -33,18 +33,18 @@ class Foo int id; Foo(int i = 0) : id(i) { - LogDebug("Foo: ctor: " << id); + WrtLogD("Foo: ctor: %i", id); } ~Foo() { - LogDebug("Foo: dtor: " << id); + WrtLogD("Foo: dtor: %i", id); g_wasFooDeleted = true; } void Bar() { - LogDebug("Foo: bar"); + WrtLogD("Foo: bar"); } }; @@ -57,7 +57,7 @@ class FooThread : protected: virtual int ThreadEntry() { - LogDebug("In thread"); + WrtLogD("In thread"); RUNNER_ASSERT(!g_foo); RUNNER_ASSERT(g_foo.IsNull()); diff --git a/tests/core/test_zip_input.cpp b/tests/core/test_zip_input.cpp index c62accb..7059655 100644 --- a/tests/core/test_zip_input.cpp +++ b/tests/core/test_zip_input.cpp @@ -19,15 +19,15 @@ * @version 1.0 * @brief This file is the implementation file of zip input tests */ +#include #include #include #include #include #include #include -#include #include -#include +#include namespace { const char* PATH_NO_FILE = "/opt/share/wrt/wrt-commons/tests/core/no_such_file"; @@ -70,14 +70,12 @@ RUNNER_TEST(ZipInput_OpenFile) FOREACH(iter, zip) { - LogDebug("---------"); - LogDebug("FileInfo: "); -#define FIELD(X) LogDebug(#X ": " << iter->X) - FIELD(name); - FIELD(comment); - FIELD(compressedSize); - FIELD(uncompressedSize); -#undef FIELD + WrtLogD("---------"); + WrtLogD("FileInfo: "); + WrtLogD("name: %s", iter->name.c_str()); + WrtLogD("comment: %s", iter->comment.c_str()); + WrtLogD("compressedSize: %lli", iter->compressedSize); + WrtLogD("uncompressedSize: %lli", iter->uncompressedSize); } } @@ -96,9 +94,9 @@ RUNNER_TEST(ZipInput_UnzipSingleFile) DPL::Copy(&fileAdapter, &bufferAdapter); - DPL::ScopedArray data(new char[buffer.Size() + 1]); - buffer.Flatten(data.Get(), buffer.Size()); + std::unique_ptr data(new char[buffer.Size() + 1]); + buffer.Flatten(data.get(), buffer.Size()); data[buffer.Size()] = '\0'; - RUNNER_ASSERT(std::string(data.Get()) == "test"); + RUNNER_ASSERT(std::string(data.get()) == "test"); } diff --git a/tests/dao/TestCases_FeatureDAO.cpp b/tests/dao/TestCases_FeatureDAO.cpp index f01355c..014b045 100644 --- a/tests/dao/TestCases_FeatureDAO.cpp +++ b/tests/dao/TestCases_FeatureDAO.cpp @@ -270,20 +270,20 @@ RUNNER_TEST(feature_dao_test_dev_cap_with_feature_handle) */ RUNNER_TEST(feature_dao_test_get_features) { -//tests commented because internal error occured due to many GetFeatures() calls -// std::list fs0(4); -// RUNNER_ASSERT(FeatureDAOReadOnly::GetFeatures(fs0).size() == 0); -// -// std::list fs1(4); -// fs1.push_front("feature"); -// fs1.push_front("feature2"); -// RUNNER_ASSERT(FeatureDAOReadOnly::GetFeatures(fs1).size() == 2); -// std::list fs2(4); -// fs2.push_front("feature"); -// fs2.push_front("feature2"); -// RUNNER_ASSERT(FeatureDAOReadOnly::GetFeatures(fs2).size() == 1); - - std::list fs3(4); + std::list fs0; + RUNNER_ASSERT(FeatureDAOReadOnly::GetFeatures(fs0).size() == 0); + + std::list fs1; + fs1.push_front("feature1"); + + fs1.push_front("feature2"); + RUNNER_ASSERT(FeatureDAOReadOnly::GetFeatures(fs1).size() == 2); + std::list fs2; + fs2.push_front("feature"); + fs2.push_front("feature2"); + RUNNER_ASSERT(FeatureDAOReadOnly::GetFeatures(fs2).size() == 1); + + std::list fs3; fs3.push_front("feature1"); fs3.push_front("feature2"); fs3.push_front("feature3"); diff --git a/tests/dao/TestCases_PluginDAO.cpp b/tests/dao/TestCases_PluginDAO.cpp index 091d8ed..f5960d8 100644 --- a/tests/dao/TestCases_PluginDAO.cpp +++ b/tests/dao/TestCases_PluginDAO.cpp @@ -27,7 +27,7 @@ #include //#include #include -#include +#include using namespace WrtDB; @@ -410,8 +410,7 @@ RUNNER_TEST(plugin_dao_test_get_implemented_objects_for_plugin_handle_2) auto dbHandle = dao.getPluginHandle(); auto objects = dao.getImplementedObjectsForPluginHandle(dbHandle); - //LogError("\n" << objects.size() << " " << preinstalled.size() << - // "\n"); + //WrtLogE("\n%u %u\n", objects.size(), preinstalled.size()); RUNNER_ASSERT(objects.size() == preinstalled.size()); diff --git a/tests/dao/TestCases_PropertyDAO.cpp b/tests/dao/TestCases_PropertyDAO.cpp index 8ff2ad6..378c815 100644 --- a/tests/dao/TestCases_PropertyDAO.cpp +++ b/tests/dao/TestCases_PropertyDAO.cpp @@ -35,13 +35,13 @@ using namespace WrtDB::PropertyDAOReadOnly; // Widgets used "tizenid201", "tizenid202", "tizenid203", 2003(saved by // wrt_dao_tests_prepare_db.sh) -#define RUNNER_ASSERT_WHAT_EQUALS(in, test) \ - { std::string tmp(in); \ +#define RUNNER_ASSERT_WHAT_EQUALS(in, test) \ + { std::string tmp(in); \ RUNNER_ASSERT_MSG(tmp == test, "Equals: [" + tmp + "]"); } -#define RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(in, test) \ - { \ - if (in.IsNull()) { RUNNER_ASSERT_MSG(false, "NULL"); } \ +#define RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(in, test) \ + { \ + if (!in) { RUNNER_ASSERT_MSG(false, "NULL"); } \ else { RUNNER_ASSERT_WHAT_EQUALS(DPL::ToUTF8String(*in), test); } \ } diff --git a/tests/dao/TestCases_WidgetDAO.cpp b/tests/dao/TestCases_WidgetDAO.cpp index 806ee1e..61bcf6b 100644 --- a/tests/dao/TestCases_WidgetDAO.cpp +++ b/tests/dao/TestCases_WidgetDAO.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -91,7 +92,7 @@ TizenAppId _registerWidget(const WidgetRegisterInfo& regInfo, { TizenAppId tizenAppId; Try { - auto previous = WidgetDAO::getTizenAppidList(); + auto previous = WidgetDAO::getTizenAppIdList(); // register widget tizenAppId = WidgetDAO::registerWidgetGeneratePkgId(regInfo, sec); @@ -99,7 +100,7 @@ TizenAppId _registerWidget(const WidgetRegisterInfo& regInfo, RUNNER_ASSERT_MSG(!tizenAppId.empty(), "(called from line " << line << ")"); - auto current = WidgetDAO::getTizenAppidList(); + auto current = WidgetDAO::getTizenAppIdList(); RUNNER_ASSERT_MSG(previous.size() + 1 == current.size(), "(called from line " << line << ")"); @@ -143,13 +144,13 @@ bool checkException(Function fun) #define RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(in, test) \ { \ - if (in.IsNull()) { RUNNER_ASSERT_MSG(false, "NULL"); } \ + if (!in) { RUNNER_ASSERT_MSG(false, "NULL"); } \ else { RUNNER_ASSERT_WHAT_EQUALS(DPL::ToUTF8String(*in), test); } \ } #define RUNNER_ASSERT_WHAT_EQUALS_OPTIONALINT(in, test) \ { \ - if (in.IsNull()) { RUNNER_ASSERT_MSG(false, "NULL"); } \ + if (!in) { RUNNER_ASSERT_MSG(false, "NULL"); } \ else { RUNNER_ASSERT_MSG(*in == test, "Equals: [" + *in + "]"); } \ } @@ -327,8 +328,6 @@ RUNNER_TEST(widget_dao_test_register_widget_info) RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorName(), str.str()); RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorEmail(), str.str()); RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorHref(), str.str()); - RUNNER_ASSERT_WHAT_EQUALS(dao.getBaseFolder(), str.str() + "/"); - RUNNER_ASSERT(dao.getWebkitPluginsRequired() == false); RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getMinimumWacVersion(), "1.0"); } } @@ -744,8 +743,6 @@ RUNNER_TEST(widget_dao_test_register_app_control) WidgetRegisterInfo regInfo; ConfigParserData::AppControlInfo appControl(DPL::FromUTF8String("operation")); - appControl.m_disposition - = ConfigParserData::AppControlInfo::Disposition::WINDOW; appControl.m_mimeList.insert(DPL::FromUTF8String("mime")); appControl.m_src = DPL::FromUTF8String("src"); appControl.m_uriList.insert(DPL::FromUTF8String("uri")); @@ -768,9 +765,6 @@ RUNNER_TEST(widget_dao_test_register_app_control) && appRefIt != appControlListRef.end(); ++appDBIt, ++appRefIt) { - RUNNER_ASSERT((WidgetAppControl::Disposition) - appRefIt->m_disposition == appDBIt->disposition); - RUNNER_ASSERT(appRefIt->m_index == appDBIt->index); RUNNER_ASSERT(appRefIt->m_operation == appDBIt->operation); RUNNER_ASSERT(appRefIt->m_src == appDBIt->src); for(auto it = appRefIt->m_mimeList.begin(); @@ -813,7 +807,7 @@ RUNNER_TEST(widget_dao_test_is_widget_installed) RUNNER_TEST(widget_dao_test_unregister_widget) { WacSecurityMock sec; - TizenAppIdList ids = WidgetDAO::getTizenAppidList(); + TizenAppIdList ids = WidgetDAO::getTizenAppIdList(); WidgetRegisterInfo regInfo; @@ -821,7 +815,7 @@ RUNNER_TEST(widget_dao_test_unregister_widget) WidgetDAO::unregisterWidget(tizenAppId); - RUNNER_ASSERT_MSG(ids.size() == WidgetDAO::getTizenAppidList().size(), + RUNNER_ASSERT_MSG(ids.size() == WidgetDAO::getTizenAppIdList().size(), "Widget unregister failed"); } @@ -867,18 +861,18 @@ RUNNER_TEST(widget_dao_test_register_or_update_widget) /* * Name: widget_dao_test_get_widget_tizenAppId_list - * Description: Tests getTizenAppidList API for backendlib + * Description: Tests getTizenAppIdList API for backendlib * Expected: For all position in database should be returned one item in list */ RUNNER_TEST(widget_dao_test_get_widget_tizenAppId_list) { - TizenAppIdList tizenAppIds = WidgetDAO::getTizenAppidList(); + TizenAppIdList tizenAppIds = WidgetDAO::getTizenAppIdList(); RUNNER_ASSERT(tizenAppIds.size() >= 3); } /* * Name: widget_dao_test_get_widget_list - * Description: Tests getTizenAppidList API for backendlib + * Description: Tests getTizenAppIdList API for backendlib * Expected: For all position in database should be returned one item in list * Those item should contain valid tizenAppId */ @@ -907,8 +901,6 @@ RUNNER_TEST(widget_dao_test_get_widget_attributes) RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorEmail(), "a_email_2000"); RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getAuthorHref(), "a_href_2000"); - RUNNER_ASSERT_WHAT_EQUALS(dao.getBaseFolder(), "basef_2000/"); - RUNNER_ASSERT(dao.getWebkitPluginsRequired() == true); RUNNER_ASSERT_WHAT_EQUALS_OPTIONAL(dao.getMinimumWacVersion(), "1.0"); } } @@ -1029,7 +1021,7 @@ RUNNER_TEST(widget_dao_test_register_csp_empty) TizenAppId tizenAppId = REGISTER_WIDGET(regInfo, sec); WidgetDAO dao(tizenAppId); - RUNNER_ASSERT_MSG(dao.getCspPolicy().IsNull(), "Policy is not null"); + RUNNER_ASSERT_MSG(!dao.getCspPolicy(), "Policy is not null"); } } @@ -1206,43 +1198,36 @@ RUNNER_TEST(widget_dao_test_widget_metadata_basics) RUNNER_TEST(widget_dao_test_widget_appcontrolinfo_basics) { ConfigParserData::AppControlInfo a(DPL::FromUTF8String("operation")); - a.m_disposition = ConfigParserData::AppControlInfo::Disposition::WINDOW; a.m_mimeList.insert(DPL::FromUTF8String("mime")); a.m_src = DPL::FromUTF8String("src"); a.m_uriList.insert(DPL::FromUTF8String("uri")); ConfigParserData::AppControlInfo a0(DPL::FromUTF8String("operation1")); - a0.m_disposition = ConfigParserData::AppControlInfo::Disposition::WINDOW; a0.m_mimeList.insert(DPL::FromUTF8String("mime")); a0.m_src = DPL::FromUTF8String("src"); a0.m_uriList.insert(DPL::FromUTF8String("uri")); ConfigParserData::AppControlInfo a1(DPL::FromUTF8String("operation")); - a1.m_disposition = ConfigParserData::AppControlInfo::Disposition::UNDEFINE; a1.m_mimeList.insert(DPL::FromUTF8String("mime")); a1.m_src = DPL::FromUTF8String("src"); a1.m_uriList.insert(DPL::FromUTF8String("uri")); ConfigParserData::AppControlInfo a2(DPL::FromUTF8String("operation")); - a2.m_disposition = ConfigParserData::AppControlInfo::Disposition::WINDOW; a2.m_mimeList.insert(DPL::FromUTF8String("mime1")); a2.m_src = DPL::FromUTF8String("src"); a2.m_uriList.insert(DPL::FromUTF8String("uri")); ConfigParserData::AppControlInfo a3(DPL::FromUTF8String("operation")); - a3.m_disposition = ConfigParserData::AppControlInfo::Disposition::WINDOW; a3.m_mimeList.insert(DPL::FromUTF8String("mime")); a3.m_src = DPL::FromUTF8String("src1"); a3.m_uriList.insert(DPL::FromUTF8String("uri")); ConfigParserData::AppControlInfo a4(DPL::FromUTF8String("operation")); - a4.m_disposition = ConfigParserData::AppControlInfo::Disposition::WINDOW; a4.m_mimeList.insert(DPL::FromUTF8String("mime")); a4.m_src = DPL::FromUTF8String("src"); a4.m_uriList.insert(DPL::FromUTF8String("uri1")); ConfigParserData::AppControlInfo a5(DPL::FromUTF8String("operation")); - a5.m_disposition = ConfigParserData::AppControlInfo::Disposition::WINDOW; a5.m_mimeList.insert(DPL::FromUTF8String("mime")); a5.m_src = DPL::FromUTF8String("src"); a5.m_uriList.insert(DPL::FromUTF8String("uri")); @@ -1256,6 +1241,7 @@ RUNNER_TEST(widget_dao_test_widget_appcontrolinfo_basics) RUNNER_ASSERT_MSG(a == a, "app control info equal"); } +#if USE(WEB_PROVIDER) /* * Name: widget_dao_test_widget_metadata_basics * Description: Tests basic operators for livebox info @@ -1350,7 +1336,7 @@ RUNNER_TEST(widget_dao_test_widget_livebox_basics) RUNNER_ASSERT_MSG(a10 != a11, "livebox info not equal"); RUNNER_ASSERT_MSG(a10 == a12, "livebox info equal"); } - +#endif /* * Name: widget_dao_test_get_widget_by_guid * Description: Tests creating WidgetDAO using GUID @@ -1374,14 +1360,14 @@ RUNNER_TEST(widget_dao_test_set_tizen_app_id) TizenAppId originaltizenAppId = REGISTER_WIDGET(regInfo, sec); TizenAppId changedTizenAppId = L"changedTizenAppId"; - TizenAppIdList ids = WidgetDAO::getTizenAppidList(); + TizenAppIdList ids = WidgetDAO::getTizenAppIdList(); RUNNER_ASSERT(std::count(ids.begin(),ids.end(),originaltizenAppId) == 1); //Change tizenAppId WidgetDAO dao(originaltizenAppId); dao.setTizenAppId(changedTizenAppId); - ids = WidgetDAO::getTizenAppidList(); + ids = WidgetDAO::getTizenAppIdList(); RUNNER_ASSERT(std::count(ids.begin(), ids.end(), originaltizenAppId) == 0); RUNNER_ASSERT(std::count(ids.begin(), ids.end(), changedTizenAppId) == 1); @@ -1393,7 +1379,7 @@ RUNNER_TEST(widget_dao_test_set_tizen_app_id) RUNNER_ASSERT(exceptionCaught); WidgetDAO::unregisterWidget(changedTizenAppId); - ids = WidgetDAO::getTizenAppidList(); + ids = WidgetDAO::getTizenAppIdList(); RUNNER_ASSERT(std::count(ids.begin(),ids.end(),originaltizenAppId) == 0); RUNNER_ASSERT(std::count(ids.begin(),ids.end(),changedTizenAppId) == 0); @@ -1477,6 +1463,41 @@ RUNNER_TEST(widget_dao_test_register_external_locations) RUNNER_ASSERT(std::count(locationList.begin(), locationList.end(), "location2") == 1); } +#if USE(WEB_PROVIDER) +/* + * Name: widget_dao_test_register_widget_liveboxID + * Description: Tests registeration of liveboxID + * Expected: values received by dao should match those which were registered + * for icon + */ +RUNNER_TEST(widget_dao_test_register_widget_liveboxID) +{ + WacSecurityMock sec; + WidgetRegisterInfo regInfo; + + ConfigParserData::LiveboxInfo liveboxInfo1; + liveboxInfo1.m_liveboxId = DPL::FromUTF8String("pkgID.dynamicBoxID"); + ConfigParserData::LiveboxInfo liveboxInfo2; + liveboxInfo2.m_liveboxId = DPL::FromUTF8String("pkgID.dynamicBoxID"); + ConfigParserData::LiveboxInfo liveboxInfo3; + liveboxInfo3.m_liveboxId = DPL::FromUTF8String("pkgID.dynamicBoxID"); + + regInfo.configInfo.m_livebox.push_back(liveboxInfo1); + regInfo.configInfo.m_livebox.push_back(liveboxInfo2); + regInfo.configInfo.m_livebox.push_back(liveboxInfo3); + + TizenAppId tizenAppId = REGISTER_WIDGET(regInfo, sec); + + WidgetDAOReadOnly dao(tizenAppId); + WrtDB::WidgetDAOReadOnly::LiveBoxIdList outLiveBoxIdList; + dao.getLiveBoxInfoList(outLiveBoxIdList); + + RUNNER_ASSERT_MSG(outLiveBoxIdList.size() == 3, "list size is OK"); + FOREACH(it, outLiveBoxIdList){ + RUNNER_ASSERT_MSG(DPL::ToUTF8String(**it) == "pkgID.dynamicBoxID", "liveBox Name is equal"); + } +} +#endif /* * Name: widget_dao_test_get_tz_app_id * Description: Tests getTizenAppId functions @@ -1540,10 +1561,12 @@ RUNNER_TEST(widget_dao_test_get_property_value) { WidgetDAOReadOnly dao(L"tizenid201"); - RUNNER_ASSERT(dao.getPropertyValue(L"key1_for_2000") == L"value_for_key1_2000"); - RUNNER_ASSERT(dao.getPropertyValue(L"key2_for_2000") == L"value_for_key2_2000"); - RUNNER_ASSERT(dao.getPropertyValue(L"not_existing").IsNull()); - RUNNER_ASSERT(dao.getPropertyValue(L"").IsNull()); + RUNNER_ASSERT(dao.getPropertyValue(L"key1_for_2000") == + PropertyDAOReadOnly::WidgetPropertyValue(L"value_for_key1_2000")); + RUNNER_ASSERT(dao.getPropertyValue(L"key2_for_2000") == + PropertyDAOReadOnly::WidgetPropertyValue(L"value_for_key2_2000")); + RUNNER_ASSERT(!dao.getPropertyValue(L"not_existing")); + RUNNER_ASSERT(!dao.getPropertyValue(L"")); } /* @@ -1557,8 +1580,8 @@ RUNNER_TEST(widget_dao_test_get_property_read_flag) RUNNER_ASSERT(dao.checkPropertyReadFlag(L"key1_for_2000") == 0); RUNNER_ASSERT(dao.checkPropertyReadFlag(L"key2_for_2000") == 0); - RUNNER_ASSERT(dao.checkPropertyReadFlag(L"not_existing").IsNull()); - RUNNER_ASSERT(dao.checkPropertyReadFlag(L"").IsNull()); + RUNNER_ASSERT(!dao.checkPropertyReadFlag(L"not_existing")); + RUNNER_ASSERT(!dao.checkPropertyReadFlag(L"")); } /* diff --git a/tests/dao/TestCases_WidgetInterfaceDAO.cpp b/tests/dao/TestCases_WidgetInterfaceDAO.cpp index fae5e11..8e9a156 100644 --- a/tests/dao/TestCases_WidgetInterfaceDAO.cpp +++ b/tests/dao/TestCases_WidgetInterfaceDAO.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -87,7 +88,7 @@ RUNNER_TEST(widget_interface_dao_test_01_initialization_Exception) */ RUNNER_TEST(widget_interface_dao_test_02_readValue) { - DPL::Optional value; + DPL::OptionalStdString value; Try { @@ -95,7 +96,7 @@ RUNNER_TEST(widget_interface_dao_test_02_readValue) value = dao.getValue("key1_for_2000"); - RUNNER_ASSERT(value == "value_for_key1_2000"); + RUNNER_ASSERT(value == std::string("value_for_key1_2000")); } Catch(WidgetInterfaceDAO::Exception::DatabaseError) { @@ -110,7 +111,7 @@ RUNNER_TEST(widget_interface_dao_test_02_readValue) */ RUNNER_TEST(widget_interface_dao_test_02_readValue_badKey) { - DPL::Optional value; + DPL::OptionalStdString value; Try { @@ -118,7 +119,7 @@ RUNNER_TEST(widget_interface_dao_test_02_readValue_badKey) value = dao.getValue("key1_for_200011111"); - RUNNER_ASSERT(value.IsNull()); + RUNNER_ASSERT(!value); } Catch(WidgetInterfaceDAO::Exception::DatabaseError) { @@ -133,7 +134,7 @@ RUNNER_TEST(widget_interface_dao_test_02_readValue_badKey) */ RUNNER_TEST(widget_interface_dao_test_03_setItem) { - DPL::Optional value; + DPL::OptionalStdString value; Try { @@ -143,7 +144,7 @@ RUNNER_TEST(widget_interface_dao_test_03_setItem) value = dao.getValue("key3_for_2000"); - RUNNER_ASSERT(value == "value_for_key3_2000"); + RUNNER_ASSERT(value == std::string("value_for_key3_2000")); } Catch(WidgetInterfaceDAO::Exception::DatabaseError) { @@ -158,7 +159,7 @@ RUNNER_TEST(widget_interface_dao_test_03_setItem) */ RUNNER_TEST(widget_interface_dao_test_03_setItem_Exception) { - DPL::Optional value; + DPL::OptionalStdString value; Try { @@ -186,7 +187,7 @@ RUNNER_TEST(widget_interface_dao_test_03_setItem_Exception) */ RUNNER_TEST(widget_interface_dao_test_04_setItem) { - DPL::Optional value; + DPL::OptionalStdString value; Try { @@ -196,7 +197,7 @@ RUNNER_TEST(widget_interface_dao_test_04_setItem) value = dao.getValue("key4_for_2000"); - RUNNER_ASSERT(value == "value_for_key4_2000"); + RUNNER_ASSERT(value == std::string("value_for_key4_2000")); } Catch(WidgetInterfaceDAO::Exception::DatabaseError) { @@ -295,7 +296,7 @@ RUNNER_TEST(widget_interface_dao_test_06_removeItem) { std::string key; size_t sizeBefore, sizeAfter; - DPL::Optional value; + DPL::OptionalStdString value; Try { @@ -315,7 +316,7 @@ RUNNER_TEST(widget_interface_dao_test_06_removeItem) value = dao.getValue("key4_for_2000"); RUNNER_ASSERT(sizeAfter == sizeBefore - 1); - RUNNER_ASSERT(value.IsNull()); + RUNNER_ASSERT(!value); } Catch(WidgetInterfaceDAO::Exception::DatabaseError) { @@ -332,7 +333,7 @@ RUNNER_TEST(widget_interface_dao_test_06_removeItem) RUNNER_TEST(widget_interface_dao_test_06_removeItem_Exception) { WidgetInterfaceDAO* dao = NULL; - DPL::Optional value; + DPL::OptionalStdString value; size_t sizeBefore, sizeAfter; Try @@ -357,7 +358,7 @@ RUNNER_TEST(widget_interface_dao_test_06_removeItem_Exception) value = dao->getValue("key3_for_2000"); RUNNER_ASSERT(sizeAfter == sizeBefore); - RUNNER_ASSERT(value == "value_for_key3_2000"); + RUNNER_ASSERT(value == std::string("value_for_key3_2000")); } Catch(WidgetInterfaceDAO::Exception::DatabaseError) { @@ -376,7 +377,7 @@ RUNNER_TEST(widget_interface_dao_test_06_removeItem_Exception) RUNNER_TEST(widget_interface_dao_test_07_clear) { size_t sizeBefore, sizeAfter; - DPL::Optional value; + DPL::OptionalStdString value; Try { @@ -390,7 +391,7 @@ RUNNER_TEST(widget_interface_dao_test_07_clear) RUNNER_ASSERT(sizeAfter == 1); RUNNER_ASSERT(sizeAfter < sizeBefore); - RUNNER_ASSERT(value == "value_for_key3_2000"); + RUNNER_ASSERT(value == std::string("value_for_key3_2000")); } Catch(WidgetInterfaceDAO::Exception::DatabaseError) { diff --git a/tests/dao/tests_dao.cpp b/tests/dao/tests_dao.cpp index ae3c7cd..072292b 100644 --- a/tests/dao/tests_dao.cpp +++ b/tests/dao/tests_dao.cpp @@ -21,7 +21,7 @@ */ #include -#include +#include #include #include @@ -29,15 +29,14 @@ int main (int argc, char *argv[]) { int ret = system("/usr/bin/wrt_dao_tests_prepare_db.sh start"); if (ret != 0) { - LogError("Preparation script has return error: " << ret - << ". Quitting"); + WrtLogE("Preparation script has return error: %i. Quitting", ret); return -1; } WrtDB::WrtDatabase::attachToThreadRW(); CustomHandlerDB::Interface::attachDatabaseRW(); - LogDebug("Starting tests"); + WrtLogD("Starting tests"); int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); @@ -46,7 +45,7 @@ int main (int argc, char *argv[]) ret = system("/usr/bin/wrt_dao_tests_prepare_db.sh stop"); if (ret != 0) { - LogError("Finalization script has return error: " << ret); + WrtLogE("Finalization script has return error: %i", ret); return -1; } return status; diff --git a/tests/dao/wrt_dao_tests_prepare_db.sh b/tests/dao/wrt_dao_tests_prepare_db.sh index 4bb3f0e..df42a53 100755 --- a/tests/dao/wrt_dao_tests_prepare_db.sh +++ b/tests/dao/wrt_dao_tests_prepare_db.sh @@ -23,16 +23,16 @@ if [ "x$1" == "xstart" ]; then wrt_commons_create_clean_db.sh; #simple plugins - INS_MIN_PLUGINPROP="insert into PluginProperties(PluginPropertiesId, InstallationState, PluginLibraryName" - INS_ALL_PLUGINPROP="insert into PluginProperties(PluginPropertiesId, InstallationState, PluginLibraryName, PluginLibraryPath)" + INS_MIN_PLUGINPROP="insert into PluginProperties(PluginPropertiesId, InstallationState, PluginLibraryName, LibraryTimestamp" + INS_ALL_PLUGINPROP="insert into PluginProperties(PluginPropertiesId, InstallationState, PluginLibraryName, LibraryTimestamp, PluginLibraryPath)" INS_PLUGIN_OBJECTS="insert into PluginImplementedObjects(PluginObject, PluginPropertiesId)" INS_PLUGIN_DEPEND="insert into PluginDependencies(PluginPropertiesId, RequiredPluginPropertiesId)" - sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}) VALUES(1, 1, 'plugin1')"; - sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}, PluginLibraryPath) VALUES(2, 1, 'plugin2', 'path_to_plugin2')"; - sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}) VALUES(3, 1, 'plugin3')"; - sqlite3 $WRT_DB "${INS_ALL_PLUGINPROP} VALUES(4, 1, 'p4', 'path_to_p4')"; - sqlite3 $WRT_DB "${INS_ALL_PLUGINPROP} VALUES(5, 1, 'p5', 'path_to_p5')"; + sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}) VALUES(1, 1, 'plugin1', 0)"; + sqlite3 $WRT_DB "${INS_ALL_PLUGINPROP} VALUES(2, 1, 'plugin2', 0, 'path_to_plugin2')"; + sqlite3 $WRT_DB "${INS_MIN_PLUGINPROP}) VALUES(3, 1, 'plugin3', 0)"; + sqlite3 $WRT_DB "${INS_ALL_PLUGINPROP} VALUES(4, 1, 'p4', 0, 'path_to_p4')"; + sqlite3 $WRT_DB "${INS_ALL_PLUGINPROP} VALUES(5, 1, 'p5', 0, 'path_to_p5')"; #plugin dependendencies sqlite3 $WRT_DB "${INS_PLUGIN_DEPEND} VALUES(1, 5)"; @@ -71,7 +71,7 @@ if [ "x$1" == "xstart" ]; then #Widgets INS_ALL_WIDGETEXT="insert into WidgetExtendedInfo(app_id, install_time)" - INS_ALL_WIDGET="insert into WidgetInfo(app_id, widget_id, widget_version, widget_width, widget_height, author_name, author_email, author_href, base_folder, webkit_plugins_required, wac_signed, min_version, tizen_pkgid, tizen_appid, back_supported, csp_policy_report_only)" + INS_ALL_WIDGET="insert into WidgetInfo(app_id, widget_id, widget_version, widget_width, widget_height, author_name, author_email, author_href, min_version, tizen_pkgid, tizen_appid, back_supported, csp_policy_report_only)" INS_ALL_WIDGET_LOC="insert into LocalizedWidgetInfo(app_id, widget_locale, widget_name, widget_shortname, widget_description, widget_license, widget_license_file, widget_license_href)" INS_ALL_WIDGET_ICONS="insert into WidgetIcon(app_id, icon_src, icon_width, icon_height)" INS_ALL_WIDGET_LOC_ICONS="insert into WidgetLocalizedIcon(app_id, icon_id, widget_locale)" @@ -87,8 +87,8 @@ if [ "x$1" == "xstart" ]; then INS_ALL_WIDGET_POWDERLEV_CONT="insert into PowderLevelContexts(levelid, context)" - sqlite3 $WRT_DB "${INS_ALL_WIDGET} VALUES(2000, 'w_id_2000', '1.0.0', 100, 200, 'a_name_2000', 'a_email_2000', 'a_href_2000', 'basef_2000', 1, 1, '1.0', 'pkgid201', 'tizenid201', 1, 'policy_report201')"; - sqlite3 $WRT_DB "${INS_ALL_WIDGET} VALUES(2001, 'w_id_2001', '2.0.0', 100, 200, 'a_name_2001', 'a_email_2001', 'a_href_2001', 'basef_2001', 1, 1, '0.5', 'pkgid202', 'tizenid202', 0, 'policy_report202')"; + sqlite3 $WRT_DB "${INS_ALL_WIDGET} VALUES(2000, 'w_id_2000', '1.0.0', 100, 200, 'a_name_2000', 'a_email_2000', 'a_href_2000', '1.0', 'pkgid201', 'tizenid201', 1, 'policy_report201')"; + sqlite3 $WRT_DB "${INS_ALL_WIDGET} VALUES(2001, 'w_id_2001', '2.0.0', 100, 200, 'a_name_2001', 'a_email_2001', 'a_href_2001', '0.5', 'pkgid202', 'tizenid202', 0, 'policy_report202')"; sqlite3 $WRT_DB "insert into WidgetInfo(app_id, back_supported, tizen_appid) VALUES(2002, 0, 'tizenid203')"; sqlite3 $WRT_DB "insert into WidgetInfo(app_id, back_supported, tizen_appid) VALUES(2003, 0, 'tizenid204')"; # for properties tests @@ -137,6 +137,16 @@ if [ "x$1" == "xstart" ]; then mkdir "/opt/usr/apps/pkgid201" mkdir "/opt/usr/apps/pkgid201/data" + WGT_INTERFACE_DB=/opt/usr/apps/pkgid201/data/.widget_interface.db + #Create widget interface db + sqlite3 $WGT_INTERFACE_DB "create table Properties(key TEXT NOT NULL, value TEXT DEFAULT '' NOT NULL, readonly INTEGER check(readonly between 0 and 1) DEFAULT 0, configxml INTEGER check(readonly between 0 and 1) DEFAULT 0, UNIQUE (key))" + chown app:app $WGT_INTERFACE_DB + chown app:app $WGT_INTERFACE_DB-journal + #Add properties + WGT_IDB_INS_ALL_WIDGET_PREF="insert into Properties(key,value,readonly)" + sqlite3 $WGT_INTERFACE_DB "${WGT_IDB_INS_ALL_WIDGET_PREF} VALUES('key1_for_2000', 'value_for_key1_2000', 0)"; + sqlite3 $WGT_INTERFACE_DB "${WGT_IDB_INS_ALL_WIDGET_PREF} VALUES('key2_for_2000', 'value_for_key2_2000', 0)"; + exit $? elif [ "x$1" == "xstop" ]; then diff --git a/tests/db/test_orm.cpp b/tests/db/test_orm.cpp index c7c9ea9..6726bc2 100644 --- a/tests/db/test_orm.cpp +++ b/tests/db/test_orm.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -70,11 +71,16 @@ bool ContainerContentsEqual(const ContainerType1& container1, it != set1.end(); it++) { - LogDebug("Set1 element: " << *it); + std::stringstream ss; + ss << *it; + WrtLogD("Set1 element: %s", ss.str().c_str()); } - for (typename Set2::iterator it = set2.begin(); it != set2.end(); it++) { - LogDebug("Set2 element: " << *it); + for (typename Set2::iterator it = set2.begin(); it != set2.end(); it++) + { + std::stringstream ss; + ss << *it; + WrtLogD("Set2 element: %s", ss.str().c_str()); } return set1 == set2; @@ -298,21 +304,21 @@ RUNNER_TEST(ORM_SelectValueList) //Getting each column { TestTable::Select select(interface.get()); - select.Where(Is(DPL::Optional::Null)); + select.Where(Is(DPL::OptionalInt())); RUNNER_ASSERT(ContainerContentsEqual(select.GetValueList(), makeList(99, 99))); } { TestTable::Select select(interface.get()); - select.Where(Is(DPL::Optional::Null)); + select.Where(Is(DPL::OptionalInt())); RUNNER_ASSERT(ContainerContentsEqual(select.GetValueList(), makeList(11, 13))); } { TestTable::Select select(interface.get()); - select.Where(Is(DPL::Optional::Null)); + select.Where(Is(DPL::OptionalInt())); RUNNER_ASSERT(ContainerContentsEqual(select.GetValueList(), makeList(DPL::String(L"twelve"), @@ -320,27 +326,24 @@ RUNNER_TEST(ORM_SelectValueList) } { TestTable::Select select(interface.get()); - select.Where(Is(DPL::Optional::Null)); + select.Where(Is(DPL::OptionalInt())); RUNNER_ASSERT(ContainerContentsEqual(select.GetValueList(), - makeList(DPL::Optional - ::Null, - DPL::Optional - ::Null))); + makeList(DPL::OptionalString(), + DPL::OptionalString()))); } //Where on each column { TestTable::Select select(interface.get()); - select.Where(Is(DPL::Optional::Null)); + select.Where(Is(DPL::OptionalInt())); RUNNER_ASSERT(ContainerContentsEqual(select.GetValueList(), makeList(11, 13))); } { TestTable::Select select(interface.get()); - select.Where(Is(DPL::Optional:: - Null)); + select.Where(Is(DPL::OptionalString())); RUNNER_ASSERT(ContainerContentsEqual(select.GetValueList(), makeList(11, 13))); @@ -565,8 +568,7 @@ RUNNER_TEST(ORM_Delete) list.remove(vector[3]); TestTableDelete::Delete del(interface.get()); - del.Where(Is(DPL::Optional - ::Null)); + del.Where(Is(DPL::OptionalString())); del.Execute(); TestTableDelete::Select select(interface.get()); @@ -991,7 +993,7 @@ RUNNER_TEST(ORM_Join) rowlist2.size() == 4, "Expected 4 rows while received: " << rowlist.size()); cnt = 0; - DPL::Optional optext; + DPL::OptionalString optext; FOREACH(rowit, rowlist2) { cnt++; diff --git a/tests/db/test_sql_connection.cpp b/tests/db/test_sql_connection.cpp old mode 100644 new mode 100755 index 20907fa..5840453 --- a/tests/db/test_sql_connection.cpp +++ b/tests/db/test_sql_connection.cpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include #include @@ -66,7 +66,7 @@ class StressGenerator : { DPL::DB::SqlConnection connection( m_dbFileName, - DPL::DB::SqlConnection::Flag::None, + DPL::DB::SqlConnection::Flag::NotDefined, DPL::DB::SqlConnection::Flag::RW, m_generator->Create()); @@ -186,7 +186,7 @@ RUNNER_TEST(SqlConnection_Not_Connected) { Try { DPL::DB::SqlConnection connection("/notexisitingdirectiory/foo", - DPL::DB::SqlConnection::Flag::None, + DPL::DB::SqlConnection::Flag::NotDefined, DPL::DB::SqlConnection::Flag::RW); RUNNER_ASSERT_MSG(false, "connection should throw on accessing " @@ -296,14 +296,14 @@ RUNNER_TEST(SqlConnection_Int8) RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); - insertCommand->BindInt8(1, DPL::Optional(-127)); + insertCommand->BindInt8(1, boost::optional(-127)); RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); RUNNER_ASSERT(selectCommand->Step()); RUNNER_ASSERT(selectCommand->GetColumnInt8(0) == 127); RUNNER_ASSERT(selectCommand->Step()); - RUNNER_ASSERT(selectCommand->GetColumnOptionalInt8(0) == -127); + RUNNER_ASSERT(selectCommand->GetColumnOptionalInt8(0) == static_cast(-127)); selectCommand->Reset(); connection.ExecCommand("DROP TABLE testInt8;"); @@ -331,7 +331,7 @@ RUNNER_TEST(SqlConnection_Int16) RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); - insertCommand->BindInt16(1, DPL::Optional((int16_t)0x8000)); + insertCommand->BindInt16(1, boost::optional((int16_t)0x8000)); RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); @@ -366,14 +366,14 @@ RUNNER_TEST(SqlConnection_Int32) RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); - insertCommand->BindInt32(1, DPL::Optional(0x80000000)); + insertCommand->BindInt32(1, boost::optional(0x80000000)); RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); RUNNER_ASSERT(selectCommand->Step()); RUNNER_ASSERT(selectCommand->GetColumnInt32(0) == (int32_t)0xFFFFFFFF); RUNNER_ASSERT(selectCommand->Step()); - RUNNER_ASSERT(selectCommand->GetColumnOptionalInt32(0) == 0x80000000); + RUNNER_ASSERT(selectCommand->GetColumnOptionalInt32(0) == static_cast(0x80000000)); selectCommand->Reset(); connection.ExecCommand("DROP TABLE testInt32;"); @@ -401,7 +401,7 @@ RUNNER_TEST(SqlConnection_Int64) RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); - insertCommand->BindInt64(1, DPL::Optional(0x8000000000000000)); + insertCommand->BindInt64(1, boost::optional(0x8000000000000000)); RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); @@ -409,7 +409,7 @@ RUNNER_TEST(SqlConnection_Int64) RUNNER_ASSERT(selectCommand->Step()); RUNNER_ASSERT(selectCommand->GetColumnInt64(0) == (int64_t)0xFFFFFFFFFFFFFFFF); RUNNER_ASSERT(selectCommand->Step()); - RUNNER_ASSERT(selectCommand->GetColumnOptionalInt64(0) == 0x8000000000000000); + RUNNER_ASSERT(selectCommand->GetColumnOptionalInt64(0) == static_cast(0x8000000000000000)); selectCommand->Reset(); connection.ExecCommand("DROP TABLE testInt64;"); @@ -437,7 +437,7 @@ RUNNER_TEST(SqlConnection_Float) RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); - insertCommand->BindFloat(1, DPL::Optional(-90.6788f)); + insertCommand->BindFloat(1, boost::optional(-90.6788f)); RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); @@ -474,7 +474,7 @@ RUNNER_TEST(SqlConnection_Double) RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); - insertCommand->BindDouble(1, DPL::Optional(-90.6788)); + insertCommand->BindDouble(1, boost::optional(-90.6788)); RUNNER_ASSERT(!insertCommand->Step()); insertCommand->Reset(); diff --git a/tests/dbus/main.cpp b/tests/dbus/main.cpp index 4dfd0b4..b4dd419 100644 --- a/tests/dbus/main.cpp +++ b/tests/dbus/main.cpp @@ -22,13 +22,13 @@ #include "loop_control.h" #include -#include +#include int main(int argc, char *argv[]) { LoopControl::init_loop(argc, argv); - LogDebug("Running tests"); + WrtLogD("Running tests"); int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); diff --git a/tests/dbus/test_service.cpp b/tests/dbus/test_service.cpp index 510e4c5..e2146ac 100644 --- a/tests/dbus/test_service.cpp +++ b/tests/dbus/test_service.cpp @@ -60,11 +60,11 @@ class TestServiceDispatcher : public DPL::DBus::Dispatcher GDBusMethodInvocation* invocation) { if (methodNameEcho == methodName) { - LogDebug("Echo"); + WrtLogD("Echo"); g_dbus_method_invocation_return_value(invocation, parameters); } else if (methodNameQuit == methodName) { - LogDebug("Quit"); + WrtLogD("Quit"); g_dbus_method_invocation_return_value(invocation, NULL); LoopControl::wrt_end_loop(); } diff --git a/tests/event/test_controller.cpp b/tests/event/test_controller.cpp index 5308720..6b2e8b3 100644 --- a/tests/event/test_controller.cpp +++ b/tests/event/test_controller.cpp @@ -27,10 +27,11 @@ #include #include #include -#include + +#include #include -#include #include +#include RUNNER_TEST_GROUP_INIT(DPL) @@ -344,8 +345,14 @@ struct TestContext ControllerList controllers; ThreadList threads; QuitController quitter; - DPL::Atomic g_ReceivedCounter; - DPL::Atomic g_SentCounter; + std::atomic g_ReceivedCounter; + std::atomic g_SentCounter; + + TestContext() + : g_ReceivedCounter(0) + , g_SentCounter(0) + { + } }; typedef std::unique_ptr TestContextPtr; TestContextPtr testContextPtr; diff --git a/tests/event/test_event_support.cpp b/tests/event/test_event_support.cpp index d221fb9..378e0b2 100644 --- a/tests/event/test_event_support.cpp +++ b/tests/event/test_event_support.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include DECLARE_GENERIC_EVENT_0(TestEvent) @@ -111,7 +111,7 @@ void OnDelegateTest(const int &k); void OnDelegateTest(const int &k) { - LogDebug("Got delegate call"); + WrtLogD("Got delegate call"); g_delegateTest = k; } diff --git a/tests/event/test_ic_delegate.cpp b/tests/event/test_ic_delegate.cpp index 460cfee..8bcbada 100644 --- a/tests/event/test_ic_delegate.cpp +++ b/tests/event/test_ic_delegate.cpp @@ -23,14 +23,15 @@ #include #include #include -#include +#include #include #include #include #include -#include #include #include +#include + RUNNER_TEST_GROUP_INIT(DPL) const int IntVal = 123; @@ -116,44 +117,47 @@ class TestContextFreeClass : m_testResult(result), m_controller(controller) { - LogDebug("Context thread id = " << this); + WrtLogD("Context thread id = %p", static_cast(this)); } void Run() { - LogDebug("Running Context Free thread"); + WrtLogD("Running Context Free thread"); Thread::Run(); } void Quit() { - LogDebug("Exiting Context Free thread"); + WrtLogD("Exiting Context Free thread"); Thread::Quit(); } void Wait() { - LogDebug("Waiting for thread"); + WrtLogD("Waiting for thread"); DPL::WaitForSingleHandle(m_waitable.GetHandle()); } protected: void OnNothing() { - LogDebug("Received nothing in thread = " << GetCurrentThread()); + WrtLogD("Received nothing in thread = %p", + static_cast(GetCurrentThread())); m_testResult->m_correctThread0 = (GetCurrentThread() == this); } void OnIntReceive(int val) { - LogDebug("Received int in thread = " << GetCurrentThread()); + WrtLogD("Received int in thread = %p", + static_cast(GetCurrentThread())); m_testResult->m_correctThread1 = (GetCurrentThread() == this); m_testResult->m_int = val; } void OnIntAndStringReceive(int val, std::string stringval) { - LogDebug("Received int and string in thread = " << GetCurrentThread()); + WrtLogD("Received int and string in thread = %p", + static_cast(GetCurrentThread())); m_testResult->m_correctThread2 = (GetCurrentThread() == this); m_testResult->m_int2 = val; m_testResult->m_string = stringval; @@ -201,7 +205,7 @@ RUNNER_TEST(ICDelegate_0) { DPL::Thread thread; thread.Run(); - LogDebug("Controller thread id = " << &thread); + WrtLogD("Controller thread id = %p", static_cast(&thread)); ICTestController testController; testController.Touch(); @@ -231,7 +235,7 @@ Expected: delegates should be called from right context RUNNER_TEST(ICDelegate_1) { DPL::Thread thread; - LogDebug("Controller thread id = " << &thread); + WrtLogD("Controller thread id = %p", static_cast(&thread)); ICTestController testController; testController.Touch(); @@ -267,7 +271,7 @@ typedef std::shared_ptr TestContextFreePtr; typedef std::shared_ptr TestRunnerInThreadPtr; typedef std::shared_ptr ThreadPtr; -DPL::Mutex mutex; +std::mutex mutex; std::list frees; std::list ctrls; std::list frees_threads; @@ -285,67 +289,67 @@ class TestContextFree : public DPL::Event::ICDelegateSupport void Wait() { - LogDebug("Waiting for thread"); + WrtLogD("Waiting for thread"); DPL::WaitForSingleHandle(m_waitable.GetHandle()); } void OnNothing() { - LogDebug("Got"); + WrtLogD("Got"); m_eventsCount--; if (m_eventsCount > 0) { - LogDebug("posting next event"); + WrtLogD("posting next event"); GetIntAndStringEvent getIntAndStringEvent( makeICDelegate( &TestContextFree::OnIntAndStringReceive)); - LogDebug("posting next event ..."); + WrtLogD("posting next event ..."); m_controller->DPL::Event::ControllerEventHandler< GetIntAndStringEvent>::PostEvent( getIntAndStringEvent); - LogDebug("posting next event done"); + WrtLogD("posting next event done"); } else { - LogDebug("test finished"); + WrtLogD("test finished"); m_waitable.Signal(); } } void OnIntReceive(int) { - LogDebug("Got"); + WrtLogD("Got"); m_eventsCount--; if (m_eventsCount > 0) { - LogDebug("posting next event"); + WrtLogD("posting next event"); GetNothingEvent getNothingEvent( makeICDelegate( &TestContextFree::OnNothing)); - LogDebug("posting next event ..."); + WrtLogD("posting next event ..."); m_controller->DPL::Event::ControllerEventHandler:: PostEvent( getNothingEvent); - LogDebug("posting next event done"); + WrtLogD("posting next event done"); } else { - LogDebug("test finished"); + WrtLogD("test finished"); m_waitable.Signal(); } } void OnIntAndStringReceive(int, std::string) { - LogDebug("Got"); + WrtLogD("Got"); m_eventsCount--; if (m_eventsCount > 0) { - LogDebug("posting next event"); + WrtLogD("posting next event"); GetIntEvent getIntEvent( makeICDelegate( &TestContextFree::OnIntReceive)); - LogDebug("posting next event ..."); + WrtLogD("posting next event ..."); m_controller->DPL::Event::ControllerEventHandler:: PostEvent( getIntEvent); - LogDebug("posting next event done"); + WrtLogD("posting next event done"); } else { - LogDebug("test finished"); + WrtLogD("test finished"); m_waitable.Signal(); } } @@ -382,7 +386,7 @@ class TestContextFree : public DPL::Event::ICDelegateSupport bool CheckTest() { - LogDebug("Checking test result"); + WrtLogD("Checking test result"); return m_eventsCount == 0; } @@ -401,16 +405,16 @@ class TestRunnerInThread : public DPL::Thread void WaitForInit() { - LogDebug("Waiting for thread"); + WrtLogD("Waiting for thread"); DPL::WaitForSingleHandle(m_init.GetHandle()); } protected: virtual int ThreadEntry() { - LogDebug("Thread starts"); + WrtLogD("Thread starts"); { - DPL::Mutex::ScopedLock lock(&mutex); + std::lock_guard lock(mutex); for (int i = 0; i < m_tests; ++i) { if (i % TestsPerController == 0) { if (ctrls.size() % ControllersPerThread == 0) { @@ -426,13 +430,13 @@ class TestRunnerInThread : public DPL::Thread TestContextFreePtr t(new TestContextFree(ctrls.back().get(), m_eventsCount)); t->StartTestOnNothing(); - LogDebug(""); + WrtLogD(""); frees.push_back(t); } } } m_init.Signal(); - LogDebug("Thread starts loop"); + WrtLogD("Thread starts loop"); return DPL::Thread::ThreadEntry(); } @@ -449,7 +453,7 @@ Expected: delegates should be called from right context */ RUNNER_TEST(ICDelegate_2) { - LogDebug("Creating test threads"); + WrtLogD("Creating test threads"); for (int i = 0; i < TestThreads; ++i) { TestRunnerInThreadPtr ptr( new TestRunnerInThread(NumberOfEvents, TestsPerThread)); @@ -460,10 +464,10 @@ RUNNER_TEST(ICDelegate_2) FOREACH(it, frees_threads) { (*it)->WaitForInit(); } - LogDebug("Creating test threads done"); + WrtLogD("Creating test threads done"); FOREACH(it, frees) { - LogDebug("..."); + WrtLogD("..."); (*it)->Wait(); } @@ -510,7 +514,7 @@ class ICReuseTestController : { event.GetArg0() (); //calling intercontext delegate if (++m_reuseCount < ReuseCount) { - LogDebug("[Send] Reuse: " << m_reuseCount); + WrtLogD("[Send] Reuse: %i", m_reuseCount); DPL::Event::ControllerEventHandler::PostEvent( event); } @@ -546,7 +550,7 @@ class ReuseTestContextFreeClass : protected: void OnReuseReceive() { - LogDebug("[Received] : " << ++m_reuseCount); + WrtLogD("[Received] : %i", ++m_reuseCount); if (m_reuseCount == ReuseCount) { m_waitable.Signal(); } @@ -580,7 +584,7 @@ RUNNER_TEST(ICDelegate_3) { DPL::Thread thread; thread.Run(); - LogDebug("Controller thread id = " << &thread); + WrtLogD("Controller thread id = %p", static_cast(&thread)); ICReuseTestController testController; testController.Touch(); diff --git a/tests/files_localization/test_localization.cpp b/tests/files_localization/test_localization.cpp index ae4925a..1d2a149 100644 --- a/tests/files_localization/test_localization.cpp +++ b/tests/files_localization/test_localization.cpp @@ -20,7 +20,7 @@ * @brief This file is the implementation file of main */ #include -#include +#include #include int main(int argc, char *argv[]) @@ -28,8 +28,7 @@ int main(int argc, char *argv[]) int ret = system("/usr/bin/wrt_db_localization_prepare.sh start"); if (ret != 0) { - LogError("Preparation script has return error: " << ret - << ". Quitting"); + WrtLogE("Preparation script has return error: %i. Quitting", ret); return -1; } @@ -39,8 +38,7 @@ int main(int argc, char *argv[]) ret = system("/usr/bin/wrt_db_localization_prepare.sh stop"); if (ret != 0) { - LogError("Preparation script has return error: " << ret - << ". Quitting"); + WrtLogE("Preparation script has return error: %i. Quitting", ret); return -1; } return status; diff --git a/tests/files_localization/test_suite01.cpp b/tests/files_localization/test_suite01.cpp index d163d1d..66e406a 100644 --- a/tests/files_localization/test_suite01.cpp +++ b/tests/files_localization/test_suite01.cpp @@ -22,11 +22,11 @@ * @brief */ -#include #include #include #include #include +#include #include namespace { @@ -55,7 +55,7 @@ RUNNER_TEST(test01_getFilePathInWidgetPackageFromUrl){ WrtDB::TizenAppId name = L"tizenid201"; //no difference if it is valid or invalid appId/pkgId, we fill database which has no intergrity constrainst WrtDB::WidgetDAOReadOnly dao(name); - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"widget://one")); @@ -69,7 +69,7 @@ RUNNER_TEST(test02_getFilePathInWidgetPackageFromUrl){ WrtDB::TizenAppId name = L"tizenid202"; WrtDB::WidgetDAOReadOnly dao(name); - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"widget://one")); @@ -83,7 +83,7 @@ RUNNER_TEST(test03_getFilePathInWidgetPackageFromUrl){ WrtDB::TizenAppId name = L"tizenid202"; WrtDB::WidgetDAOReadOnly dao(name); - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"widget://two.html")); @@ -97,7 +97,7 @@ RUNNER_TEST(test04_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"widget://two.html?a=1#b")); @@ -111,7 +111,7 @@ RUNNER_TEST(test05_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"widget://two.html#a?b")); @@ -125,7 +125,7 @@ RUNNER_TEST(test06_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"file://two.html")); @@ -139,7 +139,7 @@ RUNNER_TEST(test07_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"file:///opt/share/widget/tests/localization/widget2/res/wgt/two.html")); @@ -153,7 +153,7 @@ RUNNER_TEST(test08_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"file:///opt/share/widget/tests/localization/widget2/res/wgt/locales/pl-en/two.html")); @@ -167,18 +167,18 @@ RUNNER_TEST(test09_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"app://two.html")); - RUNNER_ASSERT(result.IsNull()); + RUNNER_ASSERT(!result); } RUNNER_TEST(test10_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"app://tizenid202/two.html")); @@ -192,22 +192,22 @@ RUNNER_TEST(test11_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"dummy")); - RUNNER_ASSERT(result.IsNull()); + RUNNER_ASSERT(!result); } RUNNER_TEST(test12_getFilePathInWidgetPackageFromUrl) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackageFromUrl( name, DPL::String(L"app://tizenid202/notExisingFIle")); - RUNNER_ASSERT(result.IsNull()); + RUNNER_ASSERT(!result); } RUNNER_TEST(test13_getFilePathInWidgetPackageFromUrl2) @@ -311,7 +311,7 @@ RUNNER_TEST(test25_getFilePathInWidgetPackage) WrtDB::TizenAppId name = L"tizenid201"; WrtDB::WidgetDAOReadOnly dao(name); - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackage( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackage( name, DPL::String(L"one")); @@ -324,7 +324,7 @@ RUNNER_TEST(test26_getFilePathInWidgetPackage) WrtDB::TizenAppId name = L"tizenid202"; WrtDB::WidgetDAOReadOnly dao(name); - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackage( + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackage( name, DPL::String(L"two.html")); @@ -336,17 +336,17 @@ RUNNER_TEST(test27_getFilePathInWidgetPackage) { WrtDB::TizenAppId name = L"tizenid202"; - DPL::Optional result = W3CFileLocalization::getFilePathInWidgetPackage(name, L""); - RUNNER_ASSERT(result.IsNull()); + DPL::OptionalString result = W3CFileLocalization::getFilePathInWidgetPackage(name, L""); + RUNNER_ASSERT(!result); result = W3CFileLocalization::getFilePathInWidgetPackage(name, L"/"); - RUNNER_ASSERT(result.IsNull()); + RUNNER_ASSERT(!result); result = W3CFileLocalization::getFilePathInWidgetPackage(name, L"//"); - RUNNER_ASSERT(result.IsNull()); + RUNNER_ASSERT(!result); result = W3CFileLocalization::getFilePathInWidgetPackage(name, L"dummy"); - RUNNER_ASSERT(result.IsNull()); + RUNNER_ASSERT(!result); result = W3CFileLocalization::getFilePathInWidgetPackage(name, L"/two.html/"); RUNNER_ASSERT_MSG(!!result, "No result"); @@ -411,7 +411,7 @@ RUNNER_TEST(test32_getStartFileInfo) WrtDB::TizenAppId name = L"tizenid202"; OptionalWidgetStartFileInfo result = W3CFileLocalization::getStartFileInfo(name); - RUNNER_ASSERT(result.IsNull()); + RUNNER_ASSERT(!result); } @@ -420,7 +420,7 @@ RUNNER_TEST(test33_getStartFileInfo) WrtDB::TizenAppId name = L"tizenid201"; OptionalWidgetStartFileInfo result = W3CFileLocalization::getStartFileInfo(name); - RUNNER_ASSERT(!result.IsNull()); + RUNNER_ASSERT(!!result); RUNNER_ASSERT(result->file == L"start_file"); RUNNER_ASSERT(result->localizedPath == L"locales/en-en/start_file"); } diff --git a/tests/i18n/test_i18n_dao_read_only.cpp b/tests/i18n/test_i18n_dao_read_only.cpp index 57dfe2d..2ca64fb 100644 --- a/tests/i18n/test_i18n_dao_read_only.cpp +++ b/tests/i18n/test_i18n_dao_read_only.cpp @@ -20,7 +20,6 @@ * @brief This file is the implementation file of i18n dao tests */ #include -#include #include #include diff --git a/tests/localizationTagsProvider/Localization_testcases.cpp b/tests/localizationTagsProvider/Localization_testcases.cpp index 295ca7c..736f5f5 100644 --- a/tests/localizationTagsProvider/Localization_testcases.cpp +++ b/tests/localizationTagsProvider/Localization_testcases.cpp @@ -20,7 +20,7 @@ * @brief This file contains tests for localization related code. */ -#include +#include #include #include @@ -30,18 +30,18 @@ RUNNER_TEST_GROUP_INIT(LanguageTagsProvider) RUNNER_TEST(tagsFromSystemLocales) { - LogDebug("Generating tags from system locales"); + WrtLogD("Generating tags from system locales"); char* currlocals = vconf_get_str(VCONFKEY_LANGSET); - LogDebug("Locales fetched from system settings: " << currlocals); + WrtLogD("Locales fetched from system settings: %s", currlocals); RUNNER_ASSERT_MSG(!!currlocals, "NULL locales received from system"); - int result = vconf_set_str(VCONFKEY_LANGSET, "en_US.UTF-8"); - LogDebug("Returned vconf set execution status: " << result); + int result = system_settings_set_value_string(VCONFKEY_LANGSET, "en_US.UTF-8"); + WrtLogD("Returned vconf set execution status: %i", result); RUNNER_ASSERT_MSG(result == 0, "Invalid value returned by vconf_set_str on setting locales"); /* Ensure that system locales where fetched */ LanguageTagsProviderSingleton::Instance().resetLanguageTags(); - LogDebug("Language tags set based on current system locales"); + WrtLogD("Language tags set based on current system locales"); LanguageTags ltlist = LanguageTagsProviderSingleton::Instance().getLanguageTags(); RUNNER_ASSERT_MSG(!ltlist.empty(), "Empty tag list returned"); @@ -55,18 +55,18 @@ RUNNER_TEST(tagsFromSystemLocales) RUNNER_ASSERT_MSG( correct==ltlist, "Received and expected language tags lists differ"); /* Restore system locales */ - result = vconf_set_str(VCONFKEY_LANGSET, currlocals); + result = system_settings_set_value_string(VCONFKEY_LANGSET, currlocals); RUNNER_ASSERT_MSG(result == 0, "Invalid value returned by vconf_set_str on restoring locales"); - LogDebug("System locales restored"); + WrtLogD("System locales restored"); } RUNNER_TEST(tagsFromGivenLocales) { - LogDebug("Generating tags from given locales"); + WrtLogD("Generating tags from given locales"); const char *locales1 = "it_IT.UTF-8", *locales2="en_GB"; - LogDebug("Using locales with codepage: " << locales1); + WrtLogD("Using locales with codepage: %s", locales1); LanguageTagsProviderSingleton::Instance().setLanguageTagsFromLocales(locales1); LanguageTags ltlist = LanguageTagsProviderSingleton::Instance().getLanguageTags(); /* Correct list generated from given locales should contain: "it-IT", "it" and @@ -77,7 +77,7 @@ RUNNER_TEST(tagsFromGivenLocales) correct.push_back(L""); RUNNER_ASSERT_MSG(correct==ltlist, "Received and expected language tags lists differ"); - LogDebug("Using locales without codepage: " << locales2); + WrtLogD("Using locales without codepage: %s", locales2); LanguageTagsProviderSingleton::Instance().setLanguageTagsFromLocales(locales2); ltlist = LanguageTagsProviderSingleton::Instance().getLanguageTags(); correct.clear(); @@ -89,7 +89,7 @@ RUNNER_TEST(tagsFromGivenLocales) RUNNER_TEST(tagsFromNullLocales) { - LogDebug("Generating tags when NULL locales given"); + WrtLogD("Generating tags when NULL locales given"); LanguageTagsProviderSingleton::Instance().setLanguageTagsFromLocales(NULL); LanguageTags ltlist = LanguageTagsProviderSingleton::Instance().getLanguageTags(); @@ -102,9 +102,9 @@ RUNNER_TEST(tagsFromNullLocales) RUNNER_TEST(tagsFromGivenTagList) { - LogDebug("Copying given tags list"); + WrtLogD("Copying given tags list"); - LogDebug("Correct full list (with default values)"); + WrtLogD("Correct full list (with default values)"); LanguageTags correct; correct.push_back(L"de-DE"); correct.push_back(L"de"); @@ -113,7 +113,7 @@ RUNNER_TEST(tagsFromGivenTagList) LanguageTags result = LanguageTagsProviderSingleton::Instance().getLanguageTags(); RUNNER_ASSERT_MSG(correct==result, "Received and expected language tags lists differ"); - LogDebug("Tags list without default values)"); + WrtLogD("Tags list without default values)"); LanguageTags nondef; nondef.push_back(L"de-DE"); nondef.push_back(L"de"); @@ -129,7 +129,7 @@ RUNNER_TEST(tagsFromGivenTagList) RUNNER_TEST(tagsFromEmptyList) { - LogDebug("Generating tags when empty tag list given"); + WrtLogD("Generating tags when empty tag list given"); LanguageTags input; LanguageTagsProviderSingleton::Instance().setLanguageTags(input); @@ -139,7 +139,7 @@ RUNNER_TEST(tagsFromEmptyList) RUNNER_TEST(defaultWidgetLocale) { - LogDebug("Adding default widget locales to language tags list"); + WrtLogD("Adding default widget locales to language tags list"); LanguageTags input; input.push_back(L"de-DE"); diff --git a/tests/localizationTagsProvider/tests_miscunit.cpp b/tests/localizationTagsProvider/tests_miscunit.cpp index 430cccf..617e77a 100644 --- a/tests/localizationTagsProvider/tests_miscunit.cpp +++ b/tests/localizationTagsProvider/tests_miscunit.cpp @@ -22,11 +22,11 @@ */ #include -#include +#include int main (int argc, char *argv[]) { - LogDebug("Starting miscellaneous unit tests"); + WrtLogD("Starting miscellaneous unit tests"); int status = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv); return status; diff --git a/tests/test/runner_child.cpp b/tests/test/runner_child.cpp index 6dfc30d..576b46b 100644 --- a/tests/test/runner_child.cpp +++ b/tests/test/runner_child.cpp @@ -20,7 +20,6 @@ * @brief Implementation file for test cases for engine internal tests */ #include -#include #include #include #include diff --git a/tests/test/runner_multiprocess.cpp b/tests/test/runner_multiprocess.cpp index fcac88e..1c84400 100644 --- a/tests/test/runner_multiprocess.cpp +++ b/tests/test/runner_multiprocess.cpp @@ -22,7 +22,6 @@ #include #include -#include #include namespace { diff --git a/tests/test/test_abstract_input_reader.cpp b/tests/test/test_abstract_input_reader.cpp index 8e74faa..1579561 100644 --- a/tests/test/test_abstract_input_reader.cpp +++ b/tests/test/test_abstract_input_reader.cpp @@ -26,7 +26,6 @@ #include #include #include -#include using namespace DPL; diff --git a/tests/test/test_process_pipe.cpp b/tests/test/test_process_pipe.cpp index 46405f9..af45095 100644 --- a/tests/test/test_process_pipe.cpp +++ b/tests/test/test_process_pipe.cpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include @@ -40,7 +40,7 @@ void readAll(ProcessPipe & npp, BinaryQueue & result) RUNNER_ASSERT_MSG(dataptr.get() != NULL, "Cannot read from pipe subprocess"); - LogDebug("Size: " << dataptr->Size()); + WrtLogD("Size: %i", dataptr->Size()); if(dataptr->Empty()) break; result.AppendMoveFrom(*dataptr); diff --git a/tests/unused/test_message_queue.cpp b/tests/unused/test_message_queue.cpp index 09990b7..8053ce5 100644 --- a/tests/unused/test_message_queue.cpp +++ b/tests/unused/test_message_queue.cpp @@ -69,13 +69,13 @@ class CopyThread : m_output(output), m_dataSize(dataSize) { - LogDebug("Thread created"); + WrtLogD("Thread created"); } protected: virtual int ThreadEntry() { - LogDebug("Entering copy thread"); + WrtLogD("Entering copy thread"); Try { @@ -85,11 +85,11 @@ class CopyThread : { m_success = false; - LogWarning("Copy failed!"); + WrtLogW("Copy failed!"); return 0; } - LogDebug("Copy finished"); + WrtLogD("Copy finished"); return 0; } }; diff --git a/tests/unused/test_shm.cpp b/tests/unused/test_shm.cpp index 20eed04..04638a6 100644 --- a/tests/unused/test_shm.cpp +++ b/tests/unused/test_shm.cpp @@ -32,6 +32,7 @@ #include #include #include +#include RUNNER_TEST_GROUP_INIT(DPL) @@ -68,15 +69,15 @@ size_t g_delegateCalls = 0; void Wait(DPL::WaitableEvent& event, bool expectedTimeout = false) { - LogDebug("WaitForSingleHandle..."); + WrtLogD("WaitForSingleHandle..."); DPL::WaitableHandleIndexList list = DPL::WaitForSingleHandle( event.GetHandle(), expectedTimeout ? EXPECTED_WAITABLE_TIMEOUT : UNEXPECTED_WAITABLE_TIMEOUT); if (list.size() == 0) { - LogDebug("...timeout."); + WrtLogD("...timeout."); } else { - LogDebug("...signaled."); + WrtLogD("...signaled."); event.Reset(); } @@ -165,14 +166,14 @@ void ListeningController::OnEventReceived(const int& event) OnEvent(event); m_waitable->Signal(); } else if (event == DESTROY_EVENT) { - LogDebug("Destroying shared object"); + WrtLogD("Destroying shared object"); OnEvent(event); // deregister, destroy ad notify main thread m_so.Reset(); - LogDebug("4"); + WrtLogD("4"); m_waitable->Signal(); - LogDebug("5"); + WrtLogD("5"); } else { OnEvent(event); } @@ -199,7 +200,7 @@ class TestSharedObject4 : public SharedObject ~TestSharedObject4() { - LogDebug("dtor"); + WrtLogD("dtor"); } protected: @@ -574,12 +575,12 @@ class EnumTestSO1 : public TestSharedObject void EnumTestSO1::PropertyChanged(size_t propertyEnum) { if (propertyEnum == 1) { - LogDebug("Property enum " << propertyEnum << " correctly set"); + WrtLogD("Property enum %i correctly set", propertyEnum); g_enumTestCorrect = true; } if (propertyEnum == 4) { // This is bad. We only have 4 types - LogError("Property enum " << propertyEnum << " should be skipped"); + WrtLogE("Property enum %i should be skipped", propertyEnum); g_enumTestIncorrect = true; } // confirm property change notification @@ -627,7 +628,7 @@ RUNNER_TEST(SharedMemory_025_InvalidEnumTest) // create listening controller and wait until it registers EnumController controller(&waitable); Wait(waitable); - LogDebug("Listening controller created"); + WrtLogD("Listening controller created"); // create writing shared object std::shared_ptr sho2 = @@ -695,7 +696,7 @@ void ShmController::OnEventReceived(const int& event) m_so = SharedObjectFactory::Create(SHM_KEY, SEM_NAME); PostEvent(2); } else if (event == DESTROY_EVENT) { - LogDebug("Destroying shared object"); + WrtLogD("Destroying shared object"); // deregister, destroy ad notify main thread m_so.Reset(); m_waitable->Signal(); @@ -703,7 +704,7 @@ void ShmController::OnEventReceived(const int& event) m_so->TestAndSetProperty(); m_counter++; if (m_counter >= TEST_AND_SET_REPEATS) { - LogDebug("Max tests reached. Finishing thread"); + WrtLogD("Max tests reached. Finishing thread"); PostEvent(DESTROY_EVENT); return; } @@ -735,8 +736,8 @@ RUNNER_TEST(SharedMemory_030_MultithreadTest) } int value = sho->GetProperty<0, int>(); - LogDebug("Final value is " << value << ", expected " << - MAX_THREADS * TEST_AND_SET_REPEATS); + WrtLogD("Final value is %i, expected %i", + value, MAX_THREADS * TEST_AND_SET_REPEATS); RUNNER_ASSERT(value == MAX_THREADS * TEST_AND_SET_REPEATS); } @@ -792,7 +793,7 @@ void ShmController3::OnValueChanged(const DPL::PropertyEvent& event) // change back m_model->boolValue.Set(false); } else { - LogError("Expected value = true, got false"); + WrtLogE("Expected value = true, got false"); } m_waitable->Signal(); @@ -884,7 +885,7 @@ void SPController::OnValueChanged1(const DPL::PropertyEvent& event) return; } - LogDebug("[1] Value changed to " << event.value); + WrtLogD("[1] Value changed to %s", event.value); m_repeats++; m_model1->counter.Set(event.value + 1); } @@ -896,7 +897,7 @@ void SPController::OnValueChanged2(const DPL::PropertyEvent& event) return; } - LogDebug("[2] Value changed to " << event.value); + WrtLogD("[2] Value changed to %i", event.value); m_repeats++; m_model2->counter.Set(event.value + 1); } @@ -919,7 +920,7 @@ RUNNER_TEST(SharedMemory_060_SingleProcess) int value = sho->GetProperty<0, int>(); - LogDebug("final value: " << value); + WrtLogD("final value: %i", value); // check value RUNNER_ASSERT(value == SINGLE_PROCESS_REPEATS); @@ -976,7 +977,7 @@ void ListenerTestController::ValueChanged(size_t propertyEnum, const int& value, const void* /*info*/) { - LogDebug("ValueChanged(int) " << propertyEnum << " " << value); + WrtLogD("ValueChanged(int) %u %i", propertyEnum, value); if ((propertyEnum == 0 && value == 1) || (propertyEnum == 1 && value == 2)) { @@ -991,7 +992,7 @@ void ListenerTestController::ValueChanged(size_t propertyEnum, const char& value, const void* /*info*/) { - LogDebug("ValueChanged(char) " << propertyEnum << " " << value); + WrtLogD("ValueChanged(char) %u %i", propertyEnum, value); if (propertyEnum == 2 && value == 'c') { g_values[propertyEnum]++; if (g_values[propertyEnum] == 3) { @@ -1004,7 +1005,7 @@ void ListenerTestController::ValueChanged(size_t propertyEnum, const int(&value)[64], const void* /*info*/) { - LogDebug("ValueChanged(int[64]) " << propertyEnum << " " << value[5]); + WrtLogD("ValueChanged(int[64]) %u %i", propertyEnum, value[5]); if (propertyEnum == 3 && value[5] == 5) { g_values[propertyEnum]++; if (g_values[propertyEnum] == 3) { @@ -1246,18 +1247,18 @@ RUNNER_TEST(SharedMemory_100_LazyInit) bool SetCondition(const int& readValue, int& setValue); bool SetCondition(const int& readValue, int& setValue) { - LogDebug("Condition delegate called with read value = " << readValue << - " and set value = " << setValue); + WrtLogD("Condition delegate called with read value = %i and set value = %i", + readValue, setValue); if (readValue > 3) { - LogDebug("Condition is false"); + WrtLogD("Condition is false"); return false; } - LogDebug("Condition is true"); + WrtLogD("Condition is true"); if (4 == setValue) { setValue = 10; - LogDebug("Changing set value to " << setValue); + WrtLogD("Changing set value to %i", setValue); } return true; } @@ -1265,7 +1266,7 @@ bool SetCondition(const int& readValue, int& setValue) void SetDelegate(const int& readValue); void SetDelegate(const int& readValue) { - LogDebug("Set delegate called " << readValue); + WrtLogD("Set delegate called %i", readValue); g_delegateCalls++; } @@ -1349,15 +1350,15 @@ class SharedObjectSingleton private: static MTSharedObjectPtr m_sho; - static DPL::Mutex m_mutex; + static std::mutex m_mutex; }; MTSharedObjectPtr SharedObjectSingleton::m_sho; -DPL::Mutex SharedObjectSingleton::m_mutex; +std::mutex SharedObjectSingleton::m_mutex; MTSharedObjectPtr SharedObjectSingleton::Instance() { - DPL::Mutex::ScopedLock lock(&m_mutex); + std::lock_guard lock(m_mutex); if (!m_sho) { m_sho = SharedObjectFactory::Create(SHM_KEY, SEM_NAME); } @@ -1366,7 +1367,7 @@ MTSharedObjectPtr SharedObjectSingleton::Instance() void SharedObjectSingleton::Destroy() { - DPL::Mutex::ScopedLock lock(&m_mutex); + std::lock_guard lock(m_mutex); m_sho.Reset(); } @@ -1416,7 +1417,7 @@ void ShmController4::ValueChanged(size_t propertyEnum, const int& value, const void* /*info*/) { - LogDebug("ValueChanged(int) " << propertyEnum << " " << value); + WrtLogD("ValueChanged(int) %u %i", propertyEnum, value); if ((propertyEnum == 0 && value == 1) || (propertyEnum == 1 && value == 11)) { @@ -1428,7 +1429,7 @@ void ShmController4::ValueChanged(size_t propertyEnum, const char& value, const void* /*info*/) { - LogDebug("ValueChanged(char) " << propertyEnum << " " << value); + WrtLogD("ValueChanged(char) %u %i", propertyEnum, value); if (propertyEnum == 2 && value == 'a') { m_waitable->Signal(); } @@ -1438,7 +1439,7 @@ void ShmController4::ValueChanged(size_t propertyEnum, const int(&value)[64], const void* /*info*/) { - LogDebug("ValueChanged(int[64]) " << propertyEnum << " " << value[5]); + WrtLogD("ValueChanged(int[64]) %u %i", propertyEnum, value[5]); if (propertyEnum == 3 && value[0] == 0 && value[1] == 1 && value[2] == 2) { m_waitable->Signal(); } @@ -1459,7 +1460,7 @@ void ShmController4::OnEventReceived(const int& event) break; case DESTROY_EVENT: - LogDebug("Destroying shared object"); + WrtLogD("Destroying shared object"); // deregister, destroy and notify main thread m_so.Reset(); m_waitable->Signal(); @@ -1497,7 +1498,7 @@ void ShmController4::OnEventReceived(const int& event) break; default: - LogError("Unsupported event received: " << event); + WrtLogE("Unsupported event received: %i", event); } } @@ -1516,8 +1517,8 @@ void MultipleWait(DPL::WaitableEvent(&event)[MAX_THREADS]) #define LISTENER_ASSERT(property) \ Try { \ singleton->RemoveListener<(property)>(controller[i]); \ - LogError("Controller " << i << " is still listening for property " \ - << #property); \ + WrtLogE("Controller %i is still listening for property %s" \ + i, #property); \ RUNNER_ASSERT_MSG(false, "No listeners expected"); \ } \ Catch(MTSharedObject::Exception::ListenerNotFound) { \ @@ -1540,7 +1541,7 @@ RUNNER_TEST(SharedMemory_130_SharedObjectSingleton) // Create and wait for notification. Make sure that the thread/controller 0 // is created first - LogDebug("Creating controllers"); + WrtLogD("Creating controllers"); for (size_t i = 0; i < MAX_THREADS; ++i) { controller[i] = new ShmController4(&waitable[i]); Wait(waitable[i]); @@ -1550,12 +1551,12 @@ RUNNER_TEST(SharedMemory_130_SharedObjectSingleton) MTSharedObjectPtr singleton = SharedObjectSingleton::Instance(); for (size_t repeats = 0; repeats < SINGLETON_TEST_REPEATS; ++repeats) { - LogDebug("%%%%%%%%%%%%%%%%%%%%%"); - LogDebug("Iteration " << repeats + 1 << " of " << SINGLETON_TEST_REPEATS); + WrtLogD("%%%%%%%%%%%%%%%%%%%%%"); + WrtLogD("Iteration %u of %u", repeats + 1, SINGLETON_TEST_REPEATS); singleton->Clear(); // add listeners - LogDebug("Adding listeners"); + WrtLogD("Adding listeners"); for (size_t i = 0; i < MAX_THREADS; ++i) { controller[i]->PostEvent(ShmController4::ADD_LISTENERS); } @@ -1573,31 +1574,31 @@ RUNNER_TEST(SharedMemory_130_SharedObjectSingleton) RUNNER_ASSERT(checkArray[2] == 0); // change - LogDebug("Setting property 0"); + WrtLogD("Setting property 0"); sho->SetProperty<0>(1); // wait for confirmations MultipleWait(waitable); // change - LogDebug("Setting property 1"); + WrtLogD("Setting property 1"); sho->SetProperty<1>(11); // wait for confirmations MultipleWait(waitable); // change - LogDebug("Setting property 2"); + WrtLogD("Setting property 2"); sho->SetProperty<2>('a'); // wait for confirmations MultipleWait(waitable); // change - LogDebug("Setting property 3"); + WrtLogD("Setting property 3"); sho->SetProperty<3>(array); // wait for confirmations MultipleWait(waitable); // remove listeners - LogDebug("Removing listeners"); + WrtLogD("Removing listeners"); for (size_t i = 0; i < MAX_THREADS; ++i) { controller[i]->PostEvent(ShmController4::REMOVE_LISTENERS); } @@ -1605,7 +1606,7 @@ RUNNER_TEST(SharedMemory_130_SharedObjectSingleton) MultipleWait(waitable); // check if listeners array is empty - LogDebug("Checking listeners"); + WrtLogD("Checking listeners"); for (size_t i = 0; i < MAX_THREADS; ++i) { LISTENER_ASSERT(0); LISTENER_ASSERT(1); @@ -1626,7 +1627,7 @@ RUNNER_TEST(SharedMemory_130_SharedObjectSingleton) // Destroy controllers and wait for confirmation. Make sure that // thread/controller 0 is destroyed in the end - LogDebug("Destroying controllers"); + WrtLogD("Destroying controllers"); for (int i = MAX_THREADS - 1; i >= 0; --i) { controller[i]->PostEvent(DESTROY_EVENT); Wait(waitable[i]); @@ -1636,7 +1637,7 @@ RUNNER_TEST(SharedMemory_130_SharedObjectSingleton) * This is to properly close all waitable handles opened by * SharedObject in thread 0. */ - LogDebug("Destroying singleton"); + WrtLogD("Destroying singleton"); controller[i]->PostEvent(ShmController4::DESTROY_SINGLETON); Wait(waitable[i]); } diff --git a/tests/unused/test_task.cpp b/tests/unused/test_task.cpp index a885dcd..fd7090b 100644 --- a/tests/unused/test_task.cpp +++ b/tests/unused/test_task.cpp @@ -48,17 +48,17 @@ class MyMultiTask : void StepOne() { - LogDebug("Step one"); + WrtLogD("Step one"); } void StepTwo() { - LogDebug("Step two"); + WrtLogD("Step two"); } void StepThree() { - LogDebug("Step three"); + WrtLogD("Step three"); } public: diff --git a/tests/utils/bash_utils.cpp b/tests/utils/bash_utils.cpp index 7dac1fc..4c496b5 100644 --- a/tests/utils/bash_utils.cpp +++ b/tests/utils/bash_utils.cpp @@ -20,7 +20,7 @@ */ #include #include -#include +#include using namespace BashUtils; @@ -36,16 +36,16 @@ RUNNER_TEST(Bash_Utils_escape_arg) RUNNER_ASSERT_MSG(escape_arg(std::string( "valid")) == "\"valid\"", "Valid argument failed"); - LogDebug("\"val\\!d\"" << " " << escape_arg(std::string("val!d"))); + WrtLogD("\"val\\!d\" %s", escape_arg(std::string("val!d")).c_str()); RUNNER_ASSERT_MSG(escape_arg(std::string( "val!d")) == "\"val\\!d\"", "Single escaped character in argument failed"); - LogDebug("\"v\\$l\\$\\$\"" << " " << escape_arg(std::string("v$l$$"))); + WrtLogD("\"v\\$l\\$\\$\" %s", escape_arg(std::string("v$l$$")).c_str()); RUNNER_ASSERT_MSG(escape_arg(std::string( "v$l$$")) == "\"v\\$l\\$\\$\"", "Multiple occurences of single special character in argument failed"); - LogDebug("\"v\\`\\$\\\"\\!d\\`\"" << " " << - escape_arg(std::string("v`$\"!d`"))); + WrtLogD("\"v\\`\\$\\\"\\!d\\`\" %s", + escape_arg(std::string("v`$\"!d`")).c_str()); RUNNER_ASSERT_MSG(escape_arg(std::string( "v`$\"!d`")) == "\"v\\`\\$\\\"\\!d\\`\"", "Multiple occurences of multiple special character in argument failed"); diff --git a/tests/utils/path_tests.cpp b/tests/utils/path_tests.cpp index e612ad7..02b1fa3 100644 --- a/tests/utils/path_tests.cpp +++ b/tests/utils/path_tests.cpp @@ -24,10 +24,9 @@ #include #include -#include #include #include -#include +#include #include #include #include @@ -235,7 +234,7 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_1) { - DPL::ScopedFree sf(getcwd(NULL, 0)); + std::unique_ptr sf(getcwd(NULL, 0)); Path path1(std::string("/test/bin/file")); RUNNER_ASSERT(path1.Fullpath() == "/test/bin/file"); @@ -250,8 +249,8 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_2) { - DPL::ScopedFree sf(getcwd(NULL, 0)); - std::string cwd(sf.Get()); + std::unique_ptr sf(getcwd(NULL, 0)); + std::string cwd(sf.get()); if("/" == cwd) cwd = ""; @@ -269,8 +268,8 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_3) { - DPL::ScopedFree sf(getcwd(NULL, 0)); - std::string cwd(sf.Get()); + std::unique_ptr sf(getcwd(NULL, 0)); + std::string cwd(sf.get()); if("/" == cwd) cwd = ""; @@ -288,7 +287,7 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_4) { - DPL::ScopedFree sf(getcwd(NULL, 0)); + std::unique_ptr sf(getcwd(NULL, 0)); Path path4("/test/bin/abc"); RUNNER_ASSERT(path4.Fullpath() == "/test/bin/abc"); @@ -303,8 +302,8 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_5) { - DPL::ScopedFree sf(getcwd(NULL, 0)); - std::string cwd(sf.Get()); + std::unique_ptr sf(getcwd(NULL, 0)); + std::string cwd(sf.get()); if("/" == cwd) cwd = ""; @@ -322,7 +321,7 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_6) { - DPL::ScopedFree sf(getcwd(NULL, 0)); + std::unique_ptr sf(getcwd(NULL, 0)); Path path6(DPL::String(L"/test/bin/file")); RUNNER_ASSERT(path6.Fullpath() == "/test/bin/file"); @@ -337,8 +336,8 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_7) { - DPL::ScopedFree sf(getcwd(NULL, 0)); - std::string cwd(sf.Get()); + std::unique_ptr sf(getcwd(NULL, 0)); + std::string cwd(sf.get()); if("/" == cwd) cwd = ""; @@ -356,7 +355,7 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_8) { - DPL::ScopedFree sf(getcwd(NULL, 0)); + std::unique_ptr sf(getcwd(NULL, 0)); Path path8 = Path("/test/bin/") / "123" / "dir1.dll"; RUNNER_ASSERT(path8.Fullpath() == "/test/bin/123/dir1.dll"); @@ -371,7 +370,7 @@ Expected: success full constrution */ RUNNER_TEST(path_construction_9) { - DPL::ScopedFree sf(getcwd(NULL, 0)); + std::unique_ptr sf(getcwd(NULL, 0)); Path path9 = Path("/test/bin/file.txt//"); RUNNER_ASSERT(path9.Fullpath() == "/test/bin/file.txt"); @@ -790,13 +789,13 @@ RUNNER_TEST(path_iterate_empty_directory) FOREACH(file, dirTest) { passed = false; - LogError("Directory should be empty"); + WrtLogE("Directory should be empty"); } } Catch(Path::NotDirectory) { passed = false; - LogError("Directory should exists"); + WrtLogE("Directory should exists"); } RUNNER_ASSERT(passed); } diff --git a/tests/utils/widget_version.cpp b/tests/utils/widget_version.cpp index 5d2bc71..26be18a 100644 --- a/tests/utils/widget_version.cpp +++ b/tests/utils/widget_version.cpp @@ -21,6 +21,7 @@ */ #include #include +#include #include RUNNER_TEST_GROUP_INIT(DPL_WIDGET_VERSION) @@ -38,8 +39,8 @@ RUNNER_TEST(WidgetVersion_M2_O0) RUNNER_ASSERT(version.IsWac() == true); RUNNER_ASSERT(version.Major() == DPL::String(L"1")); RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional()); - RUNNER_ASSERT(version.Optional() == DPL::Optional()); + RUNNER_ASSERT(version.Micro() == DPL::OptionalString()); + RUNNER_ASSERT(version.Optional() == DPL::OptionalString()); RUNNER_ASSERT(version.Raw() == raw); } @@ -116,8 +117,8 @@ RUNNER_TEST(WidgetVersion_M2_O0_long) DPL::String(L"123456789012345678901234567890")); RUNNER_ASSERT(version.Minor() == DPL::String(L"98765432109876543210987654321")); - RUNNER_ASSERT(version.Micro() == DPL::Optional()); - RUNNER_ASSERT(version.Optional() == DPL::Optional()); + RUNNER_ASSERT(version.Micro() == DPL::OptionalString()); + RUNNER_ASSERT(version.Optional() == DPL::OptionalString()); RUNNER_ASSERT(version.Raw() == raw); } @@ -135,8 +136,8 @@ RUNNER_TEST(WidgetVersion_M3_O0) RUNNER_ASSERT(version.IsWac() == true); RUNNER_ASSERT(version.Major() == DPL::String(L"1")); RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional(L"3")); - RUNNER_ASSERT(version.Optional() == DPL::Optional()); + RUNNER_ASSERT(version.Micro() == DPL::OptionalString(L"3")); + RUNNER_ASSERT(version.Optional() == DPL::OptionalString()); RUNNER_ASSERT(version.Raw() == raw); } @@ -196,8 +197,8 @@ RUNNER_TEST(WidgetVersion_M3_O1_1) RUNNER_ASSERT(version.IsWac() == true); RUNNER_ASSERT(version.Major() == DPL::String(L"1")); RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional(L"3")); - RUNNER_ASSERT(version.Optional() == DPL::Optional(L"test111")); + RUNNER_ASSERT(version.Micro() == DPL::OptionalString(L"3")); + RUNNER_ASSERT(version.Optional() == DPL::OptionalString(L"test111")); RUNNER_ASSERT(version.Raw() == raw); } @@ -215,8 +216,8 @@ RUNNER_TEST(WidgetVersion_M3_O1_2) RUNNER_ASSERT(version.IsWac() == true); RUNNER_ASSERT(version.Major() == DPL::String(L"1")); RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional(L"3")); - RUNNER_ASSERT(version.Optional() == DPL::Optional(L"111")); + RUNNER_ASSERT(version.Micro() == DPL::OptionalString(L"3")); + RUNNER_ASSERT(version.Optional() == DPL::OptionalString(L"111")); RUNNER_ASSERT(version.Raw() == raw); } @@ -249,8 +250,8 @@ RUNNER_TEST(WidgetVersion_M2_O1_1) RUNNER_ASSERT(version.IsWac() == true); RUNNER_ASSERT(version.Major() == DPL::String(L"1")); RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional()); - RUNNER_ASSERT(version.Optional() == DPL::Optional(L"t")); + RUNNER_ASSERT(version.Micro() == DPL::OptionalString()); + RUNNER_ASSERT(version.Optional() == DPL::OptionalString(L"t")); RUNNER_ASSERT(version.Raw() == raw); } @@ -269,8 +270,8 @@ RUNNER_TEST(WidgetVersion_M2_O1_2) RUNNER_ASSERT(version.IsWac() == true); RUNNER_ASSERT(version.Major() == DPL::String(L"1")); RUNNER_ASSERT(version.Minor() == DPL::String(L"2")); - RUNNER_ASSERT(version.Micro() == DPL::Optional()); - RUNNER_ASSERT(version.Optional() == DPL::Optional(L"1234")); + RUNNER_ASSERT(version.Micro() == DPL::OptionalString()); + RUNNER_ASSERT(version.Optional() == DPL::OptionalString(L"1234")); RUNNER_ASSERT(version.Raw() == raw); } @@ -285,8 +286,8 @@ RUNNER_TEST(WidgetVersion_M4_O0_1) DPL::String raw(L"1.1"); DPL::String majorV(L"1"); DPL::String minorV(L"1"); - DPL::Optional microV = DPL::Optional(); - DPL::Optional optionalV = DPL::Optional(); + DPL::OptionalString microV = DPL::OptionalString(); + DPL::OptionalString optionalV = DPL::OptionalString(); WidgetVersion version(majorV, minorV, microV, optionalV); RUNNER_ASSERT(version.IsWac() == true); @@ -305,7 +306,7 @@ Expected: Version should be recognized as non wac compatible. RUNNER_TEST(WidgetVersion_M4_O0_nonwac_1) { DPL::String raw(L"a1.1"); - WidgetVersion version(L"a1", L"1", DPL::Optional(), DPL::Optional()); + WidgetVersion version(L"a1", L"1", DPL::OptionalString(), DPL::OptionalString()); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == raw); @@ -319,7 +320,7 @@ Expected: Version should not be recognized as wac compatible. RUNNER_TEST(WidgetVersion_M4_O0_nonwac_2) { DPL::String raw(L"1.1a"); - WidgetVersion version(L"1", L"1a", DPL::Optional(), DPL::Optional()); + WidgetVersion version(L"1", L"1a", DPL::OptionalString(), DPL::OptionalString()); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == raw); @@ -336,8 +337,8 @@ RUNNER_TEST(WidgetVersion_M4_O1_1) DPL::String raw(L"1.1.1"); DPL::String majorV(L"1"); DPL::String minorV(L"1"); - DPL::Optional microV = DPL::Optional(L"1"); - DPL::Optional optionalV = DPL::Optional(); + DPL::OptionalString microV = DPL::OptionalString(L"1"); + DPL::OptionalString optionalV = DPL::OptionalString(); WidgetVersion version(majorV, minorV, microV, optionalV); RUNNER_ASSERT(version.IsWac() == true); @@ -357,7 +358,7 @@ RUNNER_TEST(WidgetVersion_M4_O1_nonwac_1) { DPL::String majorV(L"1"); DPL::String minorV(L"1"); - WidgetVersion version(L"1", L"1", DPL::Optional(L"1a"), DPL::Optional()); + WidgetVersion version(L"1", L"1", DPL::OptionalString(L"1a"), DPL::OptionalString()); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == L"1.1.1a"); @@ -370,7 +371,7 @@ Expected: Version should not be recognized as wac compatible. */ RUNNER_TEST(WidgetVersion_M4_O1_nonwac_2) { - WidgetVersion version(L"1", L"1", DPL::Optional(L"a1"), DPL::Optional()); + WidgetVersion version(L"1", L"1", DPL::OptionalString(L"a1"), DPL::OptionalString()); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == L"1.1.a1"); @@ -387,8 +388,8 @@ RUNNER_TEST(WidgetVersion_M4_O2_1) DPL::String raw(L"1.1.1 a1"); DPL::String majorV(L"1"); DPL::String minorV(L"1"); - DPL::Optional microV = DPL::Optional(L"1"); - DPL::Optional optionalV = DPL::Optional(L"a1"); + DPL::OptionalString microV = DPL::OptionalString(L"1"); + DPL::OptionalString optionalV = DPL::OptionalString(L"a1"); WidgetVersion version(majorV, minorV, microV, optionalV); RUNNER_ASSERT(version.IsWac() == true); @@ -407,7 +408,7 @@ Expected: major, minor, micro and optional parts matches expected values. */ RUNNER_TEST(WidgetVersion_M4_O2_nonwac_1) { - WidgetVersion version(L"1", L"1", DPL::Optional(L"a1"), DPL::Optional(L"b1")); + WidgetVersion version(L"1", L"1", DPL::OptionalString(L"a1"), DPL::OptionalString(L"b1")); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == L"1.1.a1 b1"); @@ -504,7 +505,7 @@ Expected: Version should not be recognized as wac compatible. */ RUNNER_TEST(WidgetVersion_Strange_6) { - WidgetVersion version(L"1", L"", DPL::Optional(), DPL::Optional()); + WidgetVersion version(L"1", L"", DPL::OptionalString(), DPL::OptionalString()); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == L"1."); @@ -517,7 +518,7 @@ Expected: Version should not be recognized as wac compatible. */ RUNNER_TEST(WidgetVersion_Strange_7) { - WidgetVersion version(L"a", L"b", DPL::Optional(), DPL::Optional()); + WidgetVersion version(L"a", L"b", DPL::OptionalString(), DPL::OptionalString()); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == L"a.b"); @@ -530,7 +531,7 @@ Expected: Version should not be recognized as wac compatible. */ RUNNER_TEST(WidgetVersion_Strange_8) { - WidgetVersion version(L"", L"", DPL::Optional(L"12"), DPL::Optional(L"abcd123")); + WidgetVersion version(L"", L"", DPL::OptionalString(L"12"), DPL::OptionalString(L"abcd123")); RUNNER_ASSERT(version.IsWac() == false); RUNNER_ASSERT(version.Raw() == L"..12 abcd123"); diff --git a/tests/utils/wrt_utility.cpp b/tests/utils/wrt_utility.cpp index 710b578..5f1ddd1 100644 --- a/tests/utils/wrt_utility.cpp +++ b/tests/utils/wrt_utility.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include RUNNER_TEST_GROUP_INIT(DPL_WRT_UTILITY) @@ -121,8 +121,8 @@ RUNNER_TEST(wrt_utility_WrtUtilMakeDir_PermissionError) //Going back to root UID if (setuid(0) != 0) { int error = errno; - LogWarning("Changing back to root UID failed: " - << (error == 0 ? "No error detected" : strerror(error))); + WrtLogW("Changing back to root UID failed: %s", + (error == 0 ? "No error detected" : strerror(error))); } } diff --git a/wrt-commons.manifest b/wrt-commons.manifest index 6b910cf..7a0ea38 100644 --- a/wrt-commons.manifest +++ b/wrt-commons.manifest @@ -4,6 +4,9 @@ + + + -- 2.7.4