Full Code of li9chuan/BaseService for AI

master ad24dd61a3d7 cached
1194 files
8.3 MB
2.2M tokens
5396 symbols
1 requests
Download .txt
Showing preview only (8,976K chars total). Download the full file or copy to clipboard to get everything.
Repository: li9chuan/BaseService
Branch: master
Commit: ad24dd61a3d7
Files: 1194
Total size: 8.3 MB

Directory structure:
gitextract_0_cdghvg/

├── .github/
│   └── workflows/
│       └── ccpp.yml
├── LICENSE
├── README.md
├── code/
│   ├── CMakeLists.txt
│   ├── CMakeModules/
│   │   ├── AndroidToolChain.cmake
│   │   ├── CheckDepends.cmake
│   │   ├── ConfigureChecks.cmake
│   │   ├── Find3dsMaxSDK.cmake
│   │   ├── FindCEGUI.cmake
│   │   ├── FindCppTest.cmake
│   │   ├── FindCrashRpt.cmake
│   │   ├── FindCurl.cmake
│   │   ├── FindCustomMFC.cmake
│   │   ├── FindDInput.cmake
│   │   ├── FindDSound.cmake
│   │   ├── FindDirectXSDK.cmake
│   │   ├── FindEFXUtil.cmake
│   │   ├── FindExternal.cmake
│   │   ├── FindFMOD.cmake
│   │   ├── FindFreeType.cmake
│   │   ├── FindGTK2.cmake
│   │   ├── FindIconv.cmake
│   │   ├── FindJpeg.cmake
│   │   ├── FindLibEvent.cmake
│   │   ├── FindLibOVR.cmake
│   │   ├── FindLibVR.cmake
│   │   ├── FindLibwww.cmake
│   │   ├── FindLua51.cmake
│   │   ├── FindLua52.cmake
│   │   ├── FindLua53.cmake
│   │   ├── FindLuabind.cmake
│   │   ├── FindMSVC.cmake
│   │   ├── FindMercurial.cmake
│   │   ├── FindMySQL.cmake
│   │   ├── FindMysqlConnector.cmake
│   │   ├── FindOgg.cmake
│   │   ├── FindOpenGLES.cmake
│   │   ├── FindOpenSSL.cmake
│   │   ├── FindPBC.cmake
│   │   ├── FindProtoBuf.cmake
│   │   ├── FindS3TC.cmake
│   │   ├── FindSTLport.cmake
│   │   ├── FindSquish.cmake
│   │   ├── FindTinyXml.cmake
│   │   ├── FindToLua.cmake
│   │   ├── FindVorbis.cmake
│   │   ├── FindWindowsSDK.cmake
│   │   ├── FindXF86VidMode.cmake
│   │   ├── GetRevision.cmake
│   │   ├── PCHSupport.cmake
│   │   ├── iOSToolChain.cmake
│   │   └── nel.cmake
│   ├── CMakePackaging.txt
│   ├── COPYING
│   ├── CTestConfig.cmake
│   ├── EVA/
│   │   ├── CMakeLists.txt
│   │   ├── server/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── _del_log.bat
│   │   │   ├── _robot_start .bat
│   │   │   ├── _robot_stop .bat
│   │   │   ├── _shard_start.bat
│   │   │   ├── _shard_stop.bat
│   │   │   ├── admin_executor_service.cfg
│   │   │   ├── admin_modules/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── admin_modules.cpp
│   │   │   │   ├── admin_modules_itf.cpp
│   │   │   │   ├── admin_modules_itf.h
│   │   │   │   ├── admin_modules_itf.xml
│   │   │   │   ├── aes_client_module.cpp
│   │   │   │   ├── aes_module.cpp
│   │   │   │   └── as_module.cpp
│   │   │   ├── admin_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── admin_service.cpp
│   │   │   ├── admin_service.cfg
│   │   │   ├── client_robot/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── client_robot.cpp
│   │   │   ├── client_robot.cfg
│   │   │   ├── common.cfg
│   │   │   ├── frontend_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── frontend_service.cpp
│   │   │   │   ├── frontend_service.h
│   │   │   │   ├── stdpch.cpp
│   │   │   │   └── stdpch.h
│   │   │   ├── frontend_service.cfg
│   │   │   ├── msg.xml
│   │   │   ├── naming_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── naming_service.cpp
│   │   │   ├── naming_service.cfg
│   │   │   ├── player_logic_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── player_logic_service.cpp
│   │   │   │   ├── player_logic_service.h
│   │   │   │   ├── stdpch.cpp
│   │   │   │   └── stdpch.h
│   │   │   ├── player_logic_service.cfg
│   │   │   ├── save_shard/
│   │   │   │   └── rrd_graphs/
│   │   │   │       ├── aes.ProcessUsedMemory.rrd
│   │   │   │       ├── egs.ProcessUsedMemory.rrd
│   │   │   │       ├── fes.ProcessUsedMemory.rrd
│   │   │   │       ├── fes_0.FPSProcessMsg.rrd
│   │   │   │       ├── fes_0.ProcessUsedMemory.rrd
│   │   │   │       ├── hold_dir
│   │   │   │       ├── lgc.ProcessUsedMemory.rrd
│   │   │   │       ├── lgc_0.ProcessUsedMemory.rrd
│   │   │   │       ├── pds.ProcessUsedMemory.rrd
│   │   │   │       ├── ras.ProcessUsedMemory.rrd
│   │   │   │       └── rns.ProcessUsedMemory.rrd
│   │   │   ├── schedule_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── schedule_service.cpp
│   │   │   ├── schedule_service.cfg
│   │   │   ├── script/
│   │   │   │   ├── .vs/
│   │   │   │   │   ├── ProjectSettings.json
│   │   │   │   │   ├── VSWorkspaceState.json
│   │   │   │   │   └── script/
│   │   │   │   │       └── v15/
│   │   │   │   │           └── .suo
│   │   │   │   ├── BaseService.luaprj
│   │   │   │   ├── DataTable/
│   │   │   │   │   ├── ProtoMsg.pb
│   │   │   │   │   ├── RoomConfig.json
│   │   │   │   │   ├── RoomCreateCost.json
│   │   │   │   │   ├── SpecialConfig.json
│   │   │   │   │   ├── proto/
│   │   │   │   │   │   ├── define_attrib.proto
│   │   │   │   │   │   ├── define_pro.proto
│   │   │   │   │   │   ├── msg_client.proto
│   │   │   │   │   │   ├── msg_doudizhu.proto
│   │   │   │   │   │   └── msg_service.proto
│   │   │   │   │   └── ssl/
│   │   │   │   │       ├── 1_root_bundle.crt
│   │   │   │   │       ├── 2_ssl.ranatune.com.crt
│   │   │   │   │       └── 3_ssl.ranatune.com.key
│   │   │   │   ├── Framework/
│   │   │   │   │   ├── CJsonUtil.lua
│   │   │   │   │   ├── Class.lua
│   │   │   │   │   ├── Event/
│   │   │   │   │   │   ├── EventController.lua
│   │   │   │   │   │   ├── EventRegister.lua
│   │   │   │   │   │   └── EventTrigger.lua
│   │   │   │   │   ├── Hotfix/
│   │   │   │   │   │   ├── HotfixHelper.lua
│   │   │   │   │   │   ├── hotfix.lua
│   │   │   │   │   │   └── internal/
│   │   │   │   │   │       ├── functions_replacer.lua
│   │   │   │   │   │       └── module_updater.lua
│   │   │   │   │   ├── InitFramework.lua
│   │   │   │   │   ├── List.lua
│   │   │   │   │   ├── Map.lua
│   │   │   │   │   ├── MapMap.lua
│   │   │   │   │   ├── MemoryReferenceInfo.lua
│   │   │   │   │   ├── MiddleClass.lua
│   │   │   │   │   ├── Net/
│   │   │   │   │   │   ├── BaseService.lua
│   │   │   │   │   │   ├── CallbackServer.lua
│   │   │   │   │   │   ├── NetWorkHandler.lua
│   │   │   │   │   │   └── protobuf.lua
│   │   │   │   │   ├── Queue.lua
│   │   │   │   │   ├── SimpleStateMachine.lua
│   │   │   │   │   ├── Stack.lua
│   │   │   │   │   ├── StateFul.lua
│   │   │   │   │   ├── Test/
│   │   │   │   │   │   ├── FSMClass.lua
│   │   │   │   │   │   ├── MainTest.lua
│   │   │   │   │   │   └── TimerTest.lua
│   │   │   │   │   ├── TimerMgr.lua
│   │   │   │   │   ├── Utils.lua
│   │   │   │   │   └── functions.lua
│   │   │   │   ├── Robot.luaprj
│   │   │   │   ├── SharedLib/
│   │   │   │   │   ├── Event/
│   │   │   │   │   │   └── EventType.lua
│   │   │   │   │   ├── InitSharedLib.lua
│   │   │   │   │   └── StaticTableMgr.lua
│   │   │   │   ├── _FES/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.lua
│   │   │   │   │   │   └── ClientMgr.lua
│   │   │   │   │   ├── FrontEndService.lua
│   │   │   │   │   ├── Msg/
│   │   │   │   │   │   └── MsgLogin.lua
│   │   │   │   │   ├── Player/
│   │   │   │   │   │   ├── PlayerInfo.lua
│   │   │   │   │   │   └── PlayerInfoMgr.lua
│   │   │   │   │   └── _FESMain.lua
│   │   │   │   ├── _FES.luaprj
│   │   │   │   ├── _PLS/
│   │   │   │   │   ├── DB/
│   │   │   │   │   │   ├── DBMgr.lua
│   │   │   │   │   │   ├── DBProc.lua
│   │   │   │   │   │   ├── DBSubProc.lua
│   │   │   │   │   │   └── DBSubStart.lua
│   │   │   │   │   ├── Games/
│   │   │   │   │   │   ├── Common/
│   │   │   │   │   │   │   ├── CardsAnalyseRes.lua
│   │   │   │   │   │   │   ├── CommonDef.lua
│   │   │   │   │   │   │   └── PokerDef.lua
│   │   │   │   │   │   └── PokerDdz/
│   │   │   │   │   │       ├── DDZOutCardData.lua
│   │   │   │   │   │       ├── DdzCardTypes.lua
│   │   │   │   │   │       ├── DdzFSM.lua
│   │   │   │   │   │       ├── DdzPlayerInfo.lua
│   │   │   │   │   │       ├── MsgRoomDdz.lua
│   │   │   │   │   │       └── RoomDdz.lua
│   │   │   │   │   ├── Msg/
│   │   │   │   │   │   ├── MsgLogin.lua
│   │   │   │   │   │   └── MsgRoom.lua
│   │   │   │   │   ├── Player/
│   │   │   │   │   │   ├── PlayerDataHelper.lua
│   │   │   │   │   │   ├── PlayerHelper.lua
│   │   │   │   │   │   └── PlayerMgr.lua
│   │   │   │   │   ├── PlayerLogicService.lua
│   │   │   │   │   ├── Room/
│   │   │   │   │   │   ├── RoomBase.lua
│   │   │   │   │   │   ├── RoomFactory.lua
│   │   │   │   │   │   ├── RoomMgr.lua
│   │   │   │   │   │   └── RoomPlayerBase.lua
│   │   │   │   │   ├── _PLSConfig.lua
│   │   │   │   │   ├── _PLSMain.lua
│   │   │   │   │   └── hotfix_module_names.lua
│   │   │   │   ├── _PLS.luaprj
│   │   │   │   ├── _SCH/
│   │   │   │   │   ├── Msg/
│   │   │   │   │   │   ├── MsgLogin.lua
│   │   │   │   │   │   └── MsgRoom.lua
│   │   │   │   │   ├── PLSInfo/
│   │   │   │   │   │   ├── PLSGameInfo.lua
│   │   │   │   │   │   ├── PLSInfo.lua
│   │   │   │   │   │   └── PLSInfoMgr.lua
│   │   │   │   │   ├── Player/
│   │   │   │   │   │   ├── PlayerInfo.lua
│   │   │   │   │   │   └── PlayerInfoMgr.lua
│   │   │   │   │   ├── Room/
│   │   │   │   │   │   ├── RoomIDAlloter.lua
│   │   │   │   │   │   ├── RoomInfo.lua
│   │   │   │   │   │   └── RoomMgr.lua
│   │   │   │   │   ├── ScheduleService.lua
│   │   │   │   │   └── _SCHMain.lua
│   │   │   │   ├── _SCH.luaprj
│   │   │   │   └── __Robot/
│   │   │   │       ├── RobotSub/
│   │   │   │       │   ├── FSMRobot.lua
│   │   │   │       │   ├── GameDdz/
│   │   │   │       │   │   ├── FSMDdz.lua
│   │   │   │       │   │   └── RobotGameDdz.lua
│   │   │   │       │   ├── PublicRoomInfo.lua
│   │   │   │       │   ├── PublicRoomInfoMgr.lua
│   │   │   │       │   ├── Robot.lua
│   │   │   │       │   ├── RobotData.lua
│   │   │   │       │   ├── RobotGameBase.lua
│   │   │   │       │   ├── RobotMgr.lua
│   │   │   │       │   └── RobotSubStart.lua
│   │   │   │       ├── Test/
│   │   │   │       │   ├── CppTimerBase.lua
│   │   │   │       │   └── CppTimerTest.lua
│   │   │   │       ├── ThreadMgr.lua
│   │   │   │       └── _ClientRobotMain.lua
│   │   │   ├── server_share/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── base_object.h
│   │   │   │   ├── bin_luabind/
│   │   │   │   │   ├── Public.h
│   │   │   │   │   ├── Public.hpp
│   │   │   │   │   ├── ScriptBase.cpp
│   │   │   │   │   ├── ScriptBase.h
│   │   │   │   │   ├── ScriptExporter.cpp
│   │   │   │   │   ├── ScriptExporter.h
│   │   │   │   │   ├── ScriptHandle.cpp
│   │   │   │   │   ├── ScriptHandle.h
│   │   │   │   │   ├── ScriptObject.h
│   │   │   │   │   ├── ScriptProxy.cpp
│   │   │   │   │   └── ScriptProxy.h
│   │   │   │   ├── bit_set_ext2.h
│   │   │   │   ├── buf_fifo2.h
│   │   │   │   ├── buf_fifo_ring.h
│   │   │   │   ├── callback_adaptor.h
│   │   │   │   ├── cjson/
│   │   │   │   │   ├── dtoa.cpp
│   │   │   │   │   ├── dtoa_config.h
│   │   │   │   │   ├── fpconv.cpp
│   │   │   │   │   ├── fpconv.h
│   │   │   │   │   ├── g_fmt.cpp
│   │   │   │   │   ├── lua_cjson.cpp
│   │   │   │   │   ├── strbuf.cpp
│   │   │   │   │   └── strbuf.h
│   │   │   │   ├── client_msg_desc.cpp
│   │   │   │   ├── client_msg_desc.h
│   │   │   │   ├── game_def.h
│   │   │   │   ├── i18n_def.cpp
│   │   │   │   ├── i18n_def.h
│   │   │   │   ├── id_generate.cpp
│   │   │   │   ├── id_generate.h
│   │   │   │   ├── lua/
│   │   │   │   │   ├── lua_base_function.cpp
│   │   │   │   │   ├── lua_engine.cpp
│   │   │   │   │   ├── lua_engine.h
│   │   │   │   │   ├── lua_param.cpp
│   │   │   │   │   ├── lua_param.h
│   │   │   │   │   ├── lua_thread.cpp
│   │   │   │   │   ├── lua_thread.h
│   │   │   │   │   ├── script_mgr.cpp
│   │   │   │   │   └── script_mgr.h
│   │   │   │   ├── lua_mysql/
│   │   │   │   │   ├── mysql_conn.cpp
│   │   │   │   │   ├── mysql_conn.h
│   │   │   │   │   ├── mysql_result.cpp
│   │   │   │   │   ├── mysql_result.h
│   │   │   │   │   ├── mysql_stmt.cpp
│   │   │   │   │   ├── mysql_stmt.h
│   │   │   │   │   ├── mysql_string.cpp
│   │   │   │   │   └── mysql_string.h
│   │   │   │   ├── lua_net/
│   │   │   │   │   ├── lua_callback_client.cpp
│   │   │   │   │   ├── lua_callback_client.h
│   │   │   │   │   ├── lua_callback_server.cpp
│   │   │   │   │   ├── lua_callback_server.h
│   │   │   │   │   ├── lua_message.cpp
│   │   │   │   │   ├── lua_message.h
│   │   │   │   │   ├── lua_network.cpp
│   │   │   │   │   └── lua_network.h
│   │   │   │   ├── msg_leaf.cpp
│   │   │   │   ├── msg_leaf.h
│   │   │   │   ├── object_pool.h
│   │   │   │   ├── pbc/
│   │   │   │   │   ├── alloc.cpp
│   │   │   │   │   ├── alloc.h
│   │   │   │   │   ├── array.cpp
│   │   │   │   │   ├── array.h
│   │   │   │   │   ├── bootstrap.cpp
│   │   │   │   │   ├── bootstrap.h
│   │   │   │   │   ├── context.cpp
│   │   │   │   │   ├── context.h
│   │   │   │   │   ├── decode.cpp
│   │   │   │   │   ├── descriptor.pbc.h
│   │   │   │   │   ├── map.cpp
│   │   │   │   │   ├── map.h
│   │   │   │   │   ├── pattern.cpp
│   │   │   │   │   ├── pattern.h
│   │   │   │   │   ├── pbc-lua53.cpp
│   │   │   │   │   ├── pbc.h
│   │   │   │   │   ├── proto.cpp
│   │   │   │   │   ├── proto.h
│   │   │   │   │   ├── register.cpp
│   │   │   │   │   ├── rmessage.cpp
│   │   │   │   │   ├── stringpool.cpp
│   │   │   │   │   ├── stringpool.h
│   │   │   │   │   ├── varint.cpp
│   │   │   │   │   ├── varint.h
│   │   │   │   │   └── wmessage.cpp
│   │   │   │   ├── ranking_change_near.h
│   │   │   │   ├── ranking_slot.h
│   │   │   │   ├── server_def.cpp
│   │   │   │   ├── server_def.h
│   │   │   │   ├── sigslot.h
│   │   │   │   ├── singleton_registry.h
│   │   │   │   ├── stdpch.cpp
│   │   │   │   ├── stdpch.h
│   │   │   │   ├── timer.cpp
│   │   │   │   ├── timer.h
│   │   │   │   ├── tools.cpp
│   │   │   │   ├── tools.h
│   │   │   │   ├── utils.cpp
│   │   │   │   └── utils.h
│   │   │   └── shard.screen.rc
│   │   └── tools/
│   │       └── scripts/
│   │           └── linux/
│   │               ├── clean_log.sh
│   │               ├── generate_packed_sheets.sh
│   │               ├── loop_aes.sh
│   │               ├── mt_domain_screen_wrapper.sh
│   │               ├── service_launcher.sh
│   │               ├── shard
│   │               └── utilities
│   ├── README
│   ├── changelog.template
│   ├── config.h.cmake
│   ├── nel/
│   │   ├── AUTHORS
│   │   ├── CMakeLists.txt
│   │   ├── COPYING
│   │   ├── ChangeLog
│   │   ├── INSTALL
│   │   ├── NEWS
│   │   ├── README
│   │   ├── include/
│   │   │   ├── CMakeLists.txt
│   │   │   └── nel/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── georges/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── form.h
│   │   │       │   ├── form_dfn.h
│   │   │       │   ├── form_elm.h
│   │   │       │   ├── form_loader.h
│   │   │       │   ├── header.h
│   │   │       │   ├── load_form.h
│   │   │       │   ├── type.h
│   │   │       │   ├── u_form.h
│   │   │       │   ├── u_form_dfn.h
│   │   │       │   ├── u_form_elm.h
│   │   │       │   ├── u_form_loader.h
│   │   │       │   └── u_type.h
│   │   │       ├── ligo/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── ligo_config.h
│   │   │       │   ├── primitive.h
│   │   │       │   ├── primitive_class.h
│   │   │       │   ├── primitive_configuration.h
│   │   │       │   ├── primitive_utils.h
│   │   │       │   ├── zone_bank.h
│   │   │       │   └── zone_region.h
│   │   │       ├── logic/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── logic_condition.h
│   │   │       │   ├── logic_event.h
│   │   │       │   ├── logic_state.h
│   │   │       │   ├── logic_state_machine.h
│   │   │       │   └── logic_variable.h
│   │   │       ├── misc/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── aabbox.h
│   │   │       │   ├── algo.h
│   │   │       │   ├── app_context.h
│   │   │       │   ├── array_2d.h
│   │   │       │   ├── async_file_manager.h
│   │   │       │   ├── base64.h
│   │   │       │   ├── big_file.h
│   │   │       │   ├── bit_mem_stream.h
│   │   │       │   ├── bit_set.h
│   │   │       │   ├── bitmap.h
│   │   │       │   ├── block_memory.h
│   │   │       │   ├── bsphere.h
│   │   │       │   ├── buf_fifo.h
│   │   │       │   ├── callback.h
│   │   │       │   ├── cdb.h
│   │   │       │   ├── cdb_bank_handler.h
│   │   │       │   ├── cdb_branch.h
│   │   │       │   ├── cdb_branch_observing_handler.h
│   │   │       │   ├── cdb_check_sum.h
│   │   │       │   ├── cdb_leaf.h
│   │   │       │   ├── cdb_manager.h
│   │   │       │   ├── check_fpu.h
│   │   │       │   ├── class_id.h
│   │   │       │   ├── class_registry.h
│   │   │       │   ├── cmd_args.h
│   │   │       │   ├── co_task.h
│   │   │       │   ├── command.h
│   │   │       │   ├── common.h
│   │   │       │   ├── config_file.h
│   │   │       │   ├── contiguous_block_allocator.h
│   │   │       │   ├── cpu_time_stat.h
│   │   │       │   ├── debug.h
│   │   │       │   ├── di_event_emitter.h
│   │   │       │   ├── diff_tool.h
│   │   │       │   ├── displayer.h
│   │   │       │   ├── dummy_window.h
│   │   │       │   ├── dynloadlib.h
│   │   │       │   ├── eid_translator.h
│   │   │       │   ├── entity_id.h
│   │   │       │   ├── enum_bitset.h
│   │   │       │   ├── eval_num_expr.h
│   │   │       │   ├── event_emitter.h
│   │   │       │   ├── event_emitter_multi.h
│   │   │       │   ├── event_listener.h
│   │   │       │   ├── event_server.h
│   │   │       │   ├── events.h
│   │   │       │   ├── factory.h
│   │   │       │   ├── fast_floor.h
│   │   │       │   ├── fast_id_map.h
│   │   │       │   ├── fast_mem.h
│   │   │       │   ├── file.h
│   │   │       │   ├── fixed_size_allocator.h
│   │   │       │   ├── game_device.h
│   │   │       │   ├── game_device_events.h
│   │   │       │   ├── geom_ext.h
│   │   │       │   ├── grid_traversal.h
│   │   │       │   ├── gtk_displayer.h
│   │   │       │   ├── heap_memory.h
│   │   │       │   ├── hierarchical_timer.h
│   │   │       │   ├── historic.h
│   │   │       │   ├── i18n.h
│   │   │       │   ├── i_xml.h
│   │   │       │   ├── input_device.h
│   │   │       │   ├── input_device_manager.h
│   │   │       │   ├── input_device_server.h
│   │   │       │   ├── inter_window_msg_queue.h
│   │   │       │   ├── keyboard_device.h
│   │   │       │   ├── line.h
│   │   │       │   ├── log.h
│   │   │       │   ├── matrix.h
│   │   │       │   ├── md5.h
│   │   │       │   ├── mem_displayer.h
│   │   │       │   ├── mem_stream.h
│   │   │       │   ├── mouse_device.h
│   │   │       │   ├── mouse_smoother.h
│   │   │       │   ├── mutable_container.h
│   │   │       │   ├── mutex.h
│   │   │       │   ├── noise_value.h
│   │   │       │   ├── o_xml.h
│   │   │       │   ├── object_arena_allocator.h
│   │   │       │   ├── object_vector.h
│   │   │       │   ├── p_thread.h
│   │   │       │   ├── path.h
│   │   │       │   ├── plane.h
│   │   │       │   ├── plane_inline.h
│   │   │       │   ├── polygon.h
│   │   │       │   ├── pool_memory.h
│   │   │       │   ├── progress_callback.h
│   │   │       │   ├── quad.h
│   │   │       │   ├── quat.h
│   │   │       │   ├── random.h
│   │   │       │   ├── reader_writer.h
│   │   │       │   ├── rect.h
│   │   │       │   ├── report.h
│   │   │       │   ├── resource_ptr.h
│   │   │       │   ├── resource_ptr_inline.h
│   │   │       │   ├── rgba.h
│   │   │       │   ├── sha1.h
│   │   │       │   ├── shared_memory.h
│   │   │       │   ├── sheet_id.h
│   │   │       │   ├── singleton.h
│   │   │       │   ├── smart_ptr.h
│   │   │       │   ├── smart_ptr_inline.h
│   │   │       │   ├── speaker_listener.h
│   │   │       │   ├── sstring.h
│   │   │       │   ├── static_map.h
│   │   │       │   ├── stl_block_allocator.h
│   │   │       │   ├── stl_block_list.h
│   │   │       │   ├── stop_watch.h
│   │   │       │   ├── stream.h
│   │   │       │   ├── stream_inline.h
│   │   │       │   ├── string_common.h
│   │   │       │   ├── string_conversion.h
│   │   │       │   ├── string_id_array.h
│   │   │       │   ├── string_mapper.h
│   │   │       │   ├── string_stream.h
│   │   │       │   ├── system_info.h
│   │   │       │   ├── system_utils.h
│   │   │       │   ├── task_manager.h
│   │   │       │   ├── tds.h
│   │   │       │   ├── thread.h
│   │   │       │   ├── time_nl.h
│   │   │       │   ├── timeout_assertion_thread.h
│   │   │       │   ├── traits_nl.h
│   │   │       │   ├── triangle.h
│   │   │       │   ├── twin_map.h
│   │   │       │   ├── types_nl.h
│   │   │       │   ├── ucstring.h
│   │   │       │   ├── uv.h
│   │   │       │   ├── value_smoother.h
│   │   │       │   ├── variable.h
│   │   │       │   ├── vector.h
│   │   │       │   ├── vector_2d.h
│   │   │       │   ├── vector_2f.h
│   │   │       │   ├── vector_h.h
│   │   │       │   ├── vector_inline.h
│   │   │       │   ├── vectord.h
│   │   │       │   ├── vectord_inline.h
│   │   │       │   ├── voter.h
│   │   │       │   ├── win32_util.h
│   │   │       │   ├── win_displayer.h
│   │   │       │   ├── win_event_emitter.h
│   │   │       │   ├── win_thread.h
│   │   │       │   ├── win_tray.h
│   │   │       │   ├── window_displayer.h
│   │   │       │   ├── words_dictionary.h
│   │   │       │   ├── xml_auto_ptr.h
│   │   │       │   └── xml_pack.h
│   │   │       └── net/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── admin.h
│   │   │           ├── buf_client.h
│   │   │           ├── buf_net_base.h
│   │   │           ├── buf_server.h
│   │   │           ├── buf_server_tcp.h
│   │   │           ├── buf_server_tcp_func.h
│   │   │           ├── buf_server_websocket.h
│   │   │           ├── buf_server_websocket_func.h
│   │   │           ├── buf_sock.h
│   │   │           ├── callback_client.h
│   │   │           ├── callback_net_base.h
│   │   │           ├── callback_server.h
│   │   │           ├── callback_server_tcp.h
│   │   │           ├── callback_server_websocket.h
│   │   │           ├── cvar_log_filter.h
│   │   │           ├── dummy_tcp_sock.h
│   │   │           ├── email.h
│   │   │           ├── inet_address.h
│   │   │           ├── listen_sock.h
│   │   │           ├── login_client.h
│   │   │           ├── login_cookie.h
│   │   │           ├── login_server.h
│   │   │           ├── message.h
│   │   │           ├── message_recorder.h
│   │   │           ├── module.h
│   │   │           ├── module_builder_parts.h
│   │   │           ├── module_common.h
│   │   │           ├── module_gateway.h
│   │   │           ├── module_manager.h
│   │   │           ├── module_message.h
│   │   │           ├── module_socket.h
│   │   │           ├── naming_client.h
│   │   │           ├── net_displayer.h
│   │   │           ├── net_log.h
│   │   │           ├── net_manager.h
│   │   │           ├── pacs_client.h
│   │   │           ├── service.h
│   │   │           ├── sock.h
│   │   │           ├── tcp_sock.h
│   │   │           ├── transport_class.h
│   │   │           ├── udp_sim_sock.h
│   │   │           ├── udp_sock.h
│   │   │           ├── unified_network.h
│   │   │           ├── unitime.h
│   │   │           └── varpath.h
│   │   ├── nel-config.in
│   │   ├── samples/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── georges/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── boolean.typ
│   │   │   │   ├── coolfilesinfo.dfn
│   │   │   │   ├── default.sample_config
│   │   │   │   ├── int.typ
│   │   │   │   ├── log.log
│   │   │   │   ├── main.cpp
│   │   │   │   ├── positiondata.dfn
│   │   │   │   ├── sample_config.dfn
│   │   │   │   ├── sample_configs_sheets.packed_sheets
│   │   │   │   └── string.typ
│   │   │   ├── misc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── command/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── configfile/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── main.cpp
│   │   │   │   │   └── simpletest.txt
│   │   │   │   ├── debug/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── de.uxt
│   │   │   │   │   ├── en.uxt
│   │   │   │   │   ├── fr.uxt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── log/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── strings/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   └── types_check/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       └── main.cpp
│   │   │   └── net/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── chat/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── chat_service.cfg
│   │   │       │   ├── client.cfg
│   │   │       │   ├── client.cpp
│   │   │       │   ├── kbhit.cpp
│   │   │       │   ├── kbhit.h
│   │   │       │   └── server.cpp
│   │   │       ├── class_transport/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── ai_service.cfg
│   │   │       │   ├── ai_service.cpp
│   │   │       │   ├── gd_service.cfg
│   │   │       │   └── gd_service.cpp
│   │   │       ├── login_system/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── client.cfg
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   └── frontend_service.cpp
│   │   │       ├── multi_shards/
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   └── shard_config/
│   │   │       │       ├── 01_admin_executor_service.lnk
│   │   │       │       ├── 02_login_service.lnk
│   │   │       │       ├── 03_naming_service_shard1.lnk
│   │   │       │       ├── 04_welcome_service_shard1.lnk
│   │   │       │       ├── 05_frontend_service_shard1.lnk
│   │   │       │       ├── 06_naming_service_shard2.lnk
│   │   │       │       ├── 07_welcome_service_shard2.lnk
│   │   │       │       ├── 08_frontend_service_shard2.lnk
│   │   │       │       ├── 09_naming_service_shard3.lnk
│   │   │       │       ├── 10_frontend_service_shard3.lnk
│   │   │       │       ├── 11_welcome_service_shard3.lnk
│   │   │       │       ├── 12_client.lnk
│   │   │       │       ├── admin_executor_service.cfg
│   │   │       │       ├── client.cfg
│   │   │       │       ├── login_service.cfg
│   │   │       │       ├── login_service_database.cfg
│   │   │       │       ├── shard1_config/
│   │   │       │       │   ├── frontend_service.cfg
│   │   │       │       │   ├── naming_service.cfg
│   │   │       │       │   └── welcome_service.cfg
│   │   │       │       ├── shard2_config/
│   │   │       │       │   ├── frontend_service.cfg
│   │   │       │       │   ├── naming_service.cfg
│   │   │       │       │   └── welcome_service.cfg
│   │   │       │       └── shard3_config/
│   │   │       │           ├── frontend_service.cfg
│   │   │       │           ├── naming_service.cfg
│   │   │       │           └── welcome_service.cfg
│   │   │       ├── net_layer3/
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   ├── ping_service.cfg
│   │   │       │   └── ping_service.cpp
│   │   │       ├── net_layer4/
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   ├── ping_service.cfg
│   │   │       │   └── ping_service.cpp
│   │   │       ├── net_layer5/
│   │   │       │   ├── flood_service.cfg
│   │   │       │   ├── flood_service.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   ├── gpm_service.cfg
│   │   │       │   ├── gpm_service.cpp
│   │   │       │   ├── ping_service.cfg
│   │   │       │   ├── ping_service.cpp
│   │   │       │   ├── player_service.cfg
│   │   │       │   └── player_service.cpp
│   │   │       ├── service/
│   │   │       │   ├── chat_service.cfg
│   │   │       │   └── chat_service.cpp
│   │   │       ├── udp/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── bench_service.cfg
│   │   │       │   ├── bench_service.cpp
│   │   │       │   ├── client.cfg
│   │   │       │   ├── client.cpp
│   │   │       │   ├── graph.cpp
│   │   │       │   ├── graph.h
│   │   │       │   ├── n019003l.pfb
│   │   │       │   ├── readme.txt
│   │   │       │   ├── receive_task.cpp
│   │   │       │   ├── receive_task.h
│   │   │       │   ├── simlag.cpp
│   │   │       │   └── simlag.h
│   │   │       └── udp_ping/
│   │   │           ├── client.cpp
│   │   │           ├── udp_service.cfg
│   │   │           └── udp_service.cpp
│   │   ├── src/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── georges/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── form.cpp
│   │   │   │   ├── form_dfn.cpp
│   │   │   │   ├── form_elm.cpp
│   │   │   │   ├── form_loader.cpp
│   │   │   │   ├── georges_file_format.txt
│   │   │   │   ├── header.cpp
│   │   │   │   ├── load_form.cpp
│   │   │   │   ├── nel-georges.pc.in
│   │   │   │   ├── stdgeorges.cpp
│   │   │   │   ├── stdgeorges.h
│   │   │   │   └── type.cpp
│   │   │   ├── ligo/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── ligo_config.cpp
│   │   │   │   ├── ligo_error.cpp
│   │   │   │   ├── ligo_error.h
│   │   │   │   ├── ligo_material.cpp
│   │   │   │   ├── ligo_material.h
│   │   │   │   ├── nel-ligo.pc.in
│   │   │   │   ├── primitive.cpp
│   │   │   │   ├── primitive_class.cpp
│   │   │   │   ├── primitive_configuration.cpp
│   │   │   │   ├── primitive_utils.cpp
│   │   │   │   ├── stdligo.cpp
│   │   │   │   ├── stdligo.h
│   │   │   │   ├── transition.cpp
│   │   │   │   ├── transition.h
│   │   │   │   ├── zone_bank.cpp
│   │   │   │   ├── zone_edge.cpp
│   │   │   │   ├── zone_edge.h
│   │   │   │   ├── zone_region.cpp
│   │   │   │   ├── zone_template.cpp
│   │   │   │   └── zone_template.h
│   │   │   ├── logic/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── logic_condition.cpp
│   │   │   │   ├── logic_event.cpp
│   │   │   │   ├── logic_state.cpp
│   │   │   │   ├── logic_state_machine.cpp
│   │   │   │   └── logic_variable.cpp
│   │   │   ├── misc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── aabbox.cpp
│   │   │   │   ├── algo.cpp
│   │   │   │   ├── app_context.cpp
│   │   │   │   ├── async_file_manager.cpp
│   │   │   │   ├── base64.cpp
│   │   │   │   ├── big_file.cpp
│   │   │   │   ├── bit_mem_stream.cpp
│   │   │   │   ├── bit_set.cpp
│   │   │   │   ├── bitmap.cpp
│   │   │   │   ├── bitmap_jpeg.cpp
│   │   │   │   ├── bitmap_png.cpp
│   │   │   │   ├── block_memory.cpp
│   │   │   │   ├── bsphere.cpp
│   │   │   │   ├── buf_fifo.cpp
│   │   │   │   ├── cdb.cpp
│   │   │   │   ├── cdb_bank_handler.cpp
│   │   │   │   ├── cdb_branch.cpp
│   │   │   │   ├── cdb_branch_observing_handler.cpp
│   │   │   │   ├── cdb_check_sum.cpp
│   │   │   │   ├── cdb_leaf.cpp
│   │   │   │   ├── cdb_manager.cpp
│   │   │   │   ├── check_fpu.cpp
│   │   │   │   ├── class_id.cpp
│   │   │   │   ├── class_registry.cpp
│   │   │   │   ├── cmd_args.cpp
│   │   │   │   ├── co_task.cpp
│   │   │   │   ├── command.cpp
│   │   │   │   ├── common.cpp
│   │   │   │   ├── config_file/
│   │   │   │   │   ├── cf_bison.simple
│   │   │   │   │   ├── cf_flex.skl
│   │   │   │   │   ├── cf_gramatical.cpp
│   │   │   │   │   ├── cf_gramatical.h
│   │   │   │   │   ├── cf_gramatical.ypp
│   │   │   │   │   ├── cf_lexical.cpp
│   │   │   │   │   ├── cf_lexical.lpp
│   │   │   │   │   ├── config_file.cpp
│   │   │   │   │   └── do.bat
│   │   │   │   ├── contiguous_block_allocator.cpp
│   │   │   │   ├── cpu_time_stat.cpp
│   │   │   │   ├── debug.cpp
│   │   │   │   ├── diff_tool.cpp
│   │   │   │   ├── displayer.cpp
│   │   │   │   ├── dummy_window.cpp
│   │   │   │   ├── dynloadlib.cpp
│   │   │   │   ├── eid_translator.cpp
│   │   │   │   ├── entity_id.cpp
│   │   │   │   ├── eval_num_expr.cpp
│   │   │   │   ├── event_emitter.cpp
│   │   │   │   ├── event_emitter_multi.cpp
│   │   │   │   ├── event_listener.cpp
│   │   │   │   ├── event_server.cpp
│   │   │   │   ├── events.cpp
│   │   │   │   ├── fast_floor.cpp
│   │   │   │   ├── fast_id_map.cpp
│   │   │   │   ├── fast_mem.cpp
│   │   │   │   ├── file.cpp
│   │   │   │   ├── fixed_size_allocator.cpp
│   │   │   │   ├── game_device.cpp
│   │   │   │   ├── game_device_events.cpp
│   │   │   │   ├── geom_ext.cpp
│   │   │   │   ├── grid_traversal.cpp
│   │   │   │   ├── gtk_displayer.cpp
│   │   │   │   ├── heap_memory.cpp
│   │   │   │   ├── hierarchical_timer.cpp
│   │   │   │   ├── i18n.cpp
│   │   │   │   ├── i_xml.cpp
│   │   │   │   ├── input_device.cpp
│   │   │   │   ├── input_device_server.cpp
│   │   │   │   ├── inter_window_msg_queue.cpp
│   │   │   │   ├── keyboard_device.cpp
│   │   │   │   ├── line.cpp
│   │   │   │   ├── log.cpp
│   │   │   │   ├── matrix.cpp
│   │   │   │   ├── md5.cpp
│   │   │   │   ├── mem_displayer.cpp
│   │   │   │   ├── mem_stream.cpp
│   │   │   │   ├── mouse_smoother.cpp
│   │   │   │   ├── mutex.cpp
│   │   │   │   ├── nel-misc.pc
│   │   │   │   ├── nel-misc.pc.in
│   │   │   │   ├── noise_value.cpp
│   │   │   │   ├── o_xml.cpp
│   │   │   │   ├── object_arena_allocator.cpp
│   │   │   │   ├── object_vector.cpp
│   │   │   │   ├── p_thread.cpp
│   │   │   │   ├── path.cpp
│   │   │   │   ├── plane.cpp
│   │   │   │   ├── polygon.cpp
│   │   │   │   ├── progress_callback.cpp
│   │   │   │   ├── quad.cpp
│   │   │   │   ├── quat.cpp
│   │   │   │   ├── reader_writer.cpp
│   │   │   │   ├── rect.cpp
│   │   │   │   ├── report.cpp
│   │   │   │   ├── rgba.cpp
│   │   │   │   ├── sha1.cpp
│   │   │   │   ├── shared_memory.cpp
│   │   │   │   ├── sheet_id.cpp
│   │   │   │   ├── smart_ptr.cpp
│   │   │   │   ├── sstring.cpp
│   │   │   │   ├── stdmisc.cpp
│   │   │   │   ├── stdmisc.h
│   │   │   │   ├── stl_block_allocator.cpp
│   │   │   │   ├── stl_block_list.cpp
│   │   │   │   ├── stop_watch.cpp
│   │   │   │   ├── stream.cpp
│   │   │   │   ├── string_common.cpp
│   │   │   │   ├── string_id_array.cpp
│   │   │   │   ├── string_mapper.cpp
│   │   │   │   ├── system_info.cpp
│   │   │   │   ├── system_utils.cpp
│   │   │   │   ├── task_manager.cpp
│   │   │   │   ├── tds.cpp
│   │   │   │   ├── time_nl.cpp
│   │   │   │   ├── triangle.cpp
│   │   │   │   ├── unicode.cpp
│   │   │   │   ├── uv.cpp
│   │   │   │   ├── value_smoother.cpp
│   │   │   │   ├── variable.cpp
│   │   │   │   ├── vector.cpp
│   │   │   │   ├── vector_2d.cpp
│   │   │   │   ├── vector_2f.cpp
│   │   │   │   ├── vector_h.cpp
│   │   │   │   ├── vectord.cpp
│   │   │   │   ├── win32_util.cpp
│   │   │   │   ├── win_displayer.cpp
│   │   │   │   ├── win_event_emitter.cpp
│   │   │   │   ├── win_thread.cpp
│   │   │   │   ├── win_tray.cpp
│   │   │   │   ├── window_displayer.cpp
│   │   │   │   ├── words_dictionary.cpp
│   │   │   │   └── xml_pack.cpp
│   │   │   └── net/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── admin.cpp
│   │   │       ├── buf_client.cpp
│   │   │       ├── buf_net_base.cpp
│   │   │       ├── buf_server.cpp
│   │   │       ├── buf_server_tcp.cpp
│   │   │       ├── buf_server_tcp_func.cpp
│   │   │       ├── buf_server_websocket.cpp
│   │   │       ├── buf_server_websocket_func.cpp
│   │   │       ├── buf_sock.cpp
│   │   │       ├── callback_client.cpp
│   │   │       ├── callback_net_base.cpp
│   │   │       ├── callback_server.cpp
│   │   │       ├── callback_server_tcp.cpp
│   │   │       ├── callback_server_websocket.cpp
│   │   │       ├── define_sys.pb.cc
│   │   │       ├── dummy_tcp_sock.cpp
│   │   │       ├── email.cpp
│   │   │       ├── inet_address.cpp
│   │   │       ├── listen_sock.cpp
│   │   │       ├── login_client.cpp
│   │   │       ├── login_cookie.cpp
│   │   │       ├── login_server.cpp
│   │   │       ├── message.cpp
│   │   │       ├── message_recorder.cpp
│   │   │       ├── module.cpp
│   │   │       ├── module_common.cpp
│   │   │       ├── module_gateway.cpp
│   │   │       ├── module_gateway_transport.cpp
│   │   │       ├── module_l5_transport.cpp
│   │   │       ├── module_local_gateway.cpp
│   │   │       ├── module_manager.cpp
│   │   │       ├── module_message.cpp
│   │   │       ├── module_socket.cpp
│   │   │       ├── naming_client.cpp
│   │   │       ├── nel-net.pc.in
│   │   │       ├── net_displayer.cpp
│   │   │       ├── net_log.cpp
│   │   │       ├── net_manager.cpp
│   │   │       ├── service.cpp
│   │   │       ├── sock.cpp
│   │   │       ├── stdin_monitor_thread.cpp
│   │   │       ├── stdin_monitor_thread.h
│   │   │       ├── stdnet.cpp
│   │   │       ├── stdnet.h
│   │   │       ├── tcp_sock.cpp
│   │   │       ├── transport_class.cpp
│   │   │       ├── udp_sim_sock.cpp
│   │   │       ├── udp_sock.cpp
│   │   │       ├── unified_network.cpp
│   │   │       ├── unitime.cpp
│   │   │       └── varpath.cpp
│   │   └── tools/
│   │       ├── CMakeLists.txt
│   │       └── nel_unit_test/
│   │           ├── CMakeLists.txt
│   │           ├── __copy_file_dst.foo
│   │           ├── __ligo_class.xml
│   │           ├── __test_prim.primitive
│   │           ├── debug_cfg_with_error_main.cfg
│   │           ├── nel_unit_test.cpp
│   │           ├── nel_unit_test.exp
│   │           ├── result.html
│   │           ├── run_test.bat
│   │           ├── ut_ligo.h
│   │           ├── ut_ligo_primitive.h
│   │           ├── ut_misc.h
│   │           ├── ut_misc_co_task.h
│   │           ├── ut_misc_command.h
│   │           ├── ut_misc_config_file.h
│   │           ├── ut_misc_debug.h
│   │           ├── ut_misc_dynlibload.h
│   │           ├── ut_misc_file.h
│   │           ├── ut_misc_files/
│   │           │   ├── cfg_with_bad_test.cfg
│   │           │   ├── cfg_with_define.cfg
│   │           │   ├── cfg_with_error.cfg
│   │           │   ├── cfg_with_error_main.cfg
│   │           │   ├── cfg_with_include.cfg
│   │           │   ├── cfg_with_include_and_optional.cfg
│   │           │   ├── cfg_with_optional.cfg
│   │           │   ├── file1_in_bnp.txt
│   │           │   ├── file2_in_bnp.txt
│   │           │   ├── files.bnp
│   │           │   ├── files.xml_pack
│   │           │   ├── files_for_xml_subpack/
│   │           │   │   ├── same_subfolder_1/
│   │           │   │   │   └── samename/
│   │           │   │   │       ├── .xml_pack_index
│   │           │   │   │       ├── file1_in_sub_1.xml
│   │           │   │   │       ├── file2_in_sub_1.xml
│   │           │   │   │       └── samename.xml_pack
│   │           │   │   └── same_subfolder_2/
│   │           │   │       └── samename/
│   │           │   │           ├── .xml_pack_index
│   │           │   │           ├── file1_in_sub_2.xml
│   │           │   │           ├── file2_in_sub_2.xml
│   │           │   │           └── samename.xml_pack
│   │           │   ├── included_cfg.cfg
│   │           │   └── xml_files/
│   │           │       ├── file1_in_xml_pack.xml
│   │           │       ├── file2_in_xml_pack.xml
│   │           │       ├── same_subfolder_1/
│   │           │       │   └── samename/
│   │           │       │       └── samename.xml_pack
│   │           │       ├── same_subfolder_2/
│   │           │       │   └── samename/
│   │           │       │       └── samename.xml_pack
│   │           │       └── xml_files.xml_pack
│   │           ├── ut_misc_pack_file.h
│   │           ├── ut_misc_singleton.h
│   │           ├── ut_misc_sstring.h
│   │           ├── ut_misc_stream.h
│   │           ├── ut_misc_string_common.h
│   │           ├── ut_misc_types.h
│   │           ├── ut_misc_variable.h
│   │           ├── ut_net.h
│   │           ├── ut_net_layer3.h
│   │           ├── ut_net_message.h
│   │           └── ut_net_module.h
│   ├── nelDashBuild.cmd
│   ├── nelDashBuild.sh
│   └── revision.h.in
└── tools/
    ├── protobuf/
    │   ├── JS/
    │   │   ├── README.md
    │   │   ├── protobuf/
    │   │   │   └── protofile/
    │   │   │       └── hold
    │   │   └── protobuf_gen_js.bat
    │   ├── define_attrib.proto
    │   ├── define_pro.proto
    │   ├── lua/
    │   │   └── protobuf_gen_lua.bat
    │   ├── msg_client.proto
    │   ├── msg_doudizhu.proto
    │   └── msg_service.proto
    ├── server/
    │   ├── admin/
    │   │   ├── common.php
    │   │   ├── config.php
    │   │   ├── crons/
    │   │   │   ├── cron_harddisk.php
    │   │   │   ├── cron_harddisk.sh
    │   │   │   └── index.html
    │   │   ├── docs/
    │   │   │   └── shard_restart/
    │   │   │       ├── Filelist.xml
    │   │   │       ├── H38.css
    │   │   │       ├── H70_2.htm
    │   │   │       ├── HOWTO_Restarting_Ryzom_Game_Shards.htm
    │   │   │       ├── Hd36.xml
    │   │   │       ├── Hf69.htm
    │   │   │       ├── Hg39_1.htm
    │   │   │       ├── Hg41_2.htm
    │   │   │       ├── Hg43_3.htm
    │   │   │       ├── Hg45_4.htm
    │   │   │       ├── Hg47_5.htm
    │   │   │       ├── Hg49_6.htm
    │   │   │       ├── Hg51_7.htm
    │   │   │       ├── Hg53_8.htm
    │   │   │       ├── Hg55_9.htm
    │   │   │       ├── Hg57_10.htm
    │   │   │       ├── Hg59_11.htm
    │   │   │       ├── Hg61_12.htm
    │   │   │       ├── Hn68.htm
    │   │   │       ├── Hu37.js
    │   │   │       └── Hz63.htm
    │   │   ├── functions_auth.php
    │   │   ├── functions_common.php
    │   │   ├── functions_mysql.php
    │   │   ├── functions_mysqli.php
    │   │   ├── functions_tool_administration.php
    │   │   ├── functions_tool_applications.php
    │   │   ├── functions_tool_event_entities.php
    │   │   ├── functions_tool_graphs.php
    │   │   ├── functions_tool_guild_locator.php
    │   │   ├── functions_tool_log_analyser.php
    │   │   ├── functions_tool_main.php
    │   │   ├── functions_tool_mfs.php
    │   │   ├── functions_tool_notes.php
    │   │   ├── functions_tool_player_locator.php
    │   │   ├── functions_tool_preferences.php
    │   │   ├── functions_tool_shop.php
    │   │   ├── graphs_output/
    │   │   │   └── placeholder
    │   │   ├── index.php
    │   │   ├── jpgraph/
    │   │   │   ├── imgdata_balls.inc
    │   │   │   ├── imgdata_bevels.inc
    │   │   │   ├── imgdata_diamonds.inc
    │   │   │   ├── imgdata_pushpins.inc
    │   │   │   ├── imgdata_squares.inc
    │   │   │   ├── imgdata_stars.inc
    │   │   │   ├── jpg-config.inc
    │   │   │   ├── jpgraph.php
    │   │   │   ├── jpgraph_antispam-digits.php
    │   │   │   ├── jpgraph_antispam.php
    │   │   │   ├── jpgraph_bar.php
    │   │   │   ├── jpgraph_canvas.php
    │   │   │   ├── jpgraph_canvtools.php
    │   │   │   ├── jpgraph_date.php
    │   │   │   ├── jpgraph_error.php
    │   │   │   ├── jpgraph_flags.php
    │   │   │   ├── jpgraph_gantt.php
    │   │   │   ├── jpgraph_gb2312.php
    │   │   │   ├── jpgraph_gradient.php
    │   │   │   ├── jpgraph_iconplot.php
    │   │   │   ├── jpgraph_imgtrans.php
    │   │   │   ├── jpgraph_line.php
    │   │   │   ├── jpgraph_log.php
    │   │   │   ├── jpgraph_pie.php
    │   │   │   ├── jpgraph_pie3d.php
    │   │   │   ├── jpgraph_plotband.php
    │   │   │   ├── jpgraph_plotmark.inc
    │   │   │   ├── jpgraph_polar.php
    │   │   │   ├── jpgraph_radar.php
    │   │   │   ├── jpgraph_regstat.php
    │   │   │   ├── jpgraph_scatter.php
    │   │   │   ├── jpgraph_stock.php
    │   │   │   ├── jpgraph_utils.inc
    │   │   │   └── lang/
    │   │   │       └── en.inc.php
    │   │   ├── logs/
    │   │   │   └── empty.txt
    │   │   ├── nel/
    │   │   │   ├── admin_modules_itf.php
    │   │   │   └── nel_message.php
    │   │   ├── neltool.css
    │   │   ├── overlib/
    │   │   │   ├── makemini.pl
    │   │   │   ├── overlib.js
    │   │   │   ├── overlib_anchor.js
    │   │   │   ├── overlib_anchor_mini.js
    │   │   │   ├── overlib_draggable.js
    │   │   │   ├── overlib_draggable_mini.js
    │   │   │   └── overlib_mini.js
    │   │   ├── scripts/
    │   │   │   ├── index.html
    │   │   │   ├── restart_sequence.php
    │   │   │   └── run_script.sh
    │   │   ├── smarty/
    │   │   │   ├── Config_File.class.php
    │   │   │   ├── Smarty.class.php
    │   │   │   ├── Smarty_Compiler.class.php
    │   │   │   ├── debug.tpl
    │   │   │   ├── internals/
    │   │   │   │   ├── core.assemble_plugin_filepath.php
    │   │   │   │   ├── core.assign_smarty_interface.php
    │   │   │   │   ├── core.create_dir_structure.php
    │   │   │   │   ├── core.display_debug_console.php
    │   │   │   │   ├── core.get_include_path.php
    │   │   │   │   ├── core.get_microtime.php
    │   │   │   │   ├── core.get_php_resource.php
    │   │   │   │   ├── core.is_secure.php
    │   │   │   │   ├── core.is_trusted.php
    │   │   │   │   ├── core.load_plugins.php
    │   │   │   │   ├── core.load_resource_plugin.php
    │   │   │   │   ├── core.process_cached_inserts.php
    │   │   │   │   ├── core.process_compiled_include.php
    │   │   │   │   ├── core.read_cache_file.php
    │   │   │   │   ├── core.rm_auto.php
    │   │   │   │   ├── core.rmdir.php
    │   │   │   │   ├── core.run_insert_handler.php
    │   │   │   │   ├── core.smarty_include_php.php
    │   │   │   │   ├── core.write_cache_file.php
    │   │   │   │   ├── core.write_compiled_include.php
    │   │   │   │   ├── core.write_compiled_resource.php
    │   │   │   │   └── core.write_file.php
    │   │   │   └── plugins/
    │   │   │       ├── block.textformat.php
    │   │   │       ├── compiler.assign.php
    │   │   │       ├── function.assign_debug_info.php
    │   │   │       ├── function.config_load.php
    │   │   │       ├── function.counter.php
    │   │   │       ├── function.cycle.php
    │   │   │       ├── function.debug.php
    │   │   │       ├── function.eval.php
    │   │   │       ├── function.fetch.php
    │   │   │       ├── function.html_checkboxes.php
    │   │   │       ├── function.html_image.php
    │   │   │       ├── function.html_options.php
    │   │   │       ├── function.html_radios.php
    │   │   │       ├── function.html_select_date.php
    │   │   │       ├── function.html_select_time.php
    │   │   │       ├── function.html_table.php
    │   │   │       ├── function.mailto.php
    │   │   │       ├── function.math.php
    │   │   │       ├── function.popup.php
    │   │   │       ├── function.popup_init.php
    │   │   │       ├── function.substr.php
    │   │   │       ├── modifier.capitalize.php
    │   │   │       ├── modifier.cat.php
    │   │   │       ├── modifier.count_characters.php
    │   │   │       ├── modifier.count_paragraphs.php
    │   │   │       ├── modifier.count_sentences.php
    │   │   │       ├── modifier.count_words.php
    │   │   │       ├── modifier.date_format.php
    │   │   │       ├── modifier.debug_print_var.php
    │   │   │       ├── modifier.default.php
    │   │   │       ├── modifier.escape.php
    │   │   │       ├── modifier.indent.php
    │   │   │       ├── modifier.lower.php
    │   │   │       ├── modifier.nl2br.php
    │   │   │       ├── modifier.regex_replace.php
    │   │   │       ├── modifier.replace.php
    │   │   │       ├── modifier.spacify.php
    │   │   │       ├── modifier.string_format.php
    │   │   │       ├── modifier.strip.php
    │   │   │       ├── modifier.strip_tags.php
    │   │   │       ├── modifier.truncate.php
    │   │   │       ├── modifier.upper.php
    │   │   │       ├── modifier.wordwrap.php
    │   │   │       ├── outputfilter.trimwhitespace.php
    │   │   │       ├── shared.escape_special_chars.php
    │   │   │       └── shared.make_timestamp.php
    │   │   ├── templates/
    │   │   │   ├── default/
    │   │   │   │   ├── _index.tpl
    │   │   │   │   ├── index.tpl
    │   │   │   │   ├── index_login.tpl
    │   │   │   │   ├── index_restart_sequence.tpl
    │   │   │   │   ├── page_footer.tpl
    │   │   │   │   ├── page_footer_light.tpl
    │   │   │   │   ├── page_header.tpl
    │   │   │   │   ├── page_header_light.tpl
    │   │   │   │   ├── tool_actions.tpl
    │   │   │   │   ├── tool_administration.tpl
    │   │   │   │   ├── tool_administration_applications.tpl
    │   │   │   │   ├── tool_administration_domains.tpl
    │   │   │   │   ├── tool_administration_groups.tpl
    │   │   │   │   ├── tool_administration_logs.tpl
    │   │   │   │   ├── tool_administration_restarts.tpl
    │   │   │   │   ├── tool_administration_shards.tpl
    │   │   │   │   ├── tool_administration_users.tpl
    │   │   │   │   ├── tool_administration_users.tpl.backup
    │   │   │   │   ├── tool_event_entities.tpl
    │   │   │   │   ├── tool_graphs.tpl
    │   │   │   │   ├── tool_graphs_ccu.tpl
    │   │   │   │   ├── tool_graphs_hires.tpl
    │   │   │   │   ├── tool_graphs_tech.tpl
    │   │   │   │   ├── tool_guild_locator.tpl
    │   │   │   │   ├── tool_log_analyser.tpl
    │   │   │   │   ├── tool_log_analyser_file_view.tpl
    │   │   │   │   ├── tool_mfs.tpl
    │   │   │   │   ├── tool_notes.tpl
    │   │   │   │   ├── tool_player_locator.tpl
    │   │   │   │   ├── tool_preferences.tpl
    │   │   │   │   └── tool_shop.tpl
    │   │   │   └── default_c/
    │   │   │       └── placeholder
    │   │   ├── tool_actions.php
    │   │   ├── tool_administration.php
    │   │   ├── tool_event_entities.php
    │   │   ├── tool_graphs.php
    │   │   ├── tool_guild_locator.php
    │   │   ├── tool_log_analyser.php
    │   │   ├── tool_mfs.php
    │   │   ├── tool_notes.php
    │   │   ├── tool_player_locator.php
    │   │   ├── tool_preferences.php
    │   │   └── tool_shop.php
    │   ├── sql/
    │   │   ├── d_mt_account.sql
    │   │   ├── d_mt_player_procedure.sql
    │   │   ├── d_mt_player_table.sql
    │   │   └── nel_tool.sql
    │   └── www/
    │       ├── login/
    │       │   ├── code2accesstoken.php
    │       │   ├── config.php
    │       │   ├── login_test.php
    │       │   ├── logs/
    │       │   │   └── placeholder
    │       │   ├── pay_service_itf.php
    │       │   └── public_func.php
    │       └── tools/
    │           └── nel_message.php
    └── xlsx2json/
        ├── LICENSE
        ├── README.md
        ├── config.json
        ├── excel/
        │   └── GameConfig.xlsx
        ├── export.bat
        ├── export.sh
        ├── index.js
        ├── lib/
        │   └── xlsx-to-json.js
        └── package.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/ccpp.yml
================================================
name: C/C++ CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    
    steps:
    - path: ./BaseService/build
      run: ./cmake ../code
    - name: make
      run: make



================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
# BaseService
微信小游戏服务器,房间及卡牌类游戏服务器。支持websocket及tcp连接,lua编写游戏逻辑,运行于C++服务器,跨平台。C++底层已支持多款线上产品。

使用lua编写游戏逻辑,不需要编写C++代码。函数支持不停机热更新。

# 依赖库

https://gitee.com/li9chuan/ExternalLib

# Wiki

https://gitee.com/li9chuan/EQipaiServer/wikis

# QQ: 9703021



================================================
FILE: code/CMakeLists.txt
================================================
#-----------------------------------------------------------------------------
#
# NeL
#  Authors: Nevrax and the NeL Community
#  Version: 0.8.0
#
# Notes:
#   * Changing install location: add -DCMAKE_INSTALL_PREFIX:PATH=/my/new/path
#   * Changing specific install location variables:
#       * NL_ETC_PREFIX (default: $CMAKE_INSTALL_PREFIX/etc)
#       * NL_SHARE_PREFIX (default: $CMAKE_INSTALL_PREFIX/share)
#       * NL_BIN_PREFIX (default: $CMAKE_INSTALL_PREFIX/bin)
#       * NL_SBIN_PREFIX  (default: $CMAKE_INSTALL_PREFIX/sbin)
#       * NL_LIB_PREFIX  (default: $CMAKE_INSTALL_PREFIX/lib)
#       * NL_DRIVER_PREFIX  (default: $CMAKE_INSTALL_PREFIX/lib (windows) or $CMAKE_INSTALL_PREFIX/lib/nel)
#   * Enable building of documentation: add -DBUILD_DOCUMENTATION:BOOL=ON - new make target: DoxygenDoc
#   * Updating version: update header (above) but also update NL_VERSION below.
#   * To build binary archive, use the 'package' target.
#     To build source archive, use the 'package_source' target.

#-----------------------------------------------------------------------------
# Load some macros.
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")
#-----------------------------------------------------------------------------
# Set CMake 2.6 Policies.
IF(COMMAND cmake_policy)
  # Works around warnings libraries linked against that don't
  # have absolute paths (e.g. -lpthread)
  cmake_policy(SET CMP0003 NEW)

  # Works around warnings about escaped quotes in ADD_DEFINITIONS
  # statements
  cmake_policy(SET CMP0005 OLD)
ENDIF(COMMAND cmake_policy)

INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/nel.cmake)
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/ConfigureChecks.cmake)
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/CheckDepends.cmake)
INCLUDE(${CMAKE_ROOT}/Modules/Documentation.cmake OPTIONAL)

# Force out of source builds.
CHECK_OUT_OF_SOURCE()

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(BaseService CXX C)
SET(NL_VERSION_MAJOR 0)
SET(NL_VERSION_MINOR 8)
SET(NL_VERSION_PATCH 0)
SET(NL_VERSION "${NL_VERSION_MAJOR}.${NL_VERSION_MINOR}.${NL_VERSION_PATCH}")

#-----------------------------------------------------------------------------
# Redirect output files
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

# DLL should be in the same directory as EXE under Windows
IF(WIN32)
  SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
ELSE(WIN32)
  SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
ENDIF(WIN32)

IF(WIN32)
  IF(WITH_MFC)
    FIND_PACKAGE(MFC QUIET)
  ENDIF(WITH_MFC)

  IF(NOT DEFINED ENV{QTDIR})
    SET(ENV{QTDIR} "c:/qt/4.6.3")
  ENDIF(NOT DEFINED ENV{QTDIR})
ENDIF(WIN32)

# set platfrom defind
IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
  SET(FreeBSD ON)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")

#-----------------------------------------------------------------------------
# Set default config options
#

NL_SETUP_DEFAULT_OPTIONS()
NL_SETUP_NEL_DEFAULT_OPTIONS()
NL_SETUP_NELNS_DEFAULT_OPTIONS()

NL_SETUP_PREFIX_PATHS()
EVA_SETUP_PREFIX_PATHS()

NL_CONFIGURE_CHECKS()

NL_SETUP_BUILD()
NL_SETUP_BUILD_FLAGS()

#-----------------------------------------------------------------------------
#Platform specifics

SETUP_EXTERNAL()
NL_GEN_REVISION_H()

IF(WIN32)
  SET(WINSOCK2_LIB ws2_32.lib)
  SET(WINLDAP_LIB  wldap32.lib)

  IF(WITH_MFC)
    FIND_PACKAGE(CustomMFC REQUIRED)
  ENDIF(WITH_MFC)
ENDIF(WIN32)


FIND_PACKAGE(Threads REQUIRED)
FIND_PACKAGE(LibXml2 REQUIRED)
FIND_PACKAGE(ProtoBuf REQUIRED)
FIND_PACKAGE(Lua53 REQUIRED)
#FIND_PACKAGE(PBC REQUIRED)
FIND_PACKAGE(LibEvent REQUIRED)

FIND_PACKAGE(OpenSSL REQUIRED)
#SET(OPENSSL_USE_STATIC_LIBS TRUE)   # openssl使用静态库
FIND_PACKAGE(ZLIB REQUIRED)

ADD_DEFINITIONS(-DLUA_COMPAT_MODULE)    # for lua_bind

#FIND_PACKAGE(TinyXml REQUIRED)
#FIND_PACKAGE(PNG REQUIRED)
#FIND_PACKAGE(Jpeg)

IF(WITH_STATIC)
  # libxml2 could need winsock2 library
  SET(LIBXML2_DEFINITIONS ${LIBXML2_DEFINITIONS} -DLIBXML_STATIC)
  SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${WINSOCK2_LIB} ${WINLDAP_LIB})

  # on Mac OS X libxml2 requieres iconv
  IF(FREEBSD OR APPLE)
    FIND_PACKAGE(Iconv REQUIRED)
    SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${ICONV_LIBRARIES})
    INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
    MESSAGE(STATUS "ICONV: ${ICONV_INCLUDE_DIR} ${ICONV_LIBRARIES}")
  ENDIF(FREEBSD OR APPLE)
ENDIF(WITH_STATIC)

INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/PCHSupport.cmake)

IF(FINAL_VERSION)
  ADD_DEFINITIONS(-DFINAL_VERSION=1)
ENDIF(FINAL_VERSION)

ADD_DEFINITIONS(-DNL_MAP_ASSERT)

IF(WITH_SSE2)
  ADD_DEFINITIONS(-DNL_HAS_SSE2)
  IF(WITH_SSE3)
    ADD_DEFINITIONS(-DNL_HAS_SSE3)
  ENDIF(WITH_SSE3)
ENDIF(WITH_SSE2)

IF(WITH_EVA)
  ADD_DEFINITIONS(-DEVA)
ENDIF(WITH_EVA)

IF(WITH_NEL)
  IF(WITH_NEL_TESTS)
    FIND_PACKAGE(CppTest)
  ENDIF(WITH_NEL_TESTS)

  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/nel/include ${LIBXML2_INCLUDE_DIR})
  ADD_DEFINITIONS(${LIBXML2_DEFINITIONS})
  ADD_SUBDIRECTORY(nel)
ENDIF(WITH_NEL)

IF(WITH_NELNS)
  ADD_SUBDIRECTORY(nelns)
ENDIF(WITH_NELNS)

IF(WITH_EVA)
  ADD_SUBDIRECTORY(EVA)
ENDIF(WITH_EVA)

# To build the documention, you will have to enable it
# and then do the equivalent of "make DoxygenDoc".
IF(BUILD_DOCUMENTATION)
    IF(DOT)
        SET(HAVE_DOT YES)
    ELSE(DOT)
        SET(HAVE_DOT NO)
    ENDIF(DOT)
    # This processes our Doxyfile.in and substitutes paths to generate
    # a final Doxyfile
    CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/doc/Doxyfile.cmake.in ${CMAKE_BINARY_DIR}/doc/Doxyfile)

    ADD_CUSTOM_TARGET(DoxygenDoc ${DOXYGEN} ${CMAKE_BINARY_DIR}/doc/Doxyfile)
ENDIF(BUILD_DOCUMENTATION)

IF(WITH_NEL_TESTS)
  ENABLE_TESTING()
  ADD_TEST(nel_unit_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/nel_unit_test --html)
  IF(BUILD_DASHBOARD)
    INCLUDE(Dart)
    SET(SVNCOMMAND svn)
    SET(SVNSOURCEDIR http://dev.ryzom.com/svn/trunk/nel)
    SET(GENERATELOGS svn2cl)
  ENDIF(BUILD_DASHBOARD)
ENDIF(WITH_NEL_TESTS)

# packaging information
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NeL MMORPG Framework")
SET(CPACK_PACKAGE_VENDOR "NeL")
SET(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/README)
SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING)
SET(CPACK_PACKAGE_VERSION_MAJOR "${NL_VERSION_MAJOR}")
SET(CPACK_PACKAGE_VERSION_MINOR "${NL_VERSION_MINOR}")
SET(CPACK_PACKAGE_VERSION_PATCH "${NL_VERSION_PATCH}")
SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_BINARY_DIR};NeL;ALL;/")
SET(CPACK_PACKAGE_EXECUTABLES "nel${NL_VERSION}" "nel")

# NSIS Specific Packing Setup
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "NeL")
SET(CPACK_NSIS_MODIFY_PATH "ON")
SET(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico)
SET(CPACK_NSIS_MUI_UNIICON ${CMAKE_SOURCE_DIR}/resources/nevraxpill.ico)
SET(CPACK_PACKAGE_ICON ${CMAKE_SOURCE_DIR}/resources\\\\nel.bmp)
SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY} NeL")
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\dev.ryzom.com")
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\dev.ryzom.com\\\\projects\\\\nel\\\\wiki")
SET(CPACK_NSIS_CONTACT "matt.raykowski@gmail.com")

## Source Packages
SET(CPACK_PACKAGE_FILE_NAME "nel-${NL_VERSION}")
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "nel-${NL_VERSION}")
IF(WIN32)
  #SET(CPACK_GENERATOR "NSIS")
  SET(CPACK_GENERATOR "NSIS;ZIP")
  SET(CPACK_SOURCE_GENERATOR "ZIP")
ELSE(WIN32)
  SET(CPACK_GENERATOR "TGZ")
  SET(CPACK_SOURCE_GENERATOR "TGZ")
ENDIF(WIN32)
set(CPACK_SOURCE_IGNORE_FILES
	"~$"
	"\\\\.cvsignore$"
	"^${CMAKE_SOURCE_DIR}.*/CVS/"
	"^${CMAKE_SOURCE_DIR}.*/\\\\.svn/"
	"^${CMAKE_SOURCE_DIR}/debian/"
	"^${CMAKE_SOURCE_DIR}/old/")
IF(WIN32)
  IF(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
    SET(CMAKE_INSTALL_DEBUG_LIBRARIES TRUE)
  ELSE(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
  ENDIF(NOT CMAKE_BUILD_TYPE STREQUAL "Release")

  # Only the tools require MFC.
  IF(WITH_TOOLS)
    SET(CMAKE_INSTALL_MFC_LIBRARIES TRUE)
  ENDIF(WITH_TOOLS)
  INCLUDE(InstallRequiredSystemLibraries)
ENDIF(WIN32)

INCLUDE(CPack)

INCLUDE(CMakePackaging.txt)

## Debian Packages
#INCLUDE(UseDebian)
#IF(DEBIAN_FOUND)
#  ADD_DEBIAN_TARGETS(nel)
#ENDIF(DEBIAN_FOUND)


================================================
FILE: code/CMakeModules/AndroidToolChain.cmake
================================================
IF(DEFINED CMAKE_CROSSCOMPILING)
  # subsequent toolchain loading is not really needed
  RETURN()
ENDIF()

# Standard settings
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1) # TODO: determine target Linux version
SET(UNIX ON)
SET(LINUX ON)
SET(ANDROID ON)

IF(NOT NDK_ROOT)
  SET(NDK_ROOT $ENV{NDK_ROOT})

  IF(CMAKE_HOST_WIN32)
    FILE(TO_CMAKE_PATH ${NDK_ROOT} NDK_ROOT)
  ENDIF(CMAKE_HOST_WIN32)
ENDIF(NOT NDK_ROOT)

IF(NOT TARGET_CPU)
  SET(TARGET_CPU "armv7")
ENDIF(NOT TARGET_CPU)

IF(TARGET_CPU STREQUAL "armv7")
  SET(LIBRARY_ARCHITECTURE "armeabi-v7a")
  SET(CMAKE_SYSTEM_PROCESSOR "armv7")
  SET(TOOLCHAIN_ARCH "arm")
  SET(GCC_TOOLCHAIN_PREFIX "arm-linux-androideabi")
  SET(TOOLCHAIN_BIN_PREFIX "arm")
  SET(MINIMUM_NDK_TARGET 4)
ELSEIF(TARGET_CPU STREQUAL "armv5")
  SET(LIBRARY_ARCHITECTURE "armeabi")
  SET(CMAKE_SYSTEM_PROCESSOR "armv5")
  SET(TOOLCHAIN_ARCH "arm")
  SET(GCC_TOOLCHAIN_PREFIX "arm-linux-androideabi")
  SET(TOOLCHAIN_BIN_PREFIX "arm")
  SET(MINIMUM_NDK_TARGET 4)
ELSEIF(TARGET_CPU STREQUAL "x86")
  SET(LIBRARY_ARCHITECTURE "x86")
  SET(CMAKE_SYSTEM_PROCESSOR "x86")
  SET(TOOLCHAIN_ARCH "x86")
  SET(GCC_TOOLCHAIN_PREFIX "x86")
  SET(TOOLCHAIN_BIN_PREFIX "i686")
  SET(MINIMUM_NDK_TARGET 9)
ELSEIF(TARGET_CPU STREQUAL "mips")
  SET(LIBRARY_ARCHITECTURE "mips")
  SET(CMAKE_SYSTEM_PROCESSOR "mips")
  SET(TOOLCHAIN_ARCH "mips")
  SET(GCC_TOOLCHAIN_PREFIX "mipsel-linux-android")
  SET(TOOLCHAIN_BIN_PREFIX "mipsel")
  SET(MINIMUM_NDK_TARGET 9)
ENDIF(TARGET_CPU STREQUAL "armv7")

SET(ANDROID_COMPILER "GCC")

IF(NDK_TOOLCHAIN_VERSION STREQUAL "clang")
  SET(ANDROID_COMPILER "clang")
  SET(CLANG_TOOLCHAIN_PREFIX "llvm")
  SET(CLANG ON)
ELSE()
  SET(GCC_TOOLCHAIN_VERSION ${NDK_TOOLCHAIN_VERSION})
ENDIF()

IF(NOT NDK_TARGET)
  SET(NDK_TARGET ${MINIMUM_NDK_TARGET})
ENDIF(NOT NDK_TARGET)

IF(CMAKE_HOST_WIN32)
  SET(TOOLCHAIN_HOST "windows")
  SET(TOOLCHAIN_BIN_SUFFIX ".exe")
ELSEIF(CMAKE_HOST_APPLE)
  SET(TOOLCHAIN_HOST "apple")
  SET(TOOLCHAIN_BIN_SUFFIX "")
ELSEIF(CMAKE_HOST_UNIX)
  SET(TOOLCHAIN_HOST "linux")
  SET(TOOLCHAIN_BIN_SUFFIX "")
ENDIF(CMAKE_HOST_WIN32)

MACRO(SEARCH_TOOLCHAIN _COMPILER)
  SET(${_COMPILER}_TOOLCHAIN_VERSIONS)
  FILE(GLOB _TOOLCHAIN_VERSIONS "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}-*")
  IF(_TOOLCHAIN_VERSIONS)
    LIST(SORT _TOOLCHAIN_VERSIONS)
    LIST(REVERSE _TOOLCHAIN_VERSIONS)
    FOREACH(_TOOLCHAIN_VERSION ${_TOOLCHAIN_VERSIONS})
      STRING(REGEX REPLACE ".+${_PREFIX}-([0-9.]+)" "\\1" _TOOLCHAIN_VERSION "${_TOOLCHAIN_VERSION}")
      IF(_TOOLCHAIN_VERSION MATCHES "^([0-9.]+)$")
        LIST(APPEND ${_COMPILER}_TOOLCHAIN_VERSIONS ${_TOOLCHAIN_VERSION})
      ENDIF()
    ENDFOREACH()
  ENDIF()

  IF(NOT ${_COMPILER}_TOOLCHAIN_VERSIONS)
    MESSAGE(FATAL_ERROR "No Android ${_COMPILER} toolchain found in default search path ${NDK_ROOT}/toolchains")
  ENDIF()

  IF(${_COMPILER}_TOOLCHAIN_VERSIONS)
    LIST(FIND ${_COMPILER}_TOOLCHAIN_VERSIONS "${${_COMPILER}_TOOLCHAIN_VERSION}" _INDEX)
    IF(_INDEX EQUAL -1)
      LIST(GET ${_COMPILER}_TOOLCHAIN_VERSIONS 0 ${_COMPILER}_TOOLCHAIN_VERSION)
    ENDIF()
  ELSE()
    LIST(GET ${_COMPILER}_TOOLCHAIN_VERSIONS 0 ${_COMPILER}_TOOLCHAIN_VERSION)
  ENDIF()

  SET(${_COMPILER}_TOOLCHAIN_ROOT "${NDK_ROOT}/toolchains/${${_COMPILER}_TOOLCHAIN_PREFIX}-${${_COMPILER}_TOOLCHAIN_VERSION}/prebuilt/${TOOLCHAIN_HOST}")

  IF(NOT EXISTS "${${_COMPILER}_TOOLCHAIN_ROOT}")
    FILE(GLOB _TOOLCHAIN_PREFIXES "${${_COMPILER}_TOOLCHAIN_ROOT}*")
    IF(_TOOLCHAIN_PREFIXES)
      LIST(GET _TOOLCHAIN_PREFIXES 0 ${_COMPILER}_TOOLCHAIN_ROOT)
    ENDIF(_TOOLCHAIN_PREFIXES)
  ENDIF()
ENDMACRO()

IF(CLANG)
  SEARCH_TOOLCHAIN(CLANG)

  MESSAGE(STATUS "Target Android NDK ${NDK_TARGET} and use clang ${CLANG_TOOLCHAIN_VERSION}")
ENDIF()

SEARCH_TOOLCHAIN(GCC)

MESSAGE(STATUS "Target Android NDK ${NDK_TARGET} and use GCC ${GCC_TOOLCHAIN_VERSION}")
MESSAGE(STATUS "Found Android LLVM toolchain in ${CLANG_TOOLCHAIN_ROOT}")
MESSAGE(STATUS "Found Android GCC toolchain in ${GCC_TOOLCHAIN_ROOT}")

SET(PLATFORM_ROOT "${NDK_ROOT}/platforms/android-${NDK_TARGET}/arch-${TOOLCHAIN_ARCH}")

MESSAGE(STATUS "Found Android platform in ${PLATFORM_ROOT}")

# include dirs
SET(PLATFORM_INCLUDE_DIR "${PLATFORM_ROOT}/usr/include")
SET(STL_DIR "${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++")

IF(EXISTS "${STL_DIR}/${GCC_TOOLCHAIN_VERSION}")
  # NDK version >= 8b
  SET(STL_DIR "${STL_DIR}/${GCC_TOOLCHAIN_VERSION}")
ENDIF(EXISTS "${STL_DIR}/${GCC_TOOLCHAIN_VERSION}")

# Determine bin prefix for toolchain
FILE(GLOB _TOOLCHAIN_BIN_PREFIXES "${GCC_TOOLCHAIN_ROOT}/bin/${TOOLCHAIN_BIN_PREFIX}-*-gcc${TOOLCHAIN_BIN_SUFFIX}")
IF(_TOOLCHAIN_BIN_PREFIXES)
  LIST(GET _TOOLCHAIN_BIN_PREFIXES 0 _TOOLCHAIN_BIN_PREFIX)
  STRING(REGEX REPLACE "${GCC_TOOLCHAIN_ROOT}/bin/([a-z0-9-]+)-gcc${TOOLCHAIN_BIN_SUFFIX}" "\\1" TOOLCHAIN_BIN_PREFIX "${_TOOLCHAIN_BIN_PREFIX}")
ENDIF(_TOOLCHAIN_BIN_PREFIXES)

SET(STL_INCLUDE_DIR "${STL_DIR}/include")
SET(STL_LIBRARY_DIR "${STL_DIR}/libs/${LIBRARY_ARCHITECTURE}")
SET(STL_INCLUDE_CPU_DIR "${STL_LIBRARY_DIR}/include")
SET(STL_LIBRARY "${STL_LIBRARY_DIR}/libgnustl_static.a")

MESSAGE(STATUS "STL include dir: ${STL_INCLUDE_DIR}")
MESSAGE(STATUS "STL library dir: ${STL_LIBRARY_DIR}")

SET(CMAKE_FIND_ROOT_PATH ${CLANG_TOOLCHAIN_ROOT} ${GCC_TOOLCHAIN_ROOT} ${PLATFORM_ROOT}/usr ${CMAKE_PREFIX_PATH} ${CMAKE_INSTALL_PREFIX} $ENV{EXTERNAL_ANDROID_PATH} CACHE string  "Android find search path root")

SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

MACRO(SET_TOOLCHAIN_BINARY _NAME _BINARY)
  IF("${_BINARY}" MATCHES "clang")
    SET(${_NAME} ${CLANG_TOOLCHAIN_ROOT}/bin/${_BINARY}${TOOLCHAIN_BIN_SUFFIX} CACHE PATH "" FORCE )
  ELSE()
    SET(${_NAME} ${GCC_TOOLCHAIN_ROOT}/bin/${TOOLCHAIN_BIN_PREFIX}-${_BINARY}${TOOLCHAIN_BIN_SUFFIX} CACHE PATH "" FORCE)
  ENDIF()
ENDMACRO(SET_TOOLCHAIN_BINARY)

# Force the compilers to GCC for Android
include (CMakeForceCompiler)

IF(CLANG)
  SET_TOOLCHAIN_BINARY(CMAKE_C_COMPILER clang)
  SET_TOOLCHAIN_BINARY(CMAKE_CXX_COMPILER clang++)

  CMAKE_FORCE_C_COMPILER(${CMAKE_C_COMPILER} clang)
  CMAKE_FORCE_CXX_COMPILER(${CMAKE_CXX_COMPILER} clang)

  MESSAGE(STATUS "Using clang compiler")
ELSE()
  SET_TOOLCHAIN_BINARY(CMAKE_C_COMPILER gcc)
  SET_TOOLCHAIN_BINARY(CMAKE_CXX_COMPILER g++)

  CMAKE_FORCE_C_COMPILER(${CMAKE_C_COMPILER} GNU)
  CMAKE_FORCE_CXX_COMPILER(${CMAKE_CXX_COMPILER} GNU)

  MESSAGE(STATUS "Using GCC compiler")
ENDIF()

SET_TOOLCHAIN_BINARY(CMAKE_STRIP strip)
SET_TOOLCHAIN_BINARY(CMAKE_AR ar)
SET_TOOLCHAIN_BINARY(CMAKE_LINKER ld)
SET_TOOLCHAIN_BINARY(CMAKE_NM nm)
SET_TOOLCHAIN_BINARY(CMAKE_OBJCOPY objcopy)
SET_TOOLCHAIN_BINARY(CMAKE_OBJDUMP objdump)
SET_TOOLCHAIN_BINARY(CMAKE_RANLIB ranlib)


================================================
FILE: code/CMakeModules/CheckDepends.cmake
================================================
# Macros to check if a library needs to be manually linked to another one
# because it's using a symbol from it but it's not linked to

# CHECK_UNDEFINED_SYMBOL
# Macro to check if a library is calling an undefined symbol
#
# Syntax:
# CHECK_UNDEFINED_SYMBOL(MYLIBRARY SYMBOL SYMBOL_FOUND)
# SYMBOL_FOUND will be set to TRUE if UNDEFINED
#
# Example:
# CHECK_UNDEFINED_SYMBOL(PNG_LIBRARY inflate INFLATE_FOUND)
#
MACRO(CHECK_UNDEFINED_SYMBOL MYLIBRARY SYMBOL SYMBOL_FOUND)
  SET(${SYMBOL_FOUND} TRUE)
  IF(WIN32)
    # Always TRUE under Windows because we are using static libraries
  ELSEIF(APPLE)
    SET(CMAKE_NM nm)
    IF(CMAKE_NM)
      # Use nm to check if a library is using an external symbol
      EXEC_PROGRAM(${CMAKE_NM} ARGS "-gu ${${MYLIBRARY}} | grep ${SYMBOL}" OUTPUT_VARIABLE NM_SYMBOL)
#      MESSAGE(STATUS "Checking for undefined symbol ${SYMBOL} in ${${MYLIBRARY}}")
      IF(NOT NM_SYMBOL MATCHES ${SYMBOL})
        SET(${SYMBOL_FOUND} FALSE)
#        MESSAGE(STATUS "Defined symbol ${SYMBOL} detected in ${${MYLIBRARY}}")
      ENDIF(NOT NM_SYMBOL MATCHES ${SYMBOL})
    ENDIF(CMAKE_NM)
  ELSEIF(UNIX)
    SET(CMAKE_OBJDUMP objdump)
    IF(CMAKE_OBJDUMP)
      # Use objdump to check if a library is using an external symbol
      #MESSAGE(STATUS "exec ${CMAKE_OBJDUMP} -T ${${MYLIBRARY}} | grep ${SYMBOL}")
      EXEC_PROGRAM(${CMAKE_OBJDUMP} ARGS "-T ${${MYLIBRARY}} | grep ${SYMBOL}" OUTPUT_VARIABLE OBJDUMP_SYMBOL)
      IF(NOT OBJDUMP_SYMBOL MATCHES "UND")
        #MESSAGE(STATUS "${${MYLIBRARY}} does not use symbol ${SYMBOL}")
        SET(${SYMBOL_FOUND} FALSE)
      ELSE(NOT OBJDUMP_SYMBOL MATCHES "UND")
        #MESSAGE(STATUS "${${MYLIBRARY}} uses symbol ${SYMBOL}")
      ENDIF(NOT OBJDUMP_SYMBOL MATCHES "UND")
    ENDIF(CMAKE_OBJDUMP)
  ENDIF(WIN32)
ENDMACRO(CHECK_UNDEFINED_SYMBOL)

# CHECK_LINKED_LIBRARY
# Macro to check if a library is linked to another one
#
# Syntax:
# CHECK_LINKED_LIBRARY(MYLIBRARY OTHERLIBRARY LIBRARY_FOUND)
# LIBRARY_FOUND will be set to TRUE if LINKED
#
# Example:
# CHECK_LINKED_LIBRARY(PNG_LIBRARY ZLIB_LIBRARY ZLIB_FOUND)
#
MACRO(CHECK_LINKED_LIBRARY MYLIBRARY OTHERLIBRARY LIBRARY_FOUND)
  SET(${LIBRARY_FOUND} FALSE)
  IF(WIN32)
    # Always FALSE under Windows because we are using static libraries
  ELSEIF(APPLE)
    SET(CMAKE_OTOOL otool)
    IF(CMAKE_OTOOL)
      # Use otool to check if a library is linked to another library
      GET_FILENAME_COMPONENT(LIBNAME "${${OTHERLIBRARY}}" NAME_WE)
      EXEC_PROGRAM(${CMAKE_OTOOL} ARGS "-L ${${MYLIBRARY}} | grep ${LIBNAME}" OUTPUT_VARIABLE OTOOL_LIBRARY)
#      MESSAGE(STATUS "Checking if ${LIBNAME} is linked to ${${MYLIBRARY}}")
      IF(OTOOL_LIBRARY MATCHES "${LIBNAME}")
        SET(${LIBRARY_FOUND} TRUE)
#        MESSAGE(STATUS "Library ${LIBNAME} already linked to ${${MYLIBRARY}}")
      ENDIF(OTOOL_LIBRARY MATCHES "${LIBNAME}")
    ENDIF(CMAKE_OTOOL)
  ELSEIF(UNIX)
    SET(CMAKE_OBJDUMP objdump)
    IF(CMAKE_OBJDUMP)
      GET_FILENAME_COMPONENT(LIBNAME "${${OTHERLIBRARY}}" NAME)
      # TODO: under Solaris use dump -Lv <lib>
      # Use objdump to check if a library is linked to another library
      #MESSAGE(STATUS "exec ${CMAKE_OBJDUMP} -p ${${MYLIBRARY}} | grep ${LIBNAME}")
      EXEC_PROGRAM(${CMAKE_OBJDUMP} ARGS "-p ${${MYLIBRARY}} | grep ${LIBNAME}" OUTPUT_VARIABLE OBJDUMP_LIBRARY)
      IF(OBJDUMP_LIBRARY MATCHES "NEEDED")
        #MESSAGE(STATUS "${${MYLIBRARY}} references to ${LIBNAME}.")
        SET(${LIBRARY_FOUND} TRUE)
      ELSE(OBJDUMP_LIBRARY MATCHES "NEEDED")
        #MESSAGE(STATUS "${${MYLIBRARY}} does not reference to ${LIBNAME}!")
      ENDIF(OBJDUMP_LIBRARY MATCHES "NEEDED")
    ENDIF(CMAKE_OBJDUMP)
  ENDIF(WIN32)
ENDMACRO(CHECK_LINKED_LIBRARY)

MACRO(CHECK_DEPENDS MYLIBRARY OTHERLIBRARY SYMBOL MUSTLINK)
  CHECK_UNDEFINED_SYMBOL(MYLIBRARY SYMBOL SYMBOL_FOUND)

  IF(SYMBOL_FOUND)
    CHECK_LINKED_LIBRARY(MYLIBRARY OTHERLIBRARY LIBRARY_FOUND)
  ENDIF(SYMBOL_FOUND)

  IF(SYMBOL_FOUND AND NOT LIBRARY_FOUND)
    SET(${MUSTLINK} YES)
  ELSE(SYMBOL_FOUND AND NOT LIBRARY_FOUND)
    SET(${MUSTLINK} NO)
  ENDIF(SYMBOL_FOUND AND NOT LIBRARY_FOUND)
ENDMACRO(CHECK_DEPENDS)

# LINK_DEPENDS
# Macro to link a library if a symbol is used but is not already linked to it
#
# Syntax:
# LINK_DEPENDS(LIBRARIES MYLIBRARY OTHERLIBRARY SYMBOL)
# OTHERLIBRARY_LINKED will be set to TRUE or FALSE
#
# Example:
# LINK_DEPENDS(PNG_LIBRARIES PNG_LIBRARY ZLIB_LIBRARY inflate)
#
MACRO(LINK_DEPENDS LIBRARIES MYLIBRARY OTHERLIBRARY SYMBOL)
  SET(MUST_LINK FALSE)
  IF(${MYLIBRARY} AND ${OTHERLIBRARY} AND NOT ${OTHERLIBRARY}_LINKED)
    IF(WIN32 OR WITH_STATIC)
      # In static, we link all libraries because it will keep only used symbols
      SET(MUST_LINK TRUE)
    ELSE(WIN32 OR WITH_STATIC)
      CHECK_UNDEFINED_SYMBOL(${MYLIBRARY} ${SYMBOL} SYMBOL_FOUND)

      IF(SYMBOL_FOUND)
        CHECK_LINKED_LIBRARY(${MYLIBRARY} ${OTHERLIBRARY} LIBRARY_FOUND)
      ENDIF(SYMBOL_FOUND)

      IF(SYMBOL_FOUND AND NOT LIBRARY_FOUND)
        MESSAGE(STATUS "Underlinking found: ${${MYLIBRARY}} needs ${${OTHERLIBRARY}} but is not linked to, manually linking...")
        SET(MUST_LINK TRUE)
      ENDIF(SYMBOL_FOUND AND NOT LIBRARY_FOUND)
    ENDIF(WIN32 OR WITH_STATIC)
  ENDIF(${MYLIBRARY} AND ${OTHERLIBRARY} AND NOT ${OTHERLIBRARY}_LINKED)
  IF(MUST_LINK)
    MESSAGE(STATUS "Linking with ${${OTHERLIBRARY}}")
    SET(${LIBRARIES} ${${LIBRARIES}} ${${OTHERLIBRARY}})
    SET(${OTHERLIBRARY}_LINKED TRUE)
  ENDIF(MUST_LINK)
ENDMACRO(LINK_DEPENDS)



================================================
FILE: code/CMakeModules/ConfigureChecks.cmake
================================================
MACRO(NL_CONFIGURE_CHECKS)
  INCLUDE(CheckIncludeFiles)
  INCLUDE(CheckFunctionExists)
  INCLUDE(CheckLibraryExists)
  INCLUDE(CheckTypeSize)
  
  CHECK_INCLUDE_FILES ("execinfo.h" HAVE_EXECINFO_H)
  CHECK_INCLUDE_FILES ("stdint.h" HAVE_STDINT_H)
  CHECK_INCLUDE_FILES ("sys/types.h" HAVE_SYS_TYPES_H)
  CHECK_INCLUDE_FILES ("inttypes.h" HAVE_INTTYPES_H)
  CHECK_INCLUDE_FILES ("unistd.h" HAVE_UNISTD_H)
  CHECK_INCLUDE_FILES ("utime.h" HAVE_UTIME_H)
  
  CHECK_INCLUDE_FILES ("dl.h" HAVE_DL_H)
  CHECK_INCLUDE_FILES ("limits.h" HAVE_LIMITS_H)
  CHECK_INCLUDE_FILES ("malloc.h" HAVE_MALLOC_H)
  CHECK_INCLUDE_FILES ("sys/param.h" HAVE_SYS_PARAM_H)
  CHECK_INCLUDE_FILES ("sys/param.h;sys/mount.h" HAVE_SYS_MOUNT_H)
  CHECK_INCLUDE_FILES ("sys/statvfs.h" HAVE_SYS_STATVFS_H)
  
  CHECK_INCLUDE_FILES ("pthread.h" HAVE_PTHREAD)
  
  CHECK_TYPE_SIZE("size_t" SIZEOF_SIZE_T)
  #if (NOT HAVE_SIZEOF_SIZE_T)
  #  MESSAGE(FATAL_ERROR "size_t is not present on this architecture - aborting")
  #endif (NOT HAVE_SIZEOF_SIZE_T)
  MESSAGE(STATUS "DEBUG size_t is ${SIZEOF_SIZE_T}")
  
  CHECK_TYPE_SIZE("off_t" SIZEOF_OFF_T)
  MESSAGE(STATUS "DEBUG off_t is ${SIZEOF_OFF_T}")
  
  CHECK_FUNCTION_EXISTS("backtrace" HAVE_BACKTRACE)
  CHECK_FUNCTION_EXISTS("getsockname" HAVE_GETSOCKNAME)
  CHECK_FUNCTION_EXISTS("inet_ntoa" HAVE_INET_NTOA)
  CHECK_FUNCTION_EXISTS("inet_ntop" HAVE_INET_NTOP)
  CHECK_FUNCTION_EXISTS("inet_pton" HAVE_INET_PTON)
  CHECK_FUNCTION_EXISTS("regcomp" HAVE_REGCOMP)
  CHECK_FUNCTION_EXISTS("strerror" HAVE_STRERROR)
  CHECK_FUNCTION_EXISTS("strlcat" HAVE_STRLCAT)
  CHECK_FUNCTION_EXISTS("strptime" HAVE_STRPTIME)
  CHECK_FUNCTION_EXISTS("strtok_r" HAVE_STRTOK_R)
  CHECK_FUNCTION_EXISTS("strtoull" HAVE_STRTOULL)
  CHECK_FUNCTION_EXISTS("statvfs" HAVE_STATVFS)
  CHECK_FUNCTION_EXISTS("stat64" HAVE_STAT64)

  # 3D drivers
  IF(WITH_DRIVER_OPENGL)
    SET(NL_OPENGL_AVAILABLE 1)
  ENDIF(WITH_DRIVER_OPENGL)

  IF(WITH_DRIVER_OPENGLES)
    SET(NL_OPENGLES_AVAILABLE 1)
  ENDIF(WITH_DRIVER_OPENGLES)
  
  IF(WITH_DRIVER_DIRECT3D)
    SET(NL_DIRECT3D_AVAILABLE 1)
  ENDIF(WITH_DRIVER_DIRECT3D)

  # sound drivers
  IF(WITH_DRIVER_FMOD)
    SET(NL_FMOD_AVAILABLE 1)
  ENDIF(WITH_DRIVER_FMOD)

  IF(WITH_DRIVER_OPENAL)
    SET(NL_OPENAL_AVAILABLE 1)
  ENDIF(WITH_DRIVER_OPENAL)

  IF(WITH_DRIVER_DSOUND)
    SET(NL_DSOUND_AVAILABLE 1)
  ENDIF(WITH_DRIVER_DSOUND)

  IF(WITH_DRIVER_XAUDIO2)
    SET(NL_XAUDIO2_AVAILABLE 1)
  ENDIF(WITH_DRIVER_XAUDIO2)

  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
  ADD_DEFINITIONS(-DHAVE_CONFIG_H)
ENDMACRO(NL_CONFIGURE_CHECKS)


================================================
FILE: code/CMakeModules/Find3dsMaxSDK.cmake
================================================
# - Find DirectInput
# Find the DirectSound includes and libraries
#
#  MAXSDK_DIR         - 3DSMAX SDK root directory
#  MAXSDK_INCLUDE_DIR - where to find baseinterface.h
#  MAXSDK_LIBRARIES   - List of libraries when using 3DSMAX.
#  MAXSDK_FOUND       - True if MAX SDK found.

if(MAXSDK_INCLUDE_DIR)
  # Already in cache, be silent
  SET(MAXSDK_FIND_QUIETLY TRUE)
endif(MAXSDK_INCLUDE_DIR)

FIND_PATH(MAXSDK_DIR
  "include/maxversion.h"
  HINTS
  "$ENV{MAXSDK_DIR}"
  PATHS
  "$ENV{ADSK_3DSMAX_SDK_2012}/maxsdk"
  "$ENV{3DSMAX_2011_SDK_PATH}/maxsdk"
  "$ENV{PROGRAMFILES}/Autodesk/3ds Max 2010 SDK/maxsdk"
  "$ENV{PROGRAMFILES}/Autodesk/3ds Max 2009 SDK/maxsdk"
  "$ENV{PROGRAMFILES}/Autodesk/3ds Max 2008 SDK/maxsdk"
  "$ENV{PROGRAMFILES}/Autodesk/3ds Max 9 SDK/maxsdk"
)

FIND_PATH(MAXSDK_INCLUDE_DIR
  max.h
  HINTS
  ${MAXSDK_DIR}/include
)

FIND_PATH(MAXSDK_CS_INCLUDE_DIR bipexp.h
  HINTS
  ${MAXSDK_DIR}/include/CS
)

IF(TARGET_X64)
  SET(MAXSDK_LIBRARY_DIRS ${MAXSDK_DIR}/x64/lib)
ELSE(TARGET_X64)
  SET(MAXSDK_LIBRARY_DIRS ${MAXSDK_DIR}/lib)
ENDIF(TARGET_X64)

MACRO(FIND_3DS_LIBRARY MYLIBRARY MYLIBRARYNAME)          
  FIND_LIBRARY(${MYLIBRARY}
    NAMES ${MYLIBRARYNAME}
    HINTS
    ${MAXSDK_LIBRARY_DIRS}
  )
ENDMACRO(FIND_3DS_LIBRARY MYLIBRARY MYLIBRARYNAME)

FIND_3DS_LIBRARY(MAXSDK_CORE_LIBRARY core)
FIND_3DS_LIBRARY(MAXSDK_GEOM_LIBRARY geom)
FIND_3DS_LIBRARY(MAXSDK_GFX_LIBRARY gfx)
FIND_3DS_LIBRARY(MAXSDK_MESH_LIBRARY mesh)
FIND_3DS_LIBRARY(MAXSDK_MAXUTIL_LIBRARY maxutil)
FIND_3DS_LIBRARY(MAXSDK_MAXSCRIPT_LIBRARY maxscrpt)
FIND_3DS_LIBRARY(MAXSDK_PARAMBLK2_LIBRARY paramblk2)
FIND_3DS_LIBRARY(MAXSDK_BMM_LIBRARY bmm)

# Handle the QUIETLY and REQUIRED arguments and set MAXSDK_FOUND to TRUE if
# all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MAXSDK DEFAULT_MSG
    MAXSDK_INCLUDE_DIR MAXSDK_CORE_LIBRARY)

if(MAXSDK_FOUND)
    SET(MAXSDK_LIBRARIES
      ${MAXSDK_CORE_LIBRARY}
      ${MAXSDK_GEOM_LIBRARY}
      ${MAXSDK_GFX_LIBRARY}
      ${MAXSDK_MESH_LIBRARY}
      ${MAXSDK_MAXUTIL_LIBRARY}
      ${MAXSDK_MAXSCRIPT_LIBRARY}
      ${MAXSDK_PARAMBLK2_LIBRARY}
      ${MAXSDK_BMM_LIBRARY} )

else(MAXSDK_FOUND)
    set(MAXSDK_LIBRARIES)
endif(MAXSDK_FOUND)

mark_as_advanced(MAXSDK_INCLUDE_DIR MAXSDK_LIBRARY)


================================================
FILE: code/CMakeModules/FindCEGUI.cmake
================================================
# - Locate CEGUI library
# This module defines
#  CEGUI_LIBRARY, the library to link against
#  CEGUI_FOUND, if false, do not try to link to CEGUI
#  CEGUI_INCLUDE_DIRS, where to find headers.

IF(CEGUI_LIBRARY AND CEGUI_INCLUDE_DIRS)
  # in cache already
  SET(CEGUI_FIND_QUIETLY TRUE)
ENDIF(CEGUI_LIBRARY AND CEGUI_INCLUDE_DIRS)


FIND_PATH(CEGUI_INCLUDE_DIRS
  CEGUI
  PATHS
  $ENV{CEGUI_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES cegui CEGUI
)

FIND_LIBRARY(CEGUI_LIBRARY
  NAMES CEGUIBase
  PATHS
  $ENV{CEGUI_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

GET_FILENAME_COMPONENT(CEGUI_LIB_DIR ${CEGUI_LIBRARY} PATH CACHE)

IF(CEGUI_LIBRARY AND CEGUI_INCLUDE_DIRS)
  SET(CEGUI_FOUND "YES")
  SET(CEGUI_INCLUDE_DIRS "${CEGUI_INCLUDE_DIRS}/CEGUI")
  IF(NOT CEGUI_FIND_QUIETLY)
    MESSAGE(STATUS "Found CEGUI: ${CEGUI_LIBRARY}")
  ENDIF(NOT CEGUI_FIND_QUIETLY)
ELSE(CEGUI_LIBRARY AND CEGUI_INCLUDE_DIRS)
  IF(NOT CEGUI_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find CEGUI!")
  ENDIF(NOT CEGUI_FIND_QUIETLY)
ENDIF(CEGUI_LIBRARY AND CEGUI_INCLUDE_DIRS)


================================================
FILE: code/CMakeModules/FindCppTest.cmake
================================================
#
# Find the CppTest includes and library
#
# This module defines
# CPPTEST_INCLUDE_DIR, where to find tiff.h, etc.
# CPPTEST_LIBRARIES, where to find the CppTest libraries.
# CPPTEST_FOUND, If false, do not try to use CppTest.

# also defined, but not for general use are
IF(CPPTEST_LIBRARIES AND CPPTEST_INCLUDE_DIR)
  # in cache already
  SET(CPPTEST_FIND_QUIETLY TRUE)
ENDIF(CPPTEST_LIBRARIES AND CPPTEST_INCLUDE_DIR)

FIND_PATH(CPPTEST_INCLUDE_DIR 
  cpptest.h
  PATHS
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES cppunit cpptest
)

SET(LIBRARY_NAME_RELEASE cpptest)
SET(LIBRARY_NAME_DEBUG cpptestd)

IF(WITH_STLPORT)
  SET(LIBRARY_NAME_RELEASE cpptest_stlport ${LIBRARY_NAME_RELEASE})
  SET(LIBRARY_NAME_DEBUG cpptest_stlportd ${LIBRARY_NAME_DEBUG})
ENDIF(WITH_STLPORT)

FIND_LIBRARY(CPPTEST_LIBRARY_RELEASE
  ${LIBRARY_NAME_RELEASE}
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_LIBRARY(CPPTEST_LIBRARY_DEBUG
  ${LIBRARY_NAME_DEBUG}
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(CPPTEST_INCLUDE_DIR)
  IF(CPPTEST_LIBRARY_RELEASE)
    SET(CPPTEST_FOUND TRUE)

    SET(CPPTEST_LIBRARIES "optimized;${CPPTEST_LIBRARY_RELEASE}")
    IF(CPPTEST_LIBRARY_DEBUG)
      SET(CPPTEST_LIBRARIES "${CPPTEST_LIBRARIES};debug;${CPPTEST_LIBRARY_DEBUG}")
    ENDIF(CPPTEST_LIBRARY_DEBUG)
  ENDIF(CPPTEST_LIBRARY_RELEASE)
ENDIF(CPPTEST_INCLUDE_DIR)

IF(CPPTEST_FOUND)
  IF(NOT CPPTEST_FIND_QUIETLY)
    MESSAGE(STATUS "Found CppTest: ${CPPTEST_LIBRARIES}")
  ENDIF(NOT CPPTEST_FIND_QUIETLY)
ELSE(CPPTEST_FOUND)
  IF(NOT CPPTEST_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find CppTest!")
  ENDIF(NOT CPPTEST_FIND_QUIETLY)
ENDIF(CPPTEST_FOUND)

MARK_AS_ADVANCED(CPPTEST_LIBRARY_RELEASE CPPTEST_LIBRARY_DEBUG)


================================================
FILE: code/CMakeModules/FindCrashRpt.cmake
================================================
# - Locate CrashRpt library
# This module defines
#  CrashRpt_LIBRARIES, the libraries to link against
#  CrashRpt_FOUND, if false, do not try to link to CrashRpt
#  CrashRpt_INCLUDE_DIR, where to find headers.

IF(CrashRpt_LIBRARIES AND CrashRpt_INCLUDE_DIR)
  # in cache already
  SET(CrashRpt_FIND_QUIETLY TRUE)
ENDIF(CrashRpt_LIBRARIES AND CrashRpt_INCLUDE_DIR)

FIND_PATH(CrashRpt_INCLUDE_DIR CrashRpt.h
  PATH_SUFFIXES crashrpt CrashRpt
  $ENV{CrashRpt_DIR}/include
)

FIND_LIBRARY(CrashRpt_LIBRARIES
  NAMES CrashRpt1402
  PATHS
  $ENV{CrashRpt_DIR}/lib
)

IF(CrashRpt_INCLUDE_DIR)
  IF(CrashRpt_LIBRARIES)
    SET(CrashRpt_FOUND TRUE)
  ENDIF(CrashRpt_LIBRARIES)
ENDIF(CrashRpt_INCLUDE_DIR)

IF(CrashRpt_FOUND)
  IF(NOT CrashRpt_FIND_QUIETLY)
    MESSAGE(STATUS "Found CrashRpt: ${CrashRpt_INCLUDE_DIR} ${CrashRpt_LIBRARIES}")
  ENDIF(NOT CrashRpt_FIND_QUIETLY)
ELSE(CrashRpt_FOUND)
  IF(NOT CrashRpt_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find CrashRpt!")
  ENDIF(NOT CrashRpt_FIND_QUIETLY)
ENDIF(CrashRpt_FOUND)

MARK_AS_ADVANCED(CrashRpt_LIBRARIES)


================================================
FILE: code/CMakeModules/FindCurl.cmake
================================================
# - Locate Curl library
# This module defines
# CURL_INCLUDE_DIRS   - where to find curl/curl.h, etc.
# CURL_LIBRARIES      - List of libraries when using curl.
# CURL_FOUND          - True if curl found.
# CURL_VERSION_STRING - the version of curl found (since CMake 2.8.8)

IF(CURL_LIBRARY AND CURL_INCLUDE_DIR)
  # in cache already
  SET(CURL_FIND_QUIETLY TRUE)
ENDIF(CURL_LIBRARY AND CURL_INCLUDE_DIR)

FIND_PATH(CURL_INCLUDE_DIR curl.h
  PATH_SUFFIXES curl
  $ENV{CURL_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  /usr/local/include/curl
  /mingw/include
)

SET(LIBRARY_NAME_RELEASE curl libcurl)
SET(LIBRARY_NAME_DEBUG curl libcurl)

FIND_LIBRARY(CURL_LIBRARY_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{CURL_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/lib64
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/curl
  /mingw/lib
)

FIND_LIBRARY(CURL_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{CURL_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/curl
  /mingw/lib
)

IF(CURL_INCLUDE_DIR)
  IF(CURL_LIBRARY_RELEASE AND CURL_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(CURL_FOUND TRUE)
    SET(CURL_LIBRARY optimized ${CURL_LIBRARY_RELEASE} debug ${CURL_LIBRARY_DEBUG})
  ELSEIF(CURL_LIBRARY_RELEASE)
    # Normal case
    SET(CURL_FOUND TRUE)
    SET(CURL_LIBRARY ${CURL_LIBRARY_RELEASE})
  ELSEIF(CURL_LIBRARY_DEBUG)
    # Case where Curl is compiled from sources (debug version is compiled by default)
    SET(CURL_FOUND TRUE)
    SET(CURL_LIBRARY ${CURL_LIBRARY_DEBUG})
  ENDIF(CURL_LIBRARY_RELEASE AND CURL_LIBRARY_DEBUG)
ENDIF(CURL_INCLUDE_DIR)

IF(CURL_FOUND)
  IF(NOT CURL_FIND_QUIETLY)
    MESSAGE(STATUS "Found Curl: ${CURL_INCLUDE_DIR} ${CURL_LIBRARY}")
  ENDIF(NOT CURL_FIND_QUIETLY)
ELSE(CURL_FOUND)
  IF(NOT CURL_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find Curl! INCLUDE: ${CURL_INCLUDE_DIR}  LIB:${CURL_LIBRARY}  ")
  ENDIF(NOT CURL_FIND_QUIETLY)
ENDIF(CURL_FOUND)

MARK_AS_ADVANCED(CURL_LIBRARY_RELEASE CURL_LIBRARY_DEBUG)


IF(WIN32)
  ADD_DEFINITIONS(-DCURL_STATICLIB)
ENDIF(WIN32)





================================================
FILE: code/CMakeModules/FindCustomMFC.cmake
================================================
# - Locate MFC libraries
# This module defines
#  MFC_FOUND, if false, do not try to link to MFC
#  MFC_LIBRARY_DIR, where to find libraries
#  MFC_INCLUDE_DIR, where to find headers

IF(CustomMFC_FIND_REQUIRED)
  SET(MFC_FIND_REQUIRED TRUE)
ENDIF(CustomMFC_FIND_REQUIRED)

IF(NOT MFC_DIR)
  # If MFC have been found, remember their directory
  IF(VC_DIR)
    SET(MFC_STANDARD_DIR "${VC_DIR}/atlmfc")
  ENDIF(VC_DIR)

  FIND_PATH(MFC_DIR
    include/afxwin.h
    HINTS
    ${MFC_STANDARD_DIR}
  )
ENDIF(NOT MFC_DIR)

# Display an error message if MFC are not found, MFC_FOUND is updated
# User will be able to update MFC_DIR to the correct directory
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MFC DEFAULT_MSG MFC_DIR)

IF(MFC_FOUND)
  SET(MFC_INCLUDE_DIR "${MFC_DIR}/include")
  INCLUDE_DIRECTORIES(${MFC_INCLUDE_DIR})

  # Using 32 or 64 bits libraries
  IF(TARGET_X64)
    SET(MFC_LIBRARY_DIR "${MFC_DIR}/lib/amd64")
  ELSE(TARGET_X64)
    SET(MFC_LIBRARY_DIR "${MFC_DIR}/lib")
  ENDIF(TARGET_X64)

  # Add MFC libraries directory to default library path
  LINK_DIRECTORIES(${MFC_LIBRARY_DIR})

  # Set definitions for using MFC in DLL
  SET(MFC_DEFINITIONS -D_AFXDLL)

  # Set CMake flag to use MFC DLL
  SET(CMAKE_MFC_FLAG 2)
ENDIF(MFC_FOUND)

# TODO: create a macro which set MFC_DEFINITIONS, MFC_LIBRARY_DIR and MFC_INCLUDE_DIR for a project


================================================
FILE: code/CMakeModules/FindDInput.cmake
================================================
# - Find DirectInput
# Find the DirectSound includes and libraries
#
#  DINPUT_INCLUDE_DIR - where to find dinput.h
#  DINPUT_LIBRARIES   - List of libraries when using DirectInput.
#  DINPUT_FOUND       - True if DirectInput found.

if(DINPUT_INCLUDE_DIR)
    # Already in cache, be silent
    set(DINPUT_FIND_QUIETLY TRUE)
endif(DINPUT_INCLUDE_DIR)

find_path(DINPUT_INCLUDE_DIR dinput.h 
  "$ENV{DXSDK_DIR}" 
  "$ENV{DXSDK_DIR}/Include"
)

find_library(DINPUT_LIBRARY 
  NAMES dinput dinput8 
  PATHS
  "$ENV{DXSDK_DIR}"
  "$ENV{DXSDK_DIR}/Lib"
  "$ENV{DXSDK_DIR}/Lib/x86"
)

# Handle the QUIETLY and REQUIRED arguments and set DINPUT_FOUND to TRUE if
# all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(DINPUT DEFAULT_MSG
    DINPUT_INCLUDE_DIR DINPUT_LIBRARY)

if(DINPUT_FOUND)
    set(DINPUT_LIBRARIES ${DINPUT_LIBRARY})
else(DINPUT_FOUND)
    set(DINPUT_LIBRARIES)
endif(DINPUT_FOUND)

mark_as_advanced(DINPUT_INCLUDE_DIR DINPUT_LIBRARY)


================================================
FILE: code/CMakeModules/FindDSound.cmake
================================================
# - Find DirectSound
# Find the DirectSound includes and libraries
#
#  DSOUND_INCLUDE_DIR - where to find dsound.h
#  DSOUND_LIBRARIES   - List of libraries when using dsound.
#  DSOUND_FOUND       - True if dsound found.

if(DSOUND_INCLUDE_DIR)
    # Already in cache, be silent
    set(DSOUND_FIND_QUIETLY TRUE)
endif(DSOUND_INCLUDE_DIR)

find_path(DSOUND_INCLUDE_DIR dsound.h 
  "$ENV{DXSDK_DIR}" 
  "$ENV{DXSDK_DIR}/Include"
)

find_library(DSOUND_LIBRARY dsound
  "$ENV{DXSDK_DIR}"
  "$ENV{DXSDK_DIR}/Lib"
  "$ENV{DXSDK_DIR}/Lib/x86"
)

# Handle the QUIETLY and REQUIRED arguments and set DSOUND_FOUND to TRUE if
# all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(DSOUND DEFAULT_MSG
    DSOUND_INCLUDE_DIR DSOUND_LIBRARY)

if(DSOUND_FOUND)
    set(DSOUND_LIBRARIES ${DSOUND_LIBRARY})
else(DSOUND_FOUND)
    set(DSOUND_LIBRARIES)
endif(DSOUND_FOUND)

mark_as_advanced(DSOUND_INCLUDE_DIR DSOUND_LIBRARY)


================================================
FILE: code/CMakeModules/FindDirectXSDK.cmake
================================================
# - Find DirectX
# Find the DirectX includes and libraries
#
#  DXSDK_INCLUDE_DIR - where to find baseinterface.h
#  DXSDK_LIBRARIES   - List of libraries when using 3DSMAX.
#  DXSDK_FOUND       - True if MAX SDK found.

IF(DXSDK_DIR)
  # Already in cache, be silent
  SET(DXSDK_FIND_QUIETLY TRUE)
ENDIF(DXSDK_DIR)

FIND_PATH(DXSDK_DIR
  "Include/dxsdkver.h"
  PATHS
  "$ENV{DXSDK_DIR}"
  "C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)"
  "C:/Program Files/Microsoft DirectX SDK (June 2010)"
  "C:/Program Files (x86)/Microsoft DirectX SDK (February 2010)"
  "C:/Program Files/Microsoft DirectX SDK (February 2010)"
  "C:/Program Files (x86)/Microsoft DirectX SDK (November 2007)"
  "C:/Program Files/Microsoft DirectX SDK (November 2007)"
  "C:/Program Files (x86)/Microsoft DirectX SDK"
  "C:/Program Files/Microsoft DirectX SDK"
)

MACRO(FIND_DXSDK_LIBRARY MYLIBRARY MYLIBRARYNAME)        
  FIND_LIBRARY(${MYLIBRARY}
    NAMES ${MYLIBRARYNAME}
    HINTS
    "${DXSDK_LIBRARY_DIR}"
    )
ENDMACRO(FIND_DXSDK_LIBRARY MYLIBRARY MYLIBRARYNAME)

IF(DXSDK_DIR)
  SET(DXSDK_INCLUDE_DIR "${DXSDK_DIR}/Include")

  IF(TARGET_X64)
    SET(DXSDK_LIBRARY_DIRS ${DXSDK_DIR}/Lib/x64 ${DXSDK_DIR}/lib/amd64)
  ELSE(TARGET_X64)
    SET(DXSDK_LIBRARY_DIRS ${DXSDK_DIR}/Lib/x86 ${DXSDK_DIR}/lib)
  ENDIF(TARGET_X64)

  FIND_PATH(DXSDK_LIBRARY_DIR
    dxguid.lib
    PATHS
    ${DXSDK_LIBRARY_DIRS})

  FIND_DXSDK_LIBRARY(DXSDK_GUID_LIBRARY dxguid)
  FIND_DXSDK_LIBRARY(DXSDK_DINPUT_LIBRARY dinput8)
  FIND_DXSDK_LIBRARY(DXSDK_DSOUND_LIBRARY dsound)
  FIND_DXSDK_LIBRARY(DXSDK_XAUDIO_LIBRARY x3daudio)
  FIND_DXSDK_LIBRARY(DXSDK_D3DX9_LIBRARY d3dx9)
  FIND_DXSDK_LIBRARY(DXSDK_D3D9_LIBRARY d3d9)
ENDIF(DXSDK_DIR)

# Handle the QUIETLY and REQUIRED arguments and set DXSDK_FOUND to TRUE if
# all listed variables are TRUE.
INCLUDE(FindPackageHandleStandardArgs)

FIND_PACKAGE_HANDLE_STANDARD_ARGS(DirectXSDK DEFAULT_MSG DXSDK_DIR DXSDK_GUID_LIBRARY DXSDK_DINPUT_LIBRARY)

MARK_AS_ADVANCED(DXSDK_INCLUDE_DIR
  DXSDK_GUID_LIBRARY
  DXSDK_DINPUT_LIBRARY
  DXSDK_DSOUND_LIBRARY
  DXSDK_XAUDIO_LIBRARY
  DXSDK_D3DX9_LIBRARY
  DXSDK_D3D9_LIBRARY)


================================================
FILE: code/CMakeModules/FindEFXUtil.cmake
================================================
# - Locate EFX-Util library
# This module defines
#  EFXUTIL_LIBRARY, the library to link against
#  EFXUTIL_FOUND, if false, do not try to link to EFX-Util
#  EFXUTIL_INCLUDE_DIR, where to find headers.

IF(EFXUTIL_LIBRARY AND EFXUTIL_INCLUDE_DIR)
  # in cache already
  SET(EFXUTIL_FIND_QUIETLY TRUE)
ENDIF(EFXUTIL_LIBRARY AND EFXUTIL_INCLUDE_DIR)


FIND_PATH(EFXUTIL_INCLUDE_DIR
  EFX-Util.h
  PATHS
  $ENV{EFXUTIL_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES AL
)

FIND_LIBRARY(EFXUTIL_LIBRARY
  NAMES EFX-Util efxutil libefxutil
  PATHS
  $ENV{EFXUTIL_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(EFXUTIL_LIBRARY AND EFXUTIL_INCLUDE_DIR)
  SET(EFXUTIL_FOUND "YES")
  IF(NOT EFXUTIL_FIND_QUIETLY)
    MESSAGE(STATUS "Found EFX-Util: ${EFXUTIL_LIBRARY}")
  ENDIF(NOT EFXUTIL_FIND_QUIETLY)
ELSE(EFXUTIL_LIBRARY AND EFXUTIL_INCLUDE_DIR)
  IF(NOT EFXUTIL_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find EFX-Util!")
  ENDIF(NOT EFXUTIL_FIND_QUIETLY)
ENDIF(EFXUTIL_LIBRARY AND EFXUTIL_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindExternal.cmake
================================================
# Look for a directory containing external libraries.
#
# The following values are defined
# EXTERNAL_PATH         - where to find external
# EXTERNAL_INCLUDE_PATH - where to find external includes
# EXTERNAL_BINARY_PATH  - where to find external binaries
# EXTERNAL_LIBRARY_PATH - where to find external libraries
# EXTERNAL_FOUND        - True if the external libraries are available

SET(EXTERNAL_TEMP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external ${CMAKE_CURRENT_SOURCE_DIR}/../external ${CMAKE_CURRENT_SOURCE_DIR}/3rdParty ${CMAKE_CURRENT_SOURCE_DIR}/../3rdParty ${EXTERNAL_PATH})
SET(EXTERNAL_TEMP_FILE "include/libwww/wwwconf.h")
SET(EXTERNAL_NAME "external")

# If using STLport preprend external_stlport
IF(WITH_STLPORT)
  SET(EXTERNAL_TEMP_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external_stlport ${CMAKE_CURRENT_SOURCE_DIR}/../external_stlport ${EXTERNAL_TEMP_PATH})
  SET(EXTERNAL_TEMP_FILE "include/stlport/string")
  SET(EXTERNAL_NAME "external with STLport")
ENDIF(WITH_STLPORT)

FIND_PATH(EXTERNAL_PATH
  ${EXTERNAL_TEMP_FILE}
  PATHS
  $ENV{EXTERNAL_PATH}
  ${EXTERNAL_TEMP_PATH}
  /usr/local
  /usr
  /sw
  /opt/local
  /opt/csw
  /opt
)

IF(EXTERNAL_PATH)
  SET(EXTERNAL_FOUND TRUE)
  SET(EXTERNAL_INCLUDE_PATH "${EXTERNAL_PATH}/include")

  # Using 32 or 64 bits binaries
  IF(TARGET_X64 AND WIN32)
    SET(EXTERNAL_BINARY_PATH "${EXTERNAL_PATH}/bin64")
  ELSE(TARGET_X64 AND WIN32)
    SET(EXTERNAL_BINARY_PATH "${EXTERNAL_PATH}/bin")
  ENDIF(TARGET_X64 AND WIN32)

  # Using 32 or 64 bits libraries
  IF(TARGET_X64 AND WIN32)
    SET(EXTERNAL_LIBRARY_PATH "${EXTERNAL_PATH}/lib64")
  ELSE(TARGET_X64 AND WIN32)
    SET(EXTERNAL_LIBRARY_PATH "${EXTERNAL_PATH}/lib")
  ENDIF(TARGET_X64 AND WIN32)

  SET(CMAKE_INCLUDE_PATH "${EXTERNAL_INCLUDE_PATH};${CMAKE_INCLUDE_PATH}")
  # Stupid hack for FindOpenAL.cmake
  SET(CMAKE_INCLUDE_PATH "${EXTERNAL_PATH};${CMAKE_INCLUDE_PATH}")
  SET(CMAKE_LIBRARY_PATH "${EXTERNAL_LIBRARY_PATH};${CMAKE_LIBRARY_PATH}")
ENDIF(EXTERNAL_PATH)

IF(EXTERNAL_FOUND)
  IF(NOT External_FIND_QUIETLY)
    MESSAGE(STATUS "Found ${EXTERNAL_NAME}: ${EXTERNAL_PATH}")
  ENDIF(NOT External_FIND_QUIETLY)
ELSE(EXTERNAL_FOUND)
  IF(External_FIND_REQUIRED)
    MESSAGE(FATAL_ERROR "Unable to find ${EXTERNAL_NAME}!")
  ELSE(External_FIND_REQUIRED)
    IF(NOT External_FIND_QUIETLY)
      MESSAGE(STATUS "Warning: Unable to find ${EXTERNAL_NAME}!")
    ENDIF(NOT External_FIND_QUIETLY)
  ENDIF(External_FIND_REQUIRED)
ENDIF(EXTERNAL_FOUND)

MARK_AS_ADVANCED(EXTERNAL_INCLUDE_PATH EXTERNAL_BINARY_PATH EXTERNAL_LIBRARY_PATH)


================================================
FILE: code/CMakeModules/FindFMOD.cmake
================================================
# - Locate FMOD library
# This module defines
#  FMOD_LIBRARY, the library to link against
#  FMOD_FOUND, if false, do not try to link to FMOD
#  FMOD_INCLUDE_DIR, where to find headers.

IF(FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
  # in cache already
  SET(FMOD_FIND_QUIETLY TRUE)
ENDIF(FMOD_LIBRARY AND FMOD_INCLUDE_DIR)


FIND_PATH(FMOD_INCLUDE_DIR
  fmod.h
  PATHS
  $ENV{FMOD_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES fmod fmod3
)

IF(TARGET_X64)
  SET(FMOD_LIBRARY_NAMES fmod64 fmod)
ELSE(TARGET_X64)
  SET(FMOD_LIBRARY_NAMES fmodvc fmod)
ENDIF(TARGET_X64)

FIND_LIBRARY(FMOD_LIBRARY
  NAMES
  ${FMOD_LIBRARY_NAMES}
  PATHS
  $ENV{FMOD_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
  SET(FMOD_FOUND "YES")
  IF(NOT FMOD_FIND_QUIETLY)
    MESSAGE(STATUS "Found FMOD: ${FMOD_LIBRARY}")
  ENDIF(NOT FMOD_FIND_QUIETLY)
ELSE(FMOD_LIBRARY AND FMOD_INCLUDE_DIR)
  IF(NOT FMOD_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find FMOD!")
  ENDIF(NOT FMOD_FIND_QUIETLY)
ENDIF(FMOD_LIBRARY AND FMOD_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindFreeType.cmake
================================================
# - Locate FreeType library
# This module defines
#  FREETYPE_LIBRARIES, libraries to link against
#  FREETYPE_FOUND, if false, do not try to link to FREETYPE
#  FREETYPE_INCLUDE_DIRS, where to find headers.

IF(FREETYPE_LIBRARIES AND FREETYPE_INCLUDE_DIRS)
  # in cache already
  SET(Freetype_FIND_QUIETLY TRUE)
ENDIF(FREETYPE_LIBRARIES AND FREETYPE_INCLUDE_DIRS)

FIND_PATH(FREETYPE_INCLUDE_DIRS
  freetype
  PATHS
  $ENV{FREETYPE_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES freetype2
)

IF(NOT FREETYPE_INCLUDE_DIRS)
  SET(FREETYPE_INCLUDE_DIRS "")
ENDIF(NOT FREETYPE_INCLUDE_DIRS)

# ft2build.h does not reside in the freetype include dir
FIND_PATH(FREETYPE_ADDITIONAL_INCLUDE_DIR
  ft2build.h
  PATHS
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES freetype2
)

# combine both include directories into one variable
IF(FREETYPE_ADDITIONAL_INCLUDE_DIR)
  SET(FREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIRS} ${FREETYPE_ADDITIONAL_INCLUDE_DIR})
ENDIF(FREETYPE_ADDITIONAL_INCLUDE_DIR)

FIND_LIBRARY(FREETYPE_LIBRARY_RELEASE
  NAMES freetype libfreetype freetype219 freetype246
  PATHS
  $ENV{FREETYPE_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/lib/x86_64-linux-gnu
)

FIND_LIBRARY(FREETYPE_LIBRARY_DEBUG
  NAMES freetyped libfreetyped freetype219d freetype246d
  PATHS
  $ENV{FREETYPE_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/lib/x86_64-linux-gnu
)

IF(FREETYPE_INCLUDE_DIRS)
  IF(FREETYPE_LIBRARY_RELEASE AND FREETYPE_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(FREETYPE_FOUND ON)
    SET(FREETYPE_LIBRARIES optimized ${FREETYPE_LIBRARY_RELEASE} debug ${FREETYPE_LIBRARY_DEBUG})
  ELSEIF(FREETYPE_LIBRARY_RELEASE)
    # Normal case
    SET(FREETYPE_FOUND ON)
    SET(FREETYPE_LIBRARIES ${FREETYPE_LIBRARY_RELEASE})
  ELSEIF(FREETYPE_LIBRARY_DEBUG)
    # Case where Freetype is compiled from sources (debug version is compiled by default)
    SET(FREETYPE_FOUND ON)
    SET(FREETYPE_LIBRARIES ${FREETYPE_LIBRARY_DEBUG})
  ENDIF(FREETYPE_LIBRARY_RELEASE AND FREETYPE_LIBRARY_DEBUG)
ENDIF(FREETYPE_INCLUDE_DIRS)

IF(FREETYPE_FOUND)
  IF(WITH_STATIC_EXTERNAL AND APPLE)
    FIND_PACKAGE(BZip2)
    IF(BZIP2_FOUND)
      SET(FREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIRS} ${BZIP2_INCLUDE_DIR})
      SET(FREETYPE_LIBRARIES ${FREETYPE_LIBRARIES} ${BZIP2_LIBRARIES})
    ENDIF(BZIP2_FOUND)
  ENDIF(WITH_STATIC_EXTERNAL AND APPLE)
  IF(NOT Freetype_FIND_QUIETLY)
    MESSAGE(STATUS "Found FreeType: ${FREETYPE_LIBRARIES}")
  ENDIF(NOT Freetype_FIND_QUIETLY)
ELSE(FREETYPE_LIBRARY AND FREETYPE_INCLUDE_DIRS)
  IF(NOT Freetype_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find FreeType!")
  ENDIF(NOT Freetype_FIND_QUIETLY)
ENDIF(FREETYPE_FOUND)


================================================
FILE: code/CMakeModules/FindGTK2.cmake
================================================
# - Try to find GTK2
# Once done this will define
#
#  GTK2_FOUND - System has GTK2
#  GTK2_INCLUDE_DIRS - GTK2 include directory
#  GTK2_LIBRARIES - Link these to use GTK2
#  GTK2_LIBRARY_DIRS - The path to where the GTK2 library files are.
#  GTK2_DEFINITIONS - Compiler switches required for using GTK2
#
#  Copyright (c) 2007 Andreas Schneider <mail@cynapses.org>
#
#  Redistribution and use is allowed according to the terms of the New
#  BSD license.
#  For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#

set(GTK2_DEBUG ON)

macro(GTK2_DEBUG_MESSAGE _message)
  if (GTK2_DEBUG)
    message(STATUS "(DEBUG) ${_message}")
  endif (GTK2_DEBUG)
endmacro(GTK2_DEBUG_MESSAGE _message)

if (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
  # in cache already
  set(GTK2_FOUND TRUE)
else (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)
  if (UNIX)
    # use pkg-config to get the directories and then use these values
    # in the FIND_PATH() and FIND_LIBRARY() calls
    include(UsePkgConfig)

    pkgconfig(gtk+-2.0 _GTK2IncDir _GTK2LinkDir _GTK2LinkFlags _GTK2Cflags)

    find_path(GTK2_GTK_INCLUDE_DIR
      NAMES
        gtk/gtk.h
      PATHS
        $ENV{GTK2_HOME}
        ${_GTK2IncDir}
        /usr/include/gtk-2.0
        /usr/local/include/gtk-2.0
        /opt/include/gtk-2.0
        /opt/gnome/include/gtk-2.0
        /sw/include/gtk-2.0
    )
    gtk2_debug_message("GTK2_GTK_INCLUDE_DIR is ${GTK2_GTK_INCLUDE_DIR}")

    # Some Linux distributions (e.g. Red Hat) have glibconfig.h
    # and glib.h in different directories, so we need to look
    # for both.
    #  - Atanas Georgiev <atanas@cs.columbia.edu>
    pkgconfig(glib-2.0 _GLIB2IncDir _GLIB2LinkDir _GLIB2LinkFlags _GLIB2Cflags)
    pkgconfig(gmodule-2.0 _GMODULE2IncDir _GMODULE2LinkDir _GMODULE2LinkFlags _GMODULE2Cflags)

    find_path(GTK2_GLIBCONFIG_INCLUDE_DIR
      NAMES
        glibconfig.h
      PATHS
        ${_GLIB2IncDir}
        ${_GMODULE2IncDir}
        /opt/gnome/lib64/glib-2.0/include
        /opt/gnome/lib/glib-2.0/include
        /opt/lib/glib-2.0/include
        /usr/lib64/glib-2.0/include
        /usr/lib/glib-2.0/include
        /sw/lib/glib-2.0/include
        /usr/lib/x86_64-linux-gnu/glib-2.0/include
		/usr/lib/arm-linux-gnueabihf/glib-2.0/include
    )
    gtk2_debug_message("GTK2_GLIBCONFIG_INCLUDE_DIR is ${GTK2_GLIBCONFIG_INCLUDE_DIR}")

    find_path(GTK2_GLIB_INCLUDE_DIR
      NAMES
        glib.h
      PATHS
        ${_GLIB2IncDir}
        ${_GMODULE2IncDir}
        /opt/include/glib-2.0
        /opt/gnome/include/glib-2.0
        /usr/include/glib-2.0
        /sw/include/glib-2.0
    )
    gtk2_debug_message("GTK2_GLIB_INCLUDE_DIR is ${GTK2_GLIB_INCLUDE_DIR}")

    pkgconfig(gdk-2.0 _GDK2IncDir _GDK2LinkDir _GDK2LinkFlags _GDK2Cflags)

    find_path(GTK2_GDK_INCLUDE_DIR
      NAMES
        gdkconfig.h
      PATHS
        ${_GDK2IncDir}
        /opt/gnome/lib/gtk-2.0/include
        /opt/gnome/lib64/gtk-2.0/include
        /opt/lib/gtk-2.0/include
        /usr/lib/gtk-2.0/include
        /usr/lib64/gtk-2.0/include
        /sw/lib/gtk-2.0/include
        /usr/lib/x86_64-linux-gnu/gtk-2.0/include
		/usr/lib/arm-linux-gnueabihf/gtk-2.0/include
    )
    gtk2_debug_message("GTK2_GDK_INCLUDE_DIR is ${GTK2_GDK_INCLUDE_DIR}")

    find_path(GTK2_GDK_PIXBUF_INCLUDE_DIR
      NAMES
        gdk-pixbuf/gdk-pixbuf.h
      PATHS
        ${_GDK2IncDir}
        /opt/gnome/lib/gtk-2.0/include
        /opt/gnome/lib64/gtk-2.0/include
        /opt/lib/gtk-2.0/include
        /usr/lib/gtk-2.0/include
        /usr/lib64/gtk-2.0/include
        /sw/lib/gtk-2.0/include
        /usr/include/gdk-pixbuf-2.0
    )
    gtk2_debug_message("GTK2_GDK_PIXBUF_INCLUDE_DIR is ${GTK2_GDK_PIXBUF_INCLUDE_DIR}")

    find_path(GTK2_GTKGL_INCLUDE_DIR
      NAMES
        gtkgl/gtkglarea.h
      PATHS
        ${_GLIB2IncDir}
        /usr/include
		/usr/include/gtkgl-2.0
        /usr/local/include
        /usr/openwin/share/include
        /opt/gnome/include
        /opt/include
        /sw/include
    )
    gtk2_debug_message("GTK2_GTKGL_INCLUDE_DIR is ${GTK2_GTKGL_INCLUDE_DIR}")

    pkgconfig(libglade-2.0 _GLADEIncDir _GLADELinkDir _GLADELinkFlags _GLADECflags)

    find_path(GTK2_GLADE_INCLUDE_DIR
      NAMES
        glade/glade.h
      PATHS
        ${_GLADEIncDir}
        /opt/gnome/include/libglade-2.0
        /usr/include/libglade-2.0
        /opt/include/libglade-2.0
        /sw/include/libglade-2.0
    )
    gtk2_debug_message("GTK2_GLADE_INCLUDE_DIR is ${GTK2_GLADE_INCLUDE_DIR}")

    pkgconfig(pango _PANGOIncDir _PANGOLinkDir _PANGOLinkFlags _PANGOCflags)

    find_path(GTK2_PANGO_INCLUDE_DIR
      NAMES
        pango/pango.h
      PATHS
        ${_PANGOIncDir}
        /usr/include/pango-1.0
        /opt/gnome/include/pango-1.0
        /opt/include/pango-1.0
        /sw/include/pango-1.0
    )
    gtk2_debug_message("GTK2_PANGO_INCLUDE_DIR is ${GTK2_PANGO_INCLUDE_DIR}")

    pkgconfig(cairo _CAIROIncDir _CAIROLinkDir _CAIROLinkFlags _CAIROCflags)

    find_path(GTK2_CAIRO_INCLUDE_DIR
      NAMES
        cairo.h
      PATHS
        ${_CAIROIncDir}
        /opt/gnome/include/cairo
        /usr/include
        /usr/include/cairo
        /opt/include
        /opt/include/cairo
        /sw/include
        /sw/include/cairo
    )
    gtk2_debug_message("GTK2_CAIRO_INCLUDE_DIR is ${GTK2_CAIRO_INCLUDE_DIR}")

    pkgconfig(atk _ATKIncDir _ATKLinkDir _ATKLinkFlags _ATKCflags)

    find_path(GTK2_ATK_INCLUDE_DIR
      NAMES
        atk/atk.h
      PATHS
        ${_ATKIncDir}
        /opt/gnome/include/atk-1.0
        /usr/include/atk-1.0
        /opt/include/atk-1.0
        /sw/include/atk-1.0
    )
    gtk2_debug_message("GTK2_ATK_INCLUDE_DIR is ${GTK2_ATK_INCLUDE_DIR}")

    find_library(GTK2_GTK_LIBRARY
      NAMES
        gtk-x11-2.0
      PATHS
        ${_GTK2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GTK_LIBRARY is ${GTK2_GTK_LIBRARY}")

    find_library(GTK2_GDK_LIBRARY
      NAMES
        gdk-x11-2.0
      PATHS
        ${_GDK2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GDK_LIBRARY is ${GTK2_GDK_LIBRARY}")

    find_library(GTK2_GDK_PIXBUF_LIBRARY
      NAMES
        gdk_pixbuf-2.0
      PATHS
        ${_GDK2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GDK_PIXBUF_LIBRARY is ${GTK2_GDK_PIXBUF_LIBRARY}")

    find_library(GTK2_GMODULE_LIBRARY
      NAMES
        gmodule-2.0
      PATHS
        ${_GMODULE2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GMODULE_LIBRARY is ${GTK2_GMODULE_LIBRARY}")

    find_library(GTK2_GTHREAD_LIBRARY
      NAMES
        gthread-2.0
      PATHS
        ${_GTK2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GTHREAD_LIBRARY is ${GTK2_GTHREAD_LIBRARY}")

    find_library(GTK2_GOBJECT_LIBRARY
      NAMES
        gobject-2.0
      PATHS
        ${_GTK2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GOBJECT_LIBRARY is ${GTK2_GOBJECT_LIBRARY}")

    find_library(GTK2_GLIB_LIBRARY
      NAMES
        glib-2.0
      PATHS
        ${_GLIB2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GLIB_LIBRARY is ${GTK2_GLIB_LIBRARY}")

    find_library(GTK2_GTKGL_LIBRARY
      NAMES
        gtkgl-2.0
      PATHS
        ${_GTK2LinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GTKGL_LIBRARY is ${GTK2_GTKGL_LIBRARY}")

    find_library(GTK2_GLADE_LIBRARY
      NAMES
        glade-2.0
      PATHS
        ${_GLADELinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_GLADE_LIBRARY is ${GTK2_GLADE_LIBRARY}")

    find_library(GTK2_PANGO_LIBRARY
      NAMES
        pango-1.0
      PATHS
        ${_PANGOLinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_PANGO_LIBRARY is ${GTK2_PANGO_LIBRARY}")

    find_library(GTK2_CAIRO_LIBRARY
      NAMES
        pangocairo-1.0
      PATHS
        ${_CAIROLinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_PANGO_LIBRARY is ${GTK2_CAIRO_LIBRARY}")

    find_library(GTK2_ATK_LIBRARY
      NAMES
        atk-1.0
      PATHS
        ${_ATKinkDir}
        /usr/lib
        /usr/local/lib
        /usr/openwin/lib
        /usr/X11R6/lib
        /opt/gnome/lib
        /opt/lib
        /sw/lib
    )
    gtk2_debug_message("GTK2_ATK_LIBRARY is ${GTK2_ATK_LIBRARY}")

    set(GTK2_INCLUDE_DIRS
      ${GTK2_GTK_INCLUDE_DIR}
      ${GTK2_GLIBCONFIG_INCLUDE_DIR}
      ${GTK2_GLIB_INCLUDE_DIR}
      ${GTK2_GDK_INCLUDE_DIR}
      ${GTK2_GDK_PIXBUF_INCLUDE_DIR}
      ${GTK2_GLADE_INCLUDE_DIR}
      ${GTK2_PANGO_INCLUDE_DIR}
      ${GTK2_CAIRO_INCLUDE_DIR}
      ${GTK2_ATK_INCLUDE_DIR}
    )

    if (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR)
      if (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR AND GTK2_GDK_PIXBUF_INCLUDE_DIR)
        if (GTK2_GMODULE_LIBRARY)
          if (GTK2_GTHREAD_LIBRARY)
            if (GTK2_GOBJECT_LIBRARY)
              if (GTK2_GLADE_LIBRARY AND GTK2_GLADE_INCLUDE_DIR)
                if (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR)
                  if (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR)
                    if (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR)

                      # set GTK2 libraries
                      set (GTK2_LIBRARIES
                        ${GTK2_GTK_LIBRARY}
                        ${GTK2_GDK_LIBRARY}
                        ${GTK2_GDK_PIXBUF_LIBRARY}
                        ${GTK2_GMODULE_LIBRARY}
                        ${GTK2_GTHREAD_LIBRARY}
                        ${GTK2_GOBJECT_LIBRARY}
                        ${GTK2_GLADE_LIBRARY}
                        ${GTK2_PANGO_LIBRARY}
                        ${GTK2_CAIRO_LIBRARY}
                        ${GTK2_ATK_LIBRARY}
                      )

                      # check for gtkgl support
                      if (GTK2_GTKGL_LIBRARY AND GTK2_GTKGL_INCLUDE_DIR)
                        set(GTK2_GTKGL_FOUND TRUE)

                        set(GTK2_INCLUDE_DIRS
                          ${GTK2_INCLUDE_DIRS}
                          ${GTK2_GTKGL_INCLUDE_DIR}
                        )

                        set(GTK2_LIBRARIES
                          ${GTK2_LIBRARIES}
                          ${GTK2_GTKGL_LIBRARY}
                        )
                      endif (GTK2_GTKGL_LIBRARY AND GTK2_GTKGL_INCLUDE_DIR)

                    else (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR)
                      message(SEND_ERROR "Could not find ATK")
                    endif (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR)
                  else (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR)
                    message(SEND_ERROR "Could not find CAIRO")
                  endif (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR)
                else (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR)
                  message(SEND_ERROR "Could not find PANGO")
                endif (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR)
              else (GTK2_GLADE_LIBRARY AND GTK2_GLADE_INCLUDE_DIR)
                message(SEND_ERROR "Could not find GLADE")
              endif (GTK2_GLADE_LIBRARY AND GTK2_GLADE_INCLUDE_DIR)
            else (GTK2_GOBJECT_LIBRARY)
              message(SEND_ERROR "Could not find GOBJECT")
            endif (GTK2_GOBJECT_LIBRARY)
          else (GTK2_GTHREAD_LIBRARY)
            message(SEND_ERROR "Could not find GTHREAD")
          endif (GTK2_GTHREAD_LIBRARY)
        else (GTK2_GMODULE_LIBRARY)
          message(SEND_ERROR "Could not find GMODULE")
        endif (GTK2_GMODULE_LIBRARY)
      else (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR AND GTK2_GDK_PIXBUF_INCLUDE_DIR)
        message(SEND_ERROR "Could not find GDK (GDK_PIXBUF)")
      endif (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR AND GTK2_GDK_PIXBUF_INCLUDE_DIR)
    else (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR)
      message(SEND_ERROR "Could not find GTK2-X11")
    endif (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR)

    if (GTK2_INCLUDE_DIRS AND GTK2_LIBRARIES)
       set(GTK2_FOUND TRUE)
    endif (GTK2_INCLUDE_DIRS AND GTK2_LIBRARIES)

    if (GTK2_FOUND)
      if (NOT GTK2_FIND_QUIETLY)
        message(STATUS "Found GTK2: ${GTK2_LIBRARIES}")
      endif (NOT GTK2_FIND_QUIETLY)
    else (GTK2_FOUND)
      if (GTK2_FIND_REQUIRED)
        message(FATAL_ERROR "Could not find GTK2")
      endif (GTK2_FIND_REQUIRED)
    endif (GTK2_FOUND)

    # show the GTK2_INCLUDE_DIRS and GTK2_LIBRARIES variables only in the advanced view
    mark_as_advanced(GTK2_INCLUDE_DIRS GTK2_LIBRARIES)

  endif (UNIX)
endif (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS)



================================================
FILE: code/CMakeModules/FindIconv.cmake
================================================
# - Try to find Iconv 
# Once done this will define 
# 
#  ICONV_FOUND - system has Iconv 
#  ICONV_INCLUDE_DIR - the Iconv include directory 
#  ICONV_LIBRARIES - Link these to use Iconv 
#  ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const
# 
include(CheckCCompilerFlag)
include(CheckCSourceCompiles)

IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
  # Already in cache, be silent
  SET(ICONV_FIND_QUIETLY TRUE)
ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)

FIND_PATH(ICONV_INCLUDE_DIR iconv.h HINTS /sw/include/ PATHS /opt/local) 
 
FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv c PATHS /opt/local)
 
IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 
   SET(ICONV_FOUND TRUE) 
ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 

set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
IF(ICONV_FOUND)
  check_c_compiler_flag("-Werror" ICONV_HAVE_WERROR)
  set (CMAKE_C_FLAGS_BACKUP "${CMAKE_C_FLAGS}")
  if(ICONV_HAVE_WERROR)
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
  endif(ICONV_HAVE_WERROR)
  check_c_source_compiles("
  #include <iconv.h>
  int main(){
    iconv_t conv = 0;
    const char* in = 0;
    size_t ilen = 0;
    char* out = 0;
    size_t olen = 0;
    iconv(conv, &in, &ilen, &out, &olen);
    return 0;
  }
" ICONV_SECOND_ARGUMENT_IS_CONST )
  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_BACKUP}")
ENDIF(ICONV_FOUND)
set(CMAKE_REQUIRED_INCLUDES)
set(CMAKE_REQUIRED_LIBRARIES)

IF(ICONV_FOUND) 
  IF(NOT ICONV_FIND_QUIETLY) 
    MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}") 
  ENDIF(NOT ICONV_FIND_QUIETLY) 
ELSE(ICONV_FOUND) 
  IF(Iconv_FIND_REQUIRED) 
    MESSAGE(FATAL_ERROR "Could not find Iconv") 
  ENDIF(Iconv_FIND_REQUIRED) 
ENDIF(ICONV_FOUND) 

MARK_AS_ADVANCED(
  ICONV_INCLUDE_DIR
  ICONV_LIBRARIES
  ICONV_SECOND_ARGUMENT_IS_CONST
)


================================================
FILE: code/CMakeModules/FindJpeg.cmake
================================================
# - Locate Jpeg library
# This module defines
#  JPEG_LIBRARY, the library to link against
#  JPEG_FOUND, if false, do not try to link to JPEG
#  JPEG_INCLUDE_DIR, where to find headers.

IF(JPEG_LIBRARY AND JPEG_INCLUDE_DIR)
  # in cache already
  SET(JPEG_FIND_QUIETLY TRUE)
ENDIF(JPEG_LIBRARY AND JPEG_INCLUDE_DIR)


FIND_PATH(JPEG_INCLUDE_DIR
  jpeglib.h
  PATHS
  $ENV{JPEG_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES jpeg
)

FIND_LIBRARY(JPEG_LIBRARY
  NAMES jpeg libjpeg
  PATHS
  $ENV{JPEG_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(JPEG_LIBRARY AND JPEG_INCLUDE_DIR)
  SET(JPEG_FOUND "YES")
  IF(NOT JPEG_FIND_QUIETLY)
    MESSAGE(STATUS "Found Jpeg: ${JPEG_LIBRARY}")
  ENDIF(NOT JPEG_FIND_QUIETLY)
ELSE(JPEG_LIBRARY AND JPEG_INCLUDE_DIR)
  IF(NOT JPEG_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find Jpeg!")
  ENDIF(NOT JPEG_FIND_QUIETLY)
ENDIF(JPEG_LIBRARY AND JPEG_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindLibEvent.cmake
================================================
# - Locate LibEvent library
# This module defines
# LIBEVENT_INCLUDE_DIRS   - where to find libevent/libevent.h, etc.
# LIBEVENT_LIBRARIES      - List of libraries when using libevent.
# LIBEVENT_FOUND          - True if libevent found.
# LIBEVENT_VERSION_STRING - the version of libevent found (since CMake 2.8.8)

IF(LIBEVENT_LIBRARY AND LIBEVENT_INCLUDE_DIR)
  # in cache already
  SET(LIBEVENT_FIND_QUIETLY TRUE)
ENDIF(LIBEVENT_LIBRARY AND LIBEVENT_INCLUDE_DIR)

FIND_PATH(LIBEVENT_INCLUDE_DIR evutil.h
  PATH_SUFFIXES libevent
  $ENV{LIBEVENT_DIR}/include
  /usr/local/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  /usr/local/include/libevent
  /mingw/include
)

SET(LIBRARY_NAME_RELEASE libevent libevent.a)
SET(LIBRARY_NAME_DEBUG libevent libevent.a)

FIND_LIBRARY(LIBEVENT_LIBRARY_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{LIBEVENT_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/lib64
  /usr/local/X11R6/lib
  /usr/local/lib/libevent
)

FIND_LIBRARY(LIBEVENT_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{LIBEVENT_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/lib/libevent
)

IF(NOT WIN32)
    SET(LIBRARY_NAME_PTHREADS libevent_pthreads libevent_pthreads.a)
    FIND_LIBRARY(PTHREADS_LIBRARIE_RELEASE
      NAMES ${LIBRARY_NAME_PTHREADS}
      PATHS
      $ENV{LIBEVENT_DIR}/lib
      /usr/local/lib
    )
    
    ADD_DEFINITIONS(-DEVENT__HAVE_PTHREADS)
ENDIF()

IF(LIBEVENT_INCLUDE_DIR)
  IF(LIBEVENT_LIBRARY_RELEASE AND LIBEVENT_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(LIBEVENT_FOUND TRUE)
    
    IF(WIN32)
        SET(LIBEVENT_LIBRARY optimized ${LIBEVENT_LIBRARY_RELEASE} debug ${LIBEVENT_LIBRARY_DEBUG})
    ELSE()
        #SET(LIBEVENT_LIBRARY "${LIBEVENT_LIBRARY_RELEASE};${PTHREADS_LIBRARIE_RELEASE}" CACHE STRING "LibEvent Libraries")
        SET(LIBEVENT_LIBRARY "${LIBEVENT_LIBRARY_RELEASE};${PTHREADS_LIBRARIE_RELEASE}")
    ENDIF()
    
  ELSEIF(LIBEVENT_LIBRARY_RELEASE)
    # Normal case
    SET(LIBEVENT_FOUND TRUE)
    SET(LIBEVENT_LIBRARY ${LIBEVENT_LIBRARY_RELEASE})
  ELSEIF(LIBEVENT_LIBRARY_DEBUG)
    # Case where LibEvent is compiled from sources (debug version is compiled by default)
    SET(LIBEVENT_FOUND TRUE)
    SET(LIBEVENT_LIBRARY ${LIBEVENT_LIBRARY_DEBUG})
  ENDIF(LIBEVENT_LIBRARY_RELEASE AND LIBEVENT_LIBRARY_DEBUG)
ENDIF(LIBEVENT_INCLUDE_DIR)

IF(LIBEVENT_FOUND)
  IF(NOT LIBEVENT_FIND_QUIETLY)
    MESSAGE(STATUS "Found LibEvent: ${LIBEVENT_INCLUDE_DIR} ${LIBEVENT_LIBRARY}")
  ENDIF(NOT LIBEVENT_FIND_QUIETLY)
ELSE(LIBEVENT_FOUND)
  IF(NOT LIBEVENT_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find LibEvent! INCLUDE: ${LIBEVENT_INCLUDE_DIR}  LIB:${LIBEVENT_LIBRARY}  ")
  ENDIF(NOT LIBEVENT_FIND_QUIETLY)
ENDIF(LIBEVENT_FOUND)

MARK_AS_ADVANCED(LIBEVENT_LIBRARY_RELEASE LIBEVENT_LIBRARY_DEBUG)

#   libevent_openssl
FIND_LIBRARY(LIBEVENT_OPENSSL_LIBRARY
  NAMES libevent_openssl libevent_openssl.a
  PATHS
  $ENV{LIBEVENT_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/lib64
  /usr/local/lib/libevent
)

ADD_DEFINITIONS(-DEVENT__HAVE_OPENSSL)

MESSAGE(STATUS "LIBEVENT_OPENSSL_LIBRARY: ${LIBEVENT_OPENSSL_LIBRARY}")








================================================
FILE: code/CMakeModules/FindLibOVR.cmake
================================================
# - Locate LibOVR library
# This module defines
#  LIBOVR_LIBRARIES, the libraries to link against
#  LIBOVR_FOUND, if false, do not try to link to LIBOVR
#  LIBOVR_INCLUDE_DIR, where to find headers.

IF(LIBOVR_LIBRARIES AND LIBOVR_INCLUDE_DIR)
  # in cache already
  SET(LIBOVR_FIND_QUIETLY TRUE)
ENDIF(LIBOVR_LIBRARIES AND LIBOVR_INCLUDE_DIR)

FIND_PATH(LIBOVR_INCLUDE_DIR
  OVR.h
  PATHS
  $ENV{LIBOVR_DIR}/Include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
)

IF(UNIX)
  IF(TARGET_X64)
    SET(LIBOVR_LIBRARY_BUILD_PATH "Lib/Linux/Release/x86_64")
  ELSE(TARGET_X64)
    SET(LIBOVR_LIBRARY_BUILD_PATH "Lib/Linux/Release/i386")
  ENDIF(TARGET_X64)
ELSEIF(APPLE)
  SET(LIBOVR_LIBRARY_BUILD_PATH "Lib/MacOS/Release")
ELSEIF(WIN32)
  IF(TARGET_X64)
    SET(LIBOVR_LIBRARY_BUILD_PATH "Lib/x64")
  ELSE(TARGET_X64)
    SET(LIBOVR_LIBRARY_BUILD_PATH "Lib/Win32")
  ENDIF(TARGET_X64)
ENDIF(UNIX)

FIND_LIBRARY(LIBOVR_LIBRARY
  NAMES ovr libovr
  PATHS
  $ENV{LIBOVR_DIR}/${LIBOVR_LIBRARY_BUILD_PATH}
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(LIBOVR_LIBRARY AND LIBOVR_INCLUDE_DIR)
  IF(NOT LIBOVR_FIND_QUIETLY)
    MESSAGE(STATUS "Found LibOVR: ${LIBOVR_LIBRARY}")
  ENDIF(NOT LIBOVR_FIND_QUIETLY)
  SET(LIBOVR_FOUND "YES")
  SET(LIBOVR_DEFINITIONS "-DHAVE_LIBOVR")
  IF(UNIX)
    SET(LIBOVR_LIBRARIES ${LIBOVR_LIBRARY} X11 Xinerama udev pthread)
  ELSE(UNIX)
    SET(LIBOVR_LIBRARIES ${LIBOVR_LIBRARY})
  ENDIF(UNIX)
ELSE(LIBOVR_LIBRARY AND LIBOVR_INCLUDE_DIR)
  IF(NOT LIBOVR_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find LibOVR!")
  ENDIF(NOT LIBOVR_FIND_QUIETLY)
ENDIF(LIBOVR_LIBRARY AND LIBOVR_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindLibVR.cmake
================================================
# - Locate LibVR library
# This module defines
#  LIBVR_LIBRARIES, the libraries to link against
#  LIBVR_FOUND, if false, do not try to link to LIBVR
#  LIBVR_INCLUDE_DIR, where to find headers.

IF(LIBVR_LIBRARIES AND LIBVR_INCLUDE_DIR)
  # in cache already
  SET(LIBVR_FIND_QUIETLY TRUE)
ENDIF(LIBVR_LIBRARIES AND LIBVR_INCLUDE_DIR)

FIND_PATH(LIBVR_INCLUDE_DIR hmd.h
  PATH_SUFFIXES include/LibVR
)

FIND_LIBRARY(LIBVR_LIBRARY
  NAMES vr
  PATH_SUFFIXES lib
  PATHS
)

IF(LIBVR_LIBRARY AND LIBVR_INCLUDE_DIR)
  IF(NOT LIBVR_FIND_QUIETLY)
    MESSAGE(STATUS "Found LibVR: ${LIBVR_LIBRARY}")
  ENDIF(NOT LIBVR_FIND_QUIETLY)
  SET(LIBVR_FOUND "YES")
  SET(LIBVR_DEFINITIONS "-DHAVE_LIBVR")
ELSE(LIBVR_LIBRARY AND LIBVR_INCLUDE_DIR)
  IF(NOT LIBVR_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find LibVR!")
  ENDIF(NOT LIBVR_FIND_QUIETLY)
ENDIF(LIBVR_LIBRARY AND LIBVR_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindLibwww.cmake
================================================
#
# Find the W3C libwww includes and library
#
# This module defines
# LIBWWW_INCLUDE_DIR, where to find tiff.h, etc.
# LIBWWW_LIBRARY, where to find the Libwww library.
# LIBWWW_FOUND, If false, do not try to use Libwww.

OPTION(WITH_LIBWWW_STATIC "Use only static libraries for libwww" OFF)

# also defined, but not for general use are
IF(LIBWWW_LIBRARIES AND LIBWWW_INCLUDE_DIR)
  # in cache already
  SET(Libwww_FIND_QUIETLY TRUE)
ENDIF(LIBWWW_LIBRARIES AND LIBWWW_INCLUDE_DIR)

FIND_PATH(LIBWWW_INCLUDE_DIR
  WWWInit.h
  PATHS
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES libwww w3c-libwww
)

# when installing libwww on mac os x using macports the file wwwconf.h resides
# in /opt/local/include and not in the real libwww include dir :/
FIND_PATH(LIBWWW_ADDITIONAL_INCLUDE_DIR
  wwwconf.h
  PATHS
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
)

# combine both include directories into one variable
IF(LIBWWW_ADDITIONAL_INCLUDE_DIR)
  SET(LIBWWW_INCLUDE_DIR ${LIBWWW_INCLUDE_DIR} ${LIBWWW_ADDITIONAL_INCLUDE_DIR})
ENDIF(LIBWWW_ADDITIONAL_INCLUDE_DIR)

# helper to find all the libwww sub libraries
MACRO(FIND_WWW_LIBRARY MYLIBRARY OPTION FILE)
  IF(WITH_LIBWWW_STATIC AND UNIX AND NOT APPLE AND NOT WITH_STATIC_EXTERNAL)
    SET(CMAKE_FIND_LIBRARY_SUFFIXES_OLD ${CMAKE_FIND_LIBRARY_SUFFIXES})
    SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
  ENDIF(WITH_LIBWWW_STATIC AND UNIX AND NOT APPLE AND NOT WITH_STATIC_EXTERNAL)

  FIND_LIBRARY(${MYLIBRARY}_RELEASE
    NAMES ${FILE}
    PATHS
    /usr/local/lib
    /usr/lib
    /usr/lib/x86_64-linux-gnu
    /usr/local/X11R6/lib
    /usr/X11R6/lib
    /sw/lib
    /opt/local/lib
    /opt/csw/lib
    /opt/lib
    /usr/freeware/lib64
  )

  FIND_LIBRARY(${MYLIBRARY}_DEBUG
    NAMES ${FILE}d
    PATHS
    /usr/local/lib
    /usr/lib
    /usr/lib/x86_64-linux-gnu
    /usr/local/X11R6/lib
    /usr/X11R6/lib
    /sw/lib
    /opt/local/lib
    /opt/csw/lib
    /opt/lib
    /usr/freeware/lib64
  )

  IF(CMAKE_FIND_LIBRARY_SUFFIXES_OLD)
    SET(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_OLD})
  ENDIF(CMAKE_FIND_LIBRARY_SUFFIXES_OLD)

  IF(${MYLIBRARY}_RELEASE AND ${MYLIBRARY}_DEBUG)
    IF(${OPTION} STREQUAL REQUIRED OR WITH_STATIC OR WITH_LIBWWW_STATIC)
      SET(LIBWWW_LIBRARIES ${LIBWWW_LIBRARIES} optimized ${${MYLIBRARY}_RELEASE} debug ${${MYLIBRARY}_DEBUG})
    ENDIF(${OPTION} STREQUAL REQUIRED OR WITH_STATIC OR WITH_LIBWWW_STATIC)
  ELSEIF(${MYLIBRARY}_RELEASE)
    IF(${OPTION} STREQUAL REQUIRED OR WITH_STATIC OR WITH_LIBWWW_STATIC)
      SET(LIBWWW_LIBRARIES ${LIBWWW_LIBRARIES} ${${MYLIBRARY}_RELEASE})
    ENDIF(${OPTION} STREQUAL REQUIRED OR WITH_STATIC OR WITH_LIBWWW_STATIC)
  ELSEIF(${MYLIBRARY}_DEBUG)
    IF(${OPTION} STREQUAL REQUIRED OR WITH_STATIC OR WITH_LIBWWW_STATIC)
      SET(LIBWWW_LIBRARIES ${LIBWWW_LIBRARIES} ${${MYLIBRARY}_DEBUG})
    ENDIF(${OPTION} STREQUAL REQUIRED OR WITH_STATIC OR WITH_LIBWWW_STATIC)
  ELSE(${MYLIBRARY}_RELEASE AND ${MYLIBRARY}_DEBUG)
    IF(NOT Libwww_FIND_QUIETLY AND NOT WIN32)
      MESSAGE(STATUS "Warning: Libwww: Library not found: ${MYLIBRARY}")
    ENDIF(NOT Libwww_FIND_QUIETLY AND NOT WIN32)
  ENDIF(${MYLIBRARY}_RELEASE AND ${MYLIBRARY}_DEBUG)

  MARK_AS_ADVANCED(${MYLIBRARY}_RELEASE ${MYLIBRARY}_DEBUG)
ENDMACRO(FIND_WWW_LIBRARY)

MACRO(LINK_WWW_LIBRARY MYLIBRARY OTHERLIBRARY SYMBOL)
  IF(NOT WITH_LIBWWW_STATIC AND NOT  WITH_STATIC_EXTERNAL)
    LINK_DEPENDS(LIBWWW_LIBRARIES ${MYLIBRARY} ${OTHERLIBRARY} ${SYMBOL})
  ENDIF(NOT WITH_LIBWWW_STATIC AND NOT  WITH_STATIC_EXTERNAL)
ENDMACRO(LINK_WWW_LIBRARY)

# Find and link required libs for static or dynamic
FIND_WWW_LIBRARY(LIBWWWAPP_LIBRARY REQUIRED wwwapp) # cache core file ftp gopher html http mime news stream telnet trans utils zip xml xmlparse
FIND_WWW_LIBRARY(LIBWWWCORE_LIBRARY REQUIRED wwwcore) # utils
FIND_WWW_LIBRARY(LIBWWWFILE_LIBRARY REQUIRED wwwfile) # core trans utils html
FIND_WWW_LIBRARY(LIBWWWHTML_LIBRARY REQUIRED wwwhtml) # core utils
FIND_WWW_LIBRARY(LIBWWWHTTP_LIBRARY REQUIRED wwwhttp) # md5 core mime stream utils
FIND_WWW_LIBRARY(LIBWWWMIME_LIBRARY REQUIRED wwwmime) # core cache stream utils

# Required for static or if underlinking
FIND_WWW_LIBRARY(LIBWWWCACHE_LIBRARY OPTIONAL wwwcache) # core trans utils
FIND_WWW_LIBRARY(LIBWWWSTREAM_LIBRARY OPTIONAL wwwstream) # core file utils

FIND_WWW_LIBRARY(LIBWWWTRANS_LIBRARY REQUIRED wwwtrans) # core utils
FIND_WWW_LIBRARY(LIBWWWUTILS_LIBRARY REQUIRED wwwutils)


# Required only if underlinking

# Unused protocols
FIND_WWW_LIBRARY(LIBWWWFTP_LIBRARY OPTIONAL wwwftp) # core file utils
FIND_WWW_LIBRARY(LIBWWWGOPHER_LIBRARY OPTIONAL wwwgopher) # core html utils file
FIND_WWW_LIBRARY(LIBWWWNEWS_LIBRARY OPTIONAL wwwnews) # core html mime stream utils
FIND_WWW_LIBRARY(LIBWWWTELNET_LIBRARY OPTIONAL wwwtelnet) # core utils

# Other used by app
FIND_WWW_LIBRARY(LIBWWWDIR_LIBRARY OPTIONAL wwwdir) # file
FIND_WWW_LIBRARY(LIBWWWINIT_LIBRARY OPTIONAL wwwinit) # app cache core file html utils
FIND_WWW_LIBRARY(LIBWWWMUX_LIBRARY OPTIONAL wwwmux) # core stream trans utils
FIND_WWW_LIBRARY(LIBWWWXML_LIBRARY OPTIONAL wwwxml) # core utils xmlparse
FIND_WWW_LIBRARY(LIBWWWZIP_LIBRARY OPTIONAL wwwzip) # core utils
FIND_WWW_LIBRARY(LIBXMLPARSE_LIBRARY OPTIONAL xmlparse) # xmltok

# Other used by other
FIND_WWW_LIBRARY(LIBXMLTOK_LIBRARY OPTIONAL xmltok)
FIND_WWW_LIBRARY(LIBWWWSSL_LIBRARY OPTIONAL wwwssl)
FIND_WWW_LIBRARY(LIBMD5_LIBRARY OPTIONAL md5)
FIND_WWW_LIBRARY(LIBPICS_LIBRARY OPTIONAL pics)

# Other external libraries
FIND_PACKAGE(EXPAT QUIET)
FIND_PACKAGE(OpenSSL QUIET)
FIND_WWW_LIBRARY(LIBREGEX_LIBRARY OPTIONAL gnu_regex)

# Now link all libs together
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWCACHE_LIBRARY HTLoadCache)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWCACHE_LIBRARY HTCacheAppend)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWFTP_LIBRARY HTLoadFTP)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWGOPHER_LIBRARY HTLoadGopher)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWNEWS_LIBRARY HTLoadNews)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWTELNET_LIBRARY HTLoadTelnet)

LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWSTREAM_LIBRARY HTStreamToChunk)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWSTREAM_LIBRARY HTGuess_new)
LINK_WWW_LIBRARY(LIBWWWFILE_LIBRARY LIBWWWDIR_LIBRARY HTDir_new)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWINIT_LIBRARY HTProtocolInit)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWXML_LIBRARY HTXML_new)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBWWWZIP_LIBRARY HTZLib_inflate)

# libwwwxml can be linked to xmlparse or expat
LINK_WWW_LIBRARY(LIBWWWXML_LIBRARY LIBXMLPARSE_LIBRARY XML_ParserCreate)

IF(LIBXMLPARSE_LIBRARY_LINKED)
  LINK_WWW_LIBRARY(LIBXMLPARSE_LIBRARY EXPAT_LIBRARY XmlInitEncoding)
ELSE(LIBXMLPARSE_LIBRARY_LINKED)
  LINK_WWW_LIBRARY(LIBWWWXML_LIBRARY EXPAT_LIBRARY XML_ParserCreate)
ENDIF(LIBXMLPARSE_LIBRARY_LINKED)

LINK_WWW_LIBRARY(LIBWWWHTTP_LIBRARY LIBMD5_LIBRARY MD5Init)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY LIBREGEX_LIBRARY regexec)
LINK_WWW_LIBRARY(LIBWWWAPP_LIBRARY OPENSSL_LIBRARIES SSL_new)

INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Libwww DEFAULT_MSG
  LIBWWW_LIBRARIES
  LIBWWW_INCLUDE_DIR
)


================================================
FILE: code/CMakeModules/FindLua51.cmake
================================================
# Locate Lua library
# This module defines
#  LUA51_FOUND, if false, do not try to link to Lua
#  LUA_LIBRARIES
#  LUA_INCLUDE_DIR, where to find lua.h
#  LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
#
# Note that the expected include convention is
#  #include "lua.h"
# and not
#  #include <lua/lua.h>
# This is because, the lua location is not standardized and may exist
# in locations other than lua/

#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
#  License text for the above reference.)

find_path(LUA_INCLUDE_DIR lua.h
  HINTS
    ENV LUA_DIR
  PATH_SUFFIXES include/lua51 include/lua5.1 include/lua-5.1 include/lua include
  PATHS
  ~/Library/Frameworks
  /Library/Frameworks
  /sw # Fink
  /opt/local # DarwinPorts
  /opt/csw # Blastwave
  /opt
)

find_library(LUA_LIBRARY
  NAMES lua51 lua5.1 lua-5.1 lua
  HINTS
    ENV LUA_DIR
  PATH_SUFFIXES lib
  PATHS
  ~/Library/Frameworks
  /Library/Frameworks
  /sw
  /opt/local
  /opt/csw
  /opt
  /usr/lib/x86_64-linux-gnu
  /usr/lib/arm-linux-gnueabihf
)

if(LUA_LIBRARY)
  # include the math library for Unix
  if(UNIX AND NOT APPLE AND NOT BEOS)
    find_library(LUA_MATH_LIBRARY m)
    set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
  # For Windows and Mac, don't need to explicitly include the math library
  else()
    set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
  endif()
endif()

if(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
  file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")

  string(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}")
  unset(lua_version_str)
endif()

include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua51
                                  REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
                                  VERSION_VAR LUA_VERSION_STRING)

mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY)



================================================
FILE: code/CMakeModules/FindLua52.cmake
================================================
# Locate Lua library
# This module defines
#  LUA52_FOUND, if false, do not try to link to Lua
#  LUA_LIBRARIES
#  LUA_INCLUDE_DIR, where to find lua.h
#  LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
#
# Note that the expected include convention is
#  #include "lua.h"
# and not
#  #include <lua/lua.h>
# This is because, the lua location is not standardized and may exist
# in locations other than lua/

#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
#  License text for the above reference.)

find_path(LUA_INCLUDE_DIR lua.h
  HINTS
    ENV LUA_DIR
  PATH_SUFFIXES include/lua52 include/lua5.2 include/lua-5.2 include/lua include
  PATHS
  ~/Library/Frameworks
  /Library/Frameworks
  /sw # Fink
  /opt/local # DarwinPorts
  /opt/csw # Blastwave
  /opt
)

find_library(LUA_LIBRARY
  NAMES lua52 lua5.2 lua-5.2 lua
  HINTS
    ENV LUA_DIR
  PATH_SUFFIXES lib
  PATHS
  ~/Library/Frameworks
  /Library/Frameworks
  /sw
  /opt/local
  /opt/csw
  /opt
)

if(LUA_LIBRARY)
  # include the math library for Unix
  if(UNIX AND NOT APPLE AND NOT BEOS)
    find_library(LUA_MATH_LIBRARY m)
    set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
  # For Windows and Mac, don't need to explicitly include the math library
  else()
    set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
  endif()
endif()

if(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
  file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")

  string(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}")
  unset(lua_version_str)
endif()

include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua52
                                  REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
                                  VERSION_VAR LUA_VERSION_STRING)

mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY)



================================================
FILE: code/CMakeModules/FindLua53.cmake
================================================
# Locate Lua library
# This module defines
#  LUA51_FOUND, if false, do not try to link to Lua
#  LUA_LIBRARIES
#  LUA_INCLUDE_DIR, where to find lua.h
#  LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
#
# Note that the expected include convention is
#  #include "lua.h"
# and not
#  #include <lua/lua.h>
# This is because, the lua location is not standardized and may exist
# in locations other than lua/

#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
#  License text for the above reference.)

find_path(LUA_INCLUDE_DIR lua.h
  PATH_SUFFIXES lua53
  PATHS
  /usr/local/include
  ~/Library/Frameworks
)

find_library(LUA_LIBRARY
  NAMES lua53 liblua.a
  PATH_SUFFIXES lib
  PATHS
  /usr/local/lib
)

if(LUA_LIBRARY)
  # include the math library for Unix
  if(UNIX AND NOT APPLE AND NOT BEOS)
    find_library(LUA_MATH_LIBRARY m)
    set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
  # For Windows and Mac, don't need to explicitly include the math library
  else()
    set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
  endif()
endif()

if(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
  file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")

  string(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}")
  unset(lua_version_str)
endif()

include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua53
                                  REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
                                  VERSION_VAR LUA_VERSION_STRING)

mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY)



================================================
FILE: code/CMakeModules/FindLuabind.cmake
================================================
# - Locate Luabind library
# This module defines
#  LUABIND_LIBRARIES, the libraries to link against
#  LUABIND_FOUND, if false, do not try to link to LUABIND
#  LUABIND_INCLUDE_DIR, where to find headers.

MACRO(FIND_CORRECT_LUA_VERSION)
  # Check Lua version linked to Luabind under Linux
  IF(LUABIND_LIBRARY_RELEASE MATCHES "\\.so")
    INCLUDE(CheckDepends)

    SET(LUA52_LIBRARY "liblua5.2")
    CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA52_LIBRARY LUALIB_FOUND)
    
    IF(NOT LUALIB_FOUND)
      # fedora (v20)
      SET(LUA52_LIBRARY "liblua-5.2")
      CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA52_LIBRARY LUALIB_FOUND)
    ENDIF(NOT LUALIB_FOUND)

    IF(LUALIB_FOUND)
      MESSAGE(STATUS "Luabind is using Lua 5.2")
      FIND_PACKAGE(Lua52 REQUIRED)
    ELSE(LUALIB_FOUND)
      SET(LUA51_LIBRARY "liblua5.1")
      CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA51_LIBRARY LUALIB_FOUND)

      IF(LUALIB_FOUND)
        MESSAGE(STATUS "Luabind is using Lua 5.1")
        FIND_PACKAGE(Lua51 REQUIRED)
      ELSE(LUALIB_FOUND)
        SET(LUA50_LIBRARY "liblua5.0")
        CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE LUA50_LIBRARY LUALIB_FOUND)

        IF(LUALIB_FOUND)
          MESSAGE(STATUS "Luabind is using Lua 5.0")
          FIND_PACKAGE(Lua50 REQUIRED)
        ELSE(LUALIB_FOUND)
          MESSAGE(FATAL_ERROR "Can't determine Lua version used by Luabind")
        ENDIF(LUALIB_FOUND)
      ENDIF(LUALIB_FOUND)
    ENDIF(LUALIB_FOUND)
  ELSE(LUABIND_LIBRARY_RELEASE MATCHES "\\.so")
    # TODO: find a way to detect Lua version
    IF(WITH_LUA52)
      FIND_PACKAGE(Lua52 REQUIRED)
    ELSEIF(WITH_LUA51)
      FIND_PACKAGE(Lua51 REQUIRED)
    ELSE(WITH_LUA52)
      FIND_PACKAGE(Lua50 REQUIRED)
    ENDIF(WITH_LUA52)
  ENDIF(LUABIND_LIBRARY_RELEASE MATCHES "\\.so")
ENDMACRO(FIND_CORRECT_LUA_VERSION)

IF(LUABIND_LIBRARIES AND LUABIND_INCLUDE_DIR)
  # in cache already
  SET(Luabind_FIND_QUIETLY TRUE)
ENDIF(LUABIND_LIBRARIES AND LUABIND_INCLUDE_DIR)

FIND_PATH(LUABIND_INCLUDE_DIR
  luabind/luabind.hpp
  PATHS
  $ENV{LUABIND_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
)

SET(LIBRARY_NAME_RELEASE)
SET(LIBRARY_NAME_DEBUG)

IF(WITH_LUA52)
  IF(WITH_STLPORT)
    LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua52)
    LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua52d)
  ENDIF(WITH_STLPORT)

  LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua52)
  LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua52d)
ENDIF()

IF(WITH_LUA51)
  IF(WITH_STLPORT)
    LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua51)
    LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua51d)
  ENDIF(WITH_STLPORT)

  LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua51)
  LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua51d)
ENDIF()

IF(WITH_LUA50)
  IF(WITH_STLPORT)
    LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua50)
    LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua50d)
  ENDIF(WITH_STLPORT)

  LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua50)
  LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua50d)
ENDIF()

IF(WITH_STLPORT)
  LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport)
  LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlportd)
ENDIF(WITH_STLPORT)

# generic libraries names
LIST(APPEND LIBRARY_NAME_RELEASE luabind libluabind)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_d luabindd libluabind_d libluabindd)

FIND_LIBRARY(LUABIND_LIBRARY_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{LUABIND_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_LIBRARY(LUABIND_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{LUABIND_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_PACKAGE(Boost REQUIRED)

IF(LUABIND_INCLUDE_DIR AND Boost_INCLUDE_DIR)
  IF(LUABIND_LIBRARY_RELEASE AND LUABIND_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(LUABIND_FOUND TRUE)
    SET(LUABIND_LIBRARIES optimized ${LUABIND_LIBRARY_RELEASE} debug ${LUABIND_LIBRARY_DEBUG})
  ELSEIF(LUABIND_LIBRARY_RELEASE)
    # Normal case
    SET(LUABIND_FOUND TRUE)
    SET(LUABIND_LIBRARIES ${LUABIND_LIBRARY_RELEASE})
  ELSEIF(LUABIND_LIBRARY_DEBUG)
    # Case where Luabind is compiled from sources (debug version is compiled by default)
    SET(LUABIND_FOUND TRUE)
    SET(LUABIND_LIBRARIES ${LUABIND_LIBRARY_DEBUG})
  ENDIF(LUABIND_LIBRARY_RELEASE AND LUABIND_LIBRARY_DEBUG)
ENDIF(LUABIND_INCLUDE_DIR AND Boost_INCLUDE_DIR)

IF(LUABIND_FOUND)
  SET(LUABIND_INCLUDE_DIR ${LUABIND_INCLUDE_DIR} ${Boost_INCLUDE_DIR})
  # Check if luabind/version.hpp exists
  FIND_FILE(LUABIND_VERSION_FILE luabind/version.hpp PATHS ${LUABIND_INCLUDE_DIR})
  IF(LUABIND_VERSION_FILE)
    SET(LUABIND_DEFINITIONS "-DHAVE_LUABIND_VERSION")
  ENDIF(LUABIND_VERSION_FILE)

  FIND_CORRECT_LUA_VERSION()

  IF(NOT Luabind_FIND_QUIETLY)
    MESSAGE(STATUS "Found Luabind: ${LUABIND_LIBRARIES}")
  ENDIF(NOT Luabind_FIND_QUIETLY)
ELSE(LUABIND_FOUND)
  IF(NOT Luabind_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find Luabind!")
  ENDIF(NOT Luabind_FIND_QUIETLY)
ENDIF(LUABIND_FOUND)

MARK_AS_ADVANCED(LUABIND_LIBRARY_RELEASE LUABIND_LIBRARY_DEBUG Boost_LIB_DIAGNOSTIC_DEFINITIONS)


================================================
FILE: code/CMakeModules/FindMSVC.cmake
================================================
# - Find MS Visual C++
#
#  VC_INCLUDE_DIR  - where to find headers
#  VC_INCLUDE_DIRS - where to find headers
#  VC_LIBRARY_DIR  - where to find libraries
#  VC_FOUND        - True if MSVC found.

MACRO(DETECT_VC_VERSION_HELPER _ROOT _VERSION)
  # Software/Wow6432Node/...
  GET_FILENAME_COMPONENT(VC${_VERSION}_DIR "[${_ROOT}\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VC7;${_VERSION}]" ABSOLUTE)

  IF(VC${_VERSION}_DIR AND VC${_VERSION}_DIR STREQUAL "/registry")
    SET(VC${_VERSION}_DIR)
    GET_FILENAME_COMPONENT(VC${_VERSION}_DIR "[${_ROOT}\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;${_VERSION}]" ABSOLUTE)
    IF(VC${_VERSION}_DIR AND NOT VC${_VERSION}_DIR STREQUAL "/registry")
      SET(VC${_VERSION}_DIR "${VC${_VERSION}_DIR}VC/")
    ENDIF(VC${_VERSION}_DIR AND NOT VC${_VERSION}_DIR STREQUAL "/registry")
  ENDIF(VC${_VERSION}_DIR AND VC${_VERSION}_DIR STREQUAL "/registry")

  IF(VC${_VERSION}_DIR AND NOT VC${_VERSION}_DIR STREQUAL "/registry")
    SET(VC${_VERSION}_FOUND ON)
    DETECT_EXPRESS_VERSION(${_VERSION})
    IF(NOT MSVC_FIND_QUIETLY)
      SET(_VERSION_STR ${_VERSION})
      IF(MSVC_EXPRESS)
        SET(_VERSION_STR "${_VERSION_STR} Express")
      ENDIF(MSVC_EXPRESS)
      MESSAGE(STATUS "Found Visual C++ ${_VERSION_STR} in ${VC${_VERSION}_DIR}")
    ENDIF(NOT MSVC_FIND_QUIETLY)
  ELSEIF(VC${_VERSION}_DIR AND NOT VC${_VERSION}_DIR STREQUAL "/registry")
    SET(VC${_VERSION}_FOUND OFF)
    SET(VC${_VERSION}_DIR "")
  ENDIF(VC${_VERSION}_DIR AND NOT VC${_VERSION}_DIR STREQUAL "/registry")
ENDMACRO(DETECT_VC_VERSION_HELPER)

MACRO(DETECT_VC_VERSION _VERSION)
  SET(VC${_VERSION}_FOUND OFF)
  DETECT_VC_VERSION_HELPER("HKEY_CURRENT_USER" ${_VERSION})

  IF(NOT VC${_VERSION}_FOUND)
    DETECT_VC_VERSION_HELPER("HKEY_LOCAL_MACHINE" ${_VERSION})
  ENDIF(NOT VC${_VERSION}_FOUND)

  IF(VC${_VERSION}_FOUND)
    SET(VC_FOUND ON)
    SET(VC_DIR "${VC${_VERSION}_DIR}")
  ENDIF(VC${_VERSION}_FOUND)
ENDMACRO(DETECT_VC_VERSION)

MACRO(DETECT_EXPRESS_VERSION _VERSION)
  GET_FILENAME_COMPONENT(MSVC_EXPRESS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\${_VERSION}\\Setup\\VC;ProductDir]" ABSOLUTE)

  IF(MSVC_EXPRESS AND NOT MSVC_EXPRESS STREQUAL "/registry")
    SET(MSVC_EXPRESS ON)
  ENDIF(MSVC_EXPRESS AND NOT MSVC_EXPRESS STREQUAL "/registry")
ENDMACRO(DETECT_EXPRESS_VERSION)

IF(MSVC12)
  DETECT_VC_VERSION("12.0")
  SET(MSVC_TOOLSET "120")

  IF(NOT MSVC12_REDIST_DIR)
    # If you have VC++ 2013 Express, put x64/Microsoft.VC120.CRT/*.dll in ${EXTERNAL_PATH}/redist
    SET(MSVC12_REDIST_DIR "${EXTERNAL_PATH}/redist")
  ENDIF(NOT MSVC12_REDIST_DIR)
ELSEIF(MSVC11)
  DETECT_VC_VERSION("11.0")
  SET(MSVC_TOOLSET "110")

  IF(NOT MSVC11_REDIST_DIR)
    # If you have VC++ 2012 Express, put x64/Microsoft.VC110.CRT/*.dll in ${EXTERNAL_PATH}/redist
    SET(MSVC11_REDIST_DIR "${EXTERNAL_PATH}/redist")
  ENDIF(NOT MSVC11_REDIST_DIR)
ELSEIF(MSVC10)
  DETECT_VC_VERSION("10.0")
  SET(MSVC_TOOLSET "100")

  IF(NOT MSVC10_REDIST_DIR)
    # If you have VC++ 2010 Express, put x64/Microsoft.VC100.CRT/*.dll in ${EXTERNAL_PATH}/redist
    SET(MSVC10_REDIST_DIR "${EXTERNAL_PATH}/redist")
  ENDIF(NOT MSVC10_REDIST_DIR)
ELSEIF(MSVC90)
  DETECT_VC_VERSION("9.0")
  SET(MSVC_TOOLSET "90")
ELSEIF(MSVC80)
  DETECT_VC_VERSION("8.0")
  SET(MSVC_TOOLSET "80")
ENDIF(MSVC12)

# If you plan to use VC++ compilers with WINE, set VC_DIR environment variable
IF(NOT VC_DIR)
  SET(VC_DIR $ENV{VC_DIR})
ENDIF(NOT VC_DIR)

IF(NOT VC_DIR)
  STRING(REGEX REPLACE "/bin/.+" "" VC_DIR ${CMAKE_CXX_COMPILER})
ENDIF(NOT VC_DIR)

SET(VC_INCLUDE_DIR "${VC_DIR}/include")
SET(VC_INCLUDE_DIRS ${VC_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${VC_INCLUDE_DIR})


================================================
FILE: code/CMakeModules/FindMercurial.cmake
================================================
# - Extract information from a subversion working copy
# The module defines the following variables:
#  Mercurial_HG_EXECUTABLE - path to hg command line client
#  Mercurial_VERSION_HG - version of hg command line client
#  Mercurial_FOUND - true if the command line client was found
#  MERCURIAL_FOUND - same as Mercurial_FOUND, set for compatiblity reasons
#
# The minimum required version of Mercurial can be specified using the
# standard syntax, e.g. FIND_PACKAGE(Mercurial 1.4)
#
# If the command line client executable is found two macros are defined:
#  Mercurial_WC_INFO(<dir> <var-prefix>)
#  Mercurial_WC_LOG(<dir> <var-prefix>)
# Mercurial_WC_INFO extracts information of a subversion working copy at
# a given location. This macro defines the following variables:
#  <var-prefix>_WC_URL - url of the repository (at <dir>)
#  <var-prefix>_WC_ROOT - root url of the repository
#  <var-prefix>_WC_REVISION - current revision
#  <var-prefix>_WC_LAST_CHANGED_AUTHOR - author of last commit
#  <var-prefix>_WC_LAST_CHANGED_DATE - date of last commit
#  <var-prefix>_WC_LAST_CHANGED_REV - revision of last commit
#  <var-prefix>_WC_INFO - output of command `hg info <dir>'
# Mercurial_WC_LOG retrieves the log message of the base revision of a
# subversion working copy at a given location. This macro defines the
# variable:
#  <var-prefix>_LAST_CHANGED_LOG - last log of base revision
# Example usage:
#  FIND_PACKAGE(Mercurial)
#  IF(MERCURIAL_FOUND)
#    Mercurial_WC_INFO(${PROJECT_SOURCE_DIR} Project)
#    MESSAGE("Current revision is ${Project_WC_REVISION}")
#    Mercurial_WC_LOG(${PROJECT_SOURCE_DIR} Project)
#    MESSAGE("Last changed log is ${Project_LAST_CHANGED_LOG}")
#  ENDIF(MERCURIAL_FOUND)

#=============================================================================
# Copyright 2006-2009 Kitware, Inc.
# Copyright 2006 Tristan Carel
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
#  License text for the above reference.)

FIND_PROGRAM(Mercurial_HG_EXECUTABLE hg
  DOC "mercurial command line client"
  PATHS
    /opt/local/bin
    "C:/Program Files/TortoiseHg"
    "C:/Program Files (x86)/TortoiseHg"
  )
MARK_AS_ADVANCED(Mercurial_HG_EXECUTABLE)

IF(Mercurial_HG_EXECUTABLE)
  EXECUTE_PROCESS(COMMAND ${Mercurial_HG_EXECUTABLE} --version
    OUTPUT_VARIABLE Mercurial_VERSION_HG
    OUTPUT_STRIP_TRAILING_WHITESPACE)
	
  STRING(REGEX REPLACE ".*version ([\\.0-9]+).*"
    "\\1" Mercurial_VERSION_HG "${Mercurial_VERSION_HG}")

  MACRO(Mercurial_WC_INFO dir prefix)
    EXECUTE_PROCESS(COMMAND ${Mercurial_HG_EXECUTABLE} tip --template "{rev};{node};{tags};{author}"
      WORKING_DIRECTORY ${dir}
      OUTPUT_VARIABLE ${prefix}_WC_INFO
      ERROR_VARIABLE Mercurial_hg_info_error
      RESULT_VARIABLE Mercurial_hg_info_result
      OUTPUT_STRIP_TRAILING_WHITESPACE)

    IF(NOT ${Mercurial_hg_info_result} EQUAL 0)
      MESSAGE(SEND_ERROR "Command \"${Mercurial_HG_EXECUTABLE} tip\" failed with output:\n${Mercurial_hg_info_error}")
    ELSE(NOT ${Mercurial_hg_info_result} EQUAL 0)
      LIST(LENGTH ${prefix}_WC_INFO _COUNT)
      IF(_COUNT EQUAL 4)
        LIST(GET ${prefix}_WC_INFO 0 ${prefix}_WC_REVISION)
        LIST(GET ${prefix}_WC_INFO 1 ${prefix}_WC_CHANGESET)
        LIST(GET ${prefix}_WC_INFO 2 ${prefix}_WC_BRANCH)
        LIST(GET ${prefix}_WC_INFO 3 ${prefix}_WC_LAST_CHANGED_AUTHOR)
      ELSE(_COUNT EQUAL 4)
        MESSAGE(STATUS "Bad output from HG")
        SET(${prefix}_WC_REVISION "unknown")
        SET(${prefix}_WC_CHANGESET "unknown")
        SET(${prefix}_WC_BRANCH "unknown")
      ENDIF(_COUNT EQUAL 4)
    ENDIF(NOT ${Mercurial_hg_info_result} EQUAL 0)

  ENDMACRO(Mercurial_WC_INFO)

  MACRO(Mercurial_WC_LOG dir prefix)
    # This macro can block if the certificate is not signed:
    # hg ask you to accept the certificate and wait for your answer
    # This macro requires a hg server network access (Internet most of the time)
    # and can also be slow since it access the hg server
    EXECUTE_PROCESS(COMMAND
      ${Mercurial_HG_EXECUTABLE} --non-interactive log -r BASE ${dir}
      OUTPUT_VARIABLE ${prefix}_LAST_CHANGED_LOG
      ERROR_VARIABLE Mercurial_hg_log_error
      RESULT_VARIABLE Mercurial_hg_log_result
      OUTPUT_STRIP_TRAILING_WHITESPACE)

    IF(NOT ${Mercurial_hg_log_result} EQUAL 0)
      MESSAGE(SEND_ERROR "Command \"${Mercurial_HG_EXECUTABLE} log -r BASE ${dir}\" failed with output:\n${Mercurial_hg_log_error}")
    ENDIF(NOT ${Mercurial_hg_log_result} EQUAL 0)
  ENDMACRO(Mercurial_WC_LOG)
ENDIF(Mercurial_HG_EXECUTABLE)

INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Mercurial DEFAULT_MSG Mercurial_HG_EXECUTABLE)


================================================
FILE: code/CMakeModules/FindMySQL.cmake
================================================
# - Find MySQL
# Find the MySQL includes and client library
# This module defines
#  MYSQL_INCLUDE_DIR, where to find mysql.h
#  MYSQL_LIBRARIES, the libraries needed to use MySQL.
#  MYSQL_FOUND, If false, do not try to use MySQL.
#
# Copyright (c) 2006, Jaroslaw Staniek, <js@iidea.pl>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
   SET(MYSQL_FOUND TRUE)

ELSE()

  FIND_PATH(MYSQL_INCLUDE_DIR mysql.h
      PATH_SUFFIXES mysql
      /usr/include/mysql
      /usr/local/include/mysql
      /opt/local/include/mysql5/mysql
      $ENV{ProgramFiles}/MySQL/*/include
      $ENV{SystemDrive}/MySQL/*/include)

  IF(WIN32 AND MSVC)
    FIND_LIBRARY(MYSQL_LIBRARY_RELEASE NAMES libmysql mysqlclient
      PATHS
      $ENV{ProgramFiles}/MySQL/*/lib/opt
      $ENV{SystemDrive}/MySQL/*/lib/opt)

    FIND_LIBRARY(MYSQL_LIBRARY_DEBUG NAMES libmysqld mysqlclientd
      PATHS
      $ENV{ProgramFiles}/MySQL/*/lib/opt
      $ENV{SystemDrive}/MySQL/*/lib/opt)
  ELSE()
    FIND_LIBRARY(MYSQL_LIBRARY_RELEASE NAMES libmysqlclient mysqlclient
      PATHS
      /usr/lib
      /usr/local/lib
      /usr/lib/mysql
      /usr/local/lib/mysql
      /opt/local/lib/mysql5/mysql
      )

    FIND_LIBRARY(MYSQL_LIBRARY_DEBUG NAMES mysqlclientd
      PATHS
      /usr/lib
      /usr/local/lib
      /usr/lib/mysql
      /usr/local/lib/mysql
      /opt/local/lib/mysql5/mysql
      )
  ENDIF()

  IF(MYSQL_INCLUDE_DIR)
    IF(MYSQL_LIBRARY_RELEASE)
      IF(MYSQL_LIBRARY_DEBUG)
        SET(MYSQL_LIBRARIES optimized ${MYSQL_LIBRARY_RELEASE} debug ${MYSQL_LIBRARY_DEBUG})
      ELSE()
	    SET(MYSQL_LIBRARIES ${MYSQL_LIBRARY_RELEASE})
      ENDIF()
      FIND_PACKAGE(OpenSSL)
      IF(OPENSSL_FOUND)
        SET(MYSQL_LIBRARIES ${MYSQL_LIBRARIES} ${OPENSSL_LIBRARIES})
      ENDIF()
    ENDIF()
  ENDIF()

  IF(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARIES)
    SET(MYSQL_FOUND TRUE)
    MESSAGE(STATUS "Found MySQL: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}")
  ELSE()
    SET(MYSQL_FOUND FALSE)
    MESSAGE(STATUS "MySQL not found.")
  ENDIF()

  MARK_AS_ADVANCED(MYSQL_LIBRARY_RELEASE MYSQL_LIBRARY_DEBUG)

ENDIF()


================================================
FILE: code/CMakeModules/FindMysqlConnector.cmake
================================================
# - Find MySQL
# Find the MySQL includes and client library
# This module defines
#  MYSQL_INCLUDE_DIR, where to find mysql.h
#  MYSQL_LIBRARIES, the libraries needed to use MySQL.
#  MYSQL_FOUND, If false, do not try to use MySQL.
#
# Copyright (c) 2006, Jaroslaw Staniek, <js@iidea.pl>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

IF(MYSQLCONNECTOR_INCLUDE_DIR AND MYSQLCONNECTOR_LIBRARIES)
   SET(MYSQLCONNECTOR_FOUND TRUE)

ELSE(MYSQLCONNECTOR_INCLUDE_DIR AND MYSQLCONNECTOR_LIBRARIES)

  FIND_PATH(MYSQLCONNECTOR_INCLUDE_DIR mysql_connection.h
      PATH_SUFFIXES mysqlconnector
      /usr/include/mysqlcppconn-static)

# mysqlcppconn-static.lib
  IF(WIN32 AND MSVC)
    FIND_LIBRARY(MYSQLCONNECTOR_STATIC_LIBRARY_RELEASE NAMES mysqlcppconn-static
      PATHS
      $ENV{ProgramFiles}/MySQL/*/lib/opt
      $ENV{SystemDrive}/MySQL/*/lib/opt)

    FIND_LIBRARY(MYSQLCONNECTOR_STATIC_LIBRARY_DEBUG NAMES mysqlcppconn-static
      PATHS
      $ENV{ProgramFiles}/MySQL/*/lib/opt
      $ENV{SystemDrive}/MySQL/*/lib/opt)
  ELSE(WIN32 AND MSVC)
    FIND_LIBRARY(MYSQLCONNECTOR_STATIC_LIBRARY_RELEASE NAMES mysqlcppconn-static
      PATHS
      /usr/lib
      /usr/local/lib
      /usr/lib/mysql
      /usr/local/lib/mysql
      /opt/local/lib/mysql5/mysql
      )

    FIND_LIBRARY(MYSQLCONNECTOR_STATIC_LIBRARY_DEBUG NAMES mysqlcppconn-static
      PATHS
      /usr/lib
      /usr/local/lib
      /usr/lib/mysql
      /usr/local/lib/mysql
      /opt/local/lib/mysql5/mysql
      )
  ENDIF(WIN32 AND MSVC)
  
# mysqlcppconn.lib
  IF(WIN32 AND MSVC)
    FIND_LIBRARY(MYSQLCONNECTOR_LIBRARY_RELEASE NAMES "mysqlcppconn.lib"
      PATHS
      $ENV{ProgramFiles}/MySQL/*/lib/opt
      $ENV{SystemDrive}/MySQL/*/lib/opt)

    FIND_LIBRARY(MYSQLCONNECTOR_LIBRARY_DEBUG NAMES "mysqlcppconn.lib"
      PATHS
      $ENV{ProgramFiles}/MySQL/*/lib/opt
      $ENV{SystemDrive}/MySQL/*/lib/opt)
  ELSE(WIN32 AND MSVC)
    FIND_LIBRARY(MYSQLCONNECTOR_LIBRARY_RELEASE NAMES "mysqlcppconn.lib"
      PATHS
      /usr/lib
      /usr/local/lib
      /usr/lib/mysql
      /usr/local/lib/mysql
      /opt/local/lib/mysql5/mysql
      )

    FIND_LIBRARY(MYSQLCONNECTOR_LIBRARY_DEBUG NAMES "mysqlcppconn.lib"
      PATHS
      /usr/lib
      /usr/local/lib
      /usr/lib/mysql
      /usr/local/lib/mysql
      /opt/local/lib/mysql5/mysql
      )
  ENDIF(WIN32 AND MSVC)
  
  IF(MYSQLCONNECTOR_INCLUDE_DIR)
    IF(MYSQLCONNECTOR_STATIC_LIBRARY_RELEASE AND MYSQLCONNECTOR_LIBRARY_RELEASE)
      SET(MYSQLCONNECTOR_LIBRARIES optimized ${MYSQLCONNECTOR_STATIC_LIBRARY_RELEASE} ${MYSQLCONNECTOR_LIBRARY_RELEASE})
      IF(MYSQLCONNECTOR_STATIC_LIBRARY_DEBUG AND MYSQLCONNECTOR_LIBRARY_DEBUG)
        SET(MYSQLCONNECTOR_LIBRARIES ${MYSQLCONNECTOR_LIBRARIES} debug ${MYSQLCONNECTOR_STATIC_LIBRARY_DEBUG} ${MYSQLCONNECTOR_LIBRARY_DEBUG})
      ENDIF(MYSQLCONNECTOR_STATIC_LIBRARY_DEBUG AND MYSQLCONNECTOR_LIBRARY_DEBUG)
      FIND_PACKAGE(OpenSSL)
      IF(OPENSSL_FOUND)
        SET(MYSQLCONNECTOR_LIBRARIES ${MYSQLCONNECTOR_LIBRARIES} ${OPENSSL_LIBRARIES})
      ENDIF(OPENSSL_FOUND)
    ENDIF(MYSQLCONNECTOR_STATIC_LIBRARY_RELEASE AND MYSQLCONNECTOR_LIBRARY_RELEASE)
  ENDIF(MYSQLCONNECTOR_INCLUDE_DIR)
  
  IF(MYSQLCONNECTOR_INCLUDE_DIR AND MYSQLCONNECTOR_LIBRARIES)
	SET(MYSQLCONNECTOR_INCLUDE_DIR ${MYSQLCONNECTOR_INCLUDE_DIR})
    SET(MYSQL_FOUND TRUE)
    MESSAGE(STATUS "Found MySQL Connector: ${MYSQLCONNECTOR_INCLUDE_DIR}, ${MYSQLCONNECTOR_LIBRARIES}")
  ELSE(MYSQLCONNECTOR_INCLUDE_DIR AND MYSQLCONNECTOR_LIBRARIES)
    SET(MYSQL_FOUND FALSE)
    MESSAGE(STATUS "MySQL not found.")
  ENDIF(MYSQLCONNECTOR_INCLUDE_DIR AND MYSQLCONNECTOR_LIBRARIES)

  MARK_AS_ADVANCED(MYSQLCONNECTOR_STATIC_LIBRARY_RELEASE MYSQLCONNECTOR_STATIC_LIBRARY_DEBUG MYSQLCONNECTOR_LIBRARY_RELEASE MYSQLCONNECTOR_LIBRARY_DEBUG)

ENDIF(MYSQLCONNECTOR_INCLUDE_DIR AND MYSQLCONNECTOR_LIBRARIES)





================================================
FILE: code/CMakeModules/FindOgg.cmake
================================================
# - Locate Ogg library
# This module defines
#  OGG_LIBRARY, the library to link against
#  OGG_FOUND, if false, do not try to link to OGG
#  OGG_INCLUDE_DIR, where to find headers.

IF(OGG_LIBRARY AND OGG_INCLUDE_DIR)
  # in cache already
  SET(OGG_FIND_QUIETLY TRUE)
ENDIF(OGG_LIBRARY AND OGG_INCLUDE_DIR)


FIND_PATH(OGG_INCLUDE_DIR
  ogg/ogg.h
  PATHS
  $ENV{OGG_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
)

FIND_LIBRARY(OGG_LIBRARY
  NAMES ogg libogg
  PATHS
  $ENV{OGG_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(OGG_LIBRARY AND OGG_INCLUDE_DIR)
  SET(OGG_FOUND "YES")
  IF(NOT OGG_FIND_QUIETLY)
    MESSAGE(STATUS "Found Ogg: ${OGG_LIBRARY}")
  ENDIF(NOT OGG_FIND_QUIETLY)
ELSE(OGG_LIBRARY AND OGG_INCLUDE_DIR)
  IF(NOT OGG_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find Ogg!")
  ENDIF(NOT OGG_FIND_QUIETLY)
ENDIF(OGG_LIBRARY AND OGG_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindOpenGLES.cmake
================================================
# - Try to find OpenGL ES
# Once done this will define
#  
#  OPENGLES_FOUND        - system has OpenGL ES
#  OPENGLES_EGL_FOUND    - system has EGL
#  OPENGLES_LIBRARIES    - Link these to use OpenGL ES and EGL
#   
# If you want to use just GL ES you can use these values
#  OPENGLES_GLES_LIBRARY - Path to OpenGL ES Library
#  OPENGLES_EGL_LIBRARY  - Path to EGL Library

FIND_LIBRARY(OPENGLES_GLES_LIBRARY
  NAMES GLESv1_CM libGLESv1_CM gles_cm libgles_cm
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_LIBRARY(OPENGLES_EGL_LIBRARY
  NAMES EGL libEGL
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(OPENGLES_GLES_LIBRARY)
  SET(OPENGLES_FOUND "YES")
  SET(OPENGLES_LIBRARIES ${OPENGLES_GLES_LIBRARY} ${OPENGLES_LIBRARIES})
  IF(OPENGLES_EGL_LIBRARY)
    SET(OPENGLES_EGL_FOUND "YES")
    SET(OPENGLES_LIBRARIES ${OPENGLES_EGL_LIBRARY} ${OPENGLES_LIBRARIES})
  ELSE(OPENGLES_EGL_LIBRARY)
    SET(OPENGLES_EGL_FOUND "NO")
  ENDIF(OPENGLES_EGL_LIBRARY)
ENDIF(OPENGLES_GLES_LIBRARY)


================================================
FILE: code/CMakeModules/FindOpenSSL.cmake
================================================
# - Locate OpenSSL library
# This module defines
# OPENSSL_INCLUDE_DIRS   - where to find openssl/ssl.h, etc.
# OPENSSL_LIBRARIES      - List of libraries when using openssl.
# OPENSSL_FOUND          - True if openssl found.
# OPENSSL_VERSION_STRING - the version of openssl found (since CMake 2.8.8)

IF(OPENSSL_LIBRARIES AND OPENSSL_INCLUDE_DIR)
  # in cache already
  SET(OPENSSL_FIND_QUIETLY TRUE)
ENDIF(OPENSSL_LIBRARIES AND OPENSSL_INCLUDE_DIR)

FIND_PATH(OPENSSL_INCLUDE_DIR ssl.h
  PATH_SUFFIXES openssl
  $ENV{OPENSSL_DIR}/include
  /usr/local/include
  /usr/local/include/openssl
)

SET(LIBRARY_NAME_RELEASE libssl libssl.a)
SET(LIBRARY_NAME_DEBUG libssl libssl.a)

FIND_LIBRARY(OPENSSL_LIBRARIE_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{OPENSSL_DIR}/lib
  /usr/local/lib64
)

FIND_LIBRARY(OPENSSL_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{OPENSSL_DIR}/lib
  /usr/local/lib64
)

SET(LIBRARY_NAME_CRYPTO libcrypto libcrypto.a)
FIND_LIBRARY(CRYPTO_LIBRARIE_RELEASE
  NAMES ${LIBRARY_NAME_CRYPTO}
  PATHS
  $ENV{OPENSSL_DIR}/lib
  /usr/local/lib64
)

IF(OPENSSL_INCLUDE_DIR)
  IF(OPENSSL_LIBRARIE_RELEASE AND CRYPTO_LIBRARIE_RELEASE)
    # Case where both Release and Debug versions are provided
    SET(OPENSSL_FOUND TRUE)
    #SET(OPENSSL_LIBRARIES optimized ${OPENSSL_LIBRARIE_RELEASE} debug ${OPENSSL_LIBRARY_DEBUG})
    SET(OPENSSL_LIBRARIES "${OPENSSL_LIBRARIE_RELEASE};${CRYPTO_LIBRARIE_RELEASE}" CACHE STRING "OpenSSL Libraries")
  ENDIF(OPENSSL_LIBRARIE_RELEASE AND CRYPTO_LIBRARIE_RELEASE)
ENDIF(OPENSSL_INCLUDE_DIR)

IF(OPENSSL_FOUND)
  IF(NOT OPENSSL_FIND_QUIETLY)
    MESSAGE(STATUS "Found OpenSSL: ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
  ENDIF(NOT OPENSSL_FIND_QUIETLY)
ELSE(OPENSSL_FOUND)
  IF(NOT OPENSSL_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find OpenSSL! INCLUDE: ${OPENSSL_INCLUDE_DIR}  LIB:${OPENSSL_LIBRARIES}  ")
  ENDIF(NOT OPENSSL_FIND_QUIETLY)
ENDIF(OPENSSL_FOUND)

MARK_AS_ADVANCED(OPENSSL_LIBRARIE_RELEASE OPENSSL_LIBRARY_DEBUG)







================================================
FILE: code/CMakeModules/FindPBC.cmake
================================================
# - Locate PBC library
# This module defines
# PBC_INCLUDE_DIRS   - where to find pbc/pbc.h, etc.
# PBC_LIBRARIES      - List of libraries when using pbc.
# PBC_FOUND          - True if pbc found.
# PBC_VERSION_STRING - the version of pbc found (since CMake 2.8.8)

FIND_PATH(PBC_INCLUDE_DIR pbc.h
  PATH_SUFFIXES pbc
  $ENV{PBC_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  /usr/local/include/pbc
  /mingw/include
)

SET(LIBRARY_NAME_RELEASE pbc)
SET(LIBRARY_NAME_DEBUG pbc)

FIND_LIBRARY(PBC_LIBRARY_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{PBC_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/lib64
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/pbc
  /mingw/lib
)

FIND_LIBRARY(PBC_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{PBC_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/pbc
  /mingw/lib
)

IF(PBC_INCLUDE_DIR)
  IF(PBC_LIBRARY_RELEASE AND PBC_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(PBC_FOUND TRUE)
    SET(PBC_LIBRARY optimized ${PBC_LIBRARY_RELEASE} debug ${PBC_LIBRARY_DEBUG})
  ELSEIF(PBC_LIBRARY_RELEASE)
    # Normal case
    SET(PBC_FOUND TRUE)
    SET(PBC_LIBRARY ${PBC_LIBRARY_RELEASE})
  ELSEIF(PBC_LIBRARY_DEBUG)
    # Case where PBC is compiled from sources (debug version is compiled by default)
    SET(PBC_FOUND TRUE)
    SET(PBC_LIBRARY ${PBC_LIBRARY_DEBUG})
  ENDIF(PBC_LIBRARY_RELEASE AND PBC_LIBRARY_DEBUG)
ENDIF(PBC_INCLUDE_DIR)

IF(PBC_FOUND)
    MESSAGE(STATUS "Found PBC: ${PBC_INCLUDE_DIR} ${PBC_LIBRARY}")
ELSE(PBC_FOUND)
    MESSAGE(STATUS "Warning: Unable to find PBC! INCLUDE: ${PBC_INCLUDE_DIR}  LIB:${PBC_LIBRARY}  ")
ENDIF(PBC_FOUND)

MARK_AS_ADVANCED(PBC_LIBRARY_RELEASE PBC_LIBRARY_DEBUG)


================================================
FILE: code/CMakeModules/FindProtoBuf.cmake
================================================
# - Locate ProtoBuf library
# This module defines
#  PROTOBUF_LIBRARIES, the libraries to link against
#  PROTOBUF_FOUND, if false, do not try to link to PROTO_BUF
#  PROTOBUF_INCLUDE_DIR, where to find headers.

IF(PROTOBUF_LIBRARIES AND PROTOBUF_INCLUDE_DIR)
  # in cache already
  SET(PROTOBUF_FIND_QUIETLY TRUE)
ENDIF(PROTOBUF_LIBRARIES AND PROTOBUF_INCLUDE_DIR)

FIND_PATH(PROTOBUF_INCLUDE_DIR generated_message_util.h
  PATH_SUFFIXES google/protobuf
  $ENV{PROTOBUF_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  /usr/local/include/google/protobuf
  /usr/local/include/google-protobuf
)

SET(LIBRARY_NAME_RELEASE protobuf libprotobuf)
SET(LIBRARY_NAME_DEBUG protobufd libprotobufd)
	
IF(WITH_STLPORT AND WIN32)
	SET(LIBRARY_NAME_RELEASE libprotobuf_stlport ${LIBRARY_NAME_RELEASE})
	SET(LIBRARY_NAME_DEBUG libprotobuf_stlportd ${LIBRARY_NAME_RELEASE})
ENDIF(WITH_STLPORT AND WIN32)

SET(PROTOBUF_LIBRARY_RELEASE NOTFOUND)
SET(PROTOBUF_LIBRARY_DEBUG NOTFOUND)

FIND_LIBRARY(PROTOBUF_LIBRARY_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{PROTOBUF_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/google-protobuf
)

FIND_LIBRARY(PROTOBUF_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{PROTOBUF_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/google-protobuf
)

IF(PROTOBUF_INCLUDE_DIR)
  IF(PROTOBUF_LIBRARY_RELEASE AND PROTOBUF_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(PROTOBUF_FOUND TRUE)
    SET(PROTOBUF_LIBRARIES optimized ${PROTOBUF_LIBRARY_RELEASE} debug ${PROTOBUF_LIBRARY_DEBUG})
  ELSEIF(PROTOBUF_LIBRARY_RELEASE)
    # Normal case
    SET(PROTOBUF_FOUND TRUE)
    SET(PROTOBUF_LIBRARIES ${PROTOBUF_LIBRARY_RELEASE})
  ELSEIF(PROTOBUF_LIBRARY_DEBUG)
    # Case where ProtoBuf is compiled from sources (debug version is compiled by default)
    SET(PROTOBUF_FOUND TRUE)
    SET(PROTOBUF_LIBRARIES ${PROTOBUF_LIBRARY_DEBUG})
  ENDIF(PROTOBUF_LIBRARY_RELEASE AND PROTOBUF_LIBRARY_DEBUG)
ENDIF(PROTOBUF_INCLUDE_DIR)

IF(PROTOBUF_FOUND)
  IF(NOT PROTOBUF_FIND_QUIETLY)
    MESSAGE(STATUS "Found ProtoBuf: ${PROTOBUF_INCLUDE_DIR} ${PROTOBUF_LIBRARIES}")
  ENDIF(NOT PROTOBUF_FIND_QUIETLY)
ELSE(PROTOBUF_FOUND)
  IF(NOT PROTOBUF_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find ProtoBuf!")
  ENDIF(NOT PROTOBUF_FIND_QUIETLY)
ENDIF(PROTOBUF_FOUND)

MARK_AS_ADVANCED(PROTOBUF_LIBRARY_RELEASE PROTOBUF_LIBRARY_DEBUG)


================================================
FILE: code/CMakeModules/FindS3TC.cmake
================================================
# - Locate S3TC library
# This module defines
#  S3TC_LIBRARY, the library to link against
#  S3TC_FOUND, if false, do not try to link to S3TC
#  S3TC_INCLUDE_DIR, where to find headers.

IF(S3TC_LIBRARY AND S3TC_INCLUDE_DIR)
  # in cache already
  SET(S3TC_FIND_QUIETLY TRUE)
ENDIF(S3TC_LIBRARY AND S3TC_INCLUDE_DIR)


FIND_PATH(S3TC_INCLUDE_DIR
  s3_intrf.h
  PATHS
  $ENV{S3TC_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES S3TC
)

FIND_LIBRARY(S3TC_LIBRARY
  NAMES s3tc libs3tc
  PATHS
  $ENV{S3TC_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(S3TC_LIBRARY AND S3TC_INCLUDE_DIR)
  SET(S3TC_FOUND "YES")
  IF(NOT S3TC_FIND_QUIETLY)
    MESSAGE(STATUS "Found S3TC: ${S3TC_LIBRARY}")
  ENDIF(NOT S3TC_FIND_QUIETLY)
ELSE(S3TC_LIBRARY AND S3TC_INCLUDE_DIR)
  IF(NOT S3TC_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find S3TC!")
  ENDIF(NOT S3TC_FIND_QUIETLY)
ENDIF(S3TC_LIBRARY AND S3TC_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindSTLport.cmake
================================================
# Look for a directory containing STLport.
#
# The following values are defined
# STLPORT_INCLUDE_DIR - where to find vector, etc.
# STLPORT_LIBRARIES   - link against these to use STLport
# STLPORT_FOUND       - True if the STLport is available.

# also defined, but not for general use are
IF(STLPORT_LIBRARIES AND STLPORT_INCLUDE_DIR)
  # in cache already
  SET(STLPORT_FIND_QUIETLY TRUE)
ENDIF(STLPORT_LIBRARIES AND STLPORT_INCLUDE_DIR)

FIND_PATH(STLPORT_INCLUDE_DIR 
  iostream
  PATHS
  /usr/local/include/stlport
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES stlport
)

FIND_LIBRARY(STLPORT_LIBRARY_DEBUG
  NAMES
  stlport_cygwin_debug
  stlport_cygwin_stldebug
  stlport_gcc_debug
  stlport_gcc_stldebug
  stlportstld_x
  stlportstld_x.5.2
  stlportd
  stlportd.5.2
  stlportd_statix
  stlportd_static
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_LIBRARY(STLPORT_LIBRARY_RELEASE
  NAMES
  stlport_cygwin
  stlport_gcc
  stlport
  stlport_x
  stlport_x.5.2
  stlport.5.2
  stlport_statix
  stlport_static
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(STLPORT_INCLUDE_DIR)
  IF(STLPORT_LIBRARY_RELEASE)
    SET(STLPORT_FOUND TRUE)

    SET(STLPORT_LIBRARIES ${STLPORT_LIBRARY_RELEASE})
    IF(STLPORT_LIBRARY_DEBUG)
      SET(STLPORT_LIBRARIES optimized ${STLPORT_LIBRARIES} debug ${STLPORT_LIBRARY_DEBUG})
    ENDIF(STLPORT_LIBRARY_DEBUG)
  ENDIF(STLPORT_LIBRARY_RELEASE)
ENDIF(STLPORT_INCLUDE_DIR)

IF(STLPORT_FOUND)
  IF(NOT STLPORT_FIND_QUIETLY)
    MESSAGE(STATUS "Found STLport: ${STLPORT_INCLUDE_DIR}   ${STLPORT_LIBRARIES}")
  ENDIF(NOT STLPORT_FIND_QUIETLY)
ELSE(STLPORT_FOUND)
  IF(NOT STLPORT_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find STLport!")
  ENDIF(NOT STLPORT_FIND_QUIETLY)
ENDIF(STLPORT_FOUND)

MARK_AS_ADVANCED(STLPORT_LIBRARY_RELEASE STLPORT_LIBRARY_DEBUG)


================================================
FILE: code/CMakeModules/FindSquish.cmake
================================================
#
# Find the LibSquish includes and library
#
# This module defines
# SQUISH_INCLUDE_DIR, where to find squish.h
# SQUISH_LIBRARIES, where to find the Squish libraries.
# SQUISH_FOUND, If false, do not try to use Squish.

# also defined, but not for general use are
IF(SQUISH_LIBRARIES AND SQUISH_INCLUDE_DIR)
  # in cache already
  SET(SQUISH_FIND_QUIETLY TRUE)
ENDIF(SQUISH_LIBRARIES AND SQUISH_INCLUDE_DIR)

FIND_PATH(SQUISH_INCLUDE_DIR
  squish.h
  PATHS
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  PATH_SUFFIXES cppunit
)

FIND_LIBRARY(SQUISH_LIBRARY_RELEASE
  squish
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_LIBRARY(SQUISH_LIBRARY_DEBUG
  squishd
  PATHS
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(SQUISH_INCLUDE_DIR)
  IF(SQUISH_LIBRARY_RELEASE)
    SET(SQUISH_FOUND "YES")
    SET(SQUISH_LIBRARIES "optimized;${SQUISH_LIBRARY_RELEASE}")
    IF(SQUISH_LIBRARY_DEBUG)
      SET(SQUISH_LIBRARIES "${SQUISH_LIBRARIES};debug;${SQUISH_LIBRARY_DEBUG}")
    ELSE(SQUISH_LIBRARY_DEBUG)
      SET(SQUISH_LIBRARIES "${SQUISH_LIBRARIES};debug;${SQUISH_LIBRARY_RELEASE}")
      MESSAGE("Debug Squish NOT found, using the release version!")
    ENDIF(SQUISH_LIBRARY_DEBUG)
  ENDIF(SQUISH_LIBRARY_RELEASE)
ENDIF(SQUISH_INCLUDE_DIR)

IF(SQUISH_FOUND)
  IF(NOT SQUISH_FIND_QUIETLY)
    MESSAGE(STATUS "Found Squish: ${SQUISH_LIBRARIES}")
  ENDIF(NOT SQUISH_FIND_QUIETLY)
  FILE(STRINGS ${SQUISH_INCLUDE_DIR}/squish.h METRIC REGEX "metric = 0")
  IF(METRIC)
    SET(SQUISH_COMPRESS_HAS_METRIC ON)
    SET(SQUISH_DEFINITIONS -DSQUISH_COMPRESS_HAS_METRIC)
  ENDIF(METRIC)
ELSE(SQUISH_FOUND)
  IF(NOT SQUISH_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find Squish!")
  ENDIF(NOT SQUISH_FIND_QUIETLY)
ENDIF(SQUISH_FOUND)

MARK_AS_ADVANCED(SQUISH_LIBRARY_RELEASE SQUISH_LIBRARY_DEBUG)


================================================
FILE: code/CMakeModules/FindTinyXml.cmake
================================================
# - Locate TinyXml library
# This module defines
#  TINYXML_LIBRARIES, the libraries to link against
#  TINYXML_FOUND, if false, do not try to link to TINYXML
#  TINYXML_INCLUDE_DIR, where to find headers.

IF(TINYXML_LIBRARIES AND TINYXML_INCLUDE_DIR)
  # in cache already
  SET(TINYXML_FIND_QUIETLY TRUE)
ENDIF(TINYXML_LIBRARIES AND TINYXML_INCLUDE_DIR)

FIND_PATH(TINYXML_INCLUDE_DIR tinyxml.h
  PATH_SUFFIXES tinyxml
  $ENV{TINYXML_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
)

SET(LIBRARY_NAME_RELEASE tinyxml libtinyxml)
SET(LIBRARY_NAME_DEBUG tinyxml_d tinyxmld libtinyxml_d libtinyxmld)

FIND_LIBRARY(TINYXML_LIBRARY_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{TINYXML_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_LIBRARY(TINYXML_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{TINYXML_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(TINYXML_INCLUDE_DIR)
  IF(TINYXML_LIBRARY_RELEASE AND TINYXML_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(TINYXML_FOUND TRUE)
    SET(TINYXML_LIBRARIES optimized ${TINYXML_LIBRARY_RELEASE} debug ${TINYXML_LIBRARY_DEBUG})
  ELSEIF(TINYXML_LIBRARY_RELEASE)
    # Normal case
    SET(TINYXML_FOUND TRUE)
    SET(TINYXML_LIBRARIES ${TINYXML_LIBRARY_RELEASE})
  ELSEIF(TINYXML_LIBRARY_DEBUG)
    # Case where TinyXml is compiled from sources (debug version is compiled by default)
    SET(TINYXML_FOUND TRUE)
    SET(TINYXML_LIBRARIES ${TINYXML_LIBRARY_DEBUG})
  ENDIF(TINYXML_LIBRARY_RELEASE AND TINYXML_LIBRARY_DEBUG)
ENDIF(TINYXML_INCLUDE_DIR)

IF(TINYXML_FOUND)
  IF(NOT TINYXML_FIND_QUIETLY)
    MESSAGE(STATUS "Found TinyXml: ${TINYXML_INCLUDE_DIR} ${TINYXML_LIBRARIES}")
  ENDIF(NOT TINYXML_FIND_QUIETLY)
ELSE(TINYXML_FOUND)
  IF(NOT TINYXML_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find TinyXml!")
  ENDIF(NOT TINYXML_FIND_QUIETLY)
ENDIF(TINYXML_FOUND)

MARK_AS_ADVANCED(TINYXML_LIBRARY_RELEASE TINYXML_LIBRARY_DEBUG)


================================================
FILE: code/CMakeModules/FindToLua.cmake
================================================
# - Locate ToLua library
# This module defines
#  TOLUA_LIBRARIES, the libraries to link against
#  TOLUA_FOUND, if false, do not try to link to TOLUA
#  TOLUA_INCLUDE_DIR, where to find headers.

IF(TOLUA_LIBRARIES AND TOLUA_INCLUDE_DIR)
  # in cache already
  SET(TOLUA_FIND_QUIETLY TRUE)
ENDIF(TOLUA_LIBRARIES AND TOLUA_INCLUDE_DIR)

FIND_PACKAGE(Lua51 REQUIRED)

FIND_PATH(TOLUA_INCLUDE_DIR tolua++.h
  PATH_SUFFIXES tolua lua51
  $ENV{TOLUA_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
  /usr/local/include/lua51
  /mingw/include
)

SET(LIBRARY_NAME_RELEASE tolua++5.1 libtolua++.a libtolua++5.1.a libtolua++.so)
SET(LIBRARY_NAME_DEBUG tolua++5.1 libtolua++.a libtolua++5.1.a libtolua++.so)

FIND_LIBRARY(TOLUA_LIBRARY_RELEASE
  NAMES ${LIBRARY_NAME_RELEASE}
  PATHS
  $ENV{TOLUA_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/lib64
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/lua51
  /mingw/lib
)

FIND_LIBRARY(TOLUA_LIBRARY_DEBUG
  NAMES ${LIBRARY_NAME_DEBUG}
  PATHS
  $ENV{TOLUA_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
  /usr/local/lib/lua51
  /mingw/lib
)

IF(TOLUA_INCLUDE_DIR)
  IF(TOLUA_LIBRARY_RELEASE AND TOLUA_LIBRARY_DEBUG)
    # Case where both Release and Debug versions are provided
    SET(TOLUA_FOUND TRUE)
    SET(TOLUA_LIBRARIES optimized ${TOLUA_LIBRARY_RELEASE} debug ${TOLUA_LIBRARY_DEBUG})
  ELSEIF(TOLUA_LIBRARY_RELEASE)
    # Normal case
    SET(TOLUA_FOUND TRUE)
    SET(TOLUA_LIBRARIES ${TOLUA_LIBRARY_RELEASE})
  ELSEIF(TOLUA_LIBRARY_DEBUG)
    # Case where ToLua is compiled from sources (debug version is compiled by default)
    SET(TOLUA_FOUND TRUE)
    SET(TOLUA_LIBRARIES ${TOLUA_LIBRARY_DEBUG})
  ENDIF(TOLUA_LIBRARY_RELEASE AND TOLUA_LIBRARY_DEBUG)
ENDIF(TOLUA_INCLUDE_DIR)

IF(TOLUA_FOUND)
  IF(NOT TOLUA_FIND_QUIETLY)
    MESSAGE(STATUS "Found ToLua: ${TOLUA_INCLUDE_DIR} ${TOLUA_LIBRARIES}")
  ENDIF(NOT TOLUA_FIND_QUIETLY)
ELSE(TOLUA_FOUND)
  IF(NOT TOLUA_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find ToLua! INCLUDE: ${TOLUA_INCLUDE_DIR}  LIB:${TOLUA_LIBRARIES}  ")
  ENDIF(NOT TOLUA_FIND_QUIETLY)
ENDIF(TOLUA_FOUND)

MARK_AS_ADVANCED(TOLUA_LIBRARY_RELEASE TOLUA_LIBRARY_DEBUG)


================================================
FILE: code/CMakeModules/FindVorbis.cmake
================================================
# - Locate Vorbis library
# This module defines
#  VORBIS_LIBRARY, the library to link against
#  VORBIS_FOUND, if false, do not try to link to VORBIS
#  VORBIS_INCLUDE_DIR, where to find headers.

IF(VORBIS_LIBRARY AND VORBIS_INCLUDE_DIR)
  # in cache already
  SET(VORBIS_FIND_QUIETLY TRUE)
ENDIF(VORBIS_LIBRARY AND VORBIS_INCLUDE_DIR)


FIND_PATH(VORBIS_INCLUDE_DIR
  vorbis/vorbisfile.h
  PATHS
  $ENV{VORBIS_DIR}/include
  /usr/local/include
  /usr/include
  /sw/include
  /opt/local/include
  /opt/csw/include
  /opt/include
)

FIND_LIBRARY(VORBIS_LIBRARY
  NAMES vorbis libvorbis
  PATHS
  $ENV{VORBIS_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

FIND_LIBRARY(VORBISFILE_LIBRARY
  NAMES vorbisfile libvorbisfile
  PATHS
  $ENV{VORBIS_DIR}/lib
  /usr/local/lib
  /usr/lib
  /usr/local/X11R6/lib
  /usr/X11R6/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(VORBIS_LIBRARY AND VORBISFILE_LIBRARY AND VORBIS_INCLUDE_DIR)
  SET(VORBIS_FOUND "YES")
  SET(VORBIS_LIBRARIES ${VORBIS_LIBRARY} ${VORBISFILE_LIBRARY})
  IF(NOT VORBIS_FIND_QUIETLY)
    MESSAGE(STATUS "Found Vorbis: ${VORBIS_LIBRARY}")
  ENDIF(NOT VORBIS_FIND_QUIETLY)
ELSE(VORBIS_LIBRARY AND VORBISFILE_LIBRARY AND VORBIS_INCLUDE_DIR)
  IF(NOT VORBIS_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find Vorbis!")
  ENDIF(NOT VORBIS_FIND_QUIETLY)
ENDIF(VORBIS_LIBRARY AND VORBISFILE_LIBRARY AND VORBIS_INCLUDE_DIR)


================================================
FILE: code/CMakeModules/FindWindowsSDK.cmake
================================================
# - Find Windows Platform SDK
# Find the Windows includes
#
#  WINSDK_INCLUDE_DIR - where to find Windows.h
#  WINSDK_INCLUDE_DIRS - where to find all Windows headers
#  WINSDK_LIBRARY_DIR - where to find libraries
#  WINSDK_FOUND       - True if Windows SDK found.

IF(WINSDK_FOUND)
  # If Windows SDK already found, skip it
  RETURN()
ENDIF()

# Values can be CURRENT or any existing versions 7.1, 8.0A, etc...
SET(WINSDK_VERSION "CURRENT" CACHE STRING "Windows SDK version to prefer")

MACRO(DETECT_WINSDK_VERSION_HELPER _ROOT _VERSION)
  GET_FILENAME_COMPONENT(WINSDK${_VERSION}_DIR "[${_ROOT}\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v${_VERSION};InstallationFolder]" ABSOLUTE)

  IF(WINSDK${_VERSION}_DIR AND NOT WINSDK${_VERSION}_DIR STREQUAL "/registry" AND EXISTS "${WINSDK${_VERSION}_DIR}/Include")
    SET(WINSDK${_VERSION}_FOUND ON)
    GET_FILENAME_COMPONENT(WINSDK${_VERSION}_VERSION_FULL "[${_ROOT}\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\v${_VERSION};ProductVersion]" NAME)
    IF(NOT WindowsSDK_FIND_QUIETLY)
      MESSAGE(STATUS "Found Windows SDK ${_VERSION} in ${WINSDK${_VERSION}_DIR}")
    ENDIF()
  ELSE()
    SET(WINSDK${_VERSION}_DIR "")
  ENDIF()
ENDMACRO()

MACRO(DETECT_WINKIT_VERSION _VERSION _SUFFIX)
  GET_FILENAME_COMPONENT(WINSDK${_VERSION}_DIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot${_SUFFIX}]" ABSOLUTE)

  IF(WINSDK${_VERSION}_DIR AND NOT WINSDK${_VERSION}_DIR STREQUAL "/registry")
    SET(WINSDK${_VERSION}_FOUND ON)
    SET(WINSDK${_VERSION}_VERSION_FULL "${_VERSION}")
    IF(NOT WindowsSDK_FIND_QUIETLY)
      MESSAGE(STATUS "Found Windows Kit ${_VERSION} in ${WINSDK${_VERSION}_DIR}")
    ENDIF()
    LIST(APPEND WINSDK_DETECTED_VERSIONS ${_VERSION})
  ELSE()
    SET(WINSDK${_VERSION}_DIR "")
  ENDIF()
ENDMACRO()

MACRO(DETECT_WINSDK_VERSION _VERSION)
  SET(WINSDK${_VERSION}_FOUND OFF)
  DETECT_WINSDK_VERSION_HELPER("HKEY_CURRENT_USER" ${_VERSION})

  IF(NOT WINSDK${_VERSION}_FOUND)
    DETECT_WINSDK_VERSION_HELPER("HKEY_LOCAL_MACHINE" ${_VERSION})
  ENDIF()
ENDMACRO()

SET(WINSDK_DETECTED_VERSIONS)

# Fixed versions for Windows Kits (VC++ from 2012)
DETECT_WINKIT_VERSION("10.0" "10")
DETECT_WINKIT_VERSION("8.1" "81")
DETECT_WINKIT_VERSION("8.0" "")

# For VC++ up to 2010
SET(WINSDK_VERSIONS "7.1" "7.1A" "7.0" "7.0A" "6.1" "6.0" "6.0A")

# Search all supported Windows SDKs
FOREACH(_VERSION ${WINSDK_VERSIONS})
  DETECT_WINSDK_VERSION(${_VERSION})

  IF(WINSDK${_VERSION}_FOUND)
    LIST(APPEND WINSDK_DETECTED_VERSIONS ${_VERSION})
  ENDIF()
ENDFOREACH()

SET(WINSDK_SUFFIXES)

IF(TARGET_ARM64)
  SET(WINSDK8_SUFFIX "arm64")
ELSEIF(TARGET_ARM)
  SET(WINSDK8_SUFFIX "arm")
ELSEIF(TARGET_X64)
  SET(WINSDK8_SUFFIX "x64")
  SET(WINSDK_SUFFIXES "x64" "amd64")
ELSEIF(TARGET_X86)
  SET(WINSDK8_SUFFIX "x86")
ENDIF()

SET(WINSDKCURRENT_VERSION_INCLUDE $ENV{INCLUDE})

IF(WINSDKCURRENT_VERSION_INCLUDE)
  FILE(TO_CMAKE_PATH "${WINSDKCURRENT_VERSION_INCLUDE}" WINSDKCURRENT_VERSION_INCLUDE)
ENDIF()

SET(WINSDKENV_DIR $ENV{WINSDK_DIR})

IF(NOT WINSDKENV_DIR)
  SET(WINSDKENV_DIR $ENV{WindowsSDKDir})
ENDIF()

MACRO(FIND_WINSDK_VERSION_HEADERS)
  IF(WINSDK_DIR AND NOT WINSDK_VERSION)
    # Search version in headers
    FIND_FILE(_MSI_FILE Msi.h
      PATHS
      ${WINSDK_DIR}/Include/um
      ${WINSDK_DIR}/Include
    )

    IF(_MSI_FILE)
      IF(NOT WINSDK_VERSION)
        # Look for Windows SDK 8.1
        FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WINBLUE")

        IF(_CONTENT)
          SET(WINSDK_VERSION "8.1")
        ENDIF()
      ENDIF()

      IF(NOT WINSDK_VERSION)
        # Look for Windows SDK 8.0
        FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WIN8")

        IF(_CONTENT)
          SET(WINSDK_VERSION "8.0")
        ENDIF()
      ENDIF()

      IF(NOT WINSDK_VERSION)
        # Look for Windows SDK 7.0
        FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WIN7")

        IF(_CONTENT)
          FIND_FILE(_WINSDKVER_FILE winsdkver.h WinSDKVer.h
            PATHS
            ${WINSDK_DIR}/Include/um
            ${WINSDK_DIR}/Include
          )

          IF(_WINSDKVER_FILE)
            # Load WinSDKVer.h content
            FILE(STRINGS ${_WINSDKVER_FILE} _CONTENT REGEX "^#define NTDDI_MAXVER")

            # Get NTDDI_MAXVER value
            STRING(REGEX REPLACE "^.*0x([0-9A-Fa-f]+).*$" "\\1" _WINSDKVER "${_CONTENT}")

            # In Windows SDK 7.1, NTDDI_MAXVER is wrong
            IF(_WINSDKVER STREQUAL "06010000")
              SET(WINSDK_VERSION "7.1")
            ELSEIF(_WINSDKVER STREQUAL "0601")
              SET(WINSDK_VERSION "7.0A")
            ELSE()
              MESSAGE(FATAL_ERROR "Can't determine Windows SDK version with NTDDI_MAXVER 0x${_WINSDKVER}")
            ENDIF()
          ELSE()
            SET(WINSDK_VERSION "7.0")
          ENDIF()
        ENDIF()
      ENDIF()

      IF(NOT WINSDK_VERSION)
        # Look for Windows SDK 6.0
        FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_VISTA")

        IF(_CONTENT)
          SET(WINSDK_VERSION "6.0")
        ENDIF()
      ENDIF()

      IF(NOT WINSDK_VERSION)
        # Look for Windows SDK 5.2
        FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WS03SP1")

        IF(_CONTENT)
          SET(WINSDK_VERSION "5.2")
        ENDIF()
      ENDIF()

      IF(NOT WINSDK_VERSION)
        # Look for Windows SDK 5.1
        FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WINXP")

        IF(_CONTENT)
          SET(WINSDK_VERSION "5.1")
        ENDIF()
      ENDIF()

      IF(NOT WINSDK_VERSION)
        # Look for Windows SDK 5.0
        FILE(STRINGS ${_MSI_FILE} _CONTENT REGEX "^#ifndef NTDDI_WIN2K")

        IF(_CONTENT)
          SET(WINSDK_VERSION "5.0")
        ENDIF()
      ENDIF()
    ELSE()
      MESSAGE(FATAL_ERROR "Unable to find Msi.h in ${WINSDK_DIR}")
    ENDIF()
  ENDIF()
ENDMACRO()

MACRO(USE_CURRENT_WINSDK)
  SET(WINSDK_DIR "")
  SET(WINSDK_VERSION "")
  SET(WINSDK_VERSION_FULL "")

  # Use WINSDK environment variable
  IF(WINSDKENV_DIR)
    FIND_PATH(WINSDK_DIR Windows.h
      HINTS
      ${WINSDKENV_DIR}/Include/um
      ${WINSDKENV_DIR}/Include
    )
  ENDIF()

  # Use INCLUDE environment variable
  IF(NOT WINSDK_DIR AND WINSDKCURRENT_VERSION_INCLUDE)
    FOREACH(_INCLUDE ${WINSDKCURRENT_VERSION_INCLUDE})
      FILE(TO_CMAKE_PATH ${_INCLUDE} _INCLUDE)

      # Look for Windows.h because there are several paths
      IF(EXISTS ${_INCLUDE}/Windows.h)
        STRING(REGEX REPLACE "/(include|INCLUDE|Include)(.*)" "" WINSDK_DIR ${_INCLUDE})
        MESSAGE(STATUS "Found Windows SDK in INCLUDE environment variable: ${WINSDK_DIR}")
        BREAK()
      ENDIF()
    ENDFOREACH()
  ENDIF()

  IF(WINSDK_DIR)
    # Compare WINSDK_DIR with registered Windows SDKs
    FOREACH(_VERSION ${WINSDK_DETECTED_VERSIONS})
      IF(WINSDK_DIR STREQUAL "${WINSDK${_VERSION}_DIR}")
        SET(WINSDK_VERSION ${_VERSION})
        SET(WINSDK_VERSION_FULL "${WINSDK${WINSDK_VERSION}_VERSION_FULL}")
        BREAK()
      ENDIF()
    ENDFOREACH()

    FIND_WINSDK_VERSION_HEADERS()
  ENDIF()

  IF(NOT WINSDK_DIR)
    # Use Windows SDK versions installed with VC++ when possible
    IF(MSVC_VERSION GREATER 1909)
      # Special case, use Kits for SDK
      SET(WINSDK_VERSION "10.0")
      SET(WINSDK_DIR ${WINSDK_UCRT_DIR})
    ELSEIF(MSVC14)
      SET(WINSDK_VERSION "8.1")
    ELSEIF(MSVC12)
      SET(WINSDK_VERSION "8.1")
    ELSEIF(MSVC11)
      SET(WINSDK_VERSION "8.0")
    ELSEIF(MSVC10)
      IF(NOT TARGET_X64 OR NOT MSVC_EXPRESS)
        SET(WINSDK_VERSION "7.0A")
      ENDIF()
    ELSEIF(MSVC90)
      IF(NOT MSVC_EXPRESS)
        SET(WINSDK_VERSION "6.0A")
      ENDIF()
    ELSEIF(MSVC80)
      SET(WINSDK_MSVC80_COMPATIBLES "7.1" "7.1A" "7.0" "7.0A" "6.1" "6.0" "6.0A" "5.2A")

      # look for each Windows SDK supported by VC++ 2005 (7.1 is the latest)
      FOREACH(_VERSION ${WINSDK_DETECTED_VERSIONS})
        # look if this version of Windows SDK is installed
        LIST(FIND WINSDK_MSVC80_COMPATIBLES ${_VERSION} _FOUND)
        IF(NOT _FOUND EQUAL -1)
          SET(WINSDK_VERSION "${_VERSION}")
          BREAK()
        ENDIF()
      ENDFOREACH()

      IF(NOT MSVC_EXPRESS AND NOT WINSDK_VERSION)
        SET(WINSDK_VERSION "5.2A")
      ENDIF()
    ELSE()
      MESSAGE(FATAL_ERROR "Your compiler is either too old or too recent, please update this CMake module.")
    ENDIF()

    # Use installed Windows SDK
    IF(NOT WINSDK_VERSION)
      IF(WINSDK8.1_FOUND)
        SET(WINSDK_VERSION "8.1")
      ELSEIF(WINSDK8.0_FOUND)
        SET(WINSDK_VERSION "8.0")
      ELSEIF(WINSDK7.1_FOUND)
        SET(WINSDK_VERSION "7.1")
      ELSEIF(WINSDK7.0_FOUND)
        SET(WINSDK_VERSION "7.0")
      ELSEIF(WINSDK6.1_FOUND)
        SET(WINSDK_VERSION "6.1")
      ELSEIF(WINSDK6.0_FOUND)
        SET(WINSDK_VERSION "6.0")
      ELSE()
        MESSAGE(FATAL_ERROR "You have no compatible Windows SDK installed.")
      ENDIF()
    ENDIF()

    # Look for correct registered Windows SDK version
    FOREACH(_VERSION ${WINSDK_DETECTED_VERSIONS})
      IF(WINSDK_VERSION STREQUAL _VERSION)
        SET(WINSDK_VERSION_FULL "${WINSDK${WINSDK_VERSION}_VERSION_FULL}")
        SET(WINSDK_DIR "${WINSDK${WINSDK_VERSION}_DIR}")
        BREAK()
      ENDIF()
    ENDFOREACH()
  ENDIF()
ENDMACRO()

IF(MSVC14)
  # Under VC++ 2015 and 2017, stdio.h, stdlib.h, etc... are part of UCRT
  SET(WINSDK_UCRT_VERSION "10.0")
ENDIF()

# Look for correct UCRT
IF(WINSDK_UCRT_VERSION AND WINSDK${WINSDK_UCRT_VERSION}_FOUND)
  SET(WINSDK_UCRT_DIR "${WINSDK${WINSDK_UCRT_VERSION}_DIR}")
ENDIF()

IF(WINSDK_UCRT_DIR)
  # determine exact UCRT version
  SET(WINSDK_UCRT_INCLUDE_ROOT_DIR ${WINSDK_UCRT_DIR}/Include)
  SET(WINSDK_UCRT_LIB_ROOT_DIR ${WINSDK_UCRT_DIR}/Lib)

  FILE(GLOB UCRT_SUBDIRS RELATIVE ${WINSDK_UCRT_INCLUDE_ROOT_DIR} ${WINSDK_UCRT_INCLUDE_ROOT_DIR}/*)
  SET(UCRT_VERSION)

  FOREACH(UCRT_SUBDIR ${UCRT_SUBDIRS})
    IF(NOT UCRT_VERSION OR UCRT_SUBDIR VERSION_GREATER UCRT_VERSION)
      SET(UCRT_VERSION ${UCRT_SUBDIR})
    ENDIF()
  ENDFOREACH()

  IF(UCRT_VERSION)
    MESSAGE(STATUS "Using Windows UCRT ${UCRT_VERSION}")

    SET(WINSDK10_INCLUDE_DIR ${WINSDK_UCRT_INCLUDE_ROOT_DIR}/${UCRT_VERSION})
    SET(WINSDK10_LIBRARY_DIR ${WINSDK_UCRT_LIB_ROOT_DIR}/${UCRT_VERSION})

    # directory where UCRT headers are found
    FIND_PATH(WINSDK_UCRT_INCLUDE_DIR corecrt.h
      HINTS
      ${WINSDK10_INCLUDE_DIR}/ucrt
    )

    # directory where UCRT libraries are found
    FIND_PATH(WINSDK_UCRT_LIBRARY_DIR ucrt.lib
      HINTS
      ${WINSDK10_LIBRARY_DIR}/ucrt/${WINSDK8_SUFFIX}
    )
  ENDIF()
ENDIF()

IF(WINSDK_VERSION STREQUAL "CURRENT")
  USE_CURRENT_WINSDK()
ELSE()
  IF(WINSDK${WINSDK_VERSION}_FOUND)
    SET(WINSDK_VERSION_FULL "${WINSDK${WINSDK_VERSION}_VERSION_FULL}")
    SET(WINSDK_DIR "${WINSDK${WINSDK_VERSION}_DIR}")
  ELSE()
    USE_CURRENT_WINSDK()
  ENDIF()
ENDIF()

IF(WINSDK_DIR)
  MESSAGE(STATUS "Using Windows SDK ${WINSDK_VERSION}")
ELSE()
  MESSAGE(FATAL_ERROR "Unable to find Windows SDK!")
ENDIF()

# directory where Win32 headers are found
FIND_PATH(WINSDK_INCLUDE_DIR Windows.h
  HINTS
  ${WINSDK_DIR}/Include/${UCRT_VERSION}/um
  ${WINSDK_DIR}/Include/um
  ${WINSDK_DIR}/Include
  NO_DEFAULT_PATH
)

MESSAGE(STATUS "Found Windows.h in ${WINSDK_INCLUDE_DIR}")

# directory where WinRT headers are found
FIND_PATH(WINSDK_WINRT_INCLUDE_DIR winstring.h
  HINTS
  ${WINSDK_DIR}/Include/${UCRT_VERSION}/winrt
  ${WINSDK_DIR}/Include/winrt
  NO_DEFAULT_PATH
)

MESSAGE(STATUS "Found winstring.h in ${WINSDK_WINRT_INCLUDE_DIR}")

# directory where DirectX headers are found
FIND_PATH(WINSDK_SHARED_INCLUDE_DIR d3d9.h
  HINTS
  ${WINSDK_DIR}/Include/${UCRT_VERSION}/shared
  ${WINSDK_DIR}/Include/shared
  NO_DEFAULT_PATH
)

MESSAGE(STATUS "Found d3d9.h in ${WINSDK_SHARED_INCLUDE_DIR}")

# directory where OpenGL headers are found
FIND_PATH(WINSDK_OPENGL_INCLUDE_DIR GL.h
  HINTS
  ${WINSDK_INCLUDE_DIR}/gl
  ${WINSDK_DIR}/Include/um/gl
  ${WINSDK_DIR}/Include/gl
  NO_DEFAULT_PATH
)

MESSAGE(STATUS "Found GL.h in ${WINSDK_OPENGL_INCLUDE_DIR}")

SET(WINSDK_LIBRARY_DIRS
  ${WINSDK_DIR}/Lib/${UCRT_VERSION}/um/${WINSDK8_SUFFIX}
  ${WINSDK_DIR}/Lib/winv6.3/um/${WINSDK8_SUFFIX}
  ${WINSDK_DIR}/Lib/win8/um/${WINSDK8_SUFFIX}
)

IF(WINSDK_SUFFIXES)
  FOREACH(_SUFFIX ${WINSDK_SUFFIXES})
    LIST(APPEND WINSDK_LIBRARY_DIRS ${WINSDK_DIR}/Lib/${_SUFFIX})
  ENDFOREACH()
ELSE()
  LIST(APPEND WINSDK_LIBRARY_DIRS ${WINSDK_DIR}/Lib)
ENDIF()

# directory where all libraries are found
FIND_PATH(WINSDK_LIBRARY_DIR ComCtl32.lib
  HINTS
  ${WINSDK_LIBRARY_DIRS}
  NO_DEFAULT_PATH
)

MESSAGE(STATUS "Found ComCtl32.lib in ${WINSDK_LIBRARY_DIR}")

SET(WINSDK_BINARY_DIRS
  ${WINSDK_DIR}/Bin/${UCRT_VERSION}/${WINSDK8_SUFFIX}
  ${WINSDK_DIR}/Bin/${WINSDK8_SUFFIX}
  ${WINSDK_DIR}/Bin/x86
  ${WINSDK_DIR}/Bin
)

# signtool is used to sign executables
FIND_PROGRAM(WINSDK_SIGNTOOL signtool
  HINTS
  ${WINSDK_BINARY_DIRS}
  NO_DEFAULT_PATH
)

# midl is used to generate IDL interfaces
FIND_PROGRAM(WINSDK_MIDL midl
  HINTS
  ${WINSDK_BINARY_DIRS}
  NO_DEFAULT_PATH
)

IF(WINSDK_INCLUDE_DIR)
  SET(WINSDK_FOUND ON)

  IF(WINSDK_UCRT_INCLUDE_DIR)
    SET(WINSDK_INCLUDE_DIRS ${WINSDK_INCLUDE_DIRS} ${WINSDK_UCRT_INCLUDE_DIR})
  ENDIF()

  IF(WINSDK_SHARED_INCLUDE_DIR)
    SET(WINSDK_INCLUDE_DIRS ${WINSDK_INCLUDE_DIRS} ${WINSDK_SHARED_INCLUDE_DIR})
  ENDIF()

  SET(WINSDK_INCLUDE_DIRS ${WINSDK_INCLUDE_DIRS} ${WINSDK_INCLUDE_DIR})

  IF(WINSDK_OPENGL_INCLUDE_DIR)
    SET(WINSDK_INCLUDE_DIRS ${WINSDK_INCLUDE_DIRS} ${WINSDK_OPENGL_INCLUDE_DIR})
  ENDIF()

  IF(WINSDK_WINRT_INCLUDE_DIR)
    SET(WINSDK_INCLUDE_DIRS ${WINSDK_INCLUDE_DIRS} ${WINSDK_WINRT_INCLUDE_DIR})
  ENDIF()

  INCLUDE_DIRECTORIES(${WINSDK_INCLUDE_DIRS})

  IF(WINSDK_UCRT_LIBRARY_DIR)
    SET(CMAKE_LIBRARY_PATH ${WINSDK_UCRT_LIBRARY_DIR} ${CMAKE_LIBRARY_PATH})
  ENDIF()

  SET(CMAKE_LIBRARY_PATH ${WINSDK_LIBRARY_DIR} ${CMAKE_LIBRARY_PATH})

  # Fix for using Windows SDK 7.1 with Visual C++ 2012, 2013, 2015 and 2017
  IF(WINSDK_VERSION STREQUAL "7.1" AND (MSVC11 OR MSVC12 OR MSVC14))
    ADD_DEFINITIONS(-D_USING_V110_SDK71_)
  ENDIF()
ELSE()
  IF(NOT WindowsSDK_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find Windows SDK!")
  ENDIF()
ENDIF()

================================================
FILE: code/CMakeModules/FindXF86VidMode.cmake
================================================
# - Locate Jpeg library
# This module defines
#  XF86VidMode_LIBRARY, the library to link against
#  XF86VidMode_FOUND, if false, do not try to link to XF86VidMode
#  XF86VidMode_INCLUDE_DIR, where to find headers.

IF(XF86VidMode_LIBRARY AND XF86VidMode_INCLUDE_DIR)
  # in cache already
  SET(XF86VidMode_FIND_QUIETLY TRUE)
ENDIF(XF86VidMode_LIBRARY AND XF86VidMode_INCLUDE_DIR)


FIND_PATH(XF86VidMode_INCLUDE_DIR
  xf86vmode.h
  PATHS
  $ENV{XF86VidMode_DIR}/include
  /usr/include/X11/
  /usr/X11R6/include/
  PATH_SUFFIXES extensions 
)

FIND_LIBRARY(XF86VidMode_LIBRARY
  Xxf86vm 
  PATHS
  $ENV{XF86VidMode_DIR}/lib
  /usr/X11R6/lib
  /usr/lib
  /sw/lib
  /opt/local/lib
  /opt/csw/lib
  /opt/lib
  /usr/freeware/lib64
)

IF(XF86VidMode_LIBRARY AND XF86VidMode_INCLUDE_DIR)
  SET(XF86VidMode_FOUND "YES")
  SET(XF86VidMode_DEFINITIONS -DXF86VIDMODE)
  IF(NOT XF86VidMode_FIND_QUIETLY)
    MESSAGE(STATUS "Found XF86VidMode: ${XF86VidMode_LIBRARY}")
  ENDIF(NOT XF86VidMode_FIND_QUIETLY)
ELSE(XF86VidMode_LIBRARY AND XF86VidMode_INCLUDE_DIR)
  IF(NOT XF86VidMode_FIND_QUIETLY)
    MESSAGE(STATUS "Warning: Unable to find XF86VidMode!")
  ENDIF(NOT XF86VidMode_FIND_QUIETLY)
ENDIF(XF86VidMode_LIBRARY AND XF86VidMode_INCLUDE_DIR)



================================================
FILE: code/CMakeModules/GetRevision.cmake
================================================
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.3)

# ROOT_DIR should be set to root of the repository (where to find the .svn or .hg directory)
# SOURCE_DIR should be set to root of your code (where to find CMakeLists.txt)

IF(SOURCE_DIR)
  # Replace spaces by semi-columns
  IF(CMAKE_MODULE_PATH)
    STRING(REPLACE " " ";" CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
  ENDIF(CMAKE_MODULE_PATH)

  SET(CMAKE_MODULE_PATH ${SOURCE_DIR}/CMakeModules ${CMAKE_MODULE_PATH})

  IF(NOT ROOT_DIR AND SOURCE_DIR)
    SET(ROOT_DIR ${SOURCE_DIR})
  ENDIF()

  IF(NOT SOURCE_DIR AND ROOT_DIR)
    SET(SOURCE_DIR ${ROOT_DIR})
  ENDIF()
ELSE()
  SET(SOURCE_DIR ${CMAKE_SOURCE_DIR})
  SET(ROOT_DIR ${CMAKE_SOURCE_DIR})
ENDIF()

MACRO(NOW RESULT)
  IF (WIN32)
    EXECUTE_PROCESS(COMMAND "wmic" "os" "get" "localdatetime" OUTPUT_VARIABLE DATETIME)
    IF(NOT DATETIME MATCHES "ERROR")
      STRING(REGEX REPLACE ".*\n([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9]).*" "\\1-\\2-\\3 \\4:\\5:\\6" ${RESULT} "${DATETIME}")
    ENDIF()
  ELSEIF(UNIX)
    EXECUTE_PROCESS(COMMAND "date" "+%Y-%m-%d %H:%M:%S" OUTPUT_VARIABLE DATETIME)
    STRING(REGEX REPLACE "([0-9: -]+).*" "\\1" ${RESULT} "${DATETIME}")
  ELSE()
    MESSAGE(SEND_ERROR "date not implemented")
    SET(${RESULT} "0000-00-00 00:00:00")
  ENDIF()
ENDMACRO(NOW)

IF(EXISTS "${ROOT_DIR}/.svn/")
  FIND_PACKAGE(Subversion QUIET)

  IF(SUBVERSION_FOUND)
    Subversion_WC_INFO(${ROOT_DIR} ER)
    SET(REVISION ${ER_WC_REVISION})
  ENDIF(SUBVERSION_FOUND)

  FIND_PACKAGE(TortoiseSVN QUIET)

  IF(TORTOISESVN_FOUND)
    TORTOISESVN_GET_REVISION(${ROOT_DIR} REVISION)
  ENDIF(TORTOISESVN_FOUND)
ENDIF(EXISTS "${ROOT_DIR}/.svn/")

IF(EXISTS "${ROOT_DIR}/.hg/")
  FIND_PACKAGE(Mercurial)

  IF(MERCURIAL_FOUND)
    Mercurial_WC_INFO(${ROOT_DIR} ER)
    SET(REVISION ${ER_WC_REVISION})
    SET(CHANGESET ${ER_WC_CHANGESET})
    SET(BRANCH ${ER_WC_BRANCH})
  ENDIF()
ENDIF()

# if processing exported sources, use "revision" file if exists
IF(SOURCE_DIR AND NOT DEFINED REVISION)
  SET(REVISION_FILE ${SOURCE_DIR}/revision)
  IF(EXISTS ${REVISION_FILE})
    FILE(STRINGS ${REVISION_FILE} REVISION LIMIT_COUNT 1)
    MESSAGE(STATUS "Read revision ${REVISION} from file")
  ENDIF()
ENDIF()

IF(SOURCE_DIR AND DEFINED REVISION)
  IF(EXISTS ${SOURCE_DIR}/revision.h.in)
    MESSAGE(STATUS "Revision: ${REVISION}")
    NOW(BUILD_DATE)
    CONFIGURE_FILE(${SOURCE_DIR}/revision.h.in revision.h.txt)
    EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy revision.h.txt revision.h) # copy_if_different
  ENDIF()
ENDIF()


================================================
FILE: code/CMakeModules/PCHSupport.cmake
================================================
# - Try to find precompiled headers support for GCC 3.4 and 4.x (and MSVC)
# Once done this will define:
#
# Variable:
#   PCHSupport_FOUND
#
#   ADD_PRECOMPILED_HEADER  _targetName _inputh _inputcpp
#   ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use
#   ADD_NATIVE_PRECOMPILED_HEADER _targetName _inputh _inputcpp

IF(MSVC)
  SET(PCHSupport_FOUND TRUE)
ELSE(MSVC)
  IF(CMAKE_COMPILER_IS_GNUCXX)
    EXEC_PROGRAM(${CMAKE_CXX_COMPILER}
      ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
      OUTPUT_VARIABLE gcc_compiler_version)

    IF(gcc_compiler_version MATCHES "^4\\.1(\\.[0-9]+)?")
      SET(PCHSupport_FOUND FALSE)
    ELSEIF(gcc_compiler_version MATCHES "^4\\.[0-9]+(\\.[0-9]+)?")
      SET(PCHSupport_FOUND TRUE)
    ENDIF(gcc_compiler_version MATCHES "^4\\.1(\\.[0-9]+)?")
  ELSE(CMAKE_COMPILER_IS_GNUCXX)
    # TODO: make tests for other compilers than GCC
    SET(PCHSupport_FOUND TRUE)
  ENDIF(CMAKE_COMPILER_IS_GNUCXX)
ENDIF(MSVC)

# Set PCH_FLAGS for common flags, PCH_ARCH_XXX_FLAGS for specific archs flags and PCH_ARCHS for archs
MACRO(PCH_SET_COMPILE_FLAGS _target)
  SET(PCH_FLAGS)
  SET(PCH_ARCHS)

  SET(_FLAGS)
  LIST(APPEND _FLAGS ${CMAKE_CXX_FLAGS})

  STRING(TOUPPER "${CMAKE_BUILD_TYPE}" _UPPER_BUILD)
  LIST(APPEND _FLAGS " ${CMAKE_CXX_FLAGS_${_UPPER_BUILD}}")

  GET_TARGET_PROPERTY(_targetType ${_target} TYPE)

  IF(${_targetType} STREQUAL SHARED_LIBRARY OR ${_targetType} STREQUAL MODULE_LIBRARY)
    LIST(APPEND _FLAGS " ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}")
  ELSE(${_targetType} STREQUAL SHARED_LIBRARY OR ${_targetType} STREQUAL MODULE_LIBRARY)
    GET_TARGET_PROPERTY(_pic ${_target} POSITION_INDEPENDENT_CODE)
    IF(_pic)
      LIST(APPEND _FLAGS " ${CMAKE_CXX_COMPILE_OPTIONS_PIE}")
    ENDIF(_pic)
  ENDIF(${_targetType} STREQUAL SHARED_LIBRARY OR ${_targetType} STREQUAL MODULE_LIBRARY)

  GET_DIRECTORY_PROPERTY(DIRINC INCLUDE_DIRECTORIES)
  FOREACH(item ${DIRINC})
    LIST(APPEND _FLAGS " -I\"${item}\"")
  ENDFOREACH(item)

  # Required for CMake 2.6
  SET(GLOBAL_DEFINITIONS)
  GET_DIRECTORY_PROPERTY(DEFINITIONS COMPILE_DEFINITIONS)
  IF(DEFINITIONS)
    FOREACH(item ${DEFINITIONS})
      LIST(APPEND GLOBAL_DEFINITIONS " -D${item}")
    ENDFOREACH(item)
  ENDIF(DEFINITIONS)

  GET_DIRECTORY_PROPERTY(DEFINITIONS COMPILE_DEFINITIONS_${_UPPER_BUILD})
  IF(DEFINITIONS)
    FOREACH(item ${DEFINITIONS})
      LIST(APPEND GLOBAL_DEFINITIONS " -D${item}")
    ENDFOREACH(item)
  ENDIF(DEFINITIONS)

  GET_TARGET_PROPERTY(oldProps ${_target} COMPILE_FLAGS)
  IF(oldProps)
    LIST(APPEND _FLAGS " ${oldProps}")
  ENDIF(oldProps)

  GET_TARGET_PROPERTY(oldPropsBuild ${_target} COMPILE_FLAGS_${_UPPER_BUILD})
  IF(oldPropsBuild)
    LIST(APPEND _FLAGS " ${oldPropsBuild}")
  ENDIF(oldPropsBuild)

  GET_TARGET_PROPERTY(DIRINC ${_target} INCLUDE_DIRECTORIES)
  IF(DIRINC)
    FOREACH(item ${DIRINC})
      LIST(APPEND _FLAGS " -I\"${item}\"")
    ENDFOREACH(item)
  ENDIF(DIRINC)

  GET_TARGET_PROPERTY(DEFINITIONS ${_target} COMPILE_DEFINITIONS)
  IF(DEFINITIONS)
    FOREACH(item ${DEFINITIONS})
      LIST(APPEND GLOBAL_DEFINITIONS " -D${item}")
    ENDFOREACH(item)
  ENDIF(DEFINITIONS)

  GET_TARGET_PROPERTY(DEFINITIONS ${_target} COMPILE_DEFINITIONS_${_UPPER_BUILD})
  IF(DEFINITIONS)
    FOREACH(item ${DEFINITIONS})
      LIST(APPEND GLOBAL_DEFINITIONS " -D${item}")
    ENDFOREACH(item)
  ENDIF(DEFINITIONS)

  GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS)
  GET_DIRECTORY_PROPERTY(_directory_definitions DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITIONS)
  LIST(APPEND _FLAGS " ${GLOBAL_DEFINITIONS}")
  LIST(APPEND _FLAGS " ${_directory_flags}")
  LIST(APPEND _FLAGS " ${_directory_definitions}")

  # Format definitions
  IF(MSVC)
    # Fix path with space
    SEPARATE_ARGUMENTS(_FLAGS UNIX_COMMAND "${_FLAGS}")
  ELSE(MSVC)
    STRING(REGEX REPLACE " +" " " _FLAGS ${_FLAGS})
    SEPARATE_ARGUMENTS(_FLAGS)
  ENDIF(MSVC)

  IF(CLANG)
    # Determining all architectures and get common flags
    SET(_ARCH_NEXT)
    SET(_XARCH_NEXT)
    FOREACH(item ${_FLAGS})
      IF(_ARCH_NEXT)
        LIST(FIND PCH_ARCHS ${item} ITEM_FOUND)
        IF(ITEM_FOUND EQUAL -1)
          LIST(APPEND PCH_ARCHS ${item})
          STRING(TOUPPER "${item}" _UPPER_ARCH)
          SET(PCH_ARCH_${_UPPER_ARCH}_FLAGS "-arch" ${item})
        ENDIF(ITEM_FOUND EQUAL -1)
        SET(_ARCH_NEXT OFF)
      ELSEIF(_XARCH_NEXT)
        SET(_XARCH_NEXT OFF)
      ELSE(_ARCH_NEXT)
        IF(item MATCHES "^-arch")
          SET(_ARCH_NEXT ON)
        ELSEIF(item MATCHES "^-Xarch_")
          STRING(REGEX REPLACE "-Xarch_([a-z0-9_]+)" "\\1" item ${item})
          LIST(FIND PCH_ARCHS ${item} ITEM_FOUND)
          IF(ITEM_FOUND EQUAL -1)
            LIST(APPEND PCH_ARCHS ${item})
            STRING(TOUPPER "${item}" _UPPER_ARCH)
            SET(PCH_ARCH_${_UPPER_ARCH}_FLAGS "-arch" ${item})
          ENDIF(ITEM_FOUND EQUAL -1)
          SET(_XARCH_NEXT ON)
        ELSE(item MATCHES "^-arch")
          LIST(APPEND PCH_FLAGS ${item})
        ENDIF(item MATCHES "^-arch")
      ENDIF(_ARCH_NEXT)
    ENDFOREACH(item)

    # Get architcture specific flags
    SET(_XARCH_NEXT)
    FOREACH(item ${_FLAGS})
      IF(_XARCH_NEXT)
        STRING(TOUPPER "${_XARCH_NEXT}" _UPPER_XARCH)
        LIST(APPEND PCH_ARCH_${_UPPER_XARCH}_FLAGS ${item})
        SET(_XARCH_NEXT OFF)
      ELSE(_XARCH_NEXT)
        IF(item MATCHES "^-Xarch_")
          STRING(SUBSTRING "${item}" 7 -1 _XARCH_NEXT)
        ENDIF(item MATCHES "^-Xarch_")
      ENDIF(_XARCH_NEXT)
    ENDFOREACH(item)

    # Remove duplicated architectures
    IF(_ARCHS AND PCH_ARCHS)
      LIST(REMOVE_DUPLICATES PCH_ARCHS)
    ENDIF(_ARCHS AND PCH_ARCHS)
  ELSE(CLANG)
    SET(PCH_FLAGS ${_FLAGS})
  ENDIF(CLANG)

  IF(PCH_FLAGS)
    LIST(REMOVE_DUPLICATES PCH_FLAGS)
  ENDIF(PCH_FLAGS)
ENDMACRO(PCH_SET_COMPILE_FLAGS)

MACRO(GET_PDB_FILENAME _out_filename _target)
  # determine output directory based on target type
  GET_TARGET_PROPERTY(_targetType ${_target} TYPE)
  IF(${_targetType} STREQUAL EXECUTABLE)
    SET(_targetOutput ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
  ELSEIF(${_targetType} STREQUAL STATIC_LIBRARY)
    SET(_targetOutput ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
  ELSE(${_targetType} STREQUAL EXECUTABLE)
    SET(_targetOutput ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
  ENDIF(${_targetType} STREQUAL EXECUTABLE)

  # determine target postfix
  STRING(TOUPPER "${CMAKE_BUILD_TYPE}_POSTFIX" _postfix_var_name)
  GET_TARGET_PROPERTY(_targetPostfix ${_target} ${_postfix_var_name})
  IF(${_targetPostfix} MATCHES NOTFOUND)
    SET(_targetPostfix "")
  ENDIF(${_targetPostfix} MATCHES NOTFOUND)

  SET(${_out_filename} "${_targetOutput}/${_target}${_targetPostfix}.pdb")
ENDMACRO(GET_PDB_FILENAME)

MACRO(PCH_SET_COMPILE_COMMAND _inputcpp _compile_FLAGS)
  IF(CMAKE_CXX_COMPILER_ARG1)
    # remove leading space in compiler argument
    STRING(REGEX REPLACE "^ +" "" pchsupport_compiler_cxx_arg1 ${CMAKE_CXX_COMPILER_ARG1})
  ELSE(CMAKE_CXX_COMPILER_ARG1)
    SET(pchsupport_compiler_cxx_arg1 "")
  ENDIF(CMAKE_CXX_COMPILER_ARG1)

  IF(MSVC)
    GET_PDB_FILENAME(PDB_FILE ${_PCH_current_target})
    SET(PCH_COMMAND ${CMAKE_CXX_COMPILER} ${pchsupport_compiler_cxx_arg1} ${_compile_FLAGS} /Yc /Fp"${PCH_OUTPUT}" ${_inputcpp} /Fd"${PDB_FILE}" /c /Fo"${PCH_OUTPUT}.obj")
    # Ninja PCH Support
    # http://public.kitware.com/pipermail/cmake-developers/2012-March/003653.html
    SET_SOURCE_FILES_PROPERTIES(${_inputcpp} PROPERTIES OBJECT_OUTPUTS "${PCH_OUTPUT}.obj")
  ELSE(MSVC)
    SET(HEADER_FORMAT "c++-header")
    SET(_FLAGS "")
    IF(APPLE)
      SET(HEADER_FORMAT "objective-${HEADER_FORMAT}")
      SET(_FLAGS -fobjc-abi-version=2 -fobjc-legacy-dispatch)
    ENDIF(APPLE)
    SET(PCH_COMMAND ${CMAKE_CXX_COMPILER} ${pchsupport_compiler_cxx_arg1} ${_compile_FLAGS} ${_FLAGS} -x ${HEADER_FORMAT} -o ${PCH_OUTPUT} -c ${PCH_INPUT})
  ENDIF(MSVC)
ENDMACRO(PCH_SET_COMPILE_COMMAND)

MACRO(PCH_SET_PRECOMPILED_HEADER_OUTPUT _targetName _input _arch _language)
  SET(_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${_targetName}_pch")

  IF(MSVC)
    FILE(MAKE_DIRECTORY ${_OUTPUT_DIR})
    GET_FILENAME_COMPONENT(_name ${_input} NAME_WE)
    SET(PCH_INPUT ${_input})
    SET(PCH_OUTPUT "${_OUTPUT_DIR}/${_name}.pch")
  ELSE(MSVC)
    IF(NOT "${_arch}" STREQUAL "")
      SET(_OUTPUT_DIR "${_OUTPUT_DIR}_${_arch}")
    ENDIF(NOT "${_arch}" STREQUAL "")

    IF(NOT "${_language}" STREQUAL "")
      SET(_OUTPUT_DIR "${_OUTPUT_DIR}_${_language}")
    ENDIF(NOT "${_language}" STREQUAL "")

    GET_FILENAME_COMPONENT(_name ${_input} NAME)

    # Copy .h to output dir
    SET(PCH_INPUT "${_OUTPUT_DIR}/${_name}")
    ADD_CUSTOM_COMMAND(OUTPUT ${PCH_INPUT}
        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${_input} ${PCH_INPUT}
        DEPENDS ${_input}
        COMMENT "[${_targetName}] Update precompiled header - done"
    )

    IF(CLANG)
      SET(PCH_EXT "pth")
    ELSE(CLANG)
      SET(PCH_EXT "gch")
    ENDIF(CLANG)

    # For GCC and Clang, PCH needs to be in the same directory as .h
    SET(PCH_OUTPUT "${_OUTPUT_DIR}/${_name}.${PCH_EXT}")
  ENDIF(MSVC)
ENDMACRO(PCH_SET_PRECOMPILED_HEADER_OUTPUT)

# Add common flags
MACRO(ADD_PRECOMPILED_HEADER_TO_TARGET _targetName)
  GET_TARGET_PROPERTY(oldProps ${_targetName} COMPILE_FLAGS)

  IF(${oldProps} MATCHES NOTFOUND)
    SET(oldProps "")
  ENDIF(${oldProps} MATCHES NOTFOUND)

  IF(MSVC)
    SET(_target_cflags "${oldProps} /Yu\"${PCH_INPUT}\" /FI\"${PCH_INPUT}\" /Fp\"${PCH_OUTPUT}\"")
    # Ninja PCH Support
    # http://public.kitware.com/pipermail/cmake-developers/2012-March/003653.html
    SET_TARGET_PROPERTIES(${_targetName} PROPERTIES OBJECT_DEPENDS "${PCH_OUTPUT}")

    # NMAKE-VS2012 Error LNK2011 (NMAKE-VS2010 do not complain)
    # we need to link the pch.obj file, see http://msdn.microsoft.com/en-us/library/3ay26wa2(v=vs.110).aspx
    GET_TARGET_PROPERTY(_STATIC_LIBRARY_FLAGS ${_targetName} STATIC_LIBRARY_FLAGS)
    IF(NOT _STATIC_LIBRARY_FLAGS)
      SET(_STATIC_LIBRARY_FLAGS)
    ENDIF(NOT _STATIC_LIBRARY_FLAGS)
    SET(_STATIC_LIBRARY_FLAGS "${PCH_OUTPUT}.obj ${_STATIC_LIBRARY_FLAGS}")

    GET_TARGET_PROPERTY(_LINK_FLAGS ${_targetName} LINK_FLAGS)
    IF(NOT _LINK_FLAGS)
      SET(_LINK_FLAGS)
    ENDIF(NOT _LINK_FLAGS)
    SET(_LINK_FLAGS "${PCH_OUTPUT}.obj ${_LINK_FLAGS}")

    SET_TARGET_PROPERTIES(${_targetName} PROPERTIES STATIC_LIBRARY_FLAGS ${_STATIC_LIBRARY_FLAGS} LINK_FLAGS ${_LINK_FLAGS})
  ELSE(MSVC)
    # for use with distcc and gcc >4.0.1 if preprocessed files are accessible
    # on all remote machines set
    # PCH_ADDITIONAL_COMPILER_FLAGS to -fpch-preprocess
    SET(PCH_ADDITIONAL_COMPILER_FLAGS)
    LIST(LENGTH PCH_ARCHS PCH_ARCHS_COUNT)

    # If no arch is specified, create common flags
    IF(PCH_ARCHS_COUNT LESS 2)
      SET(PCH_ADDITIONAL_COMPILER_FLAGS "-include ${PCH_INPUT} ${PCH_ADDITIONAL_COMPILER_FLAGS}")
    ENDIF(PCH_ARCHS_COUNT LESS 2)

    IF(APPLE)
      SET(PCH_ADDITIONAL_COMPILER_FLAGS "-fobjc-abi-version=2 -fobjc-legacy-dispatch -x objective-c++ ${PCH_ADDITIONAL_COMPILER_FLAGS}")
    ENDIF(APPLE)
    
    IF(WITH_PCH_DEBUG)
      SET(PCH_ADDITIONAL_COMPILER_FLAGS "-H ${PCH_ADDITIONAL_COMPILER_FLAGS}")
    ENDIF(WITH_PCH_DEBUG)

    SET(_target_cflags "${oldProps} ${PCH_ADDITIONAL_COMPILER_FLAGS} -Winvalid-pch")
  ENDIF(MSVC)

  SET_TARGET_PROPERTIES(${_targetName} PROPERTIES COMPILE_FLAGS ${_target_cflags})
ENDMACRO(ADD_PRECOMPILED_HEADER_TO_TARGET)

# Add specific flags for an arch
MACRO(ADD_PRECOMPILED_HEADER_TO_TARGET_ARCH _targetName _arch)
  LIST(LENGTH PCH_ARCHS PCH_ARCHS_COUNT)

  IF(PCH_ARCHS_COUNT GREATER 1)
    GET_TARGET_PROPERTY(_FLAGS ${_targetName} COMPILE_FLAGS)

    IF(${_FLAGS} MATCHES NOTFOUND)
      SET(_FLAGS "")
    ENDIF(${_FLAGS} MATCHES NOTFOUND)

    SET(_FLAGS "${_FLAGS} -Xarch_${_arch} -include${PCH_INPUT}")

    SET_TARGET_PROPERTIES(${_targetName} PROPERTIES COMPILE_FLAGS ${_FLAGS})
  ENDIF(PCH_ARCHS_COUNT GREATER 1)
ENDMACRO(ADD_PRECOMPILED_HEADER_TO_TARGET_ARCH)

MACRO(PCH_CREATE_TARGET _targetName _targetNamePCH)
  ADD_CUSTOM_COMMAND(OUTPUT ${PCH_OUTPUT} COMMAND ${PCH_COMMAND} COMMENT "Generating ${_targetNamePCH}" DEPENDS ${PCH_INPUT})
  ADD_CUSTOM_TARGET(${_targetNamePCH} DEPENDS ${PCH_INPUT} ${PCH_OUTPUT})
  ADD_DEPENDENCIES(${_targetName} ${_targetNamePCH})
ENDMACRO(PCH_CREATE_TARGET _targetName _inputh _inputcpp)

MACRO(ADD_PRECOMPILED_HEADER _targetName _inputh _inputcpp)
  SET(_PCH_current_target ${_targetName})

  IF(NOT CMAKE_BUILD_TYPE)
    MESSAGE(FATAL_ERROR
      "This is the ADD_PRECOMPILED_HEADER macro. "
      "You must set CMAKE_BUILD_TYPE!"
    )
  ENDIF(NOT CMAKE_BUILD_TYPE)

  PCH_SET_COMPILE_FLAGS(${_targetName})

  IF(PCH_ARCHS)
    SET(PCH_OUTPUTS)
    FOREACH(_ARCH ${PCH_ARCHS})
      STRING(TOUPPER "${_ARCH}" _UPPER_ARCH)

      PCH_SET_PRECOMPILED_HEADER_OUTPUT(${_targetName} ${_inputh} ${_ARCH} "")
      LIST(APPEND PCH_OUTPUTS ${PCH_OUTPUT})

      PCH_SET_COMPILE_COMMAND(${_inputcpp} "${PCH_ARCH_${_UPPER_ARCH}_FLAGS};${PCH_FLAGS}")
      PCH_CREATE_TARGET(${_targetName} ${_targetName}_pch_${_ARCH})

      ADD_PRECOMPILED_HEADER_TO_TARGET_ARCH(${_targetName} ${_ARCH})
    ENDFOREACH(_ARCH)
  ELSE(PCH_ARCHS)
    PCH_SET_PRECOMPILED_HEADER_OUTPUT(${_targetName} ${_inputh} "" "")
    LIST(APPEND PCH_OUTPUTS ${PCH_OUTPUT})

    PCH_SET_COMPILE_COMMAND(${_inputcpp} "${PCH_FLAGS}")
    PCH_CREATE_TARGET(${_targetName} ${_targetName}_pch)
  ENDIF(PCH_ARCHS)

  ADD_PRECOMPILED_HEADER_TO_TARGET(${_targetName})

  SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${PCH_OUTPUTS}")
ENDMACRO(ADD_PRECOMPILED_HEADER)

MACRO(ADD_NATIVE_PRECOMPILED_HEADER _targetName _inputh _inputcpp)
  IF(NOT PCHSupport_FOUND)
    MESSAGE(STATUS "PCH disabled because compiler doesn't support them")
    RETURN()
  ENDIF(NOT PCHSupport_FOUND)

  # 0 => creating a new target for PCH, works for all makefiles
  # 1 => setting PCH for VC++ project, works for VC++ projects
  # 2 => setting PCH for XCode project, works for XCode projects
  IF(CMAKE_GENERATOR MATCHES "Visual Studio")
    SET(PCH_METHOD 1)
  ELSEIF(CMAKE_GENERATOR MATCHES "Xcode")
    SET(PCH_METHOD 2)
  ELSE(CMAKE_GENERATOR MATCHES "Visual Studio")
    SET(PCH_METHOD 0)
  ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio")

  IF(PCH_METHOD EQUAL 1)
    # Auto include the precompile (useful for moc processing, since the use of
    # precompiled is specified at the target level
    # and I don't want to specifiy /F- for each moc/res/ui generated files (using Qt)

    GET_TARGET_PROPERTY(oldProps ${_targetName} COMPILE_FLAGS)
    IF(${oldProps} MATCHES NOTFOUND)
      SET(oldProps "")
    ENDIF(${oldProps} MATCHES NOTFOUND)

    SET(newProperties "${oldProps} /Yu\"${_inputh}\" /FI\"${_inputh}\"")
    SET_TARGET_PROPERTIES(${_targetName} PROPERTIES COMPILE_FLAGS "${newProperties}")

    #also inlude ${oldProps} to have the same compile options
    SET_SOURCE_FILES_PROPERTIES(${_inputcpp} PROPERTIES COMPILE_FLAGS "${oldProps} /Yc\"${_inputh}\"")
  ELSEIF(PCH_METHOD EQUAL 2)
    # For Xcode, cmake needs my patch to process
    # GCC_PREFIX_HEADER and GCC_PRECOMPILE_PREFIX_HEADER as target properties

    # When buiding out of the tree, precompiled may not be located
    # Use full path instead.
    GET_FILENAME_COMPONENT(fullPath ${_inputh} ABSOLUTE)

    SET_TARGET_PROPERTIES
Download .txt
gitextract_0_cdghvg/

├── .github/
│   └── workflows/
│       └── ccpp.yml
├── LICENSE
├── README.md
├── code/
│   ├── CMakeLists.txt
│   ├── CMakeModules/
│   │   ├── AndroidToolChain.cmake
│   │   ├── CheckDepends.cmake
│   │   ├── ConfigureChecks.cmake
│   │   ├── Find3dsMaxSDK.cmake
│   │   ├── FindCEGUI.cmake
│   │   ├── FindCppTest.cmake
│   │   ├── FindCrashRpt.cmake
│   │   ├── FindCurl.cmake
│   │   ├── FindCustomMFC.cmake
│   │   ├── FindDInput.cmake
│   │   ├── FindDSound.cmake
│   │   ├── FindDirectXSDK.cmake
│   │   ├── FindEFXUtil.cmake
│   │   ├── FindExternal.cmake
│   │   ├── FindFMOD.cmake
│   │   ├── FindFreeType.cmake
│   │   ├── FindGTK2.cmake
│   │   ├── FindIconv.cmake
│   │   ├── FindJpeg.cmake
│   │   ├── FindLibEvent.cmake
│   │   ├── FindLibOVR.cmake
│   │   ├── FindLibVR.cmake
│   │   ├── FindLibwww.cmake
│   │   ├── FindLua51.cmake
│   │   ├── FindLua52.cmake
│   │   ├── FindLua53.cmake
│   │   ├── FindLuabind.cmake
│   │   ├── FindMSVC.cmake
│   │   ├── FindMercurial.cmake
│   │   ├── FindMySQL.cmake
│   │   ├── FindMysqlConnector.cmake
│   │   ├── FindOgg.cmake
│   │   ├── FindOpenGLES.cmake
│   │   ├── FindOpenSSL.cmake
│   │   ├── FindPBC.cmake
│   │   ├── FindProtoBuf.cmake
│   │   ├── FindS3TC.cmake
│   │   ├── FindSTLport.cmake
│   │   ├── FindSquish.cmake
│   │   ├── FindTinyXml.cmake
│   │   ├── FindToLua.cmake
│   │   ├── FindVorbis.cmake
│   │   ├── FindWindowsSDK.cmake
│   │   ├── FindXF86VidMode.cmake
│   │   ├── GetRevision.cmake
│   │   ├── PCHSupport.cmake
│   │   ├── iOSToolChain.cmake
│   │   └── nel.cmake
│   ├── CMakePackaging.txt
│   ├── COPYING
│   ├── CTestConfig.cmake
│   ├── EVA/
│   │   ├── CMakeLists.txt
│   │   ├── server/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── _del_log.bat
│   │   │   ├── _robot_start .bat
│   │   │   ├── _robot_stop .bat
│   │   │   ├── _shard_start.bat
│   │   │   ├── _shard_stop.bat
│   │   │   ├── admin_executor_service.cfg
│   │   │   ├── admin_modules/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── admin_modules.cpp
│   │   │   │   ├── admin_modules_itf.cpp
│   │   │   │   ├── admin_modules_itf.h
│   │   │   │   ├── admin_modules_itf.xml
│   │   │   │   ├── aes_client_module.cpp
│   │   │   │   ├── aes_module.cpp
│   │   │   │   └── as_module.cpp
│   │   │   ├── admin_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── admin_service.cpp
│   │   │   ├── admin_service.cfg
│   │   │   ├── client_robot/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── client_robot.cpp
│   │   │   ├── client_robot.cfg
│   │   │   ├── common.cfg
│   │   │   ├── frontend_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── frontend_service.cpp
│   │   │   │   ├── frontend_service.h
│   │   │   │   ├── stdpch.cpp
│   │   │   │   └── stdpch.h
│   │   │   ├── frontend_service.cfg
│   │   │   ├── msg.xml
│   │   │   ├── naming_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── naming_service.cpp
│   │   │   ├── naming_service.cfg
│   │   │   ├── player_logic_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── player_logic_service.cpp
│   │   │   │   ├── player_logic_service.h
│   │   │   │   ├── stdpch.cpp
│   │   │   │   └── stdpch.h
│   │   │   ├── player_logic_service.cfg
│   │   │   ├── save_shard/
│   │   │   │   └── rrd_graphs/
│   │   │   │       ├── aes.ProcessUsedMemory.rrd
│   │   │   │       ├── egs.ProcessUsedMemory.rrd
│   │   │   │       ├── fes.ProcessUsedMemory.rrd
│   │   │   │       ├── fes_0.FPSProcessMsg.rrd
│   │   │   │       ├── fes_0.ProcessUsedMemory.rrd
│   │   │   │       ├── hold_dir
│   │   │   │       ├── lgc.ProcessUsedMemory.rrd
│   │   │   │       ├── lgc_0.ProcessUsedMemory.rrd
│   │   │   │       ├── pds.ProcessUsedMemory.rrd
│   │   │   │       ├── ras.ProcessUsedMemory.rrd
│   │   │   │       └── rns.ProcessUsedMemory.rrd
│   │   │   ├── schedule_service/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── schedule_service.cpp
│   │   │   ├── schedule_service.cfg
│   │   │   ├── script/
│   │   │   │   ├── .vs/
│   │   │   │   │   ├── ProjectSettings.json
│   │   │   │   │   ├── VSWorkspaceState.json
│   │   │   │   │   └── script/
│   │   │   │   │       └── v15/
│   │   │   │   │           └── .suo
│   │   │   │   ├── BaseService.luaprj
│   │   │   │   ├── DataTable/
│   │   │   │   │   ├── ProtoMsg.pb
│   │   │   │   │   ├── RoomConfig.json
│   │   │   │   │   ├── RoomCreateCost.json
│   │   │   │   │   ├── SpecialConfig.json
│   │   │   │   │   ├── proto/
│   │   │   │   │   │   ├── define_attrib.proto
│   │   │   │   │   │   ├── define_pro.proto
│   │   │   │   │   │   ├── msg_client.proto
│   │   │   │   │   │   ├── msg_doudizhu.proto
│   │   │   │   │   │   └── msg_service.proto
│   │   │   │   │   └── ssl/
│   │   │   │   │       ├── 1_root_bundle.crt
│   │   │   │   │       ├── 2_ssl.ranatune.com.crt
│   │   │   │   │       └── 3_ssl.ranatune.com.key
│   │   │   │   ├── Framework/
│   │   │   │   │   ├── CJsonUtil.lua
│   │   │   │   │   ├── Class.lua
│   │   │   │   │   ├── Event/
│   │   │   │   │   │   ├── EventController.lua
│   │   │   │   │   │   ├── EventRegister.lua
│   │   │   │   │   │   └── EventTrigger.lua
│   │   │   │   │   ├── Hotfix/
│   │   │   │   │   │   ├── HotfixHelper.lua
│   │   │   │   │   │   ├── hotfix.lua
│   │   │   │   │   │   └── internal/
│   │   │   │   │   │       ├── functions_replacer.lua
│   │   │   │   │   │       └── module_updater.lua
│   │   │   │   │   ├── InitFramework.lua
│   │   │   │   │   ├── List.lua
│   │   │   │   │   ├── Map.lua
│   │   │   │   │   ├── MapMap.lua
│   │   │   │   │   ├── MemoryReferenceInfo.lua
│   │   │   │   │   ├── MiddleClass.lua
│   │   │   │   │   ├── Net/
│   │   │   │   │   │   ├── BaseService.lua
│   │   │   │   │   │   ├── CallbackServer.lua
│   │   │   │   │   │   ├── NetWorkHandler.lua
│   │   │   │   │   │   └── protobuf.lua
│   │   │   │   │   ├── Queue.lua
│   │   │   │   │   ├── SimpleStateMachine.lua
│   │   │   │   │   ├── Stack.lua
│   │   │   │   │   ├── StateFul.lua
│   │   │   │   │   ├── Test/
│   │   │   │   │   │   ├── FSMClass.lua
│   │   │   │   │   │   ├── MainTest.lua
│   │   │   │   │   │   └── TimerTest.lua
│   │   │   │   │   ├── TimerMgr.lua
│   │   │   │   │   ├── Utils.lua
│   │   │   │   │   └── functions.lua
│   │   │   │   ├── Robot.luaprj
│   │   │   │   ├── SharedLib/
│   │   │   │   │   ├── Event/
│   │   │   │   │   │   └── EventType.lua
│   │   │   │   │   ├── InitSharedLib.lua
│   │   │   │   │   └── StaticTableMgr.lua
│   │   │   │   ├── _FES/
│   │   │   │   │   ├── Client/
│   │   │   │   │   │   ├── Client.lua
│   │   │   │   │   │   └── ClientMgr.lua
│   │   │   │   │   ├── FrontEndService.lua
│   │   │   │   │   ├── Msg/
│   │   │   │   │   │   └── MsgLogin.lua
│   │   │   │   │   ├── Player/
│   │   │   │   │   │   ├── PlayerInfo.lua
│   │   │   │   │   │   └── PlayerInfoMgr.lua
│   │   │   │   │   └── _FESMain.lua
│   │   │   │   ├── _FES.luaprj
│   │   │   │   ├── _PLS/
│   │   │   │   │   ├── DB/
│   │   │   │   │   │   ├── DBMgr.lua
│   │   │   │   │   │   ├── DBProc.lua
│   │   │   │   │   │   ├── DBSubProc.lua
│   │   │   │   │   │   └── DBSubStart.lua
│   │   │   │   │   ├── Games/
│   │   │   │   │   │   ├── Common/
│   │   │   │   │   │   │   ├── CardsAnalyseRes.lua
│   │   │   │   │   │   │   ├── CommonDef.lua
│   │   │   │   │   │   │   └── PokerDef.lua
│   │   │   │   │   │   └── PokerDdz/
│   │   │   │   │   │       ├── DDZOutCardData.lua
│   │   │   │   │   │       ├── DdzCardTypes.lua
│   │   │   │   │   │       ├── DdzFSM.lua
│   │   │   │   │   │       ├── DdzPlayerInfo.lua
│   │   │   │   │   │       ├── MsgRoomDdz.lua
│   │   │   │   │   │       └── RoomDdz.lua
│   │   │   │   │   ├── Msg/
│   │   │   │   │   │   ├── MsgLogin.lua
│   │   │   │   │   │   └── MsgRoom.lua
│   │   │   │   │   ├── Player/
│   │   │   │   │   │   ├── PlayerDataHelper.lua
│   │   │   │   │   │   ├── PlayerHelper.lua
│   │   │   │   │   │   └── PlayerMgr.lua
│   │   │   │   │   ├── PlayerLogicService.lua
│   │   │   │   │   ├── Room/
│   │   │   │   │   │   ├── RoomBase.lua
│   │   │   │   │   │   ├── RoomFactory.lua
│   │   │   │   │   │   ├── RoomMgr.lua
│   │   │   │   │   │   └── RoomPlayerBase.lua
│   │   │   │   │   ├── _PLSConfig.lua
│   │   │   │   │   ├── _PLSMain.lua
│   │   │   │   │   └── hotfix_module_names.lua
│   │   │   │   ├── _PLS.luaprj
│   │   │   │   ├── _SCH/
│   │   │   │   │   ├── Msg/
│   │   │   │   │   │   ├── MsgLogin.lua
│   │   │   │   │   │   └── MsgRoom.lua
│   │   │   │   │   ├── PLSInfo/
│   │   │   │   │   │   ├── PLSGameInfo.lua
│   │   │   │   │   │   ├── PLSInfo.lua
│   │   │   │   │   │   └── PLSInfoMgr.lua
│   │   │   │   │   ├── Player/
│   │   │   │   │   │   ├── PlayerInfo.lua
│   │   │   │   │   │   └── PlayerInfoMgr.lua
│   │   │   │   │   ├── Room/
│   │   │   │   │   │   ├── RoomIDAlloter.lua
│   │   │   │   │   │   ├── RoomInfo.lua
│   │   │   │   │   │   └── RoomMgr.lua
│   │   │   │   │   ├── ScheduleService.lua
│   │   │   │   │   └── _SCHMain.lua
│   │   │   │   ├── _SCH.luaprj
│   │   │   │   └── __Robot/
│   │   │   │       ├── RobotSub/
│   │   │   │       │   ├── FSMRobot.lua
│   │   │   │       │   ├── GameDdz/
│   │   │   │       │   │   ├── FSMDdz.lua
│   │   │   │       │   │   └── RobotGameDdz.lua
│   │   │   │       │   ├── PublicRoomInfo.lua
│   │   │   │       │   ├── PublicRoomInfoMgr.lua
│   │   │   │       │   ├── Robot.lua
│   │   │   │       │   ├── RobotData.lua
│   │   │   │       │   ├── RobotGameBase.lua
│   │   │   │       │   ├── RobotMgr.lua
│   │   │   │       │   └── RobotSubStart.lua
│   │   │   │       ├── Test/
│   │   │   │       │   ├── CppTimerBase.lua
│   │   │   │       │   └── CppTimerTest.lua
│   │   │   │       ├── ThreadMgr.lua
│   │   │   │       └── _ClientRobotMain.lua
│   │   │   ├── server_share/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── base_object.h
│   │   │   │   ├── bin_luabind/
│   │   │   │   │   ├── Public.h
│   │   │   │   │   ├── Public.hpp
│   │   │   │   │   ├── ScriptBase.cpp
│   │   │   │   │   ├── ScriptBase.h
│   │   │   │   │   ├── ScriptExporter.cpp
│   │   │   │   │   ├── ScriptExporter.h
│   │   │   │   │   ├── ScriptHandle.cpp
│   │   │   │   │   ├── ScriptHandle.h
│   │   │   │   │   ├── ScriptObject.h
│   │   │   │   │   ├── ScriptProxy.cpp
│   │   │   │   │   └── ScriptProxy.h
│   │   │   │   ├── bit_set_ext2.h
│   │   │   │   ├── buf_fifo2.h
│   │   │   │   ├── buf_fifo_ring.h
│   │   │   │   ├── callback_adaptor.h
│   │   │   │   ├── cjson/
│   │   │   │   │   ├── dtoa.cpp
│   │   │   │   │   ├── dtoa_config.h
│   │   │   │   │   ├── fpconv.cpp
│   │   │   │   │   ├── fpconv.h
│   │   │   │   │   ├── g_fmt.cpp
│   │   │   │   │   ├── lua_cjson.cpp
│   │   │   │   │   ├── strbuf.cpp
│   │   │   │   │   └── strbuf.h
│   │   │   │   ├── client_msg_desc.cpp
│   │   │   │   ├── client_msg_desc.h
│   │   │   │   ├── game_def.h
│   │   │   │   ├── i18n_def.cpp
│   │   │   │   ├── i18n_def.h
│   │   │   │   ├── id_generate.cpp
│   │   │   │   ├── id_generate.h
│   │   │   │   ├── lua/
│   │   │   │   │   ├── lua_base_function.cpp
│   │   │   │   │   ├── lua_engine.cpp
│   │   │   │   │   ├── lua_engine.h
│   │   │   │   │   ├── lua_param.cpp
│   │   │   │   │   ├── lua_param.h
│   │   │   │   │   ├── lua_thread.cpp
│   │   │   │   │   ├── lua_thread.h
│   │   │   │   │   ├── script_mgr.cpp
│   │   │   │   │   └── script_mgr.h
│   │   │   │   ├── lua_mysql/
│   │   │   │   │   ├── mysql_conn.cpp
│   │   │   │   │   ├── mysql_conn.h
│   │   │   │   │   ├── mysql_result.cpp
│   │   │   │   │   ├── mysql_result.h
│   │   │   │   │   ├── mysql_stmt.cpp
│   │   │   │   │   ├── mysql_stmt.h
│   │   │   │   │   ├── mysql_string.cpp
│   │   │   │   │   └── mysql_string.h
│   │   │   │   ├── lua_net/
│   │   │   │   │   ├── lua_callback_client.cpp
│   │   │   │   │   ├── lua_callback_client.h
│   │   │   │   │   ├── lua_callback_server.cpp
│   │   │   │   │   ├── lua_callback_server.h
│   │   │   │   │   ├── lua_message.cpp
│   │   │   │   │   ├── lua_message.h
│   │   │   │   │   ├── lua_network.cpp
│   │   │   │   │   └── lua_network.h
│   │   │   │   ├── msg_leaf.cpp
│   │   │   │   ├── msg_leaf.h
│   │   │   │   ├── object_pool.h
│   │   │   │   ├── pbc/
│   │   │   │   │   ├── alloc.cpp
│   │   │   │   │   ├── alloc.h
│   │   │   │   │   ├── array.cpp
│   │   │   │   │   ├── array.h
│   │   │   │   │   ├── bootstrap.cpp
│   │   │   │   │   ├── bootstrap.h
│   │   │   │   │   ├── context.cpp
│   │   │   │   │   ├── context.h
│   │   │   │   │   ├── decode.cpp
│   │   │   │   │   ├── descriptor.pbc.h
│   │   │   │   │   ├── map.cpp
│   │   │   │   │   ├── map.h
│   │   │   │   │   ├── pattern.cpp
│   │   │   │   │   ├── pattern.h
│   │   │   │   │   ├── pbc-lua53.cpp
│   │   │   │   │   ├── pbc.h
│   │   │   │   │   ├── proto.cpp
│   │   │   │   │   ├── proto.h
│   │   │   │   │   ├── register.cpp
│   │   │   │   │   ├── rmessage.cpp
│   │   │   │   │   ├── stringpool.cpp
│   │   │   │   │   ├── stringpool.h
│   │   │   │   │   ├── varint.cpp
│   │   │   │   │   ├── varint.h
│   │   │   │   │   └── wmessage.cpp
│   │   │   │   ├── ranking_change_near.h
│   │   │   │   ├── ranking_slot.h
│   │   │   │   ├── server_def.cpp
│   │   │   │   ├── server_def.h
│   │   │   │   ├── sigslot.h
│   │   │   │   ├── singleton_registry.h
│   │   │   │   ├── stdpch.cpp
│   │   │   │   ├── stdpch.h
│   │   │   │   ├── timer.cpp
│   │   │   │   ├── timer.h
│   │   │   │   ├── tools.cpp
│   │   │   │   ├── tools.h
│   │   │   │   ├── utils.cpp
│   │   │   │   └── utils.h
│   │   │   └── shard.screen.rc
│   │   └── tools/
│   │       └── scripts/
│   │           └── linux/
│   │               ├── clean_log.sh
│   │               ├── generate_packed_sheets.sh
│   │               ├── loop_aes.sh
│   │               ├── mt_domain_screen_wrapper.sh
│   │               ├── service_launcher.sh
│   │               ├── shard
│   │               └── utilities
│   ├── README
│   ├── changelog.template
│   ├── config.h.cmake
│   ├── nel/
│   │   ├── AUTHORS
│   │   ├── CMakeLists.txt
│   │   ├── COPYING
│   │   ├── ChangeLog
│   │   ├── INSTALL
│   │   ├── NEWS
│   │   ├── README
│   │   ├── include/
│   │   │   ├── CMakeLists.txt
│   │   │   └── nel/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── georges/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── form.h
│   │   │       │   ├── form_dfn.h
│   │   │       │   ├── form_elm.h
│   │   │       │   ├── form_loader.h
│   │   │       │   ├── header.h
│   │   │       │   ├── load_form.h
│   │   │       │   ├── type.h
│   │   │       │   ├── u_form.h
│   │   │       │   ├── u_form_dfn.h
│   │   │       │   ├── u_form_elm.h
│   │   │       │   ├── u_form_loader.h
│   │   │       │   └── u_type.h
│   │   │       ├── ligo/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── ligo_config.h
│   │   │       │   ├── primitive.h
│   │   │       │   ├── primitive_class.h
│   │   │       │   ├── primitive_configuration.h
│   │   │       │   ├── primitive_utils.h
│   │   │       │   ├── zone_bank.h
│   │   │       │   └── zone_region.h
│   │   │       ├── logic/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── logic_condition.h
│   │   │       │   ├── logic_event.h
│   │   │       │   ├── logic_state.h
│   │   │       │   ├── logic_state_machine.h
│   │   │       │   └── logic_variable.h
│   │   │       ├── misc/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── aabbox.h
│   │   │       │   ├── algo.h
│   │   │       │   ├── app_context.h
│   │   │       │   ├── array_2d.h
│   │   │       │   ├── async_file_manager.h
│   │   │       │   ├── base64.h
│   │   │       │   ├── big_file.h
│   │   │       │   ├── bit_mem_stream.h
│   │   │       │   ├── bit_set.h
│   │   │       │   ├── bitmap.h
│   │   │       │   ├── block_memory.h
│   │   │       │   ├── bsphere.h
│   │   │       │   ├── buf_fifo.h
│   │   │       │   ├── callback.h
│   │   │       │   ├── cdb.h
│   │   │       │   ├── cdb_bank_handler.h
│   │   │       │   ├── cdb_branch.h
│   │   │       │   ├── cdb_branch_observing_handler.h
│   │   │       │   ├── cdb_check_sum.h
│   │   │       │   ├── cdb_leaf.h
│   │   │       │   ├── cdb_manager.h
│   │   │       │   ├── check_fpu.h
│   │   │       │   ├── class_id.h
│   │   │       │   ├── class_registry.h
│   │   │       │   ├── cmd_args.h
│   │   │       │   ├── co_task.h
│   │   │       │   ├── command.h
│   │   │       │   ├── common.h
│   │   │       │   ├── config_file.h
│   │   │       │   ├── contiguous_block_allocator.h
│   │   │       │   ├── cpu_time_stat.h
│   │   │       │   ├── debug.h
│   │   │       │   ├── di_event_emitter.h
│   │   │       │   ├── diff_tool.h
│   │   │       │   ├── displayer.h
│   │   │       │   ├── dummy_window.h
│   │   │       │   ├── dynloadlib.h
│   │   │       │   ├── eid_translator.h
│   │   │       │   ├── entity_id.h
│   │   │       │   ├── enum_bitset.h
│   │   │       │   ├── eval_num_expr.h
│   │   │       │   ├── event_emitter.h
│   │   │       │   ├── event_emitter_multi.h
│   │   │       │   ├── event_listener.h
│   │   │       │   ├── event_server.h
│   │   │       │   ├── events.h
│   │   │       │   ├── factory.h
│   │   │       │   ├── fast_floor.h
│   │   │       │   ├── fast_id_map.h
│   │   │       │   ├── fast_mem.h
│   │   │       │   ├── file.h
│   │   │       │   ├── fixed_size_allocator.h
│   │   │       │   ├── game_device.h
│   │   │       │   ├── game_device_events.h
│   │   │       │   ├── geom_ext.h
│   │   │       │   ├── grid_traversal.h
│   │   │       │   ├── gtk_displayer.h
│   │   │       │   ├── heap_memory.h
│   │   │       │   ├── hierarchical_timer.h
│   │   │       │   ├── historic.h
│   │   │       │   ├── i18n.h
│   │   │       │   ├── i_xml.h
│   │   │       │   ├── input_device.h
│   │   │       │   ├── input_device_manager.h
│   │   │       │   ├── input_device_server.h
│   │   │       │   ├── inter_window_msg_queue.h
│   │   │       │   ├── keyboard_device.h
│   │   │       │   ├── line.h
│   │   │       │   ├── log.h
│   │   │       │   ├── matrix.h
│   │   │       │   ├── md5.h
│   │   │       │   ├── mem_displayer.h
│   │   │       │   ├── mem_stream.h
│   │   │       │   ├── mouse_device.h
│   │   │       │   ├── mouse_smoother.h
│   │   │       │   ├── mutable_container.h
│   │   │       │   ├── mutex.h
│   │   │       │   ├── noise_value.h
│   │   │       │   ├── o_xml.h
│   │   │       │   ├── object_arena_allocator.h
│   │   │       │   ├── object_vector.h
│   │   │       │   ├── p_thread.h
│   │   │       │   ├── path.h
│   │   │       │   ├── plane.h
│   │   │       │   ├── plane_inline.h
│   │   │       │   ├── polygon.h
│   │   │       │   ├── pool_memory.h
│   │   │       │   ├── progress_callback.h
│   │   │       │   ├── quad.h
│   │   │       │   ├── quat.h
│   │   │       │   ├── random.h
│   │   │       │   ├── reader_writer.h
│   │   │       │   ├── rect.h
│   │   │       │   ├── report.h
│   │   │       │   ├── resource_ptr.h
│   │   │       │   ├── resource_ptr_inline.h
│   │   │       │   ├── rgba.h
│   │   │       │   ├── sha1.h
│   │   │       │   ├── shared_memory.h
│   │   │       │   ├── sheet_id.h
│   │   │       │   ├── singleton.h
│   │   │       │   ├── smart_ptr.h
│   │   │       │   ├── smart_ptr_inline.h
│   │   │       │   ├── speaker_listener.h
│   │   │       │   ├── sstring.h
│   │   │       │   ├── static_map.h
│   │   │       │   ├── stl_block_allocator.h
│   │   │       │   ├── stl_block_list.h
│   │   │       │   ├── stop_watch.h
│   │   │       │   ├── stream.h
│   │   │       │   ├── stream_inline.h
│   │   │       │   ├── string_common.h
│   │   │       │   ├── string_conversion.h
│   │   │       │   ├── string_id_array.h
│   │   │       │   ├── string_mapper.h
│   │   │       │   ├── string_stream.h
│   │   │       │   ├── system_info.h
│   │   │       │   ├── system_utils.h
│   │   │       │   ├── task_manager.h
│   │   │       │   ├── tds.h
│   │   │       │   ├── thread.h
│   │   │       │   ├── time_nl.h
│   │   │       │   ├── timeout_assertion_thread.h
│   │   │       │   ├── traits_nl.h
│   │   │       │   ├── triangle.h
│   │   │       │   ├── twin_map.h
│   │   │       │   ├── types_nl.h
│   │   │       │   ├── ucstring.h
│   │   │       │   ├── uv.h
│   │   │       │   ├── value_smoother.h
│   │   │       │   ├── variable.h
│   │   │       │   ├── vector.h
│   │   │       │   ├── vector_2d.h
│   │   │       │   ├── vector_2f.h
│   │   │       │   ├── vector_h.h
│   │   │       │   ├── vector_inline.h
│   │   │       │   ├── vectord.h
│   │   │       │   ├── vectord_inline.h
│   │   │       │   ├── voter.h
│   │   │       │   ├── win32_util.h
│   │   │       │   ├── win_displayer.h
│   │   │       │   ├── win_event_emitter.h
│   │   │       │   ├── win_thread.h
│   │   │       │   ├── win_tray.h
│   │   │       │   ├── window_displayer.h
│   │   │       │   ├── words_dictionary.h
│   │   │       │   ├── xml_auto_ptr.h
│   │   │       │   └── xml_pack.h
│   │   │       └── net/
│   │   │           ├── CMakeLists.txt
│   │   │           ├── admin.h
│   │   │           ├── buf_client.h
│   │   │           ├── buf_net_base.h
│   │   │           ├── buf_server.h
│   │   │           ├── buf_server_tcp.h
│   │   │           ├── buf_server_tcp_func.h
│   │   │           ├── buf_server_websocket.h
│   │   │           ├── buf_server_websocket_func.h
│   │   │           ├── buf_sock.h
│   │   │           ├── callback_client.h
│   │   │           ├── callback_net_base.h
│   │   │           ├── callback_server.h
│   │   │           ├── callback_server_tcp.h
│   │   │           ├── callback_server_websocket.h
│   │   │           ├── cvar_log_filter.h
│   │   │           ├── dummy_tcp_sock.h
│   │   │           ├── email.h
│   │   │           ├── inet_address.h
│   │   │           ├── listen_sock.h
│   │   │           ├── login_client.h
│   │   │           ├── login_cookie.h
│   │   │           ├── login_server.h
│   │   │           ├── message.h
│   │   │           ├── message_recorder.h
│   │   │           ├── module.h
│   │   │           ├── module_builder_parts.h
│   │   │           ├── module_common.h
│   │   │           ├── module_gateway.h
│   │   │           ├── module_manager.h
│   │   │           ├── module_message.h
│   │   │           ├── module_socket.h
│   │   │           ├── naming_client.h
│   │   │           ├── net_displayer.h
│   │   │           ├── net_log.h
│   │   │           ├── net_manager.h
│   │   │           ├── pacs_client.h
│   │   │           ├── service.h
│   │   │           ├── sock.h
│   │   │           ├── tcp_sock.h
│   │   │           ├── transport_class.h
│   │   │           ├── udp_sim_sock.h
│   │   │           ├── udp_sock.h
│   │   │           ├── unified_network.h
│   │   │           ├── unitime.h
│   │   │           └── varpath.h
│   │   ├── nel-config.in
│   │   ├── samples/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── georges/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── boolean.typ
│   │   │   │   ├── coolfilesinfo.dfn
│   │   │   │   ├── default.sample_config
│   │   │   │   ├── int.typ
│   │   │   │   ├── log.log
│   │   │   │   ├── main.cpp
│   │   │   │   ├── positiondata.dfn
│   │   │   │   ├── sample_config.dfn
│   │   │   │   ├── sample_configs_sheets.packed_sheets
│   │   │   │   └── string.typ
│   │   │   ├── misc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── command/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── configfile/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── main.cpp
│   │   │   │   │   └── simpletest.txt
│   │   │   │   ├── debug/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── i18n/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   ├── de.uxt
│   │   │   │   │   ├── en.uxt
│   │   │   │   │   ├── fr.uxt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── log/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   ├── strings/
│   │   │   │   │   ├── CMakeLists.txt
│   │   │   │   │   └── main.cpp
│   │   │   │   └── types_check/
│   │   │   │       ├── CMakeLists.txt
│   │   │   │       └── main.cpp
│   │   │   └── net/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── chat/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── chat_service.cfg
│   │   │       │   ├── client.cfg
│   │   │       │   ├── client.cpp
│   │   │       │   ├── kbhit.cpp
│   │   │       │   ├── kbhit.h
│   │   │       │   └── server.cpp
│   │   │       ├── class_transport/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── ai_service.cfg
│   │   │       │   ├── ai_service.cpp
│   │   │       │   ├── gd_service.cfg
│   │   │       │   └── gd_service.cpp
│   │   │       ├── login_system/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── client.cfg
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   └── frontend_service.cpp
│   │   │       ├── multi_shards/
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   └── shard_config/
│   │   │       │       ├── 01_admin_executor_service.lnk
│   │   │       │       ├── 02_login_service.lnk
│   │   │       │       ├── 03_naming_service_shard1.lnk
│   │   │       │       ├── 04_welcome_service_shard1.lnk
│   │   │       │       ├── 05_frontend_service_shard1.lnk
│   │   │       │       ├── 06_naming_service_shard2.lnk
│   │   │       │       ├── 07_welcome_service_shard2.lnk
│   │   │       │       ├── 08_frontend_service_shard2.lnk
│   │   │       │       ├── 09_naming_service_shard3.lnk
│   │   │       │       ├── 10_frontend_service_shard3.lnk
│   │   │       │       ├── 11_welcome_service_shard3.lnk
│   │   │       │       ├── 12_client.lnk
│   │   │       │       ├── admin_executor_service.cfg
│   │   │       │       ├── client.cfg
│   │   │       │       ├── login_service.cfg
│   │   │       │       ├── login_service_database.cfg
│   │   │       │       ├── shard1_config/
│   │   │       │       │   ├── frontend_service.cfg
│   │   │       │       │   ├── naming_service.cfg
│   │   │       │       │   └── welcome_service.cfg
│   │   │       │       ├── shard2_config/
│   │   │       │       │   ├── frontend_service.cfg
│   │   │       │       │   ├── naming_service.cfg
│   │   │       │       │   └── welcome_service.cfg
│   │   │       │       └── shard3_config/
│   │   │       │           ├── frontend_service.cfg
│   │   │       │           ├── naming_service.cfg
│   │   │       │           └── welcome_service.cfg
│   │   │       ├── net_layer3/
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   ├── ping_service.cfg
│   │   │       │   └── ping_service.cpp
│   │   │       ├── net_layer4/
│   │   │       │   ├── client.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   ├── ping_service.cfg
│   │   │       │   └── ping_service.cpp
│   │   │       ├── net_layer5/
│   │   │       │   ├── flood_service.cfg
│   │   │       │   ├── flood_service.cpp
│   │   │       │   ├── frontend_service.cfg
│   │   │       │   ├── frontend_service.cpp
│   │   │       │   ├── gpm_service.cfg
│   │   │       │   ├── gpm_service.cpp
│   │   │       │   ├── ping_service.cfg
│   │   │       │   ├── ping_service.cpp
│   │   │       │   ├── player_service.cfg
│   │   │       │   └── player_service.cpp
│   │   │       ├── service/
│   │   │       │   ├── chat_service.cfg
│   │   │       │   └── chat_service.cpp
│   │   │       ├── udp/
│   │   │       │   ├── CMakeLists.txt
│   │   │       │   ├── bench_service.cfg
│   │   │       │   ├── bench_service.cpp
│   │   │       │   ├── client.cfg
│   │   │       │   ├── client.cpp
│   │   │       │   ├── graph.cpp
│   │   │       │   ├── graph.h
│   │   │       │   ├── n019003l.pfb
│   │   │       │   ├── readme.txt
│   │   │       │   ├── receive_task.cpp
│   │   │       │   ├── receive_task.h
│   │   │       │   ├── simlag.cpp
│   │   │       │   └── simlag.h
│   │   │       └── udp_ping/
│   │   │           ├── client.cpp
│   │   │           ├── udp_service.cfg
│   │   │           └── udp_service.cpp
│   │   ├── src/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── georges/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── form.cpp
│   │   │   │   ├── form_dfn.cpp
│   │   │   │   ├── form_elm.cpp
│   │   │   │   ├── form_loader.cpp
│   │   │   │   ├── georges_file_format.txt
│   │   │   │   ├── header.cpp
│   │   │   │   ├── load_form.cpp
│   │   │   │   ├── nel-georges.pc.in
│   │   │   │   ├── stdgeorges.cpp
│   │   │   │   ├── stdgeorges.h
│   │   │   │   └── type.cpp
│   │   │   ├── ligo/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── ligo_config.cpp
│   │   │   │   ├── ligo_error.cpp
│   │   │   │   ├── ligo_error.h
│   │   │   │   ├── ligo_material.cpp
│   │   │   │   ├── ligo_material.h
│   │   │   │   ├── nel-ligo.pc.in
│   │   │   │   ├── primitive.cpp
│   │   │   │   ├── primitive_class.cpp
│   │   │   │   ├── primitive_configuration.cpp
│   │   │   │   ├── primitive_utils.cpp
│   │   │   │   ├── stdligo.cpp
│   │   │   │   ├── stdligo.h
│   │   │   │   ├── transition.cpp
│   │   │   │   ├── transition.h
│   │   │   │   ├── zone_bank.cpp
│   │   │   │   ├── zone_edge.cpp
│   │   │   │   ├── zone_edge.h
│   │   │   │   ├── zone_region.cpp
│   │   │   │   ├── zone_template.cpp
│   │   │   │   └── zone_template.h
│   │   │   ├── logic/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── logic_condition.cpp
│   │   │   │   ├── logic_event.cpp
│   │   │   │   ├── logic_state.cpp
│   │   │   │   ├── logic_state_machine.cpp
│   │   │   │   └── logic_variable.cpp
│   │   │   ├── misc/
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── aabbox.cpp
│   │   │   │   ├── algo.cpp
│   │   │   │   ├── app_context.cpp
│   │   │   │   ├── async_file_manager.cpp
│   │   │   │   ├── base64.cpp
│   │   │   │   ├── big_file.cpp
│   │   │   │   ├── bit_mem_stream.cpp
│   │   │   │   ├── bit_set.cpp
│   │   │   │   ├── bitmap.cpp
│   │   │   │   ├── bitmap_jpeg.cpp
│   │   │   │   ├── bitmap_png.cpp
│   │   │   │   ├── block_memory.cpp
│   │   │   │   ├── bsphere.cpp
│   │   │   │   ├── buf_fifo.cpp
│   │   │   │   ├── cdb.cpp
│   │   │   │   ├── cdb_bank_handler.cpp
│   │   │   │   ├── cdb_branch.cpp
│   │   │   │   ├── cdb_branch_observing_handler.cpp
│   │   │   │   ├── cdb_check_sum.cpp
│   │   │   │   ├── cdb_leaf.cpp
│   │   │   │   ├── cdb_manager.cpp
│   │   │   │   ├── check_fpu.cpp
│   │   │   │   ├── class_id.cpp
│   │   │   │   ├── class_registry.cpp
│   │   │   │   ├── cmd_args.cpp
│   │   │   │   ├── co_task.cpp
│   │   │   │   ├── command.cpp
│   │   │   │   ├── common.cpp
│   │   │   │   ├── config_file/
│   │   │   │   │   ├── cf_bison.simple
│   │   │   │   │   ├── cf_flex.skl
│   │   │   │   │   ├── cf_gramatical.cpp
│   │   │   │   │   ├── cf_gramatical.h
│   │   │   │   │   ├── cf_gramatical.ypp
│   │   │   │   │   ├── cf_lexical.cpp
│   │   │   │   │   ├── cf_lexical.lpp
│   │   │   │   │   ├── config_file.cpp
│   │   │   │   │   └── do.bat
│   │   │   │   ├── contiguous_block_allocator.cpp
│   │   │   │   ├── cpu_time_stat.cpp
│   │   │   │   ├── debug.cpp
│   │   │   │   ├── diff_tool.cpp
│   │   │   │   ├── displayer.cpp
│   │   │   │   ├── dummy_window.cpp
│   │   │   │   ├── dynloadlib.cpp
│   │   │   │   ├── eid_translator.cpp
│   │   │   │   ├── entity_id.cpp
│   │   │   │   ├── eval_num_expr.cpp
│   │   │   │   ├── event_emitter.cpp
│   │   │   │   ├── event_emitter_multi.cpp
│   │   │   │   ├── event_listener.cpp
│   │   │   │   ├── event_server.cpp
│   │   │   │   ├── events.cpp
│   │   │   │   ├── fast_floor.cpp
│   │   │   │   ├── fast_id_map.cpp
│   │   │   │   ├── fast_mem.cpp
│   │   │   │   ├── file.cpp
│   │   │   │   ├── fixed_size_allocator.cpp
│   │   │   │   ├── game_device.cpp
│   │   │   │   ├── game_device_events.cpp
│   │   │   │   ├── geom_ext.cpp
│   │   │   │   ├── grid_traversal.cpp
│   │   │   │   ├── gtk_displayer.cpp
│   │   │   │   ├── heap_memory.cpp
│   │   │   │   ├── hierarchical_timer.cpp
│   │   │   │   ├── i18n.cpp
│   │   │   │   ├── i_xml.cpp
│   │   │   │   ├── input_device.cpp
│   │   │   │   ├── input_device_server.cpp
│   │   │   │   ├── inter_window_msg_queue.cpp
│   │   │   │   ├── keyboard_device.cpp
│   │   │   │   ├── line.cpp
│   │   │   │   ├── log.cpp
│   │   │   │   ├── matrix.cpp
│   │   │   │   ├── md5.cpp
│   │   │   │   ├── mem_displayer.cpp
│   │   │   │   ├── mem_stream.cpp
│   │   │   │   ├── mouse_smoother.cpp
│   │   │   │   ├── mutex.cpp
│   │   │   │   ├── nel-misc.pc
│   │   │   │   ├── nel-misc.pc.in
│   │   │   │   ├── noise_value.cpp
│   │   │   │   ├── o_xml.cpp
│   │   │   │   ├── object_arena_allocator.cpp
│   │   │   │   ├── object_vector.cpp
│   │   │   │   ├── p_thread.cpp
│   │   │   │   ├── path.cpp
│   │   │   │   ├── plane.cpp
│   │   │   │   ├── polygon.cpp
│   │   │   │   ├── progress_callback.cpp
│   │   │   │   ├── quad.cpp
│   │   │   │   ├── quat.cpp
│   │   │   │   ├── reader_writer.cpp
│   │   │   │   ├── rect.cpp
│   │   │   │   ├── report.cpp
│   │   │   │   ├── rgba.cpp
│   │   │   │   ├── sha1.cpp
│   │   │   │   ├── shared_memory.cpp
│   │   │   │   ├── sheet_id.cpp
│   │   │   │   ├── smart_ptr.cpp
│   │   │   │   ├── sstring.cpp
│   │   │   │   ├── stdmisc.cpp
│   │   │   │   ├── stdmisc.h
│   │   │   │   ├── stl_block_allocator.cpp
│   │   │   │   ├── stl_block_list.cpp
│   │   │   │   ├── stop_watch.cpp
│   │   │   │   ├── stream.cpp
│   │   │   │   ├── string_common.cpp
│   │   │   │   ├── string_id_array.cpp
│   │   │   │   ├── string_mapper.cpp
│   │   │   │   ├── system_info.cpp
│   │   │   │   ├── system_utils.cpp
│   │   │   │   ├── task_manager.cpp
│   │   │   │   ├── tds.cpp
│   │   │   │   ├── time_nl.cpp
│   │   │   │   ├── triangle.cpp
│   │   │   │   ├── unicode.cpp
│   │   │   │   ├── uv.cpp
│   │   │   │   ├── value_smoother.cpp
│   │   │   │   ├── variable.cpp
│   │   │   │   ├── vector.cpp
│   │   │   │   ├── vector_2d.cpp
│   │   │   │   ├── vector_2f.cpp
│   │   │   │   ├── vector_h.cpp
│   │   │   │   ├── vectord.cpp
│   │   │   │   ├── win32_util.cpp
│   │   │   │   ├── win_displayer.cpp
│   │   │   │   ├── win_event_emitter.cpp
│   │   │   │   ├── win_thread.cpp
│   │   │   │   ├── win_tray.cpp
│   │   │   │   ├── window_displayer.cpp
│   │   │   │   ├── words_dictionary.cpp
│   │   │   │   └── xml_pack.cpp
│   │   │   └── net/
│   │   │       ├── CMakeLists.txt
│   │   │       ├── admin.cpp
│   │   │       ├── buf_client.cpp
│   │   │       ├── buf_net_base.cpp
│   │   │       ├── buf_server.cpp
│   │   │       ├── buf_server_tcp.cpp
│   │   │       ├── buf_server_tcp_func.cpp
│   │   │       ├── buf_server_websocket.cpp
│   │   │       ├── buf_server_websocket_func.cpp
│   │   │       ├── buf_sock.cpp
│   │   │       ├── callback_client.cpp
│   │   │       ├── callback_net_base.cpp
│   │   │       ├── callback_server.cpp
│   │   │       ├── callback_server_tcp.cpp
│   │   │       ├── callback_server_websocket.cpp
│   │   │       ├── define_sys.pb.cc
│   │   │       ├── dummy_tcp_sock.cpp
│   │   │       ├── email.cpp
│   │   │       ├── inet_address.cpp
│   │   │       ├── listen_sock.cpp
│   │   │       ├── login_client.cpp
│   │   │       ├── login_cookie.cpp
│   │   │       ├── login_server.cpp
│   │   │       ├── message.cpp
│   │   │       ├── message_recorder.cpp
│   │   │       ├── module.cpp
│   │   │       ├── module_common.cpp
│   │   │       ├── module_gateway.cpp
│   │   │       ├── module_gateway_transport.cpp
│   │   │       ├── module_l5_transport.cpp
│   │   │       ├── module_local_gateway.cpp
│   │   │       ├── module_manager.cpp
│   │   │       ├── module_message.cpp
│   │   │       ├── module_socket.cpp
│   │   │       ├── naming_client.cpp
│   │   │       ├── nel-net.pc.in
│   │   │       ├── net_displayer.cpp
│   │   │       ├── net_log.cpp
│   │   │       ├── net_manager.cpp
│   │   │       ├── service.cpp
│   │   │       ├── sock.cpp
│   │   │       ├── stdin_monitor_thread.cpp
│   │   │       ├── stdin_monitor_thread.h
│   │   │       ├── stdnet.cpp
│   │   │       ├── stdnet.h
│   │   │       ├── tcp_sock.cpp
│   │   │       ├── transport_class.cpp
│   │   │       ├── udp_sim_sock.cpp
│   │   │       ├── udp_sock.cpp
│   │   │       ├── unified_network.cpp
│   │   │       ├── unitime.cpp
│   │   │       └── varpath.cpp
│   │   └── tools/
│   │       ├── CMakeLists.txt
│   │       └── nel_unit_test/
│   │           ├── CMakeLists.txt
│   │           ├── __copy_file_dst.foo
│   │           ├── __ligo_class.xml
│   │           ├── __test_prim.primitive
│   │           ├── debug_cfg_with_error_main.cfg
│   │           ├── nel_unit_test.cpp
│   │           ├── nel_unit_test.exp
│   │           ├── result.html
│   │           ├── run_test.bat
│   │           ├── ut_ligo.h
│   │           ├── ut_ligo_primitive.h
│   │           ├── ut_misc.h
│   │           ├── ut_misc_co_task.h
│   │           ├── ut_misc_command.h
│   │           ├── ut_misc_config_file.h
│   │           ├── ut_misc_debug.h
│   │           ├── ut_misc_dynlibload.h
│   │           ├── ut_misc_file.h
│   │           ├── ut_misc_files/
│   │           │   ├── cfg_with_bad_test.cfg
│   │           │   ├── cfg_with_define.cfg
│   │           │   ├── cfg_with_error.cfg
│   │           │   ├── cfg_with_error_main.cfg
│   │           │   ├── cfg_with_include.cfg
│   │           │   ├── cfg_with_include_and_optional.cfg
│   │           │   ├── cfg_with_optional.cfg
│   │           │   ├── file1_in_bnp.txt
│   │           │   ├── file2_in_bnp.txt
│   │           │   ├── files.bnp
│   │           │   ├── files.xml_pack
│   │           │   ├── files_for_xml_subpack/
│   │           │   │   ├── same_subfolder_1/
│   │           │   │   │   └── samename/
│   │           │   │   │       ├── .xml_pack_index
│   │           │   │   │       ├── file1_in_sub_1.xml
│   │           │   │   │       ├── file2_in_sub_1.xml
│   │           │   │   │       └── samename.xml_pack
│   │           │   │   └── same_subfolder_2/
│   │           │   │       └── samename/
│   │           │   │           ├── .xml_pack_index
│   │           │   │           ├── file1_in_sub_2.xml
│   │           │   │           ├── file2_in_sub_2.xml
│   │           │   │           └── samename.xml_pack
│   │           │   ├── included_cfg.cfg
│   │           │   └── xml_files/
│   │           │       ├── file1_in_xml_pack.xml
│   │           │       ├── file2_in_xml_pack.xml
│   │           │       ├── same_subfolder_1/
│   │           │       │   └── samename/
│   │           │       │       └── samename.xml_pack
│   │           │       ├── same_subfolder_2/
│   │           │       │   └── samename/
│   │           │       │       └── samename.xml_pack
│   │           │       └── xml_files.xml_pack
│   │           ├── ut_misc_pack_file.h
│   │           ├── ut_misc_singleton.h
│   │           ├── ut_misc_sstring.h
│   │           ├── ut_misc_stream.h
│   │           ├── ut_misc_string_common.h
│   │           ├── ut_misc_types.h
│   │           ├── ut_misc_variable.h
│   │           ├── ut_net.h
│   │           ├── ut_net_layer3.h
│   │           ├── ut_net_message.h
│   │           └── ut_net_module.h
│   ├── nelDashBuild.cmd
│   ├── nelDashBuild.sh
│   └── revision.h.in
└── tools/
    ├── protobuf/
    │   ├── JS/
    │   │   ├── README.md
    │   │   ├── protobuf/
    │   │   │   └── protofile/
    │   │   │       └── hold
    │   │   └── protobuf_gen_js.bat
    │   ├── define_attrib.proto
    │   ├── define_pro.proto
    │   ├── lua/
    │   │   └── protobuf_gen_lua.bat
    │   ├── msg_client.proto
    │   ├── msg_doudizhu.proto
    │   └── msg_service.proto
    ├── server/
    │   ├── admin/
    │   │   ├── common.php
    │   │   ├── config.php
    │   │   ├── crons/
    │   │   │   ├── cron_harddisk.php
    │   │   │   ├── cron_harddisk.sh
    │   │   │   └── index.html
    │   │   ├── docs/
    │   │   │   └── shard_restart/
    │   │   │       ├── Filelist.xml
    │   │   │       ├── H38.css
    │   │   │       ├── H70_2.htm
    │   │   │       ├── HOWTO_Restarting_Ryzom_Game_Shards.htm
    │   │   │       ├── Hd36.xml
    │   │   │       ├── Hf69.htm
    │   │   │       ├── Hg39_1.htm
    │   │   │       ├── Hg41_2.htm
    │   │   │       ├── Hg43_3.htm
    │   │   │       ├── Hg45_4.htm
    │   │   │       ├── Hg47_5.htm
    │   │   │       ├── Hg49_6.htm
    │   │   │       ├── Hg51_7.htm
    │   │   │       ├── Hg53_8.htm
    │   │   │       ├── Hg55_9.htm
    │   │   │       ├── Hg57_10.htm
    │   │   │       ├── Hg59_11.htm
    │   │   │       ├── Hg61_12.htm
    │   │   │       ├── Hn68.htm
    │   │   │       ├── Hu37.js
    │   │   │       └── Hz63.htm
    │   │   ├── functions_auth.php
    │   │   ├── functions_common.php
    │   │   ├── functions_mysql.php
    │   │   ├── functions_mysqli.php
    │   │   ├── functions_tool_administration.php
    │   │   ├── functions_tool_applications.php
    │   │   ├── functions_tool_event_entities.php
    │   │   ├── functions_tool_graphs.php
    │   │   ├── functions_tool_guild_locator.php
    │   │   ├── functions_tool_log_analyser.php
    │   │   ├── functions_tool_main.php
    │   │   ├── functions_tool_mfs.php
    │   │   ├── functions_tool_notes.php
    │   │   ├── functions_tool_player_locator.php
    │   │   ├── functions_tool_preferences.php
    │   │   ├── functions_tool_shop.php
    │   │   ├── graphs_output/
    │   │   │   └── placeholder
    │   │   ├── index.php
    │   │   ├── jpgraph/
    │   │   │   ├── imgdata_balls.inc
    │   │   │   ├── imgdata_bevels.inc
    │   │   │   ├── imgdata_diamonds.inc
    │   │   │   ├── imgdata_pushpins.inc
    │   │   │   ├── imgdata_squares.inc
    │   │   │   ├── imgdata_stars.inc
    │   │   │   ├── jpg-config.inc
    │   │   │   ├── jpgraph.php
    │   │   │   ├── jpgraph_antispam-digits.php
    │   │   │   ├── jpgraph_antispam.php
    │   │   │   ├── jpgraph_bar.php
    │   │   │   ├── jpgraph_canvas.php
    │   │   │   ├── jpgraph_canvtools.php
    │   │   │   ├── jpgraph_date.php
    │   │   │   ├── jpgraph_error.php
    │   │   │   ├── jpgraph_flags.php
    │   │   │   ├── jpgraph_gantt.php
    │   │   │   ├── jpgraph_gb2312.php
    │   │   │   ├── jpgraph_gradient.php
    │   │   │   ├── jpgraph_iconplot.php
    │   │   │   ├── jpgraph_imgtrans.php
    │   │   │   ├── jpgraph_line.php
    │   │   │   ├── jpgraph_log.php
    │   │   │   ├── jpgraph_pie.php
    │   │   │   ├── jpgraph_pie3d.php
    │   │   │   ├── jpgraph_plotband.php
    │   │   │   ├── jpgraph_plotmark.inc
    │   │   │   ├── jpgraph_polar.php
    │   │   │   ├── jpgraph_radar.php
    │   │   │   ├── jpgraph_regstat.php
    │   │   │   ├── jpgraph_scatter.php
    │   │   │   ├── jpgraph_stock.php
    │   │   │   ├── jpgraph_utils.inc
    │   │   │   └── lang/
    │   │   │       └── en.inc.php
    │   │   ├── logs/
    │   │   │   └── empty.txt
    │   │   ├── nel/
    │   │   │   ├── admin_modules_itf.php
    │   │   │   └── nel_message.php
    │   │   ├── neltool.css
    │   │   ├── overlib/
    │   │   │   ├── makemini.pl
    │   │   │   ├── overlib.js
    │   │   │   ├── overlib_anchor.js
    │   │   │   ├── overlib_anchor_mini.js
    │   │   │   ├── overlib_draggable.js
    │   │   │   ├── overlib_draggable_mini.js
    │   │   │   └── overlib_mini.js
    │   │   ├── scripts/
    │   │   │   ├── index.html
    │   │   │   ├── restart_sequence.php
    │   │   │   └── run_script.sh
    │   │   ├── smarty/
    │   │   │   ├── Config_File.class.php
    │   │   │   ├── Smarty.class.php
    │   │   │   ├── Smarty_Compiler.class.php
    │   │   │   ├── debug.tpl
    │   │   │   ├── internals/
    │   │   │   │   ├── core.assemble_plugin_filepath.php
    │   │   │   │   ├── core.assign_smarty_interface.php
    │   │   │   │   ├── core.create_dir_structure.php
    │   │   │   │   ├── core.display_debug_console.php
    │   │   │   │   ├── core.get_include_path.php
    │   │   │   │   ├── core.get_microtime.php
    │   │   │   │   ├── core.get_php_resource.php
    │   │   │   │   ├── core.is_secure.php
    │   │   │   │   ├── core.is_trusted.php
    │   │   │   │   ├── core.load_plugins.php
    │   │   │   │   ├── core.load_resource_plugin.php
    │   │   │   │   ├── core.process_cached_inserts.php
    │   │   │   │   ├── core.process_compiled_include.php
    │   │   │   │   ├── core.read_cache_file.php
    │   │   │   │   ├── core.rm_auto.php
    │   │   │   │   ├── core.rmdir.php
    │   │   │   │   ├── core.run_insert_handler.php
    │   │   │   │   ├── core.smarty_include_php.php
    │   │   │   │   ├── core.write_cache_file.php
    │   │   │   │   ├── core.write_compiled_include.php
    │   │   │   │   ├── core.write_compiled_resource.php
    │   │   │   │   └── core.write_file.php
    │   │   │   └── plugins/
    │   │   │       ├── block.textformat.php
    │   │   │       ├── compiler.assign.php
    │   │   │       ├── function.assign_debug_info.php
    │   │   │       ├── function.config_load.php
    │   │   │       ├── function.counter.php
    │   │   │       ├── function.cycle.php
    │   │   │       ├── function.debug.php
    │   │   │       ├── function.eval.php
    │   │   │       ├── function.fetch.php
    │   │   │       ├── function.html_checkboxes.php
    │   │   │       ├── function.html_image.php
    │   │   │       ├── function.html_options.php
    │   │   │       ├── function.html_radios.php
    │   │   │       ├── function.html_select_date.php
    │   │   │       ├── function.html_select_time.php
    │   │   │       ├── function.html_table.php
    │   │   │       ├── function.mailto.php
    │   │   │       ├── function.math.php
    │   │   │       ├── function.popup.php
    │   │   │       ├── function.popup_init.php
    │   │   │       ├── function.substr.php
    │   │   │       ├── modifier.capitalize.php
    │   │   │       ├── modifier.cat.php
    │   │   │       ├── modifier.count_characters.php
    │   │   │       ├── modifier.count_paragraphs.php
    │   │   │       ├── modifier.count_sentences.php
    │   │   │       ├── modifier.count_words.php
    │   │   │       ├── modifier.date_format.php
    │   │   │       ├── modifier.debug_print_var.php
    │   │   │       ├── modifier.default.php
    │   │   │       ├── modifier.escape.php
    │   │   │       ├── modifier.indent.php
    │   │   │       ├── modifier.lower.php
    │   │   │       ├── modifier.nl2br.php
    │   │   │       ├── modifier.regex_replace.php
    │   │   │       ├── modifier.replace.php
    │   │   │       ├── modifier.spacify.php
    │   │   │       ├── modifier.string_format.php
    │   │   │       ├── modifier.strip.php
    │   │   │       ├── modifier.strip_tags.php
    │   │   │       ├── modifier.truncate.php
    │   │   │       ├── modifier.upper.php
    │   │   │       ├── modifier.wordwrap.php
    │   │   │       ├── outputfilter.trimwhitespace.php
    │   │   │       ├── shared.escape_special_chars.php
    │   │   │       └── shared.make_timestamp.php
    │   │   ├── templates/
    │   │   │   ├── default/
    │   │   │   │   ├── _index.tpl
    │   │   │   │   ├── index.tpl
    │   │   │   │   ├── index_login.tpl
    │   │   │   │   ├── index_restart_sequence.tpl
    │   │   │   │   ├── page_footer.tpl
    │   │   │   │   ├── page_footer_light.tpl
    │   │   │   │   ├── page_header.tpl
    │   │   │   │   ├── page_header_light.tpl
    │   │   │   │   ├── tool_actions.tpl
    │   │   │   │   ├── tool_administration.tpl
    │   │   │   │   ├── tool_administration_applications.tpl
    │   │   │   │   ├── tool_administration_domains.tpl
    │   │   │   │   ├── tool_administration_groups.tpl
    │   │   │   │   ├── tool_administration_logs.tpl
    │   │   │   │   ├── tool_administration_restarts.tpl
    │   │   │   │   ├── tool_administration_shards.tpl
    │   │   │   │   ├── tool_administration_users.tpl
    │   │   │   │   ├── tool_administration_users.tpl.backup
    │   │   │   │   ├── tool_event_entities.tpl
    │   │   │   │   ├── tool_graphs.tpl
    │   │   │   │   ├── tool_graphs_ccu.tpl
    │   │   │   │   ├── tool_graphs_hires.tpl
    │   │   │   │   ├── tool_graphs_tech.tpl
    │   │   │   │   ├── tool_guild_locator.tpl
    │   │   │   │   ├── tool_log_analyser.tpl
    │   │   │   │   ├── tool_log_analyser_file_view.tpl
    │   │   │   │   ├── tool_mfs.tpl
    │   │   │   │   ├── tool_notes.tpl
    │   │   │   │   ├── tool_player_locator.tpl
    │   │   │   │   ├── tool_preferences.tpl
    │   │   │   │   └── tool_shop.tpl
    │   │   │   └── default_c/
    │   │   │       └── placeholder
    │   │   ├── tool_actions.php
    │   │   ├── tool_administration.php
    │   │   ├── tool_event_entities.php
    │   │   ├── tool_graphs.php
    │   │   ├── tool_guild_locator.php
    │   │   ├── tool_log_analyser.php
    │   │   ├── tool_mfs.php
    │   │   ├── tool_notes.php
    │   │   ├── tool_player_locator.php
    │   │   ├── tool_preferences.php
    │   │   └── tool_shop.php
    │   ├── sql/
    │   │   ├── d_mt_account.sql
    │   │   ├── d_mt_player_procedure.sql
    │   │   ├── d_mt_player_table.sql
    │   │   └── nel_tool.sql
    │   └── www/
    │       ├── login/
    │       │   ├── code2accesstoken.php
    │       │   ├── config.php
    │       │   ├── login_test.php
    │       │   ├── logs/
    │       │   │   └── placeholder
    │       │   ├── pay_service_itf.php
    │       │   └── public_func.php
    │       └── tools/
    │           └── nel_message.php
    └── xlsx2json/
        ├── LICENSE
        ├── README.md
        ├── config.json
        ├── excel/
        │   └── GameConfig.xlsx
        ├── export.bat
        ├── export.sh
        ├── index.js
        ├── lib/
        │   └── xlsx-to-json.js
        └── package.json
Download .txt
Showing preview only (452K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5396 symbols across 695 files)

FILE: code/EVA/server/admin_modules/admin_modules.cpp
  function admin_modules_forceLink (line 32) | void admin_modules_forceLink()

FILE: code/EVA/server/admin_modules/admin_modules_itf.cpp
  type ADMIN (line 23) | namespace ADMIN

FILE: code/EVA/server/admin_modules/admin_modules_itf.h
  function namespace (line 37) | namespace ADMIN
  function class (line 684) | class TGraphData
  type TRunningState (line 1313) | struct TRunningState
  function _Value (line 1372) | TRunningState(TValues value)
  function serial (line 1382) | void serial(NLMISC::IStream &s)
  function operator (line 1387) | bool operator == (const TRunningState &other) const
  function operator (line 1391) | bool operator != (const TRunningState &other) const
  function operator (line 1395) | bool operator < (const TRunningState &other) const
  function operator (line 1400) | bool operator <= (const TRunningState &other) const
  function operator (line 1405) | bool operator > (const TRunningState &other) const
  function operator (line 1409) | bool operator >= (const TRunningState &other) const
  function std (line 1418) | static const std::string &toString(TValues value)
  function isValid (line 1429) | bool isValid()
  function uint32 (line 1439) | uint32 asIndex()
  type TRunningTag (line 1449) | struct TRunningTag
  function _Value (line 1523) | TRunningTag(TValues value)
  function serial (line 1533) | void serial(NLMISC::IStream &s)
  function operator (line 1538) | bool operator == (const TRunningTag &other) const
  function operator (line 1542) | bool operator != (const TRunningTag &other) const
  function operator (line 1546) | bool operator < (const TRunningTag &other) const
  function operator (line 1551) | bool operator <= (const TRunningTag &other) const
  function operator (line 1556) | bool operator > (const TRunningTag &other) const
  function operator (line 1560) | bool operator >= (const TRunningTag &other) const
  function std (line 1569) | static const std::string &toString(TValues value)
  function isValid (line 1580) | bool isValid()
  function uint32 (line 1590) | uint32 asIndex()
  function setShardName (line 1633) | void setShardName(const std::string &value)
  function setServiceLongName (line 1653) | void setServiceLongName(const std::string &value)
  function setServiceShortName (line 1673) | void setServiceShortName(const std::string &value)
  function setServiceAliasName (line 1693) | void setServiceAliasName(const std::string &value)
  function setRunningState (line 1707) | void setRunningState(TRunningState value)
  function setRunningOrders (line 1719) | void setRunningOrders(TRunningOrders value)
  function setRunningTags (line 1737) | void setRunningTags(const std::set < TRunningTag > &value)
  function setStatus (line 1757) | void setStatus(const std::string &value)
  function operator (line 1766) | bool operator == (const TServiceStatus &other) const
  function serial (line 1785) | void serial(NLMISC::IStream &s)
  function virtual (line 1820) | virtual ~CAdminServiceSkel()
  function init (line 1824) | void init(NLNET::IModule *module)
  function fwdOnModuleUp (line 1831) | void				fwdOnModuleUp(NLNET::IModuleProxy *moduleProxy)  {}
  function fwdOnModuleDown (line 1832) | void				fwdOnModuleDown(NLNET::IModuleProxy *moduleProxy) {}
  function fwdOnModuleSecurityChange (line 1833) | void				fwdOnModuleSecurityChange(NLNET::IModuleProxy *moduleProxy) {}
  type std (line 1840) | typedef std::map<std::string, TMessageHandler>	TMessageHandlerMap;
  function TMessageHandlerMap (line 1842) | const TMessageHandlerMap &getMessageHandlers() const;
  function virtual (line 1960) | virtual ~CAdminExecutorServiceSkel()
  function init (line 1964) | void init(NLNET::IModule *module)
  function fwdOnModuleUp (line 1971) | void				fwdOnModuleUp(NLNET::IModuleProxy *moduleProxy)  {}
  function fwdOnModuleDown (line 1972) | void				fwdOnModuleDown(NLNET::IModuleProxy *moduleProxy) {}
  function fwdOnModuleSecurityChange (line 1973) | void				fwdOnModuleSecurityChange(NLNET::IModuleProxy *moduleProxy) {}
  type std (line 1980) | typedef std::map<std::string, TMessageHandler>	TMessageHandlerMap;
  function TMessageHandlerMap (line 1982) | const TMessageHandlerMap &getMessageHandlers() const;
  function class (line 2182) | class CAdminExecutorServiceClientSkel

FILE: code/EVA/server/admin_modules/aes_client_module.cpp
  function aesclient_forceLink (line 30) | void aesclient_forceLink() {}
  type ADMIN (line 32) | namespace ADMIN
    class CAdminExecutorServiceClient (line 34) | class CAdminExecutorServiceClient
      type TGraphSample (line 66) | struct TGraphSample
      type TGraphVarInfo (line 75) | struct TGraphVarInfo
        method TGraphVarInfo (line 103) | TGraphVarInfo()
      method CAdminExecutorServiceClient (line 118) | CAdminExecutorServiceClient()
      method makeServiceAlias (line 128) | std::string makeServiceAlias()
      method string (line 138) | string getModuleManifest() const
      method initModule (line 155) | bool initModule(const TParsedCommandLine &pcl)
      method onModuleUp (line 195) | void onModuleUp(IModuleProxy *proxy)
      method onModuleDown (line 227) | void onModuleDown(IModuleProxy *proxy)
      method onModuleUpdate (line 237) | void onModuleUpdate()
      method sendServiceStatus (line 364) | void sendServiceStatus()
      method serviceCmd (line 428) | virtual void serviceCmd(NLNET::IModuleProxy *sender, uint32 commandI...
      method serviceCmdNoReturn (line 461) | virtual void serviceCmdNoReturn(NLNET::IModuleProxy *sender, const s...

FILE: code/EVA/server/admin_modules/aes_module.cpp
  function aes_forceLink (line 34) | void aes_forceLink() {}
  type ADMIN (line 36) | namespace ADMIN
    class CRunnerLoopCounter (line 58) | class CRunnerLoopCounter
      method CRunnerLoopCounter (line 70) | CRunnerLoopCounter()
      method updateCounter (line 94) | void updateCounter(uint32 lastValue)
      method rollCounter (line 117) | void rollCounter()
      method uint32 (line 130) | uint32 getSum()
      method getCounters (line 139) | void getCounters(uint32 &oneSlot, uint32 &treeSlots, uint32 &allSlots)
      method resetCounter (line 148) | void resetCounter()
    type TServiceState (line 196) | struct TServiceState
      method TServiceState (line 212) | TServiceState()
    type TPendingWebCommand (line 248) | struct TPendingWebCommand
    type TStopingShardInfo (line 263) | struct TStopingShardInfo
    function CAdminExecutorService (line 280) | CAdminExecutorService()
    function initModule (line 293) | bool initModule(const TParsedCommandLine &pcl)
    function onModuleUp (line 338) | void onModuleUp(IModuleProxy *proxy)
    function onModuleDown (line 419) | void onModuleDown(IModuleProxy *proxy)
    function onModuleUpdate (line 429) | void onModuleUpdate()
    function sendUpServiceUpdate (line 665) | void sendUpServiceUpdate()
    function IModuleProxy (line 713) | IModuleProxy *findOnlineService(const std::string &serviceAlias)
    function checkShutdownRequest (line 729) | void checkShutdownRequest()
    function checkServiceToStop (line 749) | void checkServiceToStop()
    function getOfflineServiceState (line 800) | std::string getOfflineServiceState(const std::string& serviceAlias)
    function uint32 (line 824) | uint32 getOfflineServicePID(const std::string& serviceAlias)
    function uint32 (line 852) | uint32 getServiceStartLoopCounter(const std::string& serviceAlias)
    function getServiceLaunchInfo (line 878) | bool getServiceLaunchInfo(const string& serviceAlias, string& path)
    function getServiceStateFileName (line 895) | std::string getServiceStateFileName(const std::string& serviceAlias)
    function getServicePIDFileName (line 904) | std::string getServicePIDFileName(const std::string& serviceAlias)
    function getServiceLoopCounterFileName (line 913) | std::string getServiceLoopCounterFileName(const std::string& serviceAl...
    function getServiceLaunchCtrlFileName (line 922) | std::string getServiceLaunchCtrlFileName(const std::string& serviceAli...
    function writeServiceLaunchCtrl (line 928) | bool writeServiceLaunchCtrl(const std::string& serviceAlias, bool defe...
    function startService (line 948) | bool startService(const std::string &serviceAlias)
    function stopService (line 975) | bool stopService(const std::string &serviceAlias)
    function onTrackedModuleUp (line 1023) | virtual void onTrackedModuleUp(IModuleProxy *moduleProxy)
    function onTrackedModuleDown (line 1103) | virtual void onTrackedModuleDown(IModuleProxy *moduleProxy)
    function setShardOrders (line 1178) | virtual void setShardOrders(NLNET::IModuleProxy *sender, const std::st...
    function shutdownShard (line 1196) | virtual void shutdownShard(NLNET::IModuleProxy *sender, const std::str...
    function controlCmd (line 1213) | virtual void controlCmd(NLNET::IModuleProxy *sender, uint32 commandId,...
    function serviceCmd (line 1263) | virtual void serviceCmd(NLNET::IModuleProxy *sender, uint32 commandId,...
    function commandResult (line 1287) | virtual void commandResult(NLNET::IModuleProxy *sender, uint32 command...
    function graphUpdate (line 1314) | virtual void graphUpdate(NLNET::IModuleProxy *sender, const TGraphData...
    function highRezGraphUpdate (line 1324) | virtual void highRezGraphUpdate(NLNET::IModuleProxy *sender, const THi...
    function serviceStatusUpdate (line 1334) | virtual void serviceStatusUpdate(NLNET::IModuleProxy *sender, const st...
    function NLMISC_COMMAND_HANDLER_TABLE_END (line 1372) | NLMISC_COMMAND_HANDLER_TABLE_END
    function NLMISC_CLASS_COMMAND_DECL (line 1392) | NLMISC_CLASS_COMMAND_DECL(resetStartCounter)
    function NLMISC_CLASS_COMMAND_DECL (line 1410) | NLMISC_CLASS_COMMAND_DECL(execScript)
    function NLMISC_CLASS_COMMAND_DECL (line 1446) | NLMISC_CLASS_COMMAND_DECL(deactivateService)
    function NLMISC_CLASS_COMMAND_DECL (line 1468) | NLMISC_CLASS_COMMAND_DECL(activateService)
    function NLMISC_CLASS_COMMAND_DECL (line 1490) | NLMISC_CLASS_COMMAND_DECL(abortService)
    function NLMISC_CLASS_COMMAND_DECL (line 1524) | NLMISC_CLASS_COMMAND_DECL(killService)
    function NLMISC_CLASS_COMMAND_DECL (line 1557) | NLMISC_CLASS_COMMAND_DECL(stopService)
    function NLMISC_CLASS_COMMAND_DECL (line 1593) | NLMISC_CLASS_COMMAND_DECL(restartService)
    function NLMISC_CLASS_COMMAND_DECL (line 1648) | NLMISC_CLASS_COMMAND_DECL(startService)
    function NLMISC_CLASS_COMMAND_DECL (line 1695) | NLMISC_CLASS_COMMAND_DECL(removeRegisteredService)
    function NLMISC_CLASS_COMMAND_DECL (line 1736) | NLMISC_CLASS_COMMAND_DECL(addRegisteredService)
    function NLMISC_CLASS_COMMAND_DECL (line 1761) | NLMISC_CLASS_COMMAND_DECL(dump)

FILE: code/EVA/server/admin_modules/as_module.cpp
  function as_forceLink (line 33) | void as_forceLink() {}
  type ADMIN (line 35) | namespace ADMIN
    type TAESServices (line 58) | struct TAESServices
      method TAESServices (line 65) | TAESServices()
    type TPendingWebCommand (line 75) | struct TPendingWebCommand
    function CAdminService (line 108) | CAdminService()
    function setShardOrders (line 122) | void setShardOrders(const std::string &shardName, TShardOrders newOrders)
    function sendCommandToAES (line 143) | void sendCommandToAES(TCommandId commandId, TPendingWebCommand &pwc)
    function initModule (line 183) | bool initModule(const TParsedCommandLine &pcl)
    function onModuleUpdate (line 225) | void onModuleUpdate()
    function onTrackedModuleUp (line 307) | virtual void onTrackedModuleUp(IModuleProxy *moduleProxy)
    function onTrackedModuleDown (line 320) | virtual void onTrackedModuleDown(IModuleProxy *moduleProxy)
    function upServiceUpdate (line 360) | virtual void upServiceUpdate(NLNET::IModuleProxy *sender, const std::v...
    function graphUpdate (line 385) | virtual void graphUpdate(NLNET::IModuleProxy *sender, const TGraphData...
    type THighRezBuffer (line 430) | struct THighRezBuffer
      type THighRezItem (line 437) | struct THighRezItem
        method serial (line 443) | void serial(NLMISC::IStream &s)
      method THighRezBuffer (line 454) | THighRezBuffer()
      method serial (line 463) | void serial(NLMISC::IStream &s)
    function string (line 484) | string getHighRezBufferFilename(const std::string &varAddr)
    function highRezGraphUpdate (line 493) | virtual void highRezGraphUpdate(NLNET::IModuleProxy *sender, const THi...
    function commandResult (line 564) | virtual void commandResult(NLNET::IModuleProxy *sender, uint32 command...
    function controlCmdResult (line 593) | virtual void controlCmdResult(NLNET::IModuleProxy *sender, const std::...
    function on_CAdminServiceWeb_Connection (line 604) | virtual void on_CAdminServiceWeb_Connection(NLNET::TSockId from)
    function on_CAdminServiceWeb_Disconnection (line 608) | virtual void on_CAdminServiceWeb_Disconnection(NLNET::TSockId from)
    function on_globalCmd (line 616) | virtual void on_globalCmd(NLNET::TSockId from, const std::string &comm...
    function on_controlCmd (line 655) | virtual void on_controlCmd(NLNET::TSockId from, const std::string &ser...
    function on_serviceCmd (line 674) | virtual void on_serviceCmd(NLNET::TSockId from, const std::string &ser...
    function on_getShardOrders (line 693) | virtual std::vector<std::string> on_getShardOrders(NLNET::TSockId from)
    function on_getStates (line 714) | virtual std::vector<std::string> on_getStates(NLNET::TSockId from)
    function on_getHighRezGraphInfo (line 764) | virtual std::vector<std::string> on_getHighRezGraphInfo(NLNET::TSockId...
    function on_getHighRezGraph (line 796) | virtual std::vector<std::string> on_getHighRezGraph(NLNET::TSockId fro...
    function NLMISC_COMMAND_HANDLER_TABLE_END (line 895) | NLMISC_COMMAND_HANDLER_TABLE_END
    function NLMISC_CLASS_COMMAND_DECL (line 985) | NLMISC_CLASS_COMMAND_DECL(stopShard)
    function NLMISC_CLASS_COMMAND_DECL (line 1008) | NLMISC_CLASS_COMMAND_DECL(dump)

FILE: code/EVA/server/admin_service/admin_service.cpp
  function foo (line 35) | void foo()
  class CServiceClass (line 44) | class CServiceClass : public NLNET::IService
    method init (line 47) | void init()
    method update (line 51) | bool update()
    method release (line 56) | void release()

FILE: code/EVA/server/client_robot/client_robot.cpp
  class CClientRobot (line 20) | class CClientRobot : public NLNET::IService
    method init (line 25) | void init ()
    method update (line 37) | bool update ()
    method release (line 48) | void release ()

FILE: code/EVA/server/frontend_service/frontend_service.h
  function class (line 16) | class CFrontEndService : public NLNET::IService

FILE: code/EVA/server/naming_service/naming_service.cpp
  type CServiceEntry (line 61) | struct CServiceEntry
    method CServiceEntry (line 63) | CServiceEntry (TSockId sock, const vector<CInetAddress> &a, const stri...
  class CServiceInstanceManager (line 107) | class CServiceInstanceManager
    method addUniqueService (line 118) | void		addUniqueService( const std::string& serviceName, bool uniqueOnS...
  function canAccess (line 279) | bool canAccess (const vector<CInetAddress> &addr, const CServiceEntry &e...
  function displayRegisteredServices (line 310) | void displayRegisteredServices (CLog *log = InfoLog)
  function effectivelyRemove (line 333) | list<CServiceEntry>::iterator effectivelyRemove (list<CServiceEntry>::it...
  function doRemove (line 344) | list<CServiceEntry>::iterator doRemove (list<CServiceEntry>::iterator it)
  function doUnregisterService (line 416) | void doUnregisterService (TServiceId sid)
  function doUnregisterService (line 431) | void doUnregisterService (TSockId from)
  function doRegister (line 470) | bool doRegister (const string &name, const vector<CInetAddress> &addr, T...
  function checkWaitingUnregistrationServices (line 646) | void checkWaitingUnregistrationServices ()
  function cbACKUnregistration (line 678) | static void cbACKUnregistration (CMessage& msgin, TSockId from, CCallbac...
  function cbResendRegisteration (line 705) | static void cbResendRegisteration (CMessage& msgin, TSockId from, CCallb...
  function cbRegister (line 729) | static void cbRegister (CMessage& msgin, TSockId from, CCallbackNetBase ...
  function cbUnregisterSId (line 748) | static void cbUnregisterSId (CMessage& msgin, TSockId from, CCallbackNet...
  function cbSetSerivceState (line 762) | static void cbSetSerivceState (CMessage& msgin, TSockId from, CCallbackN...
  function uint16 (line 789) | uint16 doAllocatePort (const CInetAddress &addr)
  function cbQueryPort (line 830) | static void cbQueryPort (CMessage& msgin, TSockId from, CCallbackNetBase...
  function cbDisconnect (line 849) | static void cbDisconnect /*(const string &serviceName, TSockId from, voi...
  function cbConnect (line 858) | static void cbConnect /*(const string &serviceName, TSockId from, void *...
  function string (line 927) | string getServiceName( TServiceId  sid )
  function CInetAddress (line 944) | CInetAddress getHostAddress( TServiceId  sid )
  class CNamingService (line 979) | class CNamingService : public NLNET::IService
    method init (line 986) | void init()
    method update (line 1058) | bool update ()
    method release (line 1067) | void release()

FILE: code/EVA/server/player_logic_service/player_logic_service.cpp
  function displayInfo (line 30) | void displayInfo ()
  class CPlayerLogicService (line 35) | class CPlayerLogicService : public NLNET::IService
    method init (line 40) | void init ()
    method update (line 49) | bool update ()
    method release (line 60) | void release ()

FILE: code/EVA/server/schedule_service/schedule_service.cpp
  class CScheduleService (line 28) | class CScheduleService : public NLNET::IService

FILE: code/EVA/server/server_share/base_object.h
  function class (line 5) | class CBaseObject

FILE: code/EVA/server/server_share/bin_luabind/ScriptBase.cpp
  type bin (line 6) | namespace bin

FILE: code/EVA/server/server_share/bin_luabind/ScriptBase.h
  function namespace (line 7) | namespace bin
  function SGuardLuaGC (line 52) | struct SGuardLuaGC
  type SVoidType (line 76) | struct SVoidType
  function SVoidType (line 81) | inline SVoidType __ret_void_tag() { return SVoidType();}
  type R (line 87) | typedef R return_type;
  function void (line 91) | struct TRetType<void>
  function SVoidType (line 100) | struct TToLua<SVoidType>
  function bool (line 111) | struct TToLua<bool>
  function double (line 133) | struct TToLua<double>
  function sint64 (line 144) | struct TToLua<sint64>
  function sint32 (line 155) | struct TToLua<sint32>
  function char (line 166) | struct TToLua<char*>
  function char (line 177) | struct TToLua<const char*>
  function string (line 188) | struct TToLua<std::string>
  function Make (line 202) | static int Make(O* o, lua_State* pL)
  function SVoidType (line 235) | struct TFmLua<SVoidType>
  function bool (line 244) | struct TFmLua<bool>
  function sint32 (line 260) | struct TFmLua<sint32>
  function sint64 (line 276) | struct TFmLua<sint64>
  function double (line 292) | struct TFmLua<double>
  function string (line 308) | struct TFmLua<std::string>
  function char (line 324) | struct TFmLua<const char*>
  function Make (line 344) | static int Make(lua_State* pL, int nIdx, O*& o)
  type T (line 384) | typedef T			value_type;
  type T (line 385) | typedef T&			argument_type;
  type T (line 386) | typedef const T&	c_argument_type;
  type T (line 392) | typedef T			value_type;
  type T (line 393) | typedef T&			argument_type;
  type T (line 394) | typedef const T&	c_argument_type;
  type T (line 400) | typedef T			value_type;
  type T (line 401) | typedef T&			argument_type;
  type T (line 402) | typedef const T&	c_argument_type;
  type T (line 409) | typedef T*			argument_type;
  type T (line 410) | typedef T*			c_argument_type;
  function void (line 414) | struct TArgumentType<void>
  function int (line 422) | struct TArgumentType<int>
  function bool (line 430) | struct TArgumentType<bool>
  function double (line 438) | struct TArgumentType<double>
  type TArgumentType (line 446) | struct TArgumentType
  type value_type (line 448) | typedef long long		value_type;
  type argument_type (line 449) | typedef long long		argument_type;
  type c_argument_type (line 450) | typedef long long		c_argument_type;
  function MakeArgs (line 468) | int MakeArgs()
  function MakeCArgs (line 473) | int MakeCArgs()
  function Call (line 484) | int Call()
  function MakeRet (line 489) | int MakeRet()
  function MakeArgs (line 509) | int MakeArgs()
  function MakeCArgs (line 515) | int MakeCArgs()
  function Call (line 527) | int Call()
  function MakeRet (line 532) | int MakeRet()
  type typename (line 542) | typedef typename TArgumentType<A1>::value_type Arg1;
  function MakeArgs (line 555) | int MakeArgs()
  function MakeCArgs (line 563) | int MakeCArgs()
  function Call (line 577) | int Call()
  function MakeRet (line 582) | int MakeRet()

FILE: code/EVA/server/server_share/bin_luabind/ScriptExporter.cpp
  type bin (line 13) | namespace bin
    function DEFINE_MODULE_FUNCTION (line 99) | DEFINE_MODULE_FUNCTION(exportClass, bool, (const char* pszName, const ...
    function DEFINE_MODULE_FUNCTION (line 113) | DEFINE_MODULE_FUNCTION(exportModule, bool, (const char* pszName, CScri...

FILE: code/EVA/server/server_share/bin_luabind/ScriptExporter.h
  function namespace (line 8) | namespace bin
  function CheckObjectsTable (line 164) | int CheckObjectsTable(lua_State* pL, bool bWeaked)
  function CheckRefsTable (line 191) | int CheckRefsTable(lua_State* pL)
  function CheckTypesTable (line 208) | int CheckTypesTable(lua_State* pL)
  function ExportModule (line 246) | int ExportModule(const char* pszName, CScriptHandle& scriptHandle)
  function ExportModuleTo (line 256) | int ExportModuleTo(const char* pszName, CScriptHandle& scriptHandle, con...
  function ExportModuleTo (line 272) | int ExportModuleTo(const char* pszName, CScriptHandle& scriptHandle, CSc...
  function CScriptExporterManager (line 299) | inline CScriptExporterManager& ScriptExporterManager()
  type SModuleFunction (line 306) | struct SModuleFunction
  function Export (line 354) | int Export(lua_State* pL)
  function ExportTo (line 387) | int ExportTo(lua_State* pL, CScriptTable& scriptTable)
  function SExporterInfo (line 412) | SExporterInfo GetInfo() const
  function ModuleFunctionLinkNode (line 427) | const ModuleFunctionLinkNode* GetModuleFunctionList() const
  function class (line 444) | class CClassExporter : public IScriptExporter
  function Export (line 457) | int Export(lua_State* pL, const char* pszNameSpace)
  function virtual (line 531) | virtual int Export(lua_State* pL)
  function SExporterInfo (line 536) | SExporterInfo GetInfo() const
  function ClassFunctionLinkNode (line 551) | const ClassFunctionLinkNode* GetClassFunctionList() const
  function __Imported (line 598) | static int __Imported(lua_State* pL)

FILE: code/EVA/server/server_share/bin_luabind/ScriptHandle.cpp
  type bin (line 12) | namespace bin

FILE: code/EVA/server/server_share/bin_luabind/ScriptHandle.h
  function LinkBefore (line 32) | void LinkBefore(SDBLinkNode* pNode)
  function Unlink (line 44) | void Unlink()
  function SDBLinkNode (line 61) | struct SScriptHandleRefNode : SDBLinkNode
  function class (line 77) | class CScriptHandle : INonCopyable
  function InitFmString (line 128) | int InitFmString(const char* pszString)
  function Release (line 149) | void Release()
  function Exec (line 179) | int Exec(const char* pszFileName)
  function ExecString (line 203) | int ExecString(const char* pszString)
  function lua_State (line 233) | lua_State* GetHandle() const
  function Set (line 282) | int Set(const char* pszName, CScriptTable& tbl)
  function Set (line 288) | int Set(const char* pszName, CScriptUserData& ud)
  function Set (line 294) | int Set(const char* pszName, const std::string& str)
  function class (line 456) | class IScriptADBase : INonCopyable
  function UnRef (line 476) | void UnRef()
  type SRefNode (line 489) | typedef SRefNode RefNode;
  function UnRef (line 507) | void UnRef()
  function Set (line 562) | int Set(const char* pszName, CScriptTable& tbl)
  function Set (line 567) | int Set(const char* pszName, CScriptUserData& ud)
  function Set (line 572) | int Set(const char* pszName, const std::string& str)
  function Set (line 629) | int Set(int nIdx, CScriptTable& tbl)
  function Set (line 634) | int Set(int nIdx, CScriptUserData& ud)
  function Set (line 639) | int Set(int nIdx, const std::string& str)
  function lua_State (line 758) | lua_State* GetHandle() const
  function class (line 794) | class CScriptTable : public IScriptADBase
  type TFmLua (line 900) | struct TFmLua
  type TToLua (line 901) | struct TToLua
  function class (line 907) | class CScriptUserData : public IScriptADBase
  function CScriptTable (line 928) | struct TFmLua<CScriptTable>
  function CScriptUserData (line 934) | struct TFmLua<CScriptUserData>
  function CScriptTable (line 940) | struct TToLua<CScriptTable>
  function CScriptUserData (line 946) | struct TToLua<CScriptUserData>

FILE: code/EVA/server/server_share/bin_luabind/ScriptObject.h
  function namespace (line 6) | namespace bin
  function SideUnlink (line 58) | void SideUnlink()
  function Unlink (line 69) | void Unlink()
  function ReleaseByScr (line 80) | void ReleaseByScr()
  function SetDelByScr (line 109) | void SetDelByScr(bool bDelByScr)

FILE: code/EVA/server/server_share/bin_luabind/ScriptProxy.cpp
  type bin (line 14) | namespace bin

FILE: code/EVA/server/server_share/bin_luabind/ScriptProxy.h
  function namespace (line 4) | namespace bin
  type SScriptProxy (line 43) | struct SScriptProxy

FILE: code/EVA/server/server_share/bit_set_ext2.h
  function class (line 4) | class CBitSetExt2

FILE: code/EVA/server/server_share/buf_fifo2.h
  function namespace (line 7) | namespace NLMISC {

FILE: code/EVA/server/server_share/buf_fifo_ring.h
  function namespace (line 7) | namespace NLMISC {

FILE: code/EVA/server/server_share/callback_adaptor.h
  function class (line 24) | class ICallbackServerAdaptor
  function class (line 51) | class ICallbackClientAdaptor
  function class (line 78) | class CNelCallbackServerAdaptor : public ICallbackServerAdaptor
  function virtual (line 116) | virtual void update()
  function class (line 124) | class CNelCallbackClientAdaptor : public ICallbackClientAdaptor
  function virtual (line 158) | virtual void update()

FILE: code/EVA/server/server_share/cjson/dtoa.cpp
  type BCinfo (line 491) | struct BCinfo
  type BCinfo (line 492) | struct
  type Bigint (line 533) | struct
    type Bigint (line 535) | struct Bigint
  type Bigint (line 540) | struct Bigint
    type Bigint (line 535) | struct Bigint
  function htinit (line 1506) | htinit(unsigned char *h, unsigned char *s, int inc)
  function hexdig_init (line 1518) | hexdig_init(void)
  function increment (line 1644) | increment(Bigint *b)
  function rshift (line 1679) | rshift(Bigint *b, int k)
  function any_on (line 1712) | any_on(Bigint *b, int k)
  function dshift (line 2110) | dshift(Bigint *b, int p2)
  function nrv_alloc (line 3579) | nrv_alloc(const char *s, char **rve, int n)
  function freedtoa (line 3601) | freedtoa(char *s)

FILE: code/EVA/server/server_share/cjson/fpconv.cpp
  function fpconv_update_locale (line 53) | static void fpconv_update_locale()
  function valid_number_character (line 77) | static int valid_number_character(char ch)
  function strtod_buffer_size (line 96) | static int strtod_buffer_size(const char *s)
  function fpconv_strtod (line 108) | double fpconv_strtod(const char *nptr, char **endptr)
  function set_number_format (line 155) | static void set_number_format(char *fmt, int precision)
  function fpconv_init (line 202) | void fpconv_init()

FILE: code/EVA/server/server_share/cjson/g_fmt.cpp
  function fpconv_g_fmt (line 35) | int

FILE: code/EVA/server/server_share/cjson/lua_cjson.cpp
  function json_config_t (line 205) | static json_config_t *json_fetch_config(lua_State *l)
  function json_config_t (line 219) | static json_config_t *json_arg_init(lua_State *l, int args)
  function json_integer_option (line 231) | static int json_integer_option(lua_State *l, int optindex, int *setting,
  function json_enum_option (line 250) | static int json_enum_option(lua_State *l, int optindex, int *setting,
  function json_cfg_encode_sparse_array (line 279) | static int json_cfg_encode_sparse_array(lua_State *l)
  function json_cfg_encode_max_depth (line 292) | static int json_cfg_encode_max_depth(lua_State *l)
  function json_cfg_decode_max_depth (line 301) | static int json_cfg_decode_max_depth(lua_State *l)
  function json_cfg_encode_number_precision (line 309) | static int json_cfg_encode_number_precision(lua_State *l)
  function json_cfg_encode_keep_buffer (line 317) | static int json_cfg_encode_keep_buffer(lua_State *l)
  function json_verify_invalid_number_setting (line 338) | void json_verify_invalid_number_setting(lua_State *l, int *setting)
  function json_cfg_encode_invalid_numbers (line 349) | static int json_cfg_encode_invalid_numbers(lua_State *l)
  function json_cfg_decode_invalid_numbers (line 361) | static int json_cfg_decode_invalid_numbers(lua_State *l)
  function json_destroy_config (line 372) | static int json_destroy_config(lua_State *l)
  function json_create_config (line 384) | static void json_create_config(lua_State *l)
  function json_encode_exception (line 459) | static void json_encode_exception(lua_State *l, json_config_t *cfg, strb...
  function json_append_string (line 474) | static void json_append_string(lua_State *l, strbuf_t *json, int lindex)
  function lua_array_length (line 504) | static int lua_array_length(lua_State *l, json_config_t *cfg, strbuf_t *...
  function json_check_encode_depth (line 547) | static void json_check_encode_depth(lua_State *l, json_config_t *cfg,
  function json_append_array (line 577) | static void json_append_array(lua_State *l, json_config_t *cfg, int curr...
  function json_append_number (line 599) | static void json_append_number(lua_State *l, json_config_t *cfg,
  function json_append_object (line 646) | static void json_append_object(lua_State *l, json_config_t *cfg,
  function json_append_data (line 688) | static void json_append_data(lua_State *l, json_config_t *cfg,
  function json_encode (line 731) | static int json_encode(lua_State *l)
  function hexdigit2int (line 767) | static int hexdigit2int(char hex)
  function decode_hex4 (line 780) | static int decode_hex4(const char *hex)
  function codepoint_to_utf8 (line 803) | static int codepoint_to_utf8(char *utf8, int codepoint)
  function json_append_unicode_escape (line 847) | static int json_append_unicode_escape(json_parse_t *json)
  function json_set_token_error (line 905) | static void json_set_token_error(json_token_t *token, json_parse_t *json,
  function json_next_string_token (line 913) | static void json_next_string_token(json_parse_t *json, json_token_t *token)
  function json_is_invalid_number (line 988) | static int json_is_invalid_number(json_parse_t *json)
  function json_next_number_token (line 1024) | static void json_next_number_token(json_parse_t *json, json_token_t *token)
  function json_next_token (line 1047) | static void json_next_token(json_parse_t *json, json_token_t *token)
  function json_throw_parse_error (line 1132) | static void json_throw_parse_error(lua_State *l, json_parse_t *json,
  function json_decode_ascend (line 1149) | static inline void json_decode_ascend(json_parse_t *json)
  function json_decode_descend (line 1154) | static void json_decode_descend(lua_State *l, json_parse_t *json, int sl...
  function json_parse_object_context (line 1168) | static void json_parse_object_context(lua_State *l, json_parse_t *json)
  function json_parse_array_context (line 1219) | static void json_parse_array_context(lua_State *l, json_parse_t *json)
  function json_process_value (line 1257) | static void json_process_value(lua_State *l, json_parse_t *json,
  function json_decode (line 1289) | static int json_decode(lua_State *l)
  function luaL_setfuncs (line 1336) | static void luaL_setfuncs (lua_State *l, const luaL_Reg *reg, int nup)
  function json_protect_conversion (line 1354) | static int json_protect_conversion(lua_State *l)
  function lua_cjson_new (line 1380) | static int lua_cjson_new(lua_State *l)
  function lua_cjson_safe_new (line 1420) | static int lua_cjson_safe_new(lua_State *l)
  function luaopen_cjson (line 1440) | int luaopen_cjson(lua_State *l)
  function luaopen_cjson_safe (line 1454) | int luaopen_cjson_safe(lua_State *l)

FILE: code/EVA/server/server_share/cjson/strbuf.cpp
  function die (line 32) | static void die(const char *fmt, ...)
  function strbuf_init (line 44) | void strbuf_init(strbuf_t *s, int len)
  function strbuf_t (line 68) | strbuf_t *strbuf_new(int len)
  function strbuf_set_increment (line 84) | void strbuf_set_increment(strbuf_t *s, int increment)
  function debug_stats (line 94) | static inline void debug_stats(strbuf_t *s)
  function strbuf_free (line 104) | void strbuf_free(strbuf_t *s)
  function calculate_new_size (line 134) | static int calculate_new_size(strbuf_t *s, int len)
  function strbuf_resize (line 164) | void strbuf_resize(strbuf_t *s, int len)
  function strbuf_append_string (line 182) | void strbuf_append_string(strbuf_t *s, const char *str)
  function strbuf_append_fmt (line 202) | void strbuf_append_fmt(strbuf_t *s, int len, const char *fmt, ...)
  function strbuf_append_fmt_retry (line 221) | void strbuf_append_fmt_retry(strbuf_t *s, const char *fmt, ...)

FILE: code/EVA/server/server_share/cjson/strbuf.h
  type strbuf_t (line 34) | typedef struct {
  function strbuf_reset (line 78) | static inline void strbuf_reset(strbuf_t *s)
  function strbuf_allocated (line 83) | static inline int strbuf_allocated(strbuf_t *s)
  function strbuf_empty_length (line 90) | static inline int strbuf_empty_length(strbuf_t *s)
  function strbuf_ensure_empty_length (line 95) | static inline void strbuf_ensure_empty_length(strbuf_t *s, int len)
  function strbuf_extend_length (line 106) | static inline void strbuf_extend_length(strbuf_t *s, int len)
  function strbuf_length (line 111) | static inline int strbuf_length(strbuf_t *s)
  function strbuf_append_char (line 116) | static inline void strbuf_append_char(strbuf_t *s, const char c)
  function strbuf_append_char_unsafe (line 122) | static inline void strbuf_append_char_unsafe(strbuf_t *s, const char c)
  function strbuf_append_mem (line 127) | static inline void strbuf_append_mem(strbuf_t *s, const char *c, int len)
  function strbuf_append_mem_unsafe (line 134) | static inline void strbuf_append_mem_unsafe(strbuf_t *s, const char *c, ...
  function strbuf_ensure_null (line 140) | static inline void strbuf_ensure_null(strbuf_t *s)

FILE: code/EVA/server/server_share/client_msg_desc.cpp
  function MsgLeaf (line 118) | MsgLeaf* CMsgDesc::GetMsgLeaf( std::string msg_name )

FILE: code/EVA/server/server_share/client_msg_desc.h
  function namespace (line 10) | namespace google {
  function class (line 21) | class CMsgDesc : public NLMISC::CSingleton<CMsgDesc>

FILE: code/EVA/server/server_share/game_def.h
  function namespace (line 6) | namespace DEF {

FILE: code/EVA/server/server_share/i18n_def.cpp
  type I18N (line 8) | namespace I18N
    function TI18N (line 15) | TI18N toEnum(const std::string &str)

FILE: code/EVA/server/server_share/i18n_def.h
  function namespace (line 7) | namespace I18N

FILE: code/EVA/server/server_share/id_generate.cpp
  type bin (line 30) | namespace bin
    function DEFINE_STATIC_FUNCTION (line 40) | DEFINE_STATIC_FUNCTION(NewInstance, CIDGenerate*, (sint64 curr_id))

FILE: code/EVA/server/server_share/id_generate.h
  function class (line 22) | class CIDGenerate

FILE: code/EVA/server/server_share/lua/lua_base_function.cpp
  function forLuaBaseFunctionForceLink (line 16) | void forLuaBaseFunctionForceLink()
  type bin (line 21) | namespace bin
    function DEFINE_MODULE_FUNCTION (line 57) | DEFINE_MODULE_FUNCTION(PostMain, void, (sint32 threadHandle, CLuaMessa...
    function DEFINE_MODULE_FUNCTION (line 113) | DEFINE_MODULE_FUNCTION(Warning, void, (const char* str, int stack_level))
    function DEFINE_MODULE_FUNCTION (line 125) | DEFINE_MODULE_FUNCTION(Info, void, (const char* str, int stack_level))
    function DEFINE_MODULE_FUNCTION (line 137) | DEFINE_MODULE_FUNCTION(Debug, void, (const char* str, int stack_level))
    function DEFINE_MODULE_FUNCTION (line 149) | DEFINE_MODULE_FUNCTION(Stop, void, (const char* str, int stack_level))

FILE: code/EVA/server/server_share/lua/lua_engine.cpp
  function PrintLuaCallstack (line 90) | void PrintLuaCallstack(lua_State *L, int stack_level = 0)
  function lua_State (line 176) | lua_State *	CLuaEngine::GetLuaState()

FILE: code/EVA/server/server_share/lua/lua_engine.h
  function namespace (line 6) | namespace bin{
  function class (line 10) | class CLuaEngine

FILE: code/EVA/server/server_share/lua/lua_param.cpp
  function LuaParam (line 7) | LuaParam& LuaParams::GetParam( uint index )

FILE: code/EVA/server/server_share/lua/lua_param.h
  function class (line 10) | class LuaParam
  function class (line 64) | class LuaParams
  function AddParams (line 181) | bool AddParams( LuaParams other )
  function LuaParam (line 197) | LuaParam* GetParams()   { return m_Params; }
  function uint (line 198) | uint      Count()       { return m_Count;  }
  function resize (line 200) | void      resize( uint size )   { m_Count = size; }

FILE: code/EVA/server/server_share/lua/lua_thread.cpp
  function forLuaThreadForceLink (line 10) | void forLuaThreadForceLink()
  function sint32 (line 31) | sint32 CLuaThread::Start( std::string lua_start, std::string params )
  function sint32 (line 171) | sint32 CLuaThreadMgr::RegisterLuaThread( CLuaThread* pThread )
  function CLuaThread (line 217) | CLuaThread* CLuaThreadMgr::GetLuaThread( sint32 thread_handle )
  type bin (line 229) | namespace bin
    function DEFINE_CLASS_FUNCTION (line 233) | DEFINE_CLASS_FUNCTION( Post, void, (CLuaMessage* pMsgIn))
    function DEFINE_STATIC_FUNCTION (line 248) | DEFINE_STATIC_FUNCTION(NewInstance, CLuaThread*, (std::string name, si...

FILE: code/EVA/server/server_share/lua/lua_thread.h
  function namespace (line 12) | namespace bin{
  function class (line 16) | class CThreadEvent
  function class (line 27) | class CLuaThread : public NLMISC::IRunnable
  function class (line 83) | class CLuaThreadMgr : public NLMISC::CSingleton<CLuaThreadMgr>

FILE: code/EVA/server/server_share/lua/script_mgr.cpp
  function luaexportforcelink (line 21) | void luaexportforcelink()
  function LuaParams (line 65) | LuaParams CScriptMgr::run( std::string script_scope, std::string script_...
  function lua_State (line 85) | lua_State * CScriptMgr::GetLuaState()

FILE: code/EVA/server/server_share/lua/script_mgr.h
  function namespace (line 11) | namespace bin{
  function class (line 15) | class CScriptMgr : public NLMISC::CSingleton<CScriptMgr>

FILE: code/EVA/server/server_share/lua_mysql/mysql_conn.cpp
  function forLuaMysqlConnForceLink (line 567) | void forLuaMysqlConnForceLink()
  type bin (line 572) | namespace bin
    function DEFINE_CLASS_FUNCTION (line 576) | DEFINE_CLASS_FUNCTION( Connect, bool, (CScriptTable& tb_msg))
    function DEFINE_CLASS_FUNCTION (line 602) | DEFINE_CLASS_FUNCTION( Close, void, ())
    function DEFINE_CLASS_FUNCTION (line 608) | DEFINE_CLASS_FUNCTION( Query, int, (CLuaMysqlStmt* pStmt, CLuaMysqlRes...
    function DEFINE_CLASS_FUNCTION (line 614) | DEFINE_CLASS_FUNCTION( Exec, int, (CLuaMysqlStmt* pStmt))
    function DEFINE_STATIC_FUNCTION (line 620) | DEFINE_STATIC_FUNCTION(NewInstance, CLuaMysqlConn*, ())

FILE: code/EVA/server/server_share/lua_mysql/mysql_conn.h
  function class (line 20) | class CLuaMysqlConn

FILE: code/EVA/server/server_share/lua_mysql/mysql_result.cpp
  function my_bool (line 72) | my_bool CLuaMysqlResult::get_bool()
  function sint8 (line 117) | sint8 CLuaMysqlResult::get_int8()
  function uint8 (line 162) | uint8 CLuaMysqlResult::get_uint8()
  function sint16 (line 207) | sint16 CLuaMysqlResult::get_int16()
  function uint16 (line 252) | uint16 CLuaMysqlResult::get_uint16()
  function sint32 (line 297) | sint32 CLuaMysqlResult::get_int32()
  function uint32 (line 342) | uint32 CLuaMysqlResult::get_uint32()
  function sint64 (line 387) | sint64 CLuaMysqlResult::get_int64()
  function uint64 (line 432) | uint64 CLuaMysqlResult::get_uint64()
  type bin (line 883) | namespace bin
    function DEFINE_CLASS_FUNCTION (line 887) | DEFINE_CLASS_FUNCTION( Next, bool, ())
    function DEFINE_CLASS_FUNCTION (line 899) | DEFINE_CLASS_FUNCTION( Clear, void, () )
    function DEFINE_CLASS_FUNCTION (line 905) | DEFINE_CLASS_FUNCTION( GetBool, bool, () )
    function DEFINE_STATIC_FUNCTION (line 976) | DEFINE_STATIC_FUNCTION(NewInstance, CLuaMysqlResult*, ())

FILE: code/EVA/server/server_share/lua_mysql/mysql_result.h
  function uint32 (line 94) | uint32 row_offset() { return m_CurrRow<0?0:(m_CurrRow*m_FieldCount); }

FILE: code/EVA/server/server_share/lua_mysql/mysql_stmt.cpp
  type bin (line 237) | namespace bin
    function DEFINE_CLASS_FUNCTION (line 241) | DEFINE_CLASS_FUNCTION( Clear, void, (void))
    function DEFINE_CLASS_FUNCTION (line 247) | DEFINE_CLASS_FUNCTION( SetBool, void, (bool lua_bool))
    function DEFINE_CLASS_FUNCTION (line 253) | DEFINE_CLASS_FUNCTION( SetInt8, void, (sint32 lua_val))
    function DEFINE_CLASS_FUNCTION (line 259) | DEFINE_CLASS_FUNCTION( SetUint8, void, (sint32 lua_val))
    function DEFINE_CLASS_FUNCTION (line 265) | DEFINE_CLASS_FUNCTION( SetInt16, void, (sint32 lua_val))
    function DEFINE_CLASS_FUNCTION (line 271) | DEFINE_CLASS_FUNCTION( SetUint16, void, (sint32 lua_val))
    function DEFINE_CLASS_FUNCTION (line 277) | DEFINE_CLASS_FUNCTION( SetInt32, void, (sint32 lua_val))
    function DEFINE_CLASS_FUNCTION (line 283) | DEFINE_CLASS_FUNCTION( SetUint32, void, (sint32 lua_val))
    function DEFINE_CLASS_FUNCTION (line 289) | DEFINE_CLASS_FUNCTION( SetInt64, void, (sint64 lua_val))
    function DEFINE_CLASS_FUNCTION (line 295) | DEFINE_CLASS_FUNCTION( SetUint64, void, (sint64 lua_int))
    function DEFINE_CLASS_FUNCTION (line 301) | DEFINE_CLASS_FUNCTION( SetFloat, void, (lua_Number lua_val))
    function DEFINE_CLASS_FUNCTION (line 307) | DEFINE_CLASS_FUNCTION( SetDouble, void, (lua_Number lua_val))
    function DEFINE_CLASS_FUNCTION (line 313) | DEFINE_CLASS_FUNCTION( SetString, void, (std::string lua_str))
    function DEFINE_CLASS_FUNCTION (line 319) | DEFINE_CLASS_FUNCTION( SetBlob, void, (const char* _buffer, int _len))
    function DEFINE_STATIC_FUNCTION (line 325) | DEFINE_STATIC_FUNCTION(NewInstance, CLuaMysqlStmt*, (std::string sql))

FILE: code/EVA/server/server_share/lua_mysql/mysql_stmt.h
  function set_sql (line 62) | void set_sql( std::string& sql ) { m_sql_.assign(sql.c_str(),sql.size()); }

FILE: code/EVA/server/server_share/lua_mysql/mysql_string.cpp
  function CLuaMysqlString (line 75) | CLuaMysqlString& CLuaMysqlString::operator = ( CLuaMysqlString const &st...
  function CLuaMysqlString (line 81) | CLuaMysqlString& CLuaMysqlString::operator = ( char const *str_ )
  function CLuaMysqlString (line 87) | CLuaMysqlString& CLuaMysqlString::operator = ( char ch_ )
  function CLuaMysqlString (line 93) | CLuaMysqlString& CLuaMysqlString::operator += ( char ch_ )
  function CLuaMysqlString (line 170) | CLuaMysqlString& CLuaMysqlString::assign( CLuaMysqlString const &str_ )
  function CLuaMysqlString (line 202) | CLuaMysqlString& CLuaMysqlString::assign( char const *str_ )
  function CLuaMysqlString (line 229) | CLuaMysqlString& CLuaMysqlString::assign( char const *str_, size_t sz_ )
  function CLuaMysqlString (line 258) | CLuaMysqlString& CLuaMysqlString::assign( char ch_, size_t sz_ )
  function CLuaMysqlString (line 280) | CLuaMysqlString& CLuaMysqlString::append( CLuaMysqlString const &str_ )
  function CLuaMysqlString (line 337) | CLuaMysqlString& CLuaMysqlString::append( char const *str_ )
  function CLuaMysqlString (line 368) | CLuaMysqlString& CLuaMysqlString::append( char const *str_, size_t sz_ )
  function CLuaMysqlString (line 398) | CLuaMysqlString& CLuaMysqlString::append( char ch_, size_t sz_ )

FILE: code/EVA/server/server_share/lua_mysql/mysql_string.h
  function class (line 4) | class CLuaMysqlString

FILE: code/EVA/server/server_share/lua_net/lua_callback_client.cpp
  function forLuaCallbackClientForceLink (line 10) | void forLuaCallbackClientForceLink()
  function cbLuaClientMsg (line 15) | void cbLuaClientMsg(CMessage &msgin, TSockId from, CCallbackNetBase &net...
  type bin (line 61) | namespace bin
    function DEFINE_CLASS_FUNCTION (line 65) | DEFINE_CLASS_FUNCTION(Send, void, (CLuaMessage* lua_msg))
    function DEFINE_CLASS_FUNCTION (line 71) | DEFINE_CLASS_FUNCTION(DisConnect, void, ())
    function DEFINE_CLASS_FUNCTION (line 76) | DEFINE_CLASS_FUNCTION(Connect, void, (std::string& url))
    function DEFINE_CLASS_FUNCTION (line 82) | DEFINE_CLASS_FUNCTION(SetHandle, void, (sint32 client_handle))
    function DEFINE_CLASS_FUNCTION (line 94) | DEFINE_CLASS_FUNCTION(Connected, bool, ())
    function DEFINE_CLASS_FUNCTION (line 100) | DEFINE_CLASS_FUNCTION(Update, void, ())
    function DEFINE_STATIC_FUNCTION (line 107) | DEFINE_STATIC_FUNCTION(NewInstance, CLuaCallbackClient*, (std::string&...

FILE: code/EVA/server/server_share/lua_net/lua_callback_client.h
  function namespace (line 10) | namespace bin {
  function class (line 16) | class CLuaCallbackClient

FILE: code/EVA/server/server_share/lua_net/lua_callback_server.cpp
  function cbLuaServiceMsg (line 14) | void cbLuaServiceMsg ( CMessage &msgin, TSockId from, CCallbackNetBase &...

FILE: code/EVA/server/server_share/lua_net/lua_callback_server.h
  type ClientData (line 10) | struct  ClientData
  type MsgLeaf (line 17) | struct  MsgLeaf
  function class (line 20) | class CLuaCallbackServer

FILE: code/EVA/server/server_share/lua_net/lua_message.cpp
  function forLuaMessageForceLink (line 3) | void forLuaMessageForceLink()
  type bin (line 8) | namespace bin
    function DEFINE_CLASS_FUNCTION (line 12) | DEFINE_CLASS_FUNCTION( invert, void, ())
    function DEFINE_CLASS_FUNCTION (line 24) | DEFINE_CLASS_FUNCTION( clear, void, (std::string name))
    function DEFINE_CLASS_FUNCTION (line 30) | DEFINE_CLASS_FUNCTION( wbuffer, void, (const char* buff, int len))
    function DEFINE_CLASS_FUNCTION (line 38) | DEFINE_CLASS_FUNCTION( wstring, void, (std::string& str))
    function DEFINE_CLASS_FUNCTION (line 44) | DEFINE_CLASS_FUNCTION(wtable, void, (CScriptTable& tbl))
    function DEFINE_CLASS_FUNCTION (line 66) | DEFINE_CLASS_FUNCTION( wbool, void, (bool in_val))
    function DEFINE_CLASS_FUNCTION (line 72) | DEFINE_CLASS_FUNCTION( wint, void, (sint64 in_val))
    function DEFINE_CLASS_FUNCTION (line 78) | DEFINE_CLASS_FUNCTION( wint32, void, (sint32 in_val))
    function DEFINE_CLASS_FUNCTION (line 84) | DEFINE_CLASS_FUNCTION( wint64, void, (sint64 in_val))
    function DEFINE_CLASS_FUNCTION (line 90) | DEFINE_CLASS_FUNCTION( wuint32, void, (sint64 in_val))
    function DEFINE_CLASS_FUNCTION (line 97) | DEFINE_CLASS_FUNCTION( rbool, bool, ())
    function DEFINE_CLASS_FUNCTION (line 179) | DEFINE_CLASS_FUNCTION( rdouble, double, ())
    function DEFINE_STATIC_FUNCTION (line 308) | DEFINE_STATIC_FUNCTION(NewInstance, CLuaMessage*, (std::string name))

FILE: code/EVA/server/server_share/lua_net/lua_message.h
  function class (line 7) | class CLuaMessage

FILE: code/EVA/server/server_share/lua_net/lua_network.cpp
  function cbLuaUnifiedServiceMsg (line 13) | void cbLuaUnifiedServiceMsg ( NLNET::CMessage& msgin, const std::string ...
  function cbLuaSendToClientMsg (line 36) | void cbLuaSendToClientMsg ( NLNET::CMessage& msgin, const std::string &s...
  function cbLuaSvrConnect (line 141) | void cbLuaSvrConnect( TSockId from, void *arg )
  function cbLuaSvrDisConnect (line 156) | void cbLuaSvrDisConnect( TSockId from, void *arg )
  function cbConnection (line 171) | void cbConnection( const std::string &serviceName, NLNET::TServiceId sid...
  function cbDisconnection (line 179) | void cbDisconnection( const std::string &serviceName, NLNET::TServiceId ...
  function WriteDataFromCurl (line 187) | static size_t WriteDataFromCurl(char* buffer, size_t size, size_t nmemb,...
  function HttpPost (line 196) | std::string HttpPost(std::string& url, std::string& params)
  function HttpGet (line 234) | std::string HttpGet(std::string& url)
  type bin (line 269) | namespace bin
    function DEFINE_CLASS_FUNCTION (line 273) | DEFINE_CLASS_FUNCTION( Send, void, (sint64 sock_id, CLuaMessage* lua_m...
    function DEFINE_CLASS_FUNCTION (line 279) | DEFINE_CLASS_FUNCTION( SetClientData, void, (CScriptTable& uid_data))
    function DEFINE_CLASS_FUNCTION (line 295) | DEFINE_CLASS_FUNCTION( DisConnect, void, (sint64 sock_id) )
    function DEFINE_CLASS_FUNCTION (line 301) | DEFINE_CLASS_FUNCTION( RemoveClientData, void, (sint64 uid))
    function DEFINE_CLASS_FUNCTION (line 307) | DEFINE_CLASS_FUNCTION( ClearClientData, void, ())
    function DEFINE_CLASS_FUNCTION (line 313) | DEFINE_CLASS_FUNCTION( Listen, void, (sint32 port))
    function DEFINE_CLASS_FUNCTION (line 319) | DEFINE_CLASS_FUNCTION( LoadSslCA, void, (std::string& ssl_ca))
    function DEFINE_CLASS_FUNCTION (line 324) | DEFINE_CLASS_FUNCTION( LoadSslCrt, void, (std::string& ssl_crt))
    function DEFINE_CLASS_FUNCTION (line 329) | DEFINE_CLASS_FUNCTION( LoadSslPrivateKey, void, (std::string& ssl_pk))
    function DEFINE_STATIC_FUNCTION (line 335) | DEFINE_STATIC_FUNCTION(NewInstance, CLuaCallbackServer*, (std::string&...
    function DEFINE_MODULE_FUNCTION (line 348) | DEFINE_MODULE_FUNCTION(Broadcast, void, (const char* service_name, CLu...
    function DEFINE_MODULE_FUNCTION (line 369) | DEFINE_MODULE_FUNCTION(Send, void, (sint32 service_id, CLuaMessage* pM...
    function DEFINE_MODULE_FUNCTION (line 390) | DEFINE_MODULE_FUNCTION(SendToClient, void, (CLuaMessage* pMsg, CScript...
    function DEFINE_MODULE_FUNCTION (line 423) | DEFINE_MODULE_FUNCTION(SetConnectionCallback, void, (std::string servi...
    function DEFINE_MODULE_FUNCTION (line 429) | DEFINE_MODULE_FUNCTION(SetDisConnectionCallback, void, (std::string se...
    function DEFINE_MODULE_FUNCTION (line 435) | DEFINE_MODULE_FUNCTION(GetServiceID, int, ())

FILE: code/EVA/server/server_share/lua_net/lua_network.h
  function class (line 15) | class CLuaNetworkMgr : public NLMISC::CSingleton<CLuaNetworkMgr>

FILE: code/EVA/server/server_share/msg_leaf.cpp
  type MSG_FORMAT (line 7) | namespace MSG_FORMAT
    function TMsgFormat (line 27) | TMsgFormat toEnum(const std::string &str)

FILE: code/EVA/server/server_share/msg_leaf.h
  function namespace (line 8) | namespace MSG_FORMAT
  type MsgLeaf (line 35) | struct MsgLeaf

FILE: code/EVA/server/server_share/object_pool.h
  function namespace (line 16) | namespace NLMISC {

FILE: code/EVA/server/server_share/pbc/alloc.cpp
  function _pbcM_free (line 11) | void _pbcM_free(void *p) {
  function _pbcM_memory (line 22) | void _pbcM_memory() {
  type heap_page (line 26) | struct heap_page {
    type heap_page (line 27) | struct heap_page
  type heap (line 30) | struct heap {
    type heap_page (line 31) | struct heap_page
  type heap (line 36) | struct heap
    type heap_page (line 31) | struct heap_page
  type heap (line 42) | struct heap
    type heap_page (line 31) | struct heap_page
  type heap (line 42) | struct heap
    type heap_page (line 31) | struct heap_page
  type heap (line 42) | struct heap
    type heap_page (line 31) | struct heap_page
  type heap_page (line 43) | struct heap_page
    type heap_page (line 27) | struct heap_page
  type heap_page (line 43) | struct heap_page
    type heap_page (line 27) | struct heap_page
  function _pbcH_delete (line 50) | void
  type heap (line 65) | struct heap
    type heap_page (line 31) | struct heap_page
  type heap_page (line 68) | struct heap_page
    type heap_page (line 27) | struct heap_page
  type heap_page (line 70) | struct heap_page
    type heap_page (line 27) | struct heap_page
  type heap_page (line 70) | struct heap_page
    type heap_page (line 27) | struct heap_page
  type heap_page (line 72) | struct heap_page
    type heap_page (line 27) | struct heap_page
  type heap_page (line 72) | struct heap_page
    type heap_page (line 27) | struct heap_page

FILE: code/EVA/server/server_share/pbc/alloc.h
  type heap (line 12) | struct heap
  type heap (line 14) | struct heap
  type heap (line 15) | struct heap
  type heap (line 16) | struct heap

FILE: code/EVA/server/server_share/pbc/array.cpp
  type array (line 8) | struct array {
    type heap (line 10) | struct heap
  function _pbcA_open (line 16) | void
  function _pbcA_open_heap (line 24) | void
  function _pbcA_close (line 32) | void
  function _pbcA_push (line 41) | void
  function _pbcA_index (line 73) | void
  type array (line 83) | struct array
    type heap (line 10) | struct heap
  type array (line 83) | struct array
    type heap (line 10) | struct heap
  function pbc_array_size (line 87) | int
  function pbc_array_integer (line 93) | uint32_t
  function pbc_array_real (line 103) | double
  type pbc_slice (line 110) | struct pbc_slice
  type array (line 112) | struct array
    type heap (line 10) | struct heap
  type array (line 112) | struct array
    type heap (line 10) | struct heap
  type pbc_slice (line 116) | struct pbc_slice
  function pbc_array_push_integer (line 119) | void
  function pbc_array_push_slice (line 127) | void
  function pbc_array_push_real (line 134) | void

FILE: code/EVA/server/server_share/pbc/array.h
  type longlong (line 9) | struct longlong
  type pbc_slice (line 19) | struct pbc_slice
  type heap (line 24) | struct heap

FILE: code/EVA/server/server_share/pbc/bootstrap.cpp
  type field_t (line 52) | struct field_t {
    type pbc_slice (line 53) | struct pbc_slice
    type pbc_slice (line 57) | struct pbc_slice
    type pbc_slice (line 59) | struct pbc_slice
  type file_t (line 63) | struct file_t {
    type pbc_slice (line 64) | struct pbc_slice
  function set_enum_one (line 75) | static void
  function set_enums (line 92) | static void
  function set_default (line 107) | static void
  function set_msg_one (line 124) | static void
  function set_msgs (line 151) | static void
  function set_field_one (line 166) | static void
  function _pbcB_register_fields (line 190) | void
  function _set_string (line 202) | static void
  function _set_int32 (line 210) | static void
  function _set_double (line 216) | static void
  function _set_message_array (line 222) | static void
  function _set_string_array (line 228) | static void
  function _set_int32_array (line 234) | static void
  function register_internal (line 248) | static int
  function _pbcB_init (line 299) | void

FILE: code/EVA/server/server_share/pbc/bootstrap.h
  type pbc_env (line 7) | struct pbc_env
  type pbc_env (line 8) | struct pbc_env

FILE: code/EVA/server/server_share/pbc/context.cpp
  type atom (line 16) | struct atom
  type longlong (line 19) | struct longlong
  function _decode_varint (line 87) | static inline int
  function _open_packed_varint (line 99) | static int
  function _pbcC_open_packed (line 137) | int
  function _pbcC_open (line 217) | int
  function _pbcC_close (line 273) | void

FILE: code/EVA/server/server_share/pbc/context.h
  type slice (line 48) | struct slice {
  type atom (line 53) | struct atom {
  type context (line 61) | struct context {
  type _pbc_ctx (line 68) | struct _pbc_ctx { char _data[PBC_CONTEXT_CAP]; }
  function read_double (line 74) | static inline double
  function read_float (line 84) | static inline float
  function double_encode (line 94) | static inline void
  function float_encode (line 111) | static inline void

FILE: code/EVA/server/server_share/pbc/decode.cpp
  function call_unknown (line 24) | static int
  function call_type (line 54) | static int
  function call_array (line 129) | static int
  function pbc_decode (line 301) | int

FILE: code/EVA/server/server_share/pbc/map.cpp
  type _pbcM_ip_slot (line 7) | struct _pbcM_ip_slot {
  type map_ip (line 13) | struct map_ip {
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type _pbcM_si_slot (line 20) | struct _pbcM_si_slot {
  type map_si (line 27) | struct map_si {
    type _pbcM_si_slot (line 29) | struct _pbcM_si_slot
  function calc_hash (line 32) | static size_t
  type map_si (line 44) | struct map_si
    type _pbcM_si_slot (line 29) | struct _pbcM_si_slot
  type map_kv (line 45) | struct map_kv
  type map_si (line 47) | struct map_si
    type _pbcM_si_slot (line 29) | struct _pbcM_si_slot
  type _pbcM_si_slot (line 47) | struct _pbcM_si_slot
  type map_si (line 48) | struct map_si
    type _pbcM_si_slot (line 29) | struct _pbcM_si_slot
  type map_si (line 48) | struct map_si
    type _pbcM_si_slot (line 29) | struct _pbcM_si_slot
  type _pbcM_si_slot (line 59) | struct _pbcM_si_slot
  type _pbcM_si_slot (line 68) | struct _pbcM_si_slot
  function _pbcM_si_delete (line 80) | void
  function _pbcM_si_query (line 86) | int
  type map_ip (line 108) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_kv (line 109) | struct map_kv
  type map_ip (line 111) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_ip (line 111) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_ip (line 111) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type _pbcM_ip_slot (line 115) | struct _pbcM_ip_slot
  type _pbcM_ip_slot (line 115) | struct _pbcM_ip_slot
  type _pbcM_ip_slot (line 116) | struct _pbcM_ip_slot
  type _pbcM_ip_slot (line 121) | struct _pbcM_ip_slot
  type _pbcM_ip_slot (line 129) | struct _pbcM_ip_slot
  type map_ip (line 139) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_kv (line 140) | struct map_kv
  type map_ip (line 156) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_ip (line 156) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_ip (line 156) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  function _pbcM_ip_delete (line 168) | void
  function _inject (line 178) | static void
  type map_ip (line 200) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_ip (line 201) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_ip (line 201) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_kv (line 204) | struct map_kv
  type map_kv (line 204) | struct map_kv
  type map_kv (line 204) | struct map_kv
  type map_kv (line 205) | struct map_kv
  type map_ip (line 208) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type map_ip (line 214) | struct map_ip
    type _pbcM_ip_slot (line 17) | struct _pbcM_ip_slot
  type _pbcM_ip_slot (line 224) | struct _pbcM_ip_slot
  type _pbcM_sp_slot (line 236) | struct _pbcM_sp_slot {
  type map_sp (line 243) | struct map_sp {
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type map_sp (line 250) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type heap (line 251) | struct heap
  type map_sp (line 253) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type map_sp (line 253) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type map_sp (line 253) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type _pbcM_sp_slot (line 260) | struct _pbcM_sp_slot
  type _pbcM_sp_slot (line 260) | struct _pbcM_sp_slot
  type _pbcM_sp_slot (line 261) | struct _pbcM_sp_slot
  function _pbcM_sp_delete (line 266) | void
  type map_sp (line 275) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  function _pbcM_sp_insert_hash (line 277) | static void
  function _pbcM_sp_rehash (line 306) | static void
  type map_sp (line 325) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type _pbcM_sp_slot (line 328) | struct _pbcM_sp_slot
  type _pbcM_sp_slot (line 352) | struct _pbcM_sp_slot
  function _pbcM_sp_insert (line 367) | void
  type map_sp (line 374) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type map_sp (line 380) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot
  type _pbcM_sp_slot (line 387) | struct _pbcM_sp_slot
  function _pbcM_sp_foreach (line 401) | void
  function _pbcM_sp_foreach_ud (line 412) | void
  function _find_first (line 423) | static int
  function _find_next (line 435) | static int
  type map_sp (line 463) | struct map_sp
    type heap (line 246) | struct heap
    type _pbcM_sp_slot (line 247) | struct _pbcM_sp_slot

FILE: code/EVA/server/server_share/pbc/map.h
  type map_ip (line 6) | struct map_ip
  type map_si (line 7) | struct map_si
  type map_sp (line 8) | struct map_sp
  type map_kv (line 10) | struct map_kv {
  type map_si (line 15) | struct map_si
  type map_kv (line 15) | struct map_kv
  type map_si (line 16) | struct map_si
  type map_si (line 17) | struct map_si
  type map_ip (line 19) | struct map_ip
  type map_kv (line 19) | struct map_kv
  type map_ip (line 20) | struct map_ip
  type map_ip (line 20) | struct map_ip
  type map_ip (line 20) | struct map_ip
  type map_ip (line 21) | struct map_ip
  type map_ip (line 22) | struct map_ip
  type map_sp (line 24) | struct map_sp
  type heap (line 24) | struct heap
  type map_sp (line 25) | struct map_sp
  type map_sp (line 26) | struct map_sp
  type map_sp (line 27) | struct map_sp
  type map_sp (line 28) | struct map_sp
  type map_sp (line 29) | struct map_sp
  type map_sp (line 30) | struct map_sp
  type map_sp (line 31) | struct map_sp

FILE: code/EVA/server/server_share/pbc/pattern.cpp
  function set_default_v (line 18) | static void
  function _pattern_set_default (line 48) | static void
  function pbc_pattern_set_default (line 62) | void
  type _pattern_field (line 72) | struct _pattern_field
  type pbc_pattern (line 73) | struct pbc_pattern
  type _pattern_field (line 79) | struct _pattern_field
  function write_real (line 92) | static inline int
  function write_longlong (line 108) | static inline int
  function write_integer (line 133) | static inline int
  type atom (line 138) | struct atom
  function _pbcP_unpack_packed (line 140) | int
  function unpack_field (line 283) | static int
  function unpack_array (line 341) | static int
  function pbc_pattern_close_arrays (line 352) | void
  function _pack_wiretype (line 363) | static inline int
  function _pack_varint64 (line 380) | static inline int
  function _pack_sint32 (line 397) | static inline int
  function _pack_sint64 (line 414) | static inline int
  function _fix32_encode (line 431) | static inline void
  function _fix64_encode (line 439) | static inline void
  function _pack_number (line 445) | static int
  function _pack_field (line 531) | static int
  function _pack_repeated (line 615) | static int
  function _pack_packed_fixed (line 631) | static int
  function _pack_packed_varint (line 649) | static int
  function _pack_packed (line 687) | static int
  function _is_default (line 734) | static bool
  function pbc_pattern_pack (line 776) | int
  function pbc_pattern_unpack (line 810) | int
  function _ctype (line 882) | static int
  function _ctype_size (line 910) | static int
  function _scan_pattern (line 958) | static int
  function _comp_field (line 972) | static int
  type pbc_pattern (line 980) | struct pbc_pattern
  type pbc_env (line 981) | struct pbc_env
  type pbc_pattern (line 982) | struct pbc_pattern
  type _pattern_field (line 982) | struct _pattern_field
  type pbc_pattern (line 983) | struct pbc_pattern
  type pbc_pattern (line 983) | struct pbc_pattern
  function _check_ctype (line 990) | static int
  type pbc_pattern (line 1016) | struct pbc_pattern
  type _message (line 1017) | struct _message
  type pbc_pattern (line 1021) | struct pbc_pattern
  type _pattern_field (line 1029) | struct _pattern_field
  type _field (line 1030) | struct _field
  type _field (line 1030) | struct _field
  type _pattern_field (line 1061) | struct _pattern_field
  type pbc_pattern (line 1068) | struct pbc_pattern
  type pbc_env (line 1069) | struct pbc_env
  type _message (line 1070) | struct _message
  type pbc_pattern (line 1082) | struct pbc_pattern
  type _pattern_field (line 1090) | struct _pattern_field
  type _field (line 1091) | struct _field
  type _field (line 1091) | struct _field
  type _pattern_field (line 1124) | struct _pattern_field
  function pbc_pattern_delete (line 1131) | void

FILE: code/EVA/server/server_share/pbc/pattern.h
  type _pattern_field (line 8) | struct _pattern_field {
  type pbc_pattern (line 17) | struct pbc_pattern {
  type pbc_pattern (line 23) | struct pbc_pattern
  type pbc_env (line 23) | struct pbc_env

FILE: code/EVA/server/server_share/pbc/pbc-lua53.cpp
  function _env_new (line 38) | static int
  function _env_register (line 45) | static int
  function _env_enum_id (line 61) | static int
  function _rmessage_new (line 74) | static int
  function _rmessage_delete (line 94) | static int
  function _rmessage_int (line 102) | static int
  function _rmessage_real (line 115) | static int
  function _rmessage_string (line 127) | static int
  function _rmessage_message (line 138) | static int
  function _rmessage_size (line 148) | static int
  function _env_type (line 160) | static int
  function _wmessage_new (line 182) | static int
  function _wmessage_delete (line 191) | static int
  function _wmessage_real (line 200) | static int
  function _wmessage_string (line 210) | static int
  function _wmessage_message (line 224) | static int
  function _wmessage_int (line 234) | static int
  function _wmessage_buffer (line 251) | static int
  function _wmessage_buffer_string (line 261) | static int
  function _last_error (line 273) | static int
  function _pattern_new (line 286) | static int
  function _pattern_delete (line 300) | static int
  type pbc_slice (line 336) | struct pbc_slice
  type pbc_slice (line 336) | struct pbc_slice
  type pbc_slice (line 338) | struct pbc_slice
  type pbc_slice (line 342) | struct pbc_slice
  type pbc_slice (line 342) | struct pbc_slice
  type pbc_slice (line 348) | struct pbc_slice
  function _push_array (line 355) | static void
  function _pattern_unpack (line 412) | static int
  type pbc_slice (line 491) | struct pbc_slice
  type pbc_slice (line 491) | struct pbc_slice
  type pbc_slice (line 494) | struct pbc_slice
  type pbc_slice (line 497) | struct pbc_slice
  type pbc_slice (line 497) | struct pbc_slice
  type pbc_slice (line 510) | struct pbc_slice
  function _get_array_value (line 518) | static void
  function _pattern_pack (line 579) | static int
  function _pattern_size (line 643) | static int
  function new_array (line 677) | static void
  function push_value (line 690) | static void
  function decode_cb (line 734) | static void
  function _decode (line 766) | static int
  type gcobj (line 794) | struct gcobj {
    type pbc_env (line 795) | struct pbc_env
    type pbc_pattern (line 798) | struct pbc_pattern
    type pbc_rmessage (line 801) | struct pbc_rmessage
  function _clear_gcobj (line 804) | static int
  function _gc (line 826) | static int
  function _add_pattern (line 847) | static int
  function _add_rmessage (line 859) | static int
  function luaopen_protobuf_c (line 871) | int

FILE: code/EVA/server/server_share/pbc/pbc.h
  type _pbc_array (line 28) | struct _pbc_array { char _data[PBC_ARRAY_CAP]; }
  type pbc_slice (line 30) | struct pbc_slice {
  type pbc_pattern (line 35) | struct pbc_pattern
  type pbc_env (line 36) | struct pbc_env
  type pbc_rmessage (line 37) | struct pbc_rmessage
  type pbc_wmessage (line 38) | struct pbc_wmessage
  type pbc_env (line 40) | struct pbc_env
  type pbc_env (line 41) | struct pbc_env
  type pbc_env (line 42) | struct pbc_env
  type pbc_slice (line 42) | struct pbc_slice
  type pbc_env (line 43) | struct pbc_env
  type pbc_env (line 44) | struct pbc_env
  type pbc_slice (line 53) | struct pbc_slice
  type pbc_env (line 61) | struct pbc_env
  type pbc_slice (line 61) | struct pbc_slice
  type pbc_rmessage (line 65) | struct pbc_rmessage
  type pbc_env (line 65) | struct pbc_env
  type pbc_slice (line 65) | struct pbc_slice
  type pbc_rmessage (line 66) | struct pbc_rmessage
  type pbc_rmessage (line 68) | struct pbc_rmessage
  type pbc_rmessage (line 69) | struct pbc_rmessage
  type pbc_rmessage (line 70) | struct pbc_rmessage
  type pbc_rmessage (line 71) | struct pbc_rmessage
  type pbc_rmessage (line 71) | struct pbc_rmessage
  type pbc_rmessage (line 72) | struct pbc_rmessage
  type pbc_rmessage (line 73) | struct pbc_rmessage
  type pbc_wmessage (line 75) | struct pbc_wmessage
  type pbc_env (line 75) | struct pbc_env
  type pbc_wmessage (line 76) | struct pbc_wmessage
  type pbc_wmessage (line 79) | struct pbc_wmessage
  type pbc_wmessage (line 80) | struct pbc_wmessage
  type pbc_wmessage (line 81) | struct pbc_wmessage
  type pbc_wmessage (line 82) | struct pbc_wmessage
  type pbc_wmessage (line 82) | struct pbc_wmessage
  type pbc_wmessage (line 83) | struct pbc_wmessage
  type pbc_slice (line 83) | struct pbc_slice
  type pbc_slice (line 90) | struct pbc_slice
  type pbc_slice (line 93) | struct pbc_slice
  type pbc_pattern (line 96) | struct pbc_pattern
  type pbc_env (line 96) | struct pbc_env
  type pbc_pattern (line 97) | struct pbc_pattern
  type pbc_pattern (line 100) | struct pbc_pattern
  type pbc_slice (line 100) | struct pbc_slice
  type pbc_pattern (line 103) | struct pbc_pattern
  type pbc_slice (line 103) | struct pbc_slice
  type pbc_pattern (line 105) | struct pbc_pattern
  type pbc_pattern (line 106) | struct pbc_pattern
  type pbc_env (line 108) | struct pbc_env

FILE: code/EVA/server/server_share/pbc/proto.cpp
  type pbc_env (line 13) | struct pbc_env
  type _message (line 19) | struct _message
  type pbc_env (line 20) | struct pbc_env
  type _message (line 21) | struct _message
  type pbc_env (line 24) | struct pbc_env
  type pbc_env (line 26) | struct pbc_env
  type pbc_env (line 26) | struct pbc_env
  function free_enum (line 37) | static void
  function free_stringpool (line 46) | static void
  function free_msg (line 51) | static void
  function pbc_delete (line 62) | void
  type _enum (line 76) | struct _enum
  type pbc_env (line 77) | struct pbc_env
  type map_kv (line 77) | struct map_kv
  type _enum (line 81) | struct _enum
  type _enum (line 81) | struct _enum
  function _pbcP_push_message (line 92) | void
  type _iter (line 114) | struct _iter {
    type map_kv (line 116) | struct map_kv
  function _count (line 119) | static void
  function _set_table (line 125) | static void
  type _message (line 134) | struct _message
  type pbc_env (line 135) | struct pbc_env
  type _message (line 136) | struct _message
  type _message (line 136) | struct _message
  type _message (line 138) | struct _message
  type _iter (line 152) | struct _iter
    type map_kv (line 116) | struct map_kv
  type map_kv (line 154) | struct map_kv
  type map_kv (line 154) | struct map_kv
  function _pbcP_message_default (line 165) | int
  function _pbcP_type (line 178) | int
  function pbc_type (line 241) | int
  function pbc_enum_id (line 254) | int

FILE: code/EVA/server/server_share/pbc/proto.h
  type map_ip (line 12) | struct map_ip
  type map_si (line 13) | struct map_si
  type map_sp (line 14) | struct map_sp
  type _message (line 15) | struct _message
  type _enum (line 16) | struct _enum
  type _field (line 23) | struct _field {
  type _message (line 36) | struct _message {
  type _enum (line 44) | struct _enum {
  type pbc_env (line 51) | struct pbc_env {
  type _message (line 58) | struct _message
  type pbc_env (line 58) | struct pbc_env
  type pbc_env (line 59) | struct pbc_env
  type _field (line 59) | struct _field
  type _enum (line 60) | struct _enum
  type pbc_env (line 60) | struct pbc_env
  type map_kv (line 60) | struct map_kv
  type _message (line 61) | struct _message
  type _message (line 62) | struct _message
  type pbc_env (line 62) | struct pbc_env
  type _field (line 63) | struct _field

FILE: code/EVA/server/server_share/pbc/register.cpp
  type _stringpool (line 17) | struct _stringpool
  function _register_enum (line 36) | static void
  function _set_default (line 56) | static void
  function _register_field (line 130) | static void
  function _register_extension (line 148) | static void
  function _register_message (line 180) | static void
  function _register (line 222) | static void
  function _check_file_name (line 255) | static int
  function _register_no_dependency (line 277) | static int
  function pbc_register (line 305) | int

FILE: code/EVA/server/server_share/pbc/rmessage.cpp
  type pbc_rmessage (line 12) | struct pbc_rmessage {
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type pbc_rmessage (line 21) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type value (line 24) | struct value {
    type _field (line 25) | struct _field
  function pbc_rmessage_next (line 29) | int
  type value (line 42) | struct value
    type _field (line 25) | struct _field
  type heap (line 43) | struct heap
  type atom (line 43) | struct atom
  type _field (line 43) | struct _field
  type value (line 48) | struct value
    type _field (line 25) | struct _field
  type value (line 48) | struct value
    type _field (line 25) | struct _field
  type value (line 53) | struct value
    type _field (line 25) | struct _field
  type value (line 53) | struct value
    type _field (line 25) | struct _field
  function read_string_var (line 62) | static void
  type pbc_rmessage (line 82) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type _message (line 82) | struct _message
  type heap (line 82) | struct heap
  type value (line 84) | struct value
    type _field (line 25) | struct _field
  type heap (line 85) | struct heap
  type _field (line 85) | struct _field
  type atom (line 85) | struct atom
  type value (line 86) | struct value
    type _field (line 25) | struct _field
  type value (line 91) | struct value
    type _field (line 25) | struct _field
  type value (line 96) | struct value
    type _field (line 25) | struct _field
  type value (line 101) | struct value
    type _field (line 25) | struct _field
  type value (line 111) | struct value
    type _field (line 25) | struct _field
  type value (line 117) | struct value
    type _field (line 25) | struct _field
  type value (line 123) | struct value
    type _field (line 25) | struct _field
  type value (line 128) | struct value
    type _field (line 25) | struct _field
  type value (line 134) | struct value
    type _field (line 25) | struct _field
  type value (line 144) | struct value
    type _field (line 25) | struct _field
  type value (line 150) | struct value
    type _field (line 25) | struct _field
  function push_value_packed (line 162) | static void
  function push_value_array (line 182) | static void
  function _pbc_rmessage_new (line 245) | static void
  type pbc_rmessage (line 310) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type pbc_env (line 311) | struct pbc_env
  type pbc_slice (line 311) | struct pbc_slice
  type _message (line 312) | struct _message
  type pbc_rmessage (line 317) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type heap (line 318) | struct heap
  type pbc_rmessage (line 325) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type pbc_rmessage (line 325) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  function pbc_rmessage_delete (line 330) | void
  type pbc_rmessage (line 338) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type value (line 339) | struct value
    type _field (line 25) | struct _field
  type value (line 339) | struct value
    type _field (line 25) | struct _field
  function pbc_rmessage_integer (line 370) | uint32_t
  function pbc_rmessage_real (line 399) | double
  type pbc_rmessage (line 416) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type pbc_rmessage (line 417) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type value (line 418) | struct value
    type _field (line 25) | struct _field
  type value (line 418) | struct value
    type _field (line 25) | struct _field
  type _field (line 420) | struct _field
  type _field (line 420) | struct _field
  type _message (line 426) | struct _message
  type pbc_rmessage (line 430) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type pbc_rmessage (line 430) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  type pbc_rmessage (line 437) | struct pbc_rmessage
    type _message (line 13) | struct _message
    type map_sp (line 14) | struct map_sp
    type heap (line 15) | struct heap
  function pbc_rmessage_size (line 444) | int

FILE: code/EVA/server/server_share/pbc/stringpool.cpp
  type _stringpool (line 8) | struct _stringpool {
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 14) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 16) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 16) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 16) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  function _pbcS_delete (line 23) | void
  type _stringpool (line 33) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 42) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 42) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 42) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 50) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 50) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool
  type _stringpool (line 50) | struct _stringpool
    type _stringpool (line 11) | struct _stringpool

FILE: code/EVA/server/server_share/pbc/stringpool.h
  type _stringpool (line 4) | struct _stringpool
  type _stringpool (line 6) | struct _stringpool
  type _stringpool (line 7) | struct _stringpool
  type _stringpool (line 8) | struct _stringpool

FILE: code/EVA/server/server_share/pbc/varint.cpp
  function _pbcV_encode32 (line 8) | int
  function _pbcV_encode (line 35) | int
  function _pbcV_decode (line 51) | int
  function _pbcV_zigzag32 (line 83) | int
  function _pbcV_zigzag (line 90) | int
  function _pbcV_dezigzag64 (line 97) | void
  function _pbcV_dezigzag32 (line 105) | void

FILE: code/EVA/server/server_share/pbc/varint.h
  type longlong (line 6) | struct longlong {
  type longlong (line 16) | struct longlong
  type longlong (line 17) | struct longlong
  type longlong (line 18) | struct longlong

FILE: code/EVA/server/server_share/pbc/wmessage.cpp
  type pbc_wmessage (line 18) | struct pbc_wmessage {
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type _packed (line 28) | struct _packed {
  type pbc_wmessage (line 34) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type heap (line 35) | struct heap
  type _message (line 35) | struct _message
  type pbc_wmessage (line 36) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type pbc_wmessage (line 36) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type pbc_wmessage (line 48) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type pbc_env (line 49) | struct pbc_env
  type _message (line 50) | struct _message
  type heap (line 53) | struct heap
  function pbc_wmessage_delete (line 57) | void
  function _expand_message (line 64) | static void
  type _packed (line 81) | struct _packed
  type pbc_wmessage (line 82) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type _field (line 82) | struct _field
  type _packed (line 88) | struct _packed
  type _packed (line 89) | struct _packed
  type _packed (line 89) | struct _packed
  type _packed (line 95) | struct _packed
  function _packed_integer (line 98) | static void
  function _packed_real (line 107) | static void
  function int64_encode (line 115) | static inline void
  function int32_encode (line 127) | static inline void
  function pbc_wmessage_integer (line 135) | int
  function pbc_wmessage_real (line 205) | int
  function pbc_wmessage_string (line 243) | int
  type pbc_wmessage (line 331) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type pbc_wmessage (line 332) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type _field (line 333) | struct _field
  type _field (line 333) | struct _field
  type pbc_wmessage (line 343) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  function _pack_packed_64 (line 346) | static void
  function _pack_packed_32 (line 371) | static void
  function _pack_packed_varint (line 396) | static void
  function _pack_packed (line 467) | static void
  type pbc_wmessage (line 492) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type pbc_slice (line 492) | struct pbc_slice
  type pbc_slice (line 501) | struct pbc_slice
  type pbc_wmessage (line 502) | struct pbc_wmessage
    type _message (line 19) | struct _message
    type map_sp (line 24) | struct map_sp
    type heap (line 25) | struct heap
  type _field (line 504) | struct _field
  type _field (line 504) | struct _field

FILE: code/EVA/server/server_share/ranking_change_near.h
  function class (line 16) | class CRankingChangeNear

FILE: code/EVA/server/server_share/ranking_slot.h
  function class (line 20) | class CRankingSlot
  function UpdateRanking (line 204) | void UpdateRanking( )

FILE: code/EVA/server/server_share/server_def.h
  function SendUDP (line 70) | inline void SendUDP( NLNET::TServiceId conFES, DEF::UID uid, std::string...
  function SendUDP (line 89) | inline void SendUDP( NLNET::TServiceId conFES, DEF::UID uid, NLNET::CMes...
  function AddToClientBuffer (line 104) | inline void AddToClientBuffer( NLNET::TServiceId conFES, DEF::UID uid, N...
  function AddToClientBuffer (line 113) | inline void AddToClientBuffer( NLNET::TServiceId conFES, DEF::UID uid, s...
  function SendErrorToClient (line 157) | inline void SendErrorToClient( DEF::ERROR_TYPE errNO, DEF::RPC_SESSION s...
  function SendErrorToClient (line 165) | inline void SendErrorToClient( DEF::ERROR_TYPE errNO, DEF::RPC_SESSION s...
  function SendErrorToClient (line 174) | inline void SendErrorToClient( NLNET::TServiceId conFES, DEF::UID uid, D...
  function SendErrorToClient (line 181) | inline void SendErrorToClient( NLNET::TServiceId conFES, DEF::UID uid, D...
  function SendErrorToClient (line 189) | inline void SendErrorToClient( NLNET::TServiceId conFES, DEF::UID uid, D...

FILE: code/EVA/server/server_share/sigslot.h
  function namespace (line 121) | namespace sigslot {
  function class (line 149) | class multi_threaded_global
  function virtual (line 168) | virtual ~multi_threaded_global()
  function virtual (line 173) | virtual void lock()
  function virtual (line 178) | virtual void unlock()
  function class (line 191) | class multi_threaded_local
  function class (line 226) | class multi_threaded_global
  function virtual (line 239) | virtual ~multi_threaded_global()
  function virtual (line 244) | virtual void lock()
  function virtual (line 249) | virtual void unlock()
  function class (line 262) | class multi_threaded_local
  function m_mutex (line 302) | m_mutex(mtx)
  function class (line 430) | class _signal_base_interface
  function class (line 442) | class has_slots_interface
  function virtual (line 454) | virtual ~has_slots_interface()
  type sender_set (line 466) | typedef sender_set::const_iterator const_iterator;
  function signal_connect (line 488) | void signal_connect(_signal_base_interface* sender)
  function signal_disconnect (line 494) | void signal_disconnect(_signal_base_interface* sender)
  function virtual (line 500) | virtual ~has_slots()
  function disconnect_all (line 505) | void disconnect_all()
  function s (line 535) | _signal_base0(const _signal_base0& s)
  function is_empty (line 556) | bool is_empty()
  function disconnect_all (line 564) | void disconnect_all()
  function connected (line 582) | bool connected(has_slots_interface* pclass)
  function disconnect (line 599) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 619) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 640) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function slot_duplicate (line 688) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 710) | bool is_empty()
  function disconnect_all (line 718) | void disconnect_all()
  function connected (line 736) | bool connected(has_slots_interface* pclass)
  function disconnect (line 753) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 773) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 827) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 849) | bool is_empty()
  function disconnect_all (line 857) | void disconnect_all()
  function connected (line 875) | bool connected(has_slots_interface* pclass)
  function disconnect (line 892) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 912) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 965) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 987) | bool is_empty()
  function disconnect_all (line 995) | void disconnect_all()
  function connected (line 1013) | bool connected(has_slots_interface* pclass)
  function disconnect (line 1030) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 1050) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 1103) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 1125) | bool is_empty()
  function disconnect_all (line 1133) | void disconnect_all()
  function connected (line 1151) | bool connected(has_slots_interface* pclass)
  function disconnect (line 1168) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 1188) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 1243) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 1265) | bool is_empty()
  function disconnect_all (line 1273) | void disconnect_all()
  function connected (line 1291) | bool connected(has_slots_interface* pclass)
  function disconnect (line 1308) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 1328) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 1383) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 1405) | bool is_empty()
  function disconnect_all (line 1413) | void disconnect_all()
  function connected (line 1431) | bool connected(has_slots_interface* pclass)
  function disconnect (line 1448) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 1468) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 1523) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 1545) | bool is_empty()
  function disconnect_all (line 1553) | void disconnect_all()
  function connected (line 1571) | bool connected(has_slots_interface* pclass)
  function disconnect (line 1588) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 1608) | void slot_disconnect(has_slots_interface* pslot)
  function slot_duplicate (line 1664) | void slot_duplicate(const has_slots_interface* oldtarget, has_slots_inte...
  function is_empty (line 1686) | bool is_empty()
  function disconnect_all (line 1694) | void disconnect_all()
  function connected (line 1712) | bool connected(has_slots_interface* pclass)
  function disconnect (line 1729) | void disconnect(has_slots_interface* pclass)
  function slot_disconnect (line 1749) | void slot_disconnect(has_slots_interface* pslot)
  function virtual (line 1791) | virtual ~_connection0()
  function virtual (line 1795) | virtual _connection_base0<mt_policy>* clone()
  function virtual (line 1800) | virtual _connection_base0<mt_policy>* duplicate(has_slots_interface* pne...
  function virtual (line 1805) | virtual void emit()
  function virtual (line 1810) | virtual has_slots_interface* getdest() const
  function virtual (line 1836) | virtual ~_connection1()
  function virtual (line 1850) | virtual void emit(arg1_type a1)
  function virtual (line 1855) | virtual has_slots_interface* getdest() const
  function virtual (line 1882) | virtual ~_connection2()
  function virtual (line 1896) | virtual void emit(arg1_type a1, arg2_type a2)
  function virtual (line 1901) | virtual has_slots_interface* getdest() const
  function virtual (line 1928) | virtual ~_connection3()
  function virtual (line 1942) | virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3)
  function virtual (line 1947) | virtual has_slots_interface* getdest() const
  function virtual (line 1976) | virtual ~_connection4()
  function virtual (line 1990) | virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3,
  function virtual (line 1996) | virtual has_slots_interface* getdest() const
  function virtual (line 2026) | virtual ~_connection5()
  function virtual (line 2044) | virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,
  function virtual (line 2050) | virtual has_slots_interface* getdest() const
  function virtual (line 2080) | virtual ~_connection6()
  function virtual (line 2098) | virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,
  function virtual (line 2104) | virtual has_slots_interface* getdest() const
  function virtual (line 2134) | virtual ~_connection7()
  function virtual (line 2152) | virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,
  function virtual (line 2158) | virtual has_slots_interface* getdest() const
  function virtual (line 2190) | virtual ~_connection8()
  function virtual (line 2208) | virtual void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,
  function virtual (line 2214) | virtual has_slots_interface* getdest() const
  type typename (line 2230) | typedef typename base::connections_list connections_list;
  function emit (line 2254) | void emit()
  type typename (line 2294) | typedef typename base::connections_list connections_list;
  function emit (line 2318) | void emit(arg1_type a1)
  type typename (line 2358) | typedef typename base::connections_list connections_list;
  function emit (line 2383) | void emit(arg1_type a1, arg2_type a2)
  type typename (line 2423) | typedef typename base::connections_list connections_list;
  function emit (line 2449) | void emit(arg1_type a1, arg2_type a2, arg3_type a3)
  type typename (line 2490) | typedef typename base::connections_list connections_list;
  function emit (line 2516) | void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4)
  type typename (line 2558) | typedef typename base::connections_list connections_list;
  function emit (line 2586) | void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,
  type typename (line 2631) | typedef typename base::connections_list connections_list;
  function emit (line 2660) | void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,
  type typename (line 2705) | typedef typename base::connections_list connections_list;
  function emit (line 2735) | void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,
  type typename (line 2780) | typedef typename base::connections_list connections_list;
  function emit (line 2811) | void emit(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4,

FILE: code/EVA/server/server_share/singleton_registry.h
  function class (line 42) | class IServiceSingleton
  function class (line 73) | class CSingletonRegistry
  function IServiceSingleton (line 103) | inline IServiceSingleton::IServiceSingleton()
  function CSingletonRegistry (line 113) | inline CSingletonRegistry* CSingletonRegistry::getInstance()
  function registerSingleton (line 123) | inline void CSingletonRegistry::registerSingleton(IServiceSingleton* sin...
  function init (line 128) | inline void CSingletonRegistry::init()
  function tickUpdate (line 134) | inline void CSingletonRegistry::tickUpdate()
  function serviceUpdate (line 140) | inline void CSingletonRegistry::serviceUpdate()
  function release (line 146) | inline void CSingletonRegistry::release()

FILE: code/EVA/server/server_share/timer.h
  function class (line 134) | class CTimer
  function CTimerEvent (line 448) | inline CTimerEvent* CTimer::getEvent()
  function CTimerEvent (line 457) | inline CTimerEvent::CTimerEvent()
  function CTimerEvent (line 463) | inline CTimerEvent::~CTimerEvent()
  function set (line 467) | inline void CTimerEvent::set(CTimer* owner,NLMISC::TGameCycle time)
  function set (line 477) | inline void CTimerEvent::set(CTimer* owner,NLMISC::TGameCycle time,uint3...
  function CTimer (line 510) | inline CTimer* CTimerEvent::getOwner() const
  function clear (line 520) | inline void CTimerEvent::clear()
  function processEvent (line 525) | inline void CTimerEvent::processEvent()

FILE: code/EVA/server/server_share/tools.cpp
  function tm (line 19) | tm CLocalTime::gettime( const time_t time )
  function tm (line 37) | tm CLocalTime::gettime()
  function uint32 (line 44) | uint32 CLocalTime::str2time(std::string strTime)
  function uint32 (line 120) | uint32 CLocalTime::mktime( const uint year, const uint month, const uint...
  function uint32 (line 134) | uint32 CLocalTime::gettime( TTimeOperaion time_opt, sint32 time_val, uin...
  function uint32 (line 215) | uint32  CLocalTime::gettime( vector<TimeOPT> vct_opt )

FILE: code/EVA/server/server_share/tools.h
  function uint64 (line 14) | inline uint64 get_id64( uint64 regionid, uint64 idx )
  function uint16 (line 27) | inline uint16 GetSID( DEF::RPC_SESSION session )
  function GetDay (line 32) | struct BaseTime
  function SameDay (line 118) | inline bool SameDay( uint32 time_seconds1, uint32 time_seconds2 )
  function uint32 (line 190) | inline uint32 crc32(uint32 crc, const uint8* buffer, uint length)

FILE: code/EVA/server/server_share/utils.cpp
  function CSString (line 36) | CSString cleanPath(const CSString& path,bool addTrailingSlash)

FILE: code/EVA/server/server_share/utils.h
  function std (line 37) | inline std::string capitalize(const std::string & s)
  function ucstring (line 45) | inline ucstring capitalize(const ucstring & s)
  function class (line 376) | class ICallStackEntry
  function class (line 394) | class CCallStackSingleton
  function ICallStackEntry (line 414) | inline ICallStackEntry* CCallStackSingleton::getTopStackEntry()
  function setTopStackEntry (line 419) | inline void CCallStackSingleton::setTopStackEntry(ICallStackEntry* newEn...
  function display (line 424) | inline void CCallStackSingleton::display(NLMISC::CLog *log)
  function ICallStackEntry (line 431) | inline ICallStackEntry*& CCallStackSingleton::topStackEntry()
  function ICallStackEntry (line 442) | inline ICallStackEntry::ICallStackEntry()
  function ICallStackEntry (line 449) | inline ICallStackEntry::~ICallStackEntry()
  function displayStack (line 467) | inline void ICallStackEntry::displayStack(NLMISC::CLog& log) const
  function vectInsert (line 498) | void vectInsert(std::vector<T0>& vect,const T1& value)
  function NLMISC (line 513) | inline NLMISC::CSString popString(NLMISC::IStream& stream)
  function sint32 (line 520) | inline sint32 popSint(NLMISC::IStream& stream)
  function uint32 (line 527) | inline uint32 popUint(NLMISC::IStream& stream)
  function popBool (line 534) | inline bool popBool(NLMISC::IStream& stream)
  function pushToStream (line 541) | void pushToStream(NLMISC::IStream& stream,const T& value)
  function pushToStream (line 546) | inline void pushToStream(NLMISC::IStream& stream,const char* txt)
  function C (line 568) | const C* operator->() const					{ return _Ptr; }

FILE: code/nel/include/nel/georges/form.h
  function namespace (line 27) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/form_dfn.h
  function class (line 37) | class CFormDfn : public UFormDfn

FILE: code/nel/include/nel/georges/form_elm.h
  function class (line 39) | class CFormElm : public UFormElm

FILE: code/nel/include/nel/georges/form_loader.h
  function namespace (line 25) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/header.h
  function namespace (line 25) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/load_form.h
  type typename (line 379) | typedef typename std::map<NLMISC::CSheetId, T>::iterator TType1;
  type typename (line 380) | typedef typename std::pair<TType1, bool> TType2;
  type typename (line 742) | typedef typename std::map<NLMISC::CSheetId, NLMISC::CSmartPtr<T> >::iter...
  type typename (line 743) | typedef typename std::pair<TType1, bool> TType2;
  type typename (line 1107) | typedef typename std::map<std::string, T>::iterator TType1;
  type typename (line 1108) | typedef typename std::pair<TType1, bool> TType2;
  type typename (line 1299) | typedef typename std::map<NLMISC::CSheetId, T>::iterator TType1;
  type typename (line 1300) | typedef typename std::pair<TType1, bool> TType2;
  type typename (line 1388) | typedef typename std::map<NLMISC::CSheetId, NLMISC::CSmartPtr<T> >::iter...
  type typename (line 1389) | typedef typename std::pair<TType1, bool> TType2;

FILE: code/nel/include/nel/georges/type.h
  function namespace (line 25) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/u_form.h
  function namespace (line 24) | namespace NLMISC
  function namespace (line 29) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/u_form_dfn.h
  function namespace (line 24) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/u_form_elm.h
  function namespace (line 22) | namespace NLMISC
  function namespace (line 27) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/u_form_loader.h
  function namespace (line 23) | namespace NLGEORGES

FILE: code/nel/include/nel/georges/u_type.h
  function namespace (line 23) | namespace NLGEORGES

FILE: code/nel/include/nel/ligo/ligo_config.h
  function namespace (line 26) | namespace NLLIGO

FILE: code/nel/include/nel/ligo/primitive.h
  function class (line 57) | class IProperty : public NLMISC::IStreamable
  function class (line 77) | class CPropertyString : public IProperty
  function class (line 105) | class CPropertyStringArray : public IProperty
  function class (line 131) | class CPropertyColor : public IProperty
  function class (line 153) | class CPrimVector : public NLMISC::CVector
  function class (line 183) | class IPrimitive : public NLMISC::IStreamable
  function class (line 416) | class CPrimNode : public IPrimitive
  function class (line 441) | class CPrimPoint : public IPrimitive
  function class (line 483) | class CPrimPath : public IPrimitive
  function contains (line 531) | bool contains(const NLMISC::CVector &v, float &distance, NLMISC::CVector...
  function getAreaOfAABox (line 553) | float				getAreaOfAABox() const;

FILE: code/nel/include/nel/ligo/primitive_class.h
  function namespace (line 28) | namespace NLLIGO

FILE: code/nel/include/nel/ligo/primitive_configuration.h
  function namespace (line 27) | namespace NLLIGO

FILE: code/nel/include/nel/ligo/primitive_utils.h
  function namespace (line 32) | namespace NLLIGO
  type TPrimitiveClassAndNamePredicate (line 84) | struct TPrimitiveClassAndNamePredicate
  type TPrimitivePropertyPredicate (line 111) | struct TPrimitivePropertyPredicate
  function IPrimitive (line 162) | IPrimitive *getNextMatch()
  function loadXmlPrimitiveFile (line 253) | inline bool loadXmlPrimitiveFile(CPrimitives &primDoc, const std::string...
  function saveXmlPrimitiveFile (line 275) | inline bool saveXmlPrimitiveFile(CPrimitives &primDoc, const std::string...

FILE: code/nel/include/nel/ligo/zone_bank.h
  function namespace (line 25) | namespace NLLIGO

FILE: code/nel/include/nel/ligo/zone_region.h
  function namespace (line 26) | namespace NLLIGO

FILE: code/nel/include/nel/logic/logic_condition.h
  function namespace (line 25) | namespace NLLOGIC

FILE: code/nel/include/nel/logic/logic_event.h
  function namespace (line 29) | namespace NLLOGIC

FILE: code/nel/include/nel/logic/logic_state.h
  function namespace (line 32) | namespace NLLOGIC

FILE: code/nel/include/nel/logic/logic_state_machine.h
  function namespace (line 34) | namespace NLLOGIC
  function setName (line 85) | void setName( const std::string& name ) { _Name = name; }
  function addVariable (line 125) | void addVariable( CLogicVariable var ) { _Variables.insert( std::make_pa...
  function addCounter (line 141) | void addCounter( CLogicCounter counter ) { _Counters.insert( std::make_p...

FILE: code/nel/include/nel/logic/logic_variable.h
  function namespace (line 25) | namespace NLLOGIC

FILE: code/nel/include/nel/misc/aabbox.h
  function namespace (line 28) | namespace NLMISC

FILE: code/nel/include/nel/misc/algo.h
  function namespace (line 26) | namespace NLMISC
  function fastClamp8 (line 141) | static inline	void fastClamp8(sint &v)

FILE: code/nel/include/nel/misc/app_context.h
  function class (line 44) | class INelContext
  function class (line 107) | class CApplicationContext : public INelContext
  function class (line 162) | class CLibraryContext : public INelContext

FILE: code/nel/include/nel/misc/array_2d.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/async_file_manager.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/base64.h
  function namespace (line 8) | namespace NLMISC

FILE: code/nel/include/nel/misc/big_file.h
  function class (line 38) | class CBigFile

FILE: code/nel/include/nel/misc/bit_mem_stream.h
  function namespace (line 24) | namespace NLMISC {
  type std (line 144) | typedef std::vector< TBMSSerialInfo > TBMSSerialInfoList;
  type TBMSDbgInfoData (line 150) | struct TBMSDbgInfoData
  function swap (line 208) | void swap(CBMSDbgInfo &other)
  function addSerial (line 218) | void	addSerial( uint32 bitpos, uint32 size, TBMSSerialInfo::TSerialType ...
  function addPoke (line 238) | void	addPoke( uint32 bitpos, uint32 size, TBMSSerialInfo::TSerialType ty...
  function setSymbolOfNextSerialEvent (line 275) | void	setSymbolOfNextSerialEvent( const char *symbol )
  function clear (line 285) | void	clear()
  function beginEventBrowsing (line 293) | void		beginEventBrowsing()
  function endEventBrowsing (line 302) | void		endEventBrowsing()
  function init (line 337) | void	init()
  function class (line 368) | class CBitMemStream : public CMemStream
  function virtual (line 434) | virtual void	invert()
  function virtual (line 455) | virtual void	clear()
  function fill (line 472) | void			fill( const uint8 *srcbuf, uint32 len )
  function virtual (line 480) | virtual uint8		*bufferToFill( uint32 msgsize )
  function serial (line 515) | void			serial( uint64& value, uint nbits )
  function _serialAndLog (line 622) | void			_serialAndLog(const char *argstr, uint8 &b) { serialAdaptAndLog( ...
  function _serialAndLog (line 623) | void			_serialAndLog(const char *argstr, sint8 &b) { serialAdaptAndLog( ...
  function _serialAndLog (line 624) | void			_serialAndLog(const char *argstr, uint16 &b) { serialAdaptAndLog(...
  function _serialAndLog (line 625) | void			_serialAndLog(const char *argstr, sint16 &b) { serialAdaptAndLog(...
  function _serialAndLog (line 626) | void			_serialAndLog(const char *argstr, uint32 &b) { serialAdaptAndLog(...
  function _serialAndLog (line 627) | void			_serialAndLog(const char *argstr, sint32 &b) { serialAdaptAndLog(...
  function _serialAndLog (line 628) | void			_serialAndLog(const char *argstr, uint64 &b) { serialAdapt64AndLo...
  function _serialAndLog (line 629) | void			_serialAndLog(const char *argstr, sint64 &b) { serialAdapt64AndLo...
  function _serialAndLog (line 631) | void			_serialAndLog(const char *argstr, double &b) { serialAdapt64AndLo...
  function _serialAndLog (line 632) | void			_serialAndLog(const char *argstr, bool &b) { _serialBitAndLog( ar...
  function virtual (line 634) | virtual void	_serialAndLog(const char *argstr, char &b) { serialAdaptAnd...
  function virtual (line 663) | virtual void			serialCont(std::vector<uint8> &cont) { serialVector(cont); }
  function virtual (line 665) | virtual void			serialCont(std::vector<sint8> &cont) { serialVector(cont); }
  function internalSerial (line 679) | void			internalSerial( uint64& value, uint nbits )
  function prepareNextByte (line 723) | void			prepareNextByte()
  function pointNextByte (line 740) | void			pointNextByte()
  function increaseBufferIfNecessary (line 761) | void			increaseBufferIfNecessary()

FILE: code/nel/include/nel/misc/bit_set.h
  function namespace (line 25) | namespace	NLMISC

FILE: code/nel/include/nel/misc/bitmap.h
  function namespace (line 29) | namespace NLMISC

FILE: code/nel/include/nel/misc/block_memory.h
  function namespace (line 27) | namespace NLMISC

FILE: code/nel/include/nel/misc/bsphere.h
  function namespace (line 26) | namespace NLMISC

FILE: code/nel/include/nel/misc/buf_fifo.h
  function namespace (line 29) | namespace NLMISC {

FILE: code/nel/include/nel/misc/callback.h
  function namespace (line 40) | namespace NLMISC {
  function TReturn (line 205) | TReturn callback(NLMISC_CALLBACK_ARGS_DECL) \
  function TReturn (line 211) | TReturn operator()(NLMISC_CALLBACK_ARGS_DECL) \

FILE: code/nel/include/nel/misc/cdb.h
  function namespace (line 30) | namespace NLMISC

FILE: code/nel/include/nel/misc/cdb_bank_handler.h
  function namespace (line 23) | namespace NLMISC{

FILE: code/nel/include/nel/misc/cdb_branch.h
  function namespace (line 26) | namespace NLMISC{

FILE: code/nel/include/nel/misc/cdb_branch_observing_handler.h
  function namespace (line 22) | namespace NLMISC{

FILE: code/nel/include/nel/misc/cdb_check_sum.h
  function namespace (line 26) | namespace NLMISC{

FILE: code/nel/include/nel/misc/cdb_leaf.h
  function namespace (line 27) | namespace NLMISC{

FILE: code/nel/include/nel/misc/cdb_manager.h
  function namespace (line 26) | namespace NLMISC{

FILE: code/nel/include/nel/misc/check_fpu.h
  function namespace (line 22) | namespace NLMISC

FILE: code/nel/include/nel/misc/class_id.h
  function namespace (line 24) | namespace	NLMISC
  function class (line 61) | class CClassIdHashMapTraits

FILE: code/nel/include/nel/misc/class_registry.h
  function namespace (line 27) | namespace	NLMISC

FILE: code/nel/include/nel/misc/cmd_args.h
  function namespace (line 28) | namespace NLMISC

FILE: code/nel/include/nel/misc/co_task.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/command.h
  function namespace (line 35) | namespace NLMISC {
  function virtual (line 404) | virtual bool execute(const std::string &rawCommandString, const std::str...
  function virtual (line 421) | virtual void fillCommandsHandlerList(NLMISC::TCommandHandlerClassInfo::T...
  function TCommandsTable (line 431) | const TCommandsTable &className##_getCommandsHandlerTable()	\
  function virtual (line 496) | virtual bool execute(const std::string &rawCommandString, const std::str...
  function virtual (line 509) | virtual void fillCommandsHandlerList(NLMISC::TCommandHandlerClassInfo::T...
  function class (line 559) | class CCommandRegistry
  type CSerialCommand (line 649) | struct CSerialCommand

FILE: code/nel/include/nel/misc/common.h
  type nameHWND__ (line 44) | struct nameHWND__
  type HWND__ (line 45) | struct HWND__
  type HWND (line 46) | typedef HWND nlWindow;
  type nlWindow (line 54) | typedef int nlWindow;
  function namespace (line 59) | namespace	NLMISC
  function degToRad (line 187) | inline float	degToRad( float deg )
  function radToDeg (line 195) | inline float	radToDeg( float rad )
  function isValidDouble (line 203) | inline double	isValidDouble (double v)
  function std (line 257) | inline std::string		&strlwr ( std::string &str )		{ str = toLower(str); ...
  function std (line 258) | inline std::string		 strlwr ( const std::string &str )	{ return toLower(...
  function std (line 260) | inline std::string		&strupr ( std::string &str )		{ str = toUpper(str); ...
  function std (line 261) | inline std::string		 strupr ( const std::string &str )	{ return toUpper(...
  function stricmp (line 272) | inline int stricmp(const char *lhs, const char *rhs) { return strcasecmp...
  function strnicmp (line 273) | inline int strnicmp(const char *lhs, const char *rhs, size_t n) { return...
  function sint (line 276) | inline sint nlstricmp(const char *lhs, const char *rhs) { return stricmp...
  function sint (line 277) | inline sint nlstricmp(const std::string &lhs, const std::string &rhs) { ...
  function sint (line 278) | inline sint nlstricmp(const std::string &lhs, const char *rhs) { return ...
  function sint (line 279) | inline sint nlstricmp(const char *lhs, const std::string &rhs) { return ...
  function class (line 292) | class Exception : public std::exception
  function nlisprint (line 622) | inline int nlisprint(int c)
  function favoid0 (line 638) | inline float	favoid0(float x)
  function davoid0 (line 643) | inline double	davoid0(double x)
  function T (line 650) | T		iavoid0(T x)

FILE: code/nel/include/nel/misc/config_file.h
  function class (line 110) | class CConfigFile

FILE: code/nel/include/nel/misc/contiguous_block_allocator.h
  function namespace (line 22) | namespace NLMISC

FILE: code/nel/include/nel/misc/cpu_time_stat.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/debug.h
  function namespace (line 30) | namespace NLMISC
  function class (line 952) | class CNLWarningOverride
  function class (line 974) | class CNLLogOverride
  function class (line 988) | class CNLSmartLogOverride

FILE: code/nel/include/nel/misc/di_event_emitter.h
  function namespace (line 43) | namespace NLMISC

FILE: code/nel/include/nel/misc/diff_tool.h
  function namespace (line 22) | namespace STRING_MANAGER
  type TGetWorksheetIdentifier (line 326) | struct TGetWorksheetIdentifier
  type TGetWorksheetHashValue (line 334) | struct TGetWorksheetHashValue
  type TTestWorksheetItem (line 342) | struct TTestWorksheetItem
  function const (line 348) | bool operator () (const TWorksheet::TRow &row) const
  type TWordsDiffContext (line 355) | struct TWordsDiffContext
  function uint64 (line 382) | uint64 operator()(const std::vector<ItemType> &container, uint index) const
  function const (line 395) | bool operator () (const ItemType &item) const
  type IDiffCallback (line 411) | struct IDiffCallback
  type CMakeDiff (line 526) | typedef CMakeDiff<TStringInfo, TStringDiffContext>		TStringDiff;
  type CMakeDiff (line 527) | typedef CMakeDiff<TPhrase, TPhraseDiffContext>			TPhraseDiff;
  type CMakeDiff (line 528) | typedef CMakeDiff<TWorksheet::TRow, TWordsDiffContext, TGetWorksheetIden...

FILE: code/nel/include/nel/misc/displayer.h
  function namespace (line 26) | namespace NLMISC

FILE: code/nel/include/nel/misc/dummy_window.h
  function namespace (line 43) | namespace NLMISC

FILE: code/nel/include/nel/misc/dynloadlib.h
  type HINSTANCE__ (line 25) | struct HINSTANCE__
  type HINSTANCE__ (line 26) | struct HINSTANCE__
  type HINSTANCE (line 27) | typedef HINSTANCE HMODULE;
  function namespace (line 32) | namespace NLMISC

FILE: code/nel/include/nel/misc/eid_translator.h
  function class (line 33) | class CEntityIdTranslator

FILE: code/nel/include/nel/misc/entity_id.h
  function namespace (line 25) | namespace NLMISC {
  function explicit (line 143) | explicit CEntityId (uint64 p)
  function explicit (line 186) | explicit CEntityId (const std::string &str)
  function explicit (line 191) | explicit CEntityId (const char *str)
  function setShortId (line 218) | void setShortId( uint64 shortId )
  function setDynamicId (line 230) | void setDynamicId( uint8 dynId )
  function setCreatorId (line 242) | void setCreatorId( uint8 creatorId )
  function setType (line 254) | void setType( uint8 type )
  function operator (line 280) | bool operator == (const CEntityId &a) const
  function operator (line 292) | bool operator != (const CEntityId &a) const
  function operator (line 297) | bool operator < (const CEntityId &a) const
  function operator (line 322) | bool operator > (const CEntityId &a) const
  function save (line 417) | void save(NLMISC::IStream &os)
  function load (line 434) | void load(NLMISC::IStream &is)
  function serial (line 453) | void serial (NLMISC::IStream &f) throw (NLMISC::EStream)
  function fromString (line 482) | void	fromString(const char *str)
  function getDebugString (line 503) | void getDebugString(std::string &str) const
  function const (line 576) | struct CEntityIdHashMapTraits

FILE: code/nel/include/nel/misc/enum_bitset.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/eval_num_expr.h
  function namespace (line 22) | namespace NLMISC

FILE: code/nel/include/nel/misc/event_emitter.h
  function namespace (line 26) | namespace NLMISC {

FILE: code/nel/include/nel/misc/event_emitter_multi.h
  function namespace (line 25) | namespace NLMISC {

FILE: code/nel/include/nel/misc/event_listener.h
  function namespace (line 25) | namespace NLMISC {

FILE: code/nel/include/nel/misc/event_server.h
  function namespace (line 26) | namespace NLMISC {

FILE: code/nel/include/nel/misc/events.h
  function namespace (line 26) | namespace NLMISC {
  type TKey (line 84) | enum TKey
  type TMouseButton (line 241) | enum TMouseButton
  type TKeyButton (line 252) | enum TKeyButton
  function class (line 263) | class CEventKey : public CEvent
  function class (line 283) | class CEventKeyDown : public CEventKey
  function virtual (line 294) | virtual	CEvent			*clone() const {return new CEventKeyDown(*this);}
  function class (line 300) | class CEventKeyUp : public CEventKey
  function virtual (line 309) | virtual	CEvent			*clone() const {return new CEventKeyUp(*this);}
  function class (line 315) | class CEventChar : public CEventKey
  function virtual (line 324) | virtual	CEvent			*clone() const {return new CEventChar(*this);}
  function setRaw (line 325) | void					setRaw( bool raw ) { _Raw = raw; }
  function class (line 336) | class CEventString : public CEventKey
  function class (line 352) | class CEventMouse : public CEvent
  function class (line 372) | class CEventMouseDown : public CEventMouse
  function class (line 387) | class CEventMouseUp : public CEventMouse
  function class (line 402) | class CEventMouseMove : public CEventMouse
  function class (line 417) | class CEventMouseDblClk : public CEventMouse
  function class (line 434) | class CEventMouseWheel : public CEventMouse
  function virtual (line 443) | virtual	CEvent			*clone() const {return new CEventMouseWheel(*this);}
  function class (line 450) | class CEventActivate : public CEvent
  function virtual (line 467) | virtual	CEvent			*clone() const {return new CEventActivate(*this);}
  function class (line 474) | class CEventSetFocus : public CEvent
  function virtual (line 491) | virtual	CEvent			*clone() const {return new CEventSetFocus(*this);}
  function class (line 498) | class CEventDestroyWindow : public CEvent
  function class (line 511) | class CEventCloseWindow : public CEvent
  function class (line 524) | class CEventIME : public CEvent
  function class (line 539) | class CEventDisplayChange : public CEvent
  function virtual (line 557) | virtual	CEvent			*clone() const {return new CEventDisplayChange(*this);}

FILE: code/nel/include/nel/misc/factory.h
  function namespace (line 30) | namespace NLMISC
  function BaseFactoryClass (line 239) | BaseFactoryClass *getFactory()

FILE: code/nel/include/nel/misc/fast_floor.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/fast_id_map.h
  function namespace (line 39) | namespace NLMISC {

FILE: code/nel/include/nel/misc/fast_mem.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/file.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/fixed_size_allocator.h
  function class (line 40) | class CFixedSizeAllocator

FILE: code/nel/include/nel/misc/game_device.h
  function namespace (line 26) | namespace NLMISC

FILE: code/nel/include/nel/misc/game_device_events.h
  function namespace (line 27) | namespace NLMISC
  function class (line 132) | class CGDAxisMoved : public CGameDeviceEvent
  function class (line 156) | class CGDSliderMoved : public CGameDeviceEvent
  function class (line 179) | class CGDPOVChanged : public CGameDeviceEvent

FILE: code/nel/include/nel/misc/geom_ext.h
  function namespace (line 28) | namespace NLMISC
  function class (line 71) | class CLineUV : public CLine
  function class (line 97) | class CLineColorUV : public CLine
  function class (line 132) | class CTriangleColor : public CTriangle
  function class (line 158) | class CTriangleUV : public CTriangle
  function class (line 184) | class CTriangleColorUV : public CTriangle
  function class (line 218) | class CQuadColor : public CQuad
  function class (line 244) | class CQuadUV : public CQuad
  function class (line 270) | class CQuadColorUV : public CQuad
  function class (line 297) | class CQuadColorUV2 : public CQuadColorUV

FILE: code/nel/include/nel/misc/grid_traversal.h
  function namespace (line 22) | namespace NLMISC

FILE: code/nel/include/nel/misc/gtk_displayer.h
  function namespace (line 31) | namespace NLMISC {

FILE: code/nel/include/nel/misc/heap_memory.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/hierarchical_timer.h
  function namespace (line 74) | namespace NLMISC
  type CStats (line 365) | struct CStats
  function CStats (line 391) | struct CTimerStat : public CStats
  function CStats (line 396) | struct CNodeStat : public CStats
  type CStatSorter (line 404) | struct CStatSorter
  function CExamStackEntry (line 417) | struct	CExamStackEntry
  function class (line 503) | class CAutoTimer
  function class (line 516) | class CAutoTimerInst

FILE: code/nel/include/nel/misc/historic.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/i18n.h
  function namespace (line 29) | namespace NLMISC {

FILE: code/nel/include/nel/misc/i_xml.h
  function namespace (line 31) | namespace NLMISC {

FILE: code/nel/include/nel/misc/input_device.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/input_device_manager.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/input_device_server.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/inter_window_msg_queue.h
  function namespace (line 47) | namespace NLMISC
  type std (line 221) | typedef std::map<CMsgQueueIdent, CInterWindowMsgQueue *> TMessageQueueMap;
  function class (line 225) | class COldMsgProc
  type std (line 234) | typedef std::map<HWND, COldMsgProc> TOldWinProcMap;

FILE: code/nel/include/nel/misc/keyboard_device.h
  function namespace (line 26) | namespace NLMISC

FILE: code/nel/include/nel/misc/line.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/log.h
  function class (line 43) | class CLog {

FILE: code/nel/include/nel/misc/matrix.h
  function namespace (line 25) | namespace	NLMISC

FILE: code/nel/include/nel/misc/md5.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/mem_displayer.h
  function namespace (line 27) | namespace NLMISC {

FILE: code/nel/include/nel/misc/mem_stream.h
  function namespace (line 29) | namespace NLMISC
  function virtual (line 293) | virtual const uint8		*buffer() const
  function virtual (line 305) | virtual void		resetBufPos() { _Buffer.Pos = 0; }
  function fill (line 312) | void			fill( const uint8 *srcbuf, uint32 len )
  function virtual (line 344) | virtual uint8		*bufferToFill( uint32 msgsize )
  function virtual (line 367) | virtual void	invert()
  function resetPtrTable (line 389) | void			resetPtrTable() { IStream::resetPtrTable() ; }
  function increaseBufferIfNecessary (line 393) | __forceinline
  function virtual (line 473) | virtual void			serialCont(std::vector<uint8> &cont) {IStream::serialCont...
  function virtual (line 475) | virtual void			serialCont(std::vector<sint8> &cont) {IStream::serialCont...
  function virtual (line 477) | virtual void			serialCont(std::vector<bool> &cont) {IStream::serialCont(...
  function virtual (line 555) | virtual uint			getDbgStreamSize() const;
  function uint32 (line 587) | inline uint32 atoui( const char *ident)
  function serial (line 601) | inline	void		CMemStream::serial(uint8 &b)
  function serial (line 621) | inline	void		CMemStream::serial(sint8 &b)
  function serial (line 641) | inline	void		CMemStream::serial(uint16 &b)
  function serial (line 662) | inline	void		CMemStream::serial(sint16 &b)
  function serial (line 682) | inline	void		CMemStream::serial(uint32 &b)
  function serial (line 703) | inline	void		CMemStream::serial(sint32 &b)
  function serial (line 723) | inline	void		CMemStream::serial(uint64 &b)
  function serial (line 743) | inline	void		CMemStream::serial(sint64 &b)
  function serial (line 763) | inline	void		CMemStream::serial(float &b)
  function serial (line 783) | inline	void		CMemStream::serial(double &b)
  function serial (line 803) | inline	void		CMemStream::serial(bool &b)
  function serial (line 818) | inline	void		CMemStream::serial(char &b)
  function serial (line 843) | inline	void		CMemStream::serial(std::string &b)
  function serial (line 907) | inline	void		CMemStream::serial(ucstring &b)
  function serialHex (line 948) | inline	void	CMemStream::serialHex(uint32 &b)
  function serial (line 967) | inline	void	CMemStream::serial( google::protobuf::Message* message )

FILE: code/nel/include/nel/misc/mouse_device.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/mouse_smoother.h
  function class (line 36) | class CMouseSmoother

FILE: code/nel/include/nel/misc/mutable_container.h
  function namespace (line 20) | namespace NLMISC

FILE: code/nel/include/nel/misc/mutex.h
  function class (line 87) | class CUnfairMutex
  function class (line 344) | class CFastMutexMP
  function class (line 439) | class CSharedMutex
  type TNelRtlCriticalSection (line 482) | struct TNelRtlCriticalSection {
  function class (line 519) | class CFairMutex
  type TMutexLocks (line 567) | struct TMutexLocks
  function class (line 627) | class CAccessor
  function class (line 682) | class CAccessor

FILE: code/nel/include/nel/misc/noise_value.h
  function namespace (line 26) | namespace NLMISC

FILE: code/nel/include/nel/misc/o_xml.h
  function namespace (line 32) | namespace NLMISC {

FILE: code/nel/include/nel/misc/object_arena_allocator.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/object_vector.h
  function namespace (line 38) | namespace NLMISC {

FILE: code/nel/include/nel/misc/p_thread.h
  function namespace (line 28) | namespace NLMISC {

FILE: code/nel/include/nel/misc/path.h
  function namespace (line 29) | namespace NLMISC {
  function class (line 339) | class CPath
  type CFile (line 564) | struct CFile

FILE: code/nel/include/nel/misc/plane.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/plane_inline.h
  function namespace (line 21) | namespace NLMISC

FILE: code/nel/include/nel/misc/polygon.h
  function namespace (line 28) | namespace NLMISC

FILE: code/nel/include/nel/misc/pool_memory.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/progress_callback.h
  function namespace (line 23) | namespace NLMISC {

FILE: code/nel/include/nel/misc/quad.h
  function namespace (line 24) | namespace NLMISC {

FILE: code/nel/include/nel/misc/quat.h
  function namespace (line 26) | namespace	NLMISC
  function set (line 87) | void	set(T X, T Y, T Z, T W)		{x= X; y= Y; z= Z; w= W;}
  function operator (line 92) | bool	operator==(const CQuatT& a) const		{return (x==a.x && y==a.y && z==...
  function identity (line 94) | void	identity()						{x = y = z = 0.0f ;	w = 1.0f; }
  function CQuatT (line 106) | CQuatT	operator*(T f) const			{return CQuatT(x*f,y*f,z*f,w*f);}
  function CQuatT (line 107) | CQuatT	operator/(T f) const			{double oof= 1.0/f; return CQuatT(x*oof,y*...
  function class (line 515) | class	CQuatD : public CQuatT<double>

FILE: code/nel/include/nel/misc/random.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/reader_writer.h
  function namespace (line 24) | namespace NLMISC {

FILE: code/nel/include/nel/misc/rect.h
  function namespace (line 23) | namespace NLMISC {

FILE: code/nel/include/nel/misc/report.h
  function namespace (line 22) | namespace NLMISC {

FILE: code/nel/include/nel/misc/resource_ptr.h
  function namespace (line 28) | namespace NLMISC

FILE: code/nel/include/nel/misc/resource_ptr_inline.h
  function namespace (line 23) | namespace	NLMISC

FILE: code/nel/include/nel/misc/rgba.h
  function namespace (line 26) | namespace NLMISC
  function class (line 370) | class CBGRA
  function operator (line 418) | bool	operator<(const CBGRA &c) const
  function operator (line 426) | bool	operator==(const CBGRA &c) const
  function CRGBA (line 466) | CRGBA blend(CRGBA c0, CRGBA c1, U blendFactor)
  function class (line 479) | class CRGBAF
  function operator (line 516) | operator CRGBA() const
  function CRGBAF (line 541) | CRGBAF operator+ (const CRGBAF& c) const
  function CRGBAF (line 551) | CRGBAF operator- (const CRGBAF& c) const
  function CRGBAF (line 561) | CRGBAF operator* (const CRGBAF& c) const
  function CRGBAF (line 571) | CRGBAF operator* (float f) const
  function CRGBAF (line 581) | CRGBAF operator/ (float f) const
  function CRGBAF (line 686) | inline CRGBAF operator* (float f, const CRGBAF& c)

FILE: code/nel/include/nel/misc/sha1.h
  function CHashKey (line 26) | struct CHashKey
  function serial (line 83) | void serial (NLMISC::IStream &stream)

FILE: code/nel/include/nel/misc/shared_memory.h
  function namespace (line 26) | namespace NLMISC {

FILE: code/nel/include/nel/misc/sheet_id.h
  function namespace (line 29) | namespace NLMISC {
  function class (line 248) | class CSheetIdHashMapTraits

FILE: code/nel/include/nel/misc/singleton.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/smart_ptr.h
  function namespace (line 28) | namespace NLMISC
  function class (line 88) | class CVirtualRefCount : public CRefCount
  function T (line 213) | T *getPtr() const { return Ptr;}
  function sint (line 222) | sint getNbRef() { if(Ptr) return Ptr->crefs; else return 0; }
  function serialPtr (line 228) | void serialPtr(NLMISC::IStream &f) throw(NLMISC::EStream )
  function serialPolyPtr (line 244) | void serialPolyPtr(NLMISC::IStream &f) throw(NLMISC::EStream )
  function serialPolyPtr (line 338) | void serialPolyPtr(NLMISC::IStream &f) throw(NLMISC::EStream )
  function class (line 472) | class IDbgPtrData
  function virtual (line 500) | virtual	~CDbgRefCount()
  function sint (line 522) | sint getDbgRef(const CDbgPtr<T>& ptr) const
  function sint (line 526) | sint getDbgRef(const CstCDbgPtr<T>& ptr) const
  function incRef (line 530) | void incRef(const CDbgPtr<T>& ptr) const
  function decRef (line 543) | void decRef(const CDbgPtr<T>& ptr) const
  function incRef (line 555) | void incRef(const CstCDbgPtr<T>& ptr) const
  function decRef (line 561) | void decRef(const CstCDbgPtr<T>& ptr) const
  function setCheckMax (line 566) | void setCheckMax(const bool checkOnOff) const
  function IDbgPtrData (line 594) | IDbgPtrData* getData() const { return Data; }
  function setNextReference (line 595) | void setNextReference(const CDbgPtr<T>* reference) const { NextReference...
  function CDbgPtr (line 596) | const CDbgPtr<T>* getNextReference() const { return NextReference; }
  function setPrevReference (line 597) | void setPrevReference(const CDbgPtr<T>* reference) const { PrevReference...
  function CDbgPtr (line 598) | const CDbgPtr<T>* getPrevReference() const { return PrevReference; }
  function T (line 654) | T* ptr() const
  function setNextReference (line 789) | void setNextReference(const CstCDbgPtr<T>* reference) const { NextRefere...
  function CstCDbgPtr (line 790) | const CstCDbgPtr<T>* getNextReference() const { return NextReference; }
  function setPrevReference (line 791) | void setPrevReference(const CstCDbgPtr<T>* reference) const { PrevRefere...
  function CstCDbgPtr (line 792) | const CstCDbgPtr<T>* getPrevReference() const { return PrevReference; }
  function T (line 840) | const T* ptr() const

FILE: code/nel/include/nel/misc/smart_ptr_inline.h
  function namespace (line 23) | namespace	NLMISC

FILE: code/nel/include/nel/misc/speaker_listener.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/sstring.h
  function namespace (line 29) | namespace	NLMISC
  function CSString (line 806) | inline bool CSString::operator==(const std::string &other) const
  function other (line 816) | inline bool CSString::operator!=(const CSString &other) const
  function CSString (line 821) | inline bool CSString::operator!=(const std::string &other) const
  function other (line 831) | inline bool CSString::operator<=(const CSString &other) const
  function CSString (line 836) | inline bool CSString::operator<=(const std::string &other) const
  function other (line 846) | inline bool CSString::operator>=(const CSString &other) const
  function CSString (line 851) | inline bool CSString::operator>=(const std::string &other) const
  function other (line 861) | inline bool CSString::operator>(const CSString &other) const
  function CSString (line 866) | inline bool CSString::operator>(const std::string &other) const
  function other (line 876) | inline bool CSString::operator<(const CSString &other) const
  function CSString (line 881) | inline bool CSString::operator<(const std::string &other) const
  function icompare (line 908) | inline bool CSString::icompare(const std::string &other) const
  function serial (line 913) | inline void CSString::serial( NLMISC::IStream& s )
  type CUnsensitiveSStringLessPred (line 997) | struct CUnsensitiveSStringLessPred

FILE: code/nel/include/nel/misc/static_map.h
  function namespace (line 34) | namespace NLMISC {
  function iterator (line 131) | iterator				begin()					{ endAdd(); return _Data.begin(); }
  function iterator (line 133) | iterator				end()					{ endAdd(); return _Data.end(); }
  function reverse_iterator (line 135) | reverse_iterator		rbegin()				{ endAdd(); return _Data.rbegin(); }
  function reverse_iterator (line 137) | reverse_iterator		rend()					{ endAdd(); return _Data.rend(); }
  function swap (line 151) | void swap (CStaticMap<Key, Typ, Comp>& __x)
  function reserve (line 159) | void reserve(size_type n)
  function add (line 164) | void add(const value_type& __v)
  function fromMap (line 170) | void fromMap (const std::map<Key, Typ, Comp> &m)
  function endAdd (line 180) | void endAdd()
  function del (line 189) | void del(iterator __position)
  function size_type (line 195) | size_type del(const key_type& __x)
  function del (line 201) | void del(iterator __first, iterator __last)
  function clear (line 207) | void clear()
  function iterator (line 214) | iterator find(const key_type& __x)
  function const_iterator (line 225) | const_iterator find(const key_type& __x) const
  function size_type (line 236) | size_type count(const key_type& __x) const

FILE: code/nel/include/nel/misc/stl_block_allocator.h
  function namespace (line 25) | namespace NLMISC {

FILE: code/nel/include/nel/misc/stl_block_list.h
  function namespace (line 26) | namespace NLMISC {

FILE: code/nel/include/nel/misc/stop_watch.h
  function namespace (line 26) | namespace NLMISC {

FILE: code/nel/include/nel/misc/stream.h
  function namespace (line 33) | namespace	NLMISC
  type TSeekOrigin (line 629) | enum TSeekOrigin { begin, current, end }
  function xmlPush (line 781) | bool xmlPush (const char *name)
  function xmlPushBegin (line 805) | bool xmlPushBegin (const char *name)
  function xmlPushEnd (line 822) | bool xmlPushEnd ()
  function xmlPop (line 839) | bool xmlPop ()
  function xmlSetAttrib (line 857) | bool xmlSetAttrib (const char *name)
  function xmlBreakLine (line 874) | bool xmlBreakLine ()
  function xmlComment (line 891) | bool xmlComment (const char *comment)
  function virtual (line 913) | virtual bool		xmlPushBeginInternal (const char * /* name */) { return tr...
  function virtual (line 916) | virtual bool		xmlPushEndInternal () { return true; }
  function virtual (line 919) | virtual bool		xmlPopInternal () { return true; }
  function virtual (line 922) | virtual bool		xmlSetAttribInternal (const char * /* name */) { return tr...
  function virtual (line 925) | virtual bool		xmlBreakLineInternal () { return true; }
  function virtual (line 928) | virtual	bool		xmlCommentInternal (const char * /* comment */) { return t...
  function checkStreamSize (line 952) | void				checkStreamSize(uint numBytes) const
  function virtual (line 971) | virtual void		serialBufferWithSize(uint8 *buf, uint32 len)
  type CHashMap (line 985) | typedef CHashMap<uint64, void*>::iterator	ItIdMap;
  type CHashMap (line 986) | typedef CHashMap<uint64, void*>::value_type	ValueIdMap;
  type typename (line 1001) | typedef typename T::value_type __value_type;
  type typename (line 1002) | typedef typename T::iterator __iterator;
  type typename (line 1091) | typedef typename T::value_type __value_type;
  type typename (line 1092) | typedef typename T::iterator __iterator;
  type typename (line 1158) | typedef typename T::value_type __value_type;
  type typename (line 1159) | typedef typename T::iterator __iterator;
  type typename (line 1226) | typedef typename T::value_type __value_type;
  type typename (line 1227) | typedef typename T::iterator __iterator;
  type typename (line 1271) | typedef typename T::value_type __value_type;
  type typename (line 1272) | typedef typename T::iterator __iterator;
  type typename (line 1303) | typedef typename T::key_type __key_type;
  type typename (line 1304) | typedef typename T::data_type __data_type;
  type typename (line 1305) | typedef typename T::iterator __iterator;
  type typename (line 1381) | typedef typename T::value_type __value_type;
  type typename (line 1382) | typedef typename T::iterator __iterator;
  type typename (line 1471) | typedef typename T::value_type __value_type;
  type typename (line 1472) | typedef typename T::key_type __key_type;
  type typename (line 1473) | typedef typename T::iterator __iterator;
  type typename (line 1563) | typedef typename T::value_type __value_type;
  type typename (line 1564) | typedef typename T::key_type __key_type;
  type typename (line 1565) | typedef typename T::iterator __iterator;
  type typename (line 1641) | typedef typename T::value_type::second_type __ptr_type;
  type typename (line 1642) | typedef typename __ptr_type::element_type __value_type;
  type typename (line 1643) | typedef typename T::key_type __key_type;
  type typename (line 1644) | typedef typename T::iterator __iterator;
  function class (line 1722) | class IStreamable : public IClassable

FILE: code/nel/include/nel/misc/stream_inline.h
  function namespace (line 26) | namespace	NLMISC

FILE: code/nel/include/nel/misc/string_common.h
  function _check (line 92) | inline void _check(int /* a */) { }
  function _check (line 93) | inline void _check(unsigned int /* a */) { }
  function _check (line 94) | inline void _check(char /* a */) { }
  function _check (line 95) | inline void _check(unsigned char /* a */) { }
  function _check (line 96) | inline void _check(long /* a */) { }
  function _check (line 97) | inline void _check(unsigned long /* a */) { }
  function _check (line 100) | inline void _check(uint8 /* a */) { }
  function _check (line 103) | inline void _check(sint8 /* a */) { }
  function _check (line 104) | inline void _check(uint16 /* a */) { }
  function _check (line 105) | inline void _check(sint16 /* a */) { }
  function _check (line 108) | inline void _check(uint32 /* a */) { }
  function _check (line 109) | inline void _check(sint32 /* a */) { }
  function _check (line 112) | inline void _check(uint64 /* a */) { }
  function _check (line 113) | inline void _check(sint64 /* a */) { }
  function _check (line 114) | inline void _check(float /* a */) { }
  function _check (line 115) | inline void _check(double /* a */) { }
  function _check (line 116) | inline void _check(const char * /* a */) { }
  function _check (line 117) | inline void _check(const void * /* a */) { }
  function std (line 153) | inline std::string toString(const char *format, ...)
  function string (line 165) | string toStringPtr(const T *val) { return toString("%p", val); }
  function string (line 167) | string toStringEnum(const T &val) { return toString("%u", (uint32)val); }
  function string (line 177) | string toString(const T &obj)
  function std (line 184) | inline std::string toString(const uint8 val) { return toString("%hu", (u...
  function std (line 185) | inline std::string toString(const sint8 val) { return toString("%hd", (s...
  function std (line 186) | inline std::string toString(const uint16 val) { return toString("%hu", v...
  function std (line 187) | inline std::string toString(const sint16 val) { return toString("%hd", v...
  function std (line 188) | inline std::string toString(const uint32 val) { return toString("%u", va...
  function std (line 189) | inline std::string toString(const sint32 val) { return toString("%d", va...
  function std (line 190) | inline std::string toString(const uint64 val) { return toString("%" NL_I...
  function std (line 191) | inline std::string toString(const sint64 val) { return toString("%" NL_I...
  function std (line 197) | inline std::string toString(const long unsigned int &val)
  function std (line 208) | inline std::string toString(const size_t &val) { return toString("%" NL_...
  function std (line 211) | inline std::string toString(const size_t &val) { return toString("%u", v...
  function std (line 214) | inline std::string toString(const float &val) { return toString("%f", va...
  function std (line 215) | inline std::string toString(const double &val) { return toString("%lf", ...
  function std (line 216) | inline std::string toString(const bool &val) { return toString("%u", val...
  function std (line 217) | inline std::string toString(const std::string &val) { return val; }
  function std (line 222) | inline std::string toString(const uint &val) { return toString("%u", val...
  function std (line 223) | inline std::string toString(const sint &val) { return toString("%d", val...
  function fromString (line 232) | inline bool fromString(const std::string &str, uint32 &val) { if (str.fi...
  function fromString (line 233) | inline bool fromString(const std::string &str, sint32 &val) { char *end;...
  function fromString (line 234) | inline bool fromString(const std::string &str, uint8 &val) { char *end; ...
  function fromString (line 235) | inline bool fromString(const std::string &str, sint8 &val) { char *end; ...
  function fromString (line 236) | inline bool fromString(const std::string &str, uint16 &val) { char *end;...
  function fromString (line 237) | inline bool fromString(const std::string &str, sint16 &val) { char *end;...
  function fromString (line 238) | inline bool fromString(const std::string &str, uint64 &val) { bool ret =...
  function fromString (line 239) | inline bool fromString(const std::string &str, sint64 &val) { bool ret =...
  function fromString (line 240) | inline bool fromString(const std::string &str, float &val) { bool ret = ...
  function fromString (line 241) | inline bool fromString(const std::string &str, double &val) { bool ret =...
  function fromString (line 243) | inline bool fromString(const std::string &str, bool &val)
  function fromString (line 269) | inline bool fromString(const char *str, uint32 &val) { if (strstr(str, "...
  function fromString (line 270) | inline bool fromString(const char *str, sint32 &val) { char *end; long v...
  function fromString (line 271) | inline bool fromString(const char *str, uint8 &val) { char *end; long v;...
  function fromString (line 272) | inline bool fromString(const char *str, sint8 &val) { char *end; long v;...
  function fromString (line 273) | inline bool fromString(const char *str, uint16 &val) { char *end; long v...
  function fromString (line 274) | inline bool fromString(const char *str, sint16 &val) { char *end; long v...
  function fromString (line 275) | inline bool fromString(const char *str, uint64 &val) { bool ret = sscanf...
  function fromString (line 276) | inline bool fromString(const char *str, sint64 &val) { bool ret = sscanf...
  function fromString (line 277) | inline bool fromString(const char *str, float &val) { bool ret = sscanf(...
  function fromString (line 278) | inline bool fromString(const char *str, double &val) { bool ret = sscanf...
  function fromString (line 280) | inline bool fromString(const char *str, bool &val)
  function fromString (line 303) | inline bool fromString(const std::string &str, std::string &val) { val =...
  function fromString (line 308) | inline bool fromString(const std::string &str, uint &val) { return sscan...
  function fromString (line 309) | inline bool fromString(const std::string &str, sint &val) { return sscan...

FILE: code/nel/include/nel/misc/string_conversion.h
  function namespace (line 25) | namespace NLMISC

FILE: code/nel/include/nel/misc/string_id_array.h
  function namespace (line 30) | namespace NLMISC {

FILE: code/nel/include/nel/misc/string_mapper.h
  function namespace (line 27) | namespace NLMISC
  function class (line 63) | class CStringMapper
  type uint (line 127) | typedef uint TSStringId;
  function class (line 135) | class CStaticStringMapper

FILE: code/nel/include/nel/misc/string_stream.h
  function namespace (line 24) | namespace NLMISC {
  function virtual (line 117) | virtual void			serialCont(std::vector<uint8> &cont) { serialVector(cont); }
  function virtual (line 119) | virtual void			serialCont(std::vector<sint8> &cont) { serialVector(cont); }

FILE: code/nel/include/nel/misc/system_info.h
  function namespace (line 24) | namespace NLMISC {

FILE: code/nel/include/nel/misc/system_utils.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/task_manager.h
  function namespace (line 29) | namespace NLMISC {

FILE: code/nel/include/nel/misc/tds.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/thread.h
  function namespace (line 24) | namespace NLMISC {

FILE: code/nel/include/nel/misc/time_nl.h
  function namespace (line 27) | namespace NLMISC

FILE: code/nel/include/nel/misc/timeout_assertion_thread.h
  function class (line 44) | class CTimeoutAssertionThread: public NLMISC::IRunnable
  function activate (line 91) | void activate()
  function deactivate (line 100) | void deactivate()
  function quit (line 108) | void quit()
  function timeout (line 115) | void timeout(uint32 to)

FILE: code/nel/include/nel/misc/traits_nl.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/triangle.h
  function namespace (line 23) | namespace NLMISC
  function namespace (line 29) | namespace NLMISC

FILE: code/nel/include/nel/misc/twin_map.h
  function namespace (line 23) | namespace NLMISC

FILE: code/nel/include/nel/misc/types_nl.h
  type sint8 (line 308) | typedef	signed		__int8		sint8;
  type uint8 (line 309) | typedef	unsigned	__int8		uint8;
  type sint16 (line 310) | typedef	signed		__int16		sint16;
  type uint16 (line 311) | typedef	unsigned	__int16		uint16;
  type sint32 (line 312) | typedef	signed		__int32		sint32;
  type uint32 (line 313) | typedef	unsigned	__int32		uint32;
  type sint64 (line 314) | typedef	signed		__int64		sint64;
  type uint64 (line 315) | typedef	unsigned	__int64		uint64;
  type sint (line 317) | typedef				int			sint;
  type uint (line 318) | typedef	unsigned	int			uint;
  type sint8 (line 329) | typedef	int8_t		sint8;
  type uint8 (line 330) | typedef	uint8_t		uint8;
  type sint16 (line 331) | typedef	int16_t		sint16;
  type uint16 (line 332) | typedef	uint16_t	uint16;
  type sint32 (line 333) | typedef	int32_t		sint32;
  type uint32 (line 334) | typedef	uint32_t	uint32;
  type sint64 (line 335) | typedef	int64_t		sint64;
  type uint64 (line 336) | typedef	uint64_t	uint64;
  type sint (line 338) | typedef				int			sint;
  type uint (line 339) | typedef	unsigned	int			uint;
  function aligned_free (line 384) | inline void aligned_free(void *ptr) { _aligned_free(ptr); }
  function aligned_free (line 388) | inline void aligned_free(void *ptr) { free(ptr); }
  function aligned_free (line 397) | inline void aligned_free(void *ptr) { free(ptr); }
  function aligned_free (line 401) | inline void aligned_free(void *ptr) { free(ptr); }
  function namespace (line 457) | namespace __gnu_cxx {
  type uint16 (line 490) | typedef	uint16	ucchar;

FILE: code/nel/include/nel/misc/ucstring.h
  type std (line 30) | typedef std::basic_string<ucchar> ucstringbase;
  function class (line 32) | class ucstring : public ucstringbase
  function ucchar (line 120) | const ucchar *c_str() const
  function toString (line 128) | void toString (std::string &str) const
  function fromUtf8 (line 199) | void fromUtf8(const std::string &stringUtf8)
  function ucstring (line 280) | static ucstring makeFromUtf8(const std::string &stringUtf8)
  function namespace (line 352) | namespace NLMISC

FILE: code/nel/include/nel/misc/uv.h
  function namespace (line 24) | namespace NLMISC
  function operator (line 64) | bool	operator<(const CUV &o) const
  function operator (line 70) | bool	operator==(const CUV &c) const {return (U==c.U) && (V==c.V);}
  function operator (line 71) | bool	operator!=(const CUV &c) const {return !(*this==c);}
  function serial (line 73) | void	serial(NLMISC::IStream &f)	{f.serial(U,V);}
  function CUV (line 77) | inline CUV operator * (float f, const CUV &uv)
  function CUV (line 83) | inline CUV operator * (const CUV &uv, float f)
  function CUV (line 89) | inline CUV blend(const CUV &uv0, const CUV &uv1, float lambda)
  function class (line 106) | class	CUVW
  function CUVW (line 119) | CUVW	operator*(float f) const
  function operator (line 129) | bool	operator<(const CUVW &o) const
  function operator (line 137) | bool	operator==(const CUVW &c) const {return (U==c.U) && (V==c.V) && (W=...
  function operator (line 138) | bool	operator!=(const CUVW &c) const {return !(*this==c);}
  function serial (line 140) | void	serial(NLMISC::IStream &f)	{f.serial(U,V,W);}

FILE: code/nel/include/nel/misc/value_smoother.h
  function namespace (line 25) | namespace NLMISC {
  function init (line 156) | void		init(uint n)
  function reset (line 168) | void		reset()
  function addValue (line 175) | void		addValue(bool dt)
  function class (line 210) | class CValueSmoother : public CValueSmootherTemplate<float>

FILE: code/nel/include/nel/misc/variable.h
  function namespace (line 26) | namespace NLMISC {
  function virtual (line 109) | virtual std::string toString(bool human) const \
  function class (line 136) | class IVariable : public ICommand
  function virtual (line 151) | virtual bool execute(const std::string &/* rawCommandString */, const st...
  function virtual (line 209) | virtual std::string toString (bool /* human */) const
  function virtual (line 251) | virtual std::string toString (bool /* human */) const
  function virtual (line 335) | virtual bool execute (const std::string &/* rawCommandString */, const s...
  function virtual (line 464) | virtual bool execute (const std::string &/* rawCommandString */, const s...
  function class (line 498) | class IVariableChangedCallback

FILE: code/nel/include/nel/misc/vector.h
  function class (line 39) | class CVector

FILE: code/nel/include/nel/misc/vector_2d.h
  function namespace (line 28) | namespace NLMISC
  function CVector2d (line 68) | CVector2d	operator*(double f) const			{return CVector2d(x*f, y*f);}
  function CVector2d (line 69) | CVector2d	operator/(double f) const			{return CVector2d(x/f, y/f);}
  function maxof (line 110) | void	maxof(const CVector2d &a, const CVector2d &b)
  function serial (line 116) | void	serial(NLMISC::IStream &f)				{f.serial(x,y);}

FILE: code/nel/include/nel/misc/vector_2f.h
  function namespace (line 27) | namespace NLMISC
  function CVector2f (line 70) | CVector2f	operator*(float f) const			{return CVector2f(x*f, y*f);}
  function CVector2f (line 71) | CVector2f	operator/(float f) const			{return CVector2f(x/f, y/f);}
  function maxof (line 112) | void	maxof(const CVector2f &a, const CVector2f &b)
  function serial (line 118) | void	serial(NLMISC::IStream &f)				{f.serial(x,y);}
  function operator (line 137) | inline bool operator < (const CVector2f &lhs, const CVector2f &rhs)

FILE: code/nel/include/nel/misc/vector_h.h
  function namespace (line 24) | namespace NLMISC {

FILE: code/nel/include/nel/misc/vector_inline.h
  function namespace (line 26) | namespace	NLMISC
  function normalize (line 111) | inline	void	CVector::normalize()
  function CVector (line 117) | inline	CVector	CVector::normed() const
  function v (line 136) | inline	bool	CVector::operator!=(const CVector &v) const
  function cartesianToSpheric (line 153) | inline	void	CVector::cartesianToSpheric(float &r, float &theta,float &ph...
  function sphericToCartesian (line 167) | inline	void	CVector::sphericToCartesian(float r, float theta,float phi)
  function minof (line 178) | inline	void	CVector::minof(const CVector &a, const CVector &b)
  function maxof (line 184) | inline	void	CVector::maxof(const CVector &a, const CVector &b)
  function serial (line 190) | inline	void	CVector::serial(IStream &f)

FILE: code/nel/include/nel/misc/vectord_inline.h
  function namespace (line 25) | namespace	NLMISC
  function normalize (line 110) | inline	void	CVectorD::normalize()
  function CVectorD (line 116) | inline	CVectorD	CVectorD::normed() const
  function v (line 135) | inline	bool	CVectorD::operator!=(const CVectorD &v) const
  function sphericToCartesian (line 157) | inline	void	CVectorD::sphericToCartesian(double r, double theta,double phi)
  function CVectorD (line 170) | inline CVectorD::operator CVector() const
  function copyTo (line 178) | inline	void CVectorD::copyTo(CVector &dest) const

FILE: code/nel/include/nel/misc/voter.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/misc/win32_util.h
  function namespace (line 26) | namespace NLMISC

FILE: code/nel/include/nel/misc/win_displayer.h
  function namespace (line 46) | namespace NLMISC {

FILE: code/nel/include/nel/misc/win_event_emitter.h
  function namespace (line 27) | namespace NLMISC {

FILE: code/nel/include/nel/misc/win_thread.h
  function namespace (line 25) | namespace NLMISC {

FILE: code/nel/include/nel/misc/window_displayer.h
  function namespace (line 28) | namespace NLMISC {

FILE: code/nel/include/nel/misc/words_dictionary.h
  function namespace (line 24) | namespace NLMISC {

FILE: code/nel/include/nel/misc/xml_auto_ptr.h
  function class (line 26) | class CXMLAutoPtr

FILE: code/nel/include/nel/misc/xml_pack.h
  function namespace (line 24) | namespace NLMISC

FILE: code/nel/include/nel/net/admin.h
  type CAlarm (line 36) | struct CAlarm
  type CGraphUpdate (line 47) | struct CGraphUpdate
  type std (line 72) | typedef std::vector<std::string> TAdminViewVarNames;
  type std (line 73) | typedef std::vector<std::string> TAdminViewValues;
  type SAdminViewRow (line 74) | struct SAdminViewRow

FILE: code/nel/include/nel/net/buf_client.h
  function namespace (line 26) | namespace NLNET {

FILE: code/nel/include/nel/net/buf_net_base.h
  function namespace (line 27) | namespace NLNET {

FILE: code/nel/include/nel/net/buf_server.h
  function namespace (line 31) | namespace NLNET {

FILE: code/nel/include/nel/net/buf_server_tcp.h
  type evconnlistener (line 31) | struct evconnlistener
  type event_base (line 32) | struct event_base
  function namespace (line 34) | namespace NLNET {

FILE: code/nel/include/nel/net/buf_server_tcp_func.h
  type TcpListenArgs (line 33) | struct TcpListenArgs

FILE: code/nel/include/nel/net/buf_server_websocket.h
  type evconnlistener (line 31) | struct evconnlistener
  type event_base (line 32) | struct event_base
  function namespace (line 34) | namespace NLNET {

FILE: code/nel/include/nel/net/buf_server_websocket_func.h
  function namespace (line 28) | namespace NLNET {

FILE: code/nel/include/nel/net/buf_sock.h
  type bufferevent (line 29) | struct  bufferevent
  function namespace (line 31) | namespace NLNET {
  function class (line 352) | class CServerBufSock : public CNonBlockingBufSock

FILE: code/nel/include/nel/net/callback_client.h
  function namespace (line 25) | namespace NLNET {

FILE: code/nel/include/nel/net/callback_net_base.h
  function namespace (line 37) | namespace NLNET {

FILE: code/nel/include/nel/net/callback_server.h
  function namespace (line 26) | namespace NLNET {

FILE: code/nel/include/nel/net/callback_server_tcp.h
  function namespace (line 26) | namespace NLNET {

FILE: code/nel/include/nel/net/callback_server_websocket.h
  function namespace (line 26) | namespace NLNET {

FILE: code/nel/include/nel/net/dummy_tcp_sock.h
  function namespace (line 24) | namespace NLNET {

FILE: code/nel/include/nel/net/email.h
  function namespace (line 25) | namespace NLNET {

FILE: code/nel/include/nel/net/inet_address.h
  type sockaddr_in (line 26) | struct sockaddr_in
  type in_addr (line 27) | struct in_addr
  function namespace (line 35) | namespace NLMISC
  type ESocket (line 44) | struct ESocket

FILE: code/nel/include/nel/net/listen_sock.h
  function namespace (line 23) | namespace NLNET

FILE: code/nel/include/nel/net/login_client.h
  function namespace (line 28) | namespace NLNET
  type std (line 52) | typedef std::vector<CShardEntry> TShardList;

FILE: code/nel/include/nel/net/login_cookie.h
  function namespace (line 26) | namespace NLNET {

FILE: code/nel/include/nel/net/login_server.h
  function namespace (line 28) | namespace NLMISC
  function namespace (line 33) | namespace NLNET

FILE: code/nel/include/nel/net/message.h
  function namespace (line 26) | namespace NLNET
  function uint32 (line 103) | uint32 getHeaderSize () const;
  function virtual (line 227) | virtual const uint8		*buffer() const
  function invert (line 257) | void invert()
  function setDefaultStringMode (line 294) | static void	setDefaultStringMode( bool stringmode ) { _DefaultStringMode...

FILE: code/nel/include/nel/net/message_recorder.h
  function namespace (line 31) | namespace NLNET {
  function class (line 107) | class CMessageRecorder

FILE: code/nel/include/nel/net/module.h
  function namespace (line 30) | namespace NLNET
  function class (line 113) | class EInvokeFailed : public NLMISC::Exception
  function class (line 118) | class EInvokeBadReturn : public NLMISC::Exception
  function virtual (line 124) | virtual ~IModule() {}
  function virtual (line 146) | virtual const std::string	&getModuleName() const =0;
  type TModuleSocketEvent (line 276) | enum TModuleSocketEvent
  type TSecurityData (line 305) | struct TSecurityData
  function TSecurityData (line 340) | struct TUnknownSecurityData : public TSecurityData
  function class (line 372) | class IModuleProxy : public NLMISC::CRefCount
  function class (line 561) | class IModuleFactory : public NLMISC::CRefCount
  type std (line 660) | typedef std::set<IModuleSocket *> 	TModuleSockets;
  type std (line 664) | typedef std::list<IModuleInterceptable*>	TInterceptors;
  type std (line 670) | typedef std::list<std::pair<IModuleProxy *, CMessage> >	TMessageList;
  type std (line 673) | typedef std::list<CModuleTask*> TModuleTasks;
  type std (line 677) | typedef std::vector<IModuleProxy*>	TInvokeStack;
  function std (line 711) | const std::string	&getCommandHandlerName() const;
  function class (line 810) | class CModuleProxy : public IModuleProxy
  function sendMessage (line 901) | void sendMessage(IModule *sender, const PtrContainer &addresseeProxies, ...

FILE: code/nel/include/nel/net/module_builder_parts.h
  function namespace (line 24) | namespace NLNET
  type TModuleClassPred (line 226) | struct TModuleClassPred

FILE: code/nel/include/nel/net/module_common.h
  function namespace (line 24) | namespace NLNET

FILE: code/nel/include/nel/net/module_gateway.h
  function namespace (line 27) | namespace NLNET

FILE: code/nel/include/nel/net/module_manager.h
  function namespace (line 26) | namespace NLNET

FILE: code/nel/include/nel/net/module_message.h
  function namespace (line 26) | namespace NLNET

FILE: code/nel/include/nel/net/module_socket.h
  function namespace (line 24) | namespace NLNET

FILE: code/nel/include/nel/net/naming_client.h
  function namespace (line 30) | namespace NLNET {

FILE: code/nel/include/nel/net/net_displayer.h
  function namespace (line 25) | namespace NLNET {

FILE: code/nel/include/nel/net/net_log.h
  function namespace (line 25) | namespace NLNET {

FILE: code/nel/include/nel/net/net_manager.h
  function namespace (line 45) | namespace NLNET {

FILE: code/nel/include/nel/net/pacs_client.h
  function namespace (line 31) | namespace NLNET

FILE: code/nel/include/nel/net/service.h
  function namespace (line 40) | namespace NLMISC
  type HINSTANCE__ (line 53) | struct HINSTANCE__
  type HINSTANCE__ (line 54) | struct HINSTANCE__
  type CHAR (line 56) | typedef char CHAR;
  type CHAR (line 57) | typedef CHAR *LPSTR;
  function namespace (line 60) | namespace NLNET
  function class (line 542) | class IServiceUpdatable
  function IService (line 571) | inline IService *IService::getInstance()

FILE: code/nel/include/nel/net/sock.h
  function namespace (line 26) | namespace NLNET {

FILE: code/nel/include/nel/net/tcp_sock.h
  function namespace (line 23) | namespace NLNET {

FILE: code/nel/include/nel/net/transport_class.h
  function namespace (line 37) | namespace NLNET {

FILE: code/nel/include/nel/net/udp_sim_sock.h
  function namespace (line 27) | namespace NLNET {

FILE: code/nel/include/nel/net/udp_sock.h
  function namespace (line 23) | namespace NLNET {

FILE: code/nel/include/nel/net/unified_network.h
  function namespace (line 31) | namespace NLNET {
  type TNameMappedConnection (line 439) | struct TNameMappedConnection
  type std (line 442) | typedef std::map<std::string, TUnifiedMsgCallback>			TMsgMappedCallback;
  type std (line 445) | typedef std::pair<TUnifiedNetCallback, void *>				TCallbackArgItem;
  type CHashMap (line 448) | typedef CHashMap<std::string, std::list<TCallbackArgItem> >	TNameMappedC...
  function class (line 451) | class CUnifiedConnection
  function reset (line 556) | void reset()
  function setupNetworkAssociation (line 578) | void setupNetworkAssociation (const std::vector<uint32> &networkAssociat...

FILE: code/nel/include/nel/net/unitime.h
  function namespace (line 25) | namespace NLNET

FILE: code/nel/include/nel/net/varpath.h
  function class (line 22) | class CVarPath
  function empty (line 40) | bool empty ()

FILE: code/nel/samples/georges/main.cpp
  type TPositionData (line 44) | struct TPositionData
    method serial (line 49) | void serial(NLMISC::IStream &f)
  type TSampleConfig (line 57) | struct TSampleConfig
    method readGeorges (line 60) | void readGeorges (const NLMISC::CSmartPtr<NLGEORGES::UForm> &form, con...
    method readGeorges (line 65) | void readGeorges (const NLMISC::CSmartPtr<NLGEORGES::UForm> &form, con...
    method readForm (line 70) | void readForm(const NLMISC::CSmartPtr<NLGEORGES::UForm> &form)
    method serial (line 108) | void serial(NLMISC::IStream &f)
    method removed (line 117) | void removed()
    method uint (line 123) | static uint getVersion() { return 1; }
  function main (line 137) | int main(void)

FILE: code/nel/samples/misc/configfile/main.cpp
  function mainCallback (line 40) | void mainCallback ()
  function var12Callback (line 47) | void var12Callback (CConfigFile::CVar &var)
  function main (line 61) | int main (int /* argc */, char ** /* argv */)

FILE: code/nel/samples/misc/debug/main.cpp
  function main (line 25) | int main (int /* argc */, char ** /* argv */)

FILE: code/nel/samples/misc/i18n/main.cpp
  function main (line 32) | int main (int argc, char **argv)

FILE: code/nel/samples/misc/log/main.cpp
  function main (line 43) | int main (int /* argc */, char ** /* argv */)

FILE: code/nel/samples/misc/strings/main.cpp
  function main (line 28) | int main (int argc, char **argv)

FILE: code/nel/samples/misc/types_check/main.cpp
  function check (line 32) | bool check (T value)
  function checkInts (line 67) | void checkInts ()
  function main (line 94) | int main (int argc, char **argv)

FILE: code/nel/samples/net/chat/client.cpp
  function serverSentChat (line 70) | void serverSentChat (CMessage &msgin, TSockId from, CCallbackNetBase &ne...
  function main (line 89) | int main (int argc, char **argv)

FILE: code/nel/samples/net/chat/kbhit.cpp
  type termios (line 23) | struct termios
  function init_keyboard (line 26) | void init_keyboard()
  function close_keyboard (line 38) | void close_keyboard()
  function kbhit (line 43) | int kbhit()
  function getch (line 64) | int getch()

FILE: code/nel/samples/net/chat/server.cpp
  function clientWantsToConnect (line 48) | void clientWantsToConnect ( TSockId from, void *arg )
  function clientWantsToDisconnect (line 55) | void clientWantsToDisconnect ( TSockId from, void *arg )
  function clientSentChat (line 67) | void clientSentChat (CMessage &msgin, TSockId from, CCallbackNetBase &ne...
  class CChatService (line 90) | class CChatService : public IService
    method init (line 94) | void init ()
    method update (line 104) | bool update ()
    method release (line 115) | void release ()

FILE: code/nel/samples/net/class_transport/ai_service.cpp
  type CSharedClass (line 60) | struct CSharedClass : public CTransportClass
    method CSharedClass (line 72) | CSharedClass () : i1(20), i2(20), f1(20), str("str20"), eid (5, 151566...
    method description (line 74) | virtual void description ()
    method callback (line 86) | virtual void callback (const string &name, uint8 sid)
  function cbUpService (line 100) | static void cbUpService (const std::string &serviceName, uint16 sid, voi...
  type CAIService (line 111) | struct CAIService : public IService
    method init (line 113) | void init()
    method release (line 125) | void release ()

FILE: code/nel/samples/net/class_transport/gd_service.cpp
  type CSharedClass (line 60) | struct CSharedClass : public CTransportClass
    method CSharedClass (line 71) | CSharedClass () : i1(10), i2(10), i3(10), f1(10), str("str10") { vi1.p...
    method description (line 73) | virtual void description ()
    method callback (line 85) | virtual void callback (const string &name, uint8 sid)
  function cbUpService (line 101) | static void cbUpService (const std::string &serviceName, uint16 sid, voi...
  type CGDService (line 112) | struct CGDService : public IService
    method init (line 114) | void init()
    method release (line 126) | void release ()

FILE: code/nel/samples/net/login_system/client.cpp
  function main (line 68) | int main (int argc, char **argv)

FILE: code/nel/samples/net/login_system/frontend_service.cpp
  function onConnectionClient (line 62) | void onConnectionClient (TSockId from, const CLoginCookie &cookie)
  function onDisconnectClient (line 74) | void onDisconnectClient (TSockId from, void *arg)
  class CFrontEndService (line 85) | class CFrontEndService : public IService
    method init (line 96) | void init()
    method update (line 114) | bool	update()
    method init (line 143) | void init()
    method update (line 173) | bool	update()
  class CFrontEndService (line 132) | class CFrontEndService : public IService
    method init (line 96) | void init()
    method update (line 114) | bool	update()
    method init (line 143) | void init()
    method update (line 173) | bool	update()

FILE: code/nel/samples/net/multi_shards/client.cpp
  function main (line 51) | void main (int argc, char **argv)

FILE: code/nel/samples/net/multi_shards/frontend_service.cpp
  function onConnectionClient (line 42) | void onConnectionClient (TSockId from, const CLoginCookie &cookie)
  function onDisconnectClient (line 54) | void onDisconnectClient (TSockId from, void *arg)
  class CFrontEndService (line 65) | class CFrontEndService : public IService
    method init (line 76) | void init()
    method update (line 96) | bool	update()

FILE: code/nel/samples/net/net_layer3/client.cpp
  function cbPong (line 52) | void cbPong( CMessage& msgin, TSockId from, CCallbackNetBase& client )
  function main (line 81) | void main( int argc, char **argv )

FILE: code/nel/samples/net/net_layer3/frontend_service.cpp
  function cbPing (line 66) | void cbPing( CMessage& msgin, TSockId from, CCallbackNetBase& frontendse...
  function discCallback (line 88) | void discCallback( TSockId from, void *p )
  function cbPong (line 121) | void cbPong( CMessage& msgin, TSockId from, CCallbackNetBase& clientofth...
  class CFrontEndService (line 162) | class CFrontEndService : public IService
    method init (line 169) | void init()
    method update (line 186) | bool update()
    method release (line 195) | void release()

FILE: code/nel/samples/net/net_layer3/ping_service.cpp
  function cbPing (line 48) | void cbPing( CMessage& msgin, TSockId from, CCallbackNetBase& server )

FILE: code/nel/samples/net/net_layer4/client.cpp
  function cbPong (line 54) | void cbPong( CMessage& msgin, TSockId from, CCallbackNetBase& client )
  function main (line 84) | void main( int argc, char **argv )

FILE: code/nel/samples/net/net_layer4/frontend_service.cpp
  function cbPing (line 65) | void cbPing( CMessage& msgin, TSockId from, CCallbackNetBase& frontendse...
  function cbPong (line 97) | void cbPong( CMessage& msgin, TSockId from, CCallbackNetBase& clientofth...
  function onDisconnectPS (line 125) | void onDisconnectPS( const std::string &serviceName, TSockId from, void ...
  function onReconnectPS (line 141) | void onReconnectPS( const std::string &serviceName, TSockId from, void *...
  function onDisconnectClient (line 162) | void onDisconnectClient( const std::string &serviceName, TSockId from, v...
  class CFrontEndService (line 203) | class CFrontEndService : public IService
    method init (line 210) | void init()

FILE: code/nel/samples/net/net_layer4/ping_service.cpp
  function cbPing (line 51) | void cbPing( CMessage& msgin, TSockId from, CCallbackNetBase& server )

FILE: code/nel/samples/net/net_layer5/flood_service.cpp
  function cbPong (line 45) | void cbPong(CMessage &msgin, const std::string &serviceName, TServiceId ...
  function sendPing (line 57) | void sendPing(uint i)
  class CPinger (line 68) | class CPinger : public IRunnable
    method CPinger (line 75) | CPinger()
    method run (line 80) | void	run()
  function cbPos (line 106) | void cbPos(CMessage &msgin, const std::string &serviceName, TServiceId sid)
  function cbAckPos (line 114) | void cbAckPos(CMessage &msgin, const std::string &serviceName, TServiceI...
  function cbUpPS (line 120) | void cbUpPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownPS (line 125) | void cbDownPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbUpService (line 131) | void cbUpService(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownService (line 136) | void cbDownService(const std::string &serviceName, TServiceId sid, void ...
  class CFloodService (line 154) | class CFloodService : public IService
    method update (line 158) | bool	update()
    method init (line 167) | void init()

FILE: code/nel/samples/net/net_layer5/frontend_service.cpp
  function cbPong (line 68) | void cbPong(CMessage &msgin, const std::string &serviceName, TServiceId ...
  function sendPing (line 77) | void sendPing()
  function cbPos (line 88) | void cbPos(CMessage &msgin, const std::string &serviceName, TServiceId sid)
  function sendRequestVision (line 110) | void sendRequestVision ()
  function cbVision (line 119) | void cbVision(CMessage &msgin, const std::string &serviceName, TServiceI...
  function sendPos (line 145) | void sendPos()
  function cbUpGPMS (line 153) | void cbUpGPMS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbUpPS (line 161) | void cbUpPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownPS (line 168) | void cbDownPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbUpService (line 174) | void cbUpService(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownService (line 179) | void cbDownService(const std::string &serviceName, TServiceId sid, void ...
  class CFrontEndService (line 199) | class CFrontEndService : public NLNET::IService
    method update (line 203) | bool	update()
    method init (line 238) | void init()

FILE: code/nel/samples/net/net_layer5/gpm_service.cpp
  function cbPong (line 45) | void cbPong(CMessage &msgin, const std::string &serviceName, TServiceId ...
  function sendPing (line 54) | void sendPing()
  function cbPos (line 66) | void cbPos(CMessage &msgin, const std::string &serviceName, TServiceId sid)
  function cbAskVision (line 92) | void cbAskVision(CMessage &msgin, const std::string &serviceName, TServi...
  function cbUpPS (line 137) | void cbUpPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownPS (line 143) | void cbDownPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbUpFS (line 149) | void cbUpFS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownFS (line 155) | void cbDownFS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbUpService (line 161) | void cbUpService(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownService (line 171) | void cbDownService(const std::string &serviceName, TServiceId sid, void ...
  function cbVar (line 187) | void cbVar (CConfigFile::CVar &var)
  class CGPMService (line 194) | class CGPMService : public IService
    method update (line 198) | bool	update()
    method init (line 218) | void init()

FILE: code/nel/samples/net/net_layer5/ping_service.cpp
  function cbPing (line 52) | void cbPing(CMessage &msgin, const std::string &serviceName, TServiceId ...
  function cbUpService (line 68) | void cbUpService(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownService (line 79) | void cbDownService(const std::string &serviceName, TServiceId sid, void ...
  class CPingService (line 95) | class CPingService : public IService
    method init (line 102) | void init()

FILE: code/nel/samples/net/net_layer5/player_service.cpp
  function cbPong (line 45) | void cbPong(CMessage &msgin, const std::string &serviceName, TServiceId ...
  function sendPing (line 55) | void sendPing()
  function cbPos (line 67) | void cbPos(CMessage &msgin, const std::string &serviceName, TServiceId sid)
  function cbAckPos (line 75) | void cbAckPos(CMessage &msgin, const std::string &serviceName, TServiceI...
  function cbUpPS (line 81) | void cbUpPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownPS (line 88) | void cbDownPS(const std::string &serviceName, TServiceId sid, void *arg)
  function cbUpService (line 94) | void cbUpService(const std::string &serviceName, TServiceId sid, void *arg)
  function cbDownService (line 99) | void cbDownService(const std::string &serviceName, TServiceId sid, void ...
  class CPlayerService (line 117) | class CPlayerService : public IService
    method update (line 121) | bool	update()
    method init (line 140) | void init()

FILE: code/nel/samples/net/service/chat_service.cpp
  class CChatService (line 50) | class CChatService : public IService
    method init (line 56) | void init ()
    method update (line 66) | bool update ()
    method release (line 111) | void release ()
  function cbChat (line 126) | static void cbChat (CMessage &msgin, const std::string &serviceName, TSe...

FILE: code/nel/samples/net/udp/bench_service.cpp
  type CClient (line 66) | struct CClient
    method CClient (line 68) | CClient (TSockId from, uint32 session, const string &cn) : From(from),...
  type TInetAddressHash (line 97) | struct TInetAddressHash
  function string (line 154) | string getDate()
  function cbInit (line 175) | void cbInit (CMessage &msgin, TSockId from, CCallbackNetBase &netbase)
  function cbDisconnect (line 208) | void cbDisconnect (TSockId from, void *arg)
  function updateStat (line 470) | void updateStat ()
  function removeClientByAddr (line 492) | void removeClientByAddr( TClientMap::iterator iclient )
  function handleReceivedPong (line 513) | void handleReceivedPong (CClient *client, sint64 pongTime)
  function sendPing (line 586) | void sendPing ()
  class CBenchService (line 628) | class CBenchService : public IService
    method init (line 632) | void init()
    method update (line 666) | bool update ()
    method release (line 744) | void release ()

FILE: code/nel/samples/net/udp/client.cpp
  function exit (line 100) | void exit (const string &reason)
  function createConfigFile (line 113) | void createConfigFile()
  function checkConnectionName (line 134) | void checkConnectionName ()
  function loadConfigFile (line 160) | void loadConfigFile ()
  function cbInfo (line 208) | void cbInfo (CMessage &msgin, TSockId from, CCallbackNetBase &netbase)
  function cbInit (line 224) | void cbInit (CMessage &msgin, TSockId from, CCallbackNetBase &netbase)
  function cbStart (line 242) | void cbStart (CMessage &msgin, TSockId from, CCallbackNetBase &netbase)
  function cbDisconnect (line 249) | void cbDisconnect (TSockId from, void *arg)
  function main (line 266) | int main( int argc, char **argv )

FILE: code/nel/samples/net/udp/graph.h
  function class (line 43) | class CGraph

FILE: code/nel/samples/net/udp/receive_task.h
  type TReceivedMessage (line 37) | struct TReceivedMessage
  function setTypeEvent (line 55) | void				setTypeEvent( TEventType t )	{ *_Data.begin() = (uint8)t; }
  function setDate (line 57) | void				setDate()	{ *(sint64*)&(*(_Data.begin()+1)) = NLMISC::CTime::get...
  function sint64 (line 59) | sint64				getDate()	{ return *(sint64*)&(*(_Data.begin()+1)); }
  function uint8 (line 65) | uint8				*userDataW()					{ return &*_Data.begin() + MsgHeaderSize; }
  function uint8 (line 68) | const uint8			*userDataR() const				{ return &*_Data.begin() + MsgHeader...
  function uint32 (line 71) | uint32				userSize()						{ return (uint32)_Data.size() - MsgHeaderSize; }
  function class (line 97) | class CReceiveTask : public NLMISC::IRunnable

FILE: code/nel/samples/net/udp/simlag.cpp
  type CBufferizedPacket (line 51) | struct CBufferizedPacket
    method CBufferizedPacket (line 53) | CBufferizedPacket (CUdpSock *client, const uint8 *packet, uint32 packe...
  function updateBufferizedPackets (line 109) | void updateBufferizedPackets ()
  function setSimlagValues (line 129) | void setSimlagValues (sint32 lag, sint8 packetLoss, sint8 packetDuplicat...
  function sendUDPNow (line 137) | void sendUDPNow (CUdpSock *client, const uint8 *packet, uint32 packetSiz...
  function sendUDP (line 148) | void sendUDP (CUdpSock *client, const uint8 *packet, uint32 packetSize, ...

FILE: code/nel/samples/net/udp_ping/client.cpp
  function main (line 42) | int main (int argc, char **argv)

FILE: code/nel/samples/net/udp_ping/udp_service.cpp
  class CBenchService (line 44) | class CBenchService : public IService
    method init (line 48) | void init()
    method update (line 57) | bool update ()
    method release (line 86) | void release ()

FILE: code/nel/src/georges/form.cpp
  type NLGEORGES (line 29) | namespace NLGEORGES
    function warning (line 36) | void warning (bool exception, const char *format, ... )
    function UFormElm (line 69) | UFormElm& CForm::getRootNode ()
    function UFormElm (line 76) | const UFormElm& CForm::getRootNode () const
    class NLMISC::IStream (line 262) | class NLMISC::IStream
    function CForm (line 307) | CForm *CForm::getParent (uint parent) const
    function uint (line 321) | uint CForm::getParentCount () const
    function uint (line 386) | uint CForm::getNumParent () const
    function UForm (line 393) | UForm *CForm::getParentForm (uint parent) const

FILE: code/nel/src/georges/form_dfn.cpp
  type NLGEORGES (line 35) | namespace NLGEORGES
    function uint (line 343) | uint CFormDfn::countParentDfn (uint32 round) const
    function uint (line 406) | uint CFormDfn::getNumParent () const
    function CFormDfn (line 413) | CFormDfn *CFormDfn::getParent (uint parent) const
    function string (line 420) | const string& CFormDfn::getParentFilename (uint parent) const
    function uint (line 427) | uint CFormDfn::getNumEntry () const
    function CType (line 571) | CType *CFormDfn::CEntry::getTypePtr ()
    function CFormDfn (line 578) | CFormDfn *CFormDfn::CEntry::getDfnPtr ()
    function CType (line 585) | const CType *CFormDfn::CEntry::getTypePtr () const
    function CFormDfn (line 592) | const CFormDfn *CFormDfn::CEntry::getDfnPtr () const
    function CFormDfn (line 599) | CFormDfn *CFormDfn::getSubDfn (uint index, uint &dfnIndex)
    function CFormDfn (line 626) | const CFormDfn *CFormDfn::getSubDfn (uint index, uint &dfnIndex) const
    function uint (line 804) | uint CFormDfn::getNumParents () const

FILE: code/nel/src/georges/form_elm.cpp
  type NLGEORGES (line 31) | namespace NLGEORGES
    function CType (line 231) | const CType* CFormElm::getType ()
    function CForm (line 352) | CForm *CFormElm::getForm () const
    function UFormElm (line 588) | UFormElm *CFormElm::getParent () const
    function UFormDfn (line 1767) | UFormDfn *CFormElmStruct::getStructDfn ()
    function xmlNodePtr (line 1790) | xmlNodePtr  CFormElmStruct::write (xmlNodePtr root, const CForm *form,...
    function xmlNodePtr (line 2145) | xmlNodePtr  CFormElmVirtualStruct::write (xmlNodePtr root, const CForm...
    function xmlNodePtr (line 2570) | xmlNodePtr CFormElmArray::write (xmlNodePtr root, const CForm *form, c...
    function CType (line 2819) | const CType* CFormElmAtom::getType ()
    function xmlNodePtr (line 2982) | xmlNodePtr  CFormElmAtom::write (xmlNodePtr root, const CForm *form, c...

FILE: code/nel/src/georges/form_loader.cpp
  type NLGEORGES (line 33) | namespace NLGEORGES
    function UFormLoader (line 44) | UFormLoader *UFormLoader::createLoader ()
    function CType (line 63) | CType *CFormLoader::loadType (const char *filename)
    function CFormDfn (line 133) | CFormDfn *CFormLoader::loadFormDfn (const char *filename, bool forceLoad)
    function UForm (line 199) | UForm *CFormLoader::loadForm (const char *filename)
    function UFormDfn (line 296) | UFormDfn *CFormLoader::loadFormDfn (const char *filename)
    function UType (line 303) | UType *CFormLoader::loadFormType (const char *filename)

FILE: code/nel/src/georges/header.cpp
  type NLGEORGES (line 27) | namespace NLGEORGES

FILE: code/nel/src/georges/type.cpp
  type NLGEORGES (line 33) | namespace NLGEORGES
    class CMyEvalNumExpr (line 321) | class CMyEvalNumExpr : public CEvalNumExpr
      method CMyEvalNumExpr (line 324) | CMyEvalNumExpr (const CForm *form , const CType *type )
      method evalValue (line 329) | virtual CEvalNumExpr::TReturnState evalValue (const char *value, dou...
    function uint (line 449) | uint getNextToken (const char *startString, string &token, uint &offset)
    function uint (line 499) | uint findSpecialCharacter (const char *special, char c, uint startOffset)
    function buildError (line 523) | void buildError (char *msg, uint offset)
    function string (line 849) | const string &CType::getDefault () const
    function string (line 856) | const string	&CType::getMin () const
    function string (line 863) | const string	&CType::getMax () const
    function string (line 870) | const string	&CType::getIncrement () const
    function uint (line 877) | uint CType::getNumDefinition () const
    function string (line 898) | const string	&CType::getComment () const

FILE: code/nel/src/ligo/ligo_config.cpp
  type NLLIGO (line 31) | namespace NLLIGO
    function CPrimitiveClass (line 559) | const CPrimitiveClass *CLigoConfig::getPrimitiveClass (const IPrimitiv...
    function CPrimitiveClass (line 592) | const CPrimitiveClass *CLigoConfig::getPrimitiveClass (const char *cla...
    function uint32 (line 642) | uint32 CLigoConfig::getDynamicAliasSize() const
    function uint32 (line 649) | uint32 CLigoConfig::getDynamicAliasMask() const
    function uint32 (line 662) | uint32 CLigoConfig::getStaticAliasSize() const
    function uint32 (line 669) | uint32 CLigoConfig::getStaticAliasMask() const
    function uint32 (line 677) | uint32 CLigoConfig::buildAlias(uint32 staticPart, uint32 dynamicPart, ...
    function uint32 (line 747) | uint32 CLigoConfig::getFileStaticAliasMapping(const std::string &fileN...
    function uint32 (line 788) | uint32 CLigoConfig::aliasFromString(std::string fullAlias)

FILE: code/nel/src/ligo/ligo_error.cpp
  type NLLIGO (line 20) | namespace NLLIGO
    function uint (line 55) | uint CLigoError::numVertexError () const

FILE: code/nel/src/ligo/ligo_error.h
  function namespace (line 24) | namespace NLLIGO

FILE: code/nel/src/ligo/ligo_material.cpp
  type NLLIGO (line 25) | namespace NLLIGO

FILE: code/nel/src/ligo/ligo_material.h
  function namespace (line 26) | namespace NLLIGO

FILE: code/nel/src/ligo/primitive.cpp
  type NLLIGO (line 31) | namespace NLLIGO
    function Error (line 41) | void Error (const char *filename, const char *format, ...)
    function XMLError (line 54) | void XMLError (xmlNodePtr xmlNode, const char *filename, const char *f...
    function xmlNodePtr (line 68) | xmlNodePtr GetFirstChildNode (xmlNodePtr xmlNode, const char *filename...
    function GetPropertyString (line 81) | bool GetPropertyString (string &result, const char *filename, xmlNodeP...
    function ReadInt (line 95) | bool ReadInt (const char *propName, int &result, const char *filename,...
    function WriteInt (line 108) | void WriteInt (const char *propName, int value, xmlNodePtr xmlNode)
    function ReadUInt (line 116) | bool ReadUInt (const char *propName, uint &result, const char *filenam...
    function WriteUInt (line 129) | void WriteUInt (const char *propName, uint value, xmlNodePtr xmlNode)
    function ReadFloat (line 137) | bool ReadFloat (const char *propName, float &result, const char *filen...
    function WriteFloat (line 150) | void WriteFloat (const char *propName, float value, xmlNodePtr xmlNode)
    function ReadVector (line 158) | bool ReadVector (CPrimVector &point, const char *filename, xmlNodePtr ...
    function WriteVector (line 184) | void WriteVector (const CPrimVector &point, xmlNodePtr xmlNode)
    function GetNodeString (line 197) | bool GetNodeString (string &result, const char *filename, xmlNodePtr x...
    function GetContentString (line 219) | bool GetContentString (string &result, const char *filename, xmlNodePt...
    function uint (line 396) | uint CPrimNode::getNumVector () const
    function CPrimVector (line 403) | const CPrimVector *CPrimNode::getPrimVector () const
    function CPrimVector (line 410) | CPrimVector	*CPrimNode::getPrimVector ()
    function uint (line 459) | uint CPrimPoint::getNumVector () const
    function CPrimVector (line 466) | const CPrimVector *CPrimPoint::getPrimVector () const
    function CPrimVector (line 473) | CPrimVector	*CPrimPoint::getPrimVector ()
    function uint (line 537) | uint CPrimPath::getNumVector () const
    function CPrimVector (line 544) | const CPrimVector *CPrimPath::getPrimVector () const
    function CPrimVector (line 560) | CPrimVector	*CPrimPath::getPrimVector ()
    function uint (line 610) | uint CPrimZone::getNumVector () const
    function CPrimVector (line 617) | const CPrimVector *CPrimZone::getPrimVector () const
    function CPrimVector (line 633) | CPrimVector	*CPrimZone::getPrimVector ()
    function IPrimitive (line 1209) | const	IPrimitive	*IPrimitive::getPrimitive	(const	std::string	&absolut...
    function uint (line 2020) | uint IPrimitive::getNumProperty () const
    function uint32 (line 2094) | uint32	CPrimAlias::getAlias() const
    function uint32 (line 2099) | uint32	CPrimAlias::getFullAlias() const
    function IPrimitive (line 2159) | IPrimitive *CPrimAlias::copy () const
    function uint32 (line 2229) | uint32 CPrimitives::getAliasStaticPart()
    function uint32 (line 2243) | uint32 CPrimitives::buildFullAlias(uint32 dynamicPart)
    function uint32 (line 2256) | uint32 CPrimitives::genAlias(IPrimitive *prim, uint32 preferedAlias)
    function uint32 (line 2397) | uint32 CPrimitives::getLastGeneratedAlias()
    function IPrimitive (line 2404) | IPrimitive		*CPrimitives::getPrimitiveByAlias(uint32 primAlias)
    function CPrimitives (line 2438) | CPrimitives& CPrimitives::operator= (const CPrimitives &other)
    function Register (line 2744) | void Register ()

FILE: code/nel/src/ligo/primitive_class.cpp
  function ReadFloat (line 36) | bool ReadFloat (const char *propName, float &result, xmlNodePtr xmlNode)
  function ReadInt (line 49) | bool ReadInt (const char *propName, int &result, xmlNodePtr xmlNode)
  function ReadBool (line 62) | bool ReadBool (const char *propName, bool &result, xmlNodePtr xmlNode, c...
  function ReadColor (line 83) | bool ReadColor (CRGBA &color, xmlNodePtr node)
  function ReadChild (line 114) | bool ReadChild (CPrimitiveClass::CChild &child, xmlNodePtr childNode, co...

FILE: code/nel/src/ligo/primitive_utils.cpp
  type NLLIGO (line 18) | namespace NLLIGO
    function buildPrimPath (line 21) | std::string buildPrimPath(const IPrimitive *prim)
    function selectPrimByPath (line 39) | void selectPrimByPath(IPrimitive *rootNode, const std::string &path, T...

FILE: code/nel/src/ligo/transition.cpp
  type NLLIGO (line 25) | namespace NLLIGO

FILE: code/nel/src/ligo/transition.h
  function namespace (line 28) | namespace NLLIGO

FILE: code/nel/src/ligo/zone_bank.cpp
  type NLLIGO (line 38) | namespace NLLIGO
    function string (line 60) | const string& CZoneBankElement::getName ()
    function string (line 66) | const string& CZoneBankElement::getSize ()
    function string (line 72) | const string& CZoneBankElement::getCategory (const string &CatType)
    function CZoneBankElement (line 613) | CZoneBankElement *CZoneBank::getElementByZoneName (const std::string &...

FILE: code/nel/src/ligo/zone_edge.cpp
  type NLLIGO (line 28) | namespace NLLIGO

FILE: code/nel/src/ligo/zone_edge.h
  function namespace (line 27) | namespace NLMISC
  function namespace (line 33) | namespace NLLIGO

FILE: code/nel/src/ligo/zone_region.cpp
  type NLLIGO (line 23) | namespace NLLIGO
    function string (line 181) | const string &CZoneRegion::getName (sint32 x, sint32 y) const
    function uint8 (line 195) | uint8 CZoneRegion::getPosX (sint32 x, sint32 y) const
    function uint8 (line 209) | uint8 CZoneRegion::getPosY (sint32 x, sint32 y) const
    function uint8 (line 223) | uint8 CZoneRegion::getRot (sint32 x, sint32 y) const
    function uint8 (line 237) | uint8 CZoneRegion::getFlip (sint32 x, sint32 y) const
    function uint8 (line 251) | uint8 CZoneRegion::getCutEdge (sint32 x, sint32 y, uint8 pos) const
    function uint32 (line 265) | uint32 CZoneRegion::getDate (sint32 x, sint32 y, uint8 lowOrHigh) cons...
    function uint8 (line 409) | uint8 CZoneRegion::getSharingCutEdges (sint32 x, sint32 y, uint edge)

FILE: code/nel/src/ligo/zone_template.cpp
  type NLLIGO (line 28) | namespace NLLIGO
    function sint32 (line 85) | inline sint32 CZoneTemplate::getSnappedIndex (float value, float resol...

FILE: code/nel/src/ligo/zone_template.h
  function namespace (line 27) | namespace NLLIGO

FILE: code/nel/src/logic/logic_condition.cpp
  type NLLOGIC (line 27) | namespace NLLOGIC

FILE: code/nel/src/logic/logic_event.cpp
  type NLLOGIC (line 27) | namespace NLLOGIC

FILE: code/nel/src/logic/logic_state.cpp
  type NLLOGIC (line 26) | namespace NLLOGIC

FILE: code/nel/src/logic/logic_state_machine.cpp
  type NLLOGIC (line 26) | namespace NLLOGIC
    function xmlCheckNodeName (line 32) | void xmlCheckNodeName (xmlNodePtr &node, const char *nodeName)
    function getXMLProp (line 62) | std::string getXMLProp (xmlNodePtr node, const char *propName)
    function testNameWithFilter (line 487) | bool testNameWithFilter( sint8 filter, string motif, string varName )

FILE: code/nel/src/logic/logic_variable.cpp
  type NLLOGIC (line 25) | namespace NLLOGIC

FILE: code/nel/src/misc/aabbox.cpp
  type NLMISC (line 28) | namespace NLMISC {
    function CAABBox (line 228) | CAABBox CAABBox::computeAABBoxUnion(const CAABBox &b1, const CAABBox &b2)
    function CAABBox (line 259) | CAABBox CAABBox::transformAABBox(const CMatrix &mat, const CAABBox &box)

FILE: code/nel/src/misc/algo.cpp
  type NLMISC (line 28) | namespace NLMISC
    function testWildCard (line 31) | bool		testWildCard(const std::string &strIn, const std::string &wildCard)
    function testWildCard (line 38) | bool		testWildCard(const char *strIn, const char *wildCard)
    function splitString (line 115) | void		splitString(const std::string &str, const std::string &separator...
    function splitUCString (line 135) | void		splitUCString(const ucstring &ucstr, const ucstring &separator, ...
    function drawFullLine (line 155) | void drawFullLine (float x0, float y0, float x1, float y1, std::vector...
    function drawLine (line 285) | void drawLine (float x0, float y0, float x1, float y1, vector<pair<sin...

FILE: code/nel/src/misc/app_context.cpp
  type NLMISC (line 26) | namespace NLMISC
    function INelContext (line 32) | INelContext ** INelContext::_getInstance()
    function INelContext (line 40) | INelContext &INelContext::getInstance()
    function CLog (line 146) | CLog *CApplicationContext::getErrorLog()
    function CLog (line 156) | CLog *CApplicationContext::getWarningLog()
    function CLog (line 166) | CLog *CApplicationContext::getInfoLog()
    function CLog (line 176) | CLog *CApplicationContext::getDebugLog()
    function CLog (line 186) | CLog *CApplicationContext::getAssertLog()
    function CMemDisplayer (line 196) | CMemDisplayer *CApplicationContext::getDefaultMemDisplayer()
    function CMsgBoxDisplayer (line 206) | CMsgBoxDisplayer *CApplicationContext::getDefaultMsgBoxDisplayer()
    function CLog (line 288) | CLog *CLibraryContext::getErrorLog()
    function CLog (line 304) | CLog *CLibraryContext::getWarningLog()
    function CLog (line 320) | CLog *CLibraryContext::getInfoLog()
    function CLog (line 336) | CLog *CLibraryContext::getDebugLog()
    function CLog (line 352) | CLog *CLibraryContext::getAssertLog()
    function CMemDisplayer (line 368) | CMemDisplayer *CLibraryContext::getDefaultMemDisplayer()
    function CMsgBoxDisplayer (line 384) | CMsgBoxDisplayer *CLibraryContext::getDefaultMsgBoxDisplayer()
    function initNelLibrary (line 454) | void initNelLibrary(NLMISC::CLibrary &lib)

FILE: code/nel/src/misc/async_file_manager.cpp
  type NLMISC (line 30) | namespace NLMISC

FILE: code/nel/src/misc/base64.cpp
  type NLMISC (line 37) | namespace NLMISC
    function is_base64 (line 46) | static inline bool is_base64(unsigned char c)
    function base64_encode (line 51) | std::string base64_encode( std::string const& s )
    function base64_decode (line 97) | std::string base64_decode(std::string const& encoded_string)

FILE: code/nel/src/misc/big_file.cpp
  type NLMISC (line 29) | namespace NLMISC {
    function uint32 (line 50) | uint32						CBigFile::CThreadFileArray::allocate()
    function FILE (line 417) | FILE* CBigFile::getFile (const std::string &sFileName, uint32 &rFileSize,

FILE: code/nel/src/misc/bit_mem_stream.cpp
  type NLMISC (line 32) | namespace NLMISC {
    function sint32 (line 286) | sint32	CBitMemStream::reserve( uint byteLen )
    function displayBitStream (line 703) | void	displayBitStream( const CBitMemStream& msg, sint beginbitpos, sin...

FILE: code/nel/src/misc/bit_set.cpp
  type NLMISC (line 27) | namespace	NLMISC
    function CBitSet (line 74) | CBitSet	&CBitSet::operator=(const CBitSet &bs)
    function CBitSet (line 142) | CBitSet	CBitSet::operator~() const
    function CBitSet (line 150) | CBitSet	CBitSet::operator&(const CBitSet &bs) const
    function CBitSet (line 158) | CBitSet	CBitSet::operator|(const CBitSet &bs) const
    function CBitSet (line 166) | CBitSet	CBitSet::operator^(const CBitSet &bs) const
    function CBitSet (line 187) | CBitSet	&CBitSet::operator&=(const CBitSet &bs)
    function CBitSet (line 203) | CBitSet	&CBitSet::operator|=(const CBitSet &bs)
    function CBitSet (line 218) | CBitSet	&CBitSet::operator^=(const CBitSet &bs)

FILE: code/nel/src/misc/bitmap.cpp
  type NLMISC (line 34) | namespace NLMISC
    type EDDSBadHeader (line 37) | struct EDDSBadHeader : public NLMISC::EStream
      method EDDSBadHeader (line 39) | EDDSBadHeader() : EStream( "Bad or unrecognized DDS file header" ) {}
    type ESeekFailed (line 42) | struct ESeekFailed : public NLMISC::EStream
      method ESeekFailed (line 44) | ESeekFailed() : EStream( "Seek failed" ) {}
    type EAllocationFailure (line 47) | struct EAllocationFailure : public Exception
      method EAllocationFailure (line 49) | EAllocationFailure() : Exception( "Can't allocate memory" ) {}
    function MakeWhite (line 75) | void MakeWhite(CBitmap &bitmaps)
    function uint8 (line 90) | uint8 CBitmap::load(NLMISC::IStream &f, uint mipMapSkip)
    function uint8 (line 305) | uint8 CBitmap::readDDS(NLMISC::IStream &f, uint mipMapSkip)
    function uint32 (line 1435) | uint32 CBitmap::blend(uint32 &n0, uint32 &n1, uint32 coef0)
    function uint32 (line 1460) | uint32 CBitmap::getWidth(uint32 mipMap) const
    function uint32 (line 1485) | uint32 CBitmap::getHeight(uint32 mipMap) const
    function uint32 (line 1509) | uint32 CBitmap::getSize(uint32 numMipMap) const
    function uint32 (line 1588) | uint32 CBitmap::computeNeededMipMapCount() const
    function uint8 (line 1971) | uint8 CBitmap::readTGA( NLMISC::IStream &f)
    function rotateCCW (line 2482) | void rotateCCW (const T* src, T* dst, uint srcWidth, uint srcHeight)
    function CRGBAF (line 2738) | CRGBAF CBitmap::getColor (float x, float y) const
    function uint32 (line 2850) | static inline uint32 wrap(sint32 value, uint32 range)
    function CRGBAF (line 2856) | CRGBAF CBitmap::getColor(float x, float y, bool tileU, bool tileV) const
    function CRGBA (line 3833) | CRGBA CBitmap::getRGBAPixel(sint x, sint y, uint32 numMipMap /*=0*/) c...
    function CRGBA (line 3843) | CRGBA CBitmap::getDXTCColorFromBlock(const uint8 *block, sint x, sint y)
    function CRGBA (line 3903) | CRGBA CBitmap::getDXTC1Texel(sint x, sint y, uint32 numMipMap) const
    function CRGBA (line 3916) | CRGBA CBitmap::getDXTC3Texel(sint x, sint y, uint32 numMipMap) const
    function CRGBA (line 3932) | CRGBA CBitmap::getDXTC5Texel(sint x, sint y, uint32 numMipMap) const
    function CRGBA (line 3989) | CRGBA CBitmap::getPixelColor(sint x, sint y, uint32 numMipMap /*=0*/) ...

FILE: code/nel/src/misc/bitmap_jpeg.cpp
  type NLMISC (line 42) | namespace NLMISC
    type my_error_mgr (line 52) | struct my_error_mgr
      type jpeg_error_mgr (line 54) | struct jpeg_error_mgr
    function my_error_exit (line 58) | void my_error_exit(j_common_ptr cinfo)
    function jpgDecompressInit (line 67) | static void jpgDecompressInit(j_decompress_ptr cinfo)
    function boolean (line 82) | static boolean jpgDecompressFill(j_decompress_ptr cinfo)
    function jpgDecompressSkip (line 103) | static void jpgDecompressSkip(j_decompress_ptr cinfo, long num_bytes)
    function jpgDecompressTerm (line 118) | static void jpgDecompressTerm(j_decompress_ptr /* cinfo */)
    function uint8 (line 128) | uint8 CBitmap::readJPG( NLMISC::IStream &f )
    function jpgCompressInit (line 221) | static void jpgCompressInit(j_compress_ptr cinfo)
    function boolean (line 227) | static boolean jpgCompressEmpty(j_compress_ptr cinfo)
    function j
Condensed preview — 1194 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,546K chars).
[
  {
    "path": ".github/workflows/ccpp.yml",
    "chars": 180,
    "preview": "name: C/C++ CI\n\non: [push]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n    \n    steps:\n    - path: ./BaseService/build\n "
  },
  {
    "path": "LICENSE",
    "chars": 35147,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 247,
    "preview": "# BaseService\n微信小游戏服务器,房间及卡牌类游戏服务器。支持websocket及tcp连接,lua编写游戏逻辑,运行于C++服务器,跨平台。C++底层已支持多款线上产品。\n\n使用lua编写游戏逻辑,不需要编写C++代码。函数支"
  },
  {
    "path": "code/CMakeLists.txt",
    "chars": 8169,
    "preview": "#-----------------------------------------------------------------------------\n#\n# NeL\n#  Authors: Nevrax and the NeL Co"
  },
  {
    "path": "code/CMakeModules/AndroidToolChain.cmake",
    "chars": 6794,
    "preview": "IF(DEFINED CMAKE_CROSSCOMPILING)\n  # subsequent toolchain loading is not really needed\n  RETURN()\nENDIF()\n\n# Standard se"
  },
  {
    "path": "code/CMakeModules/CheckDepends.cmake",
    "chars": 5508,
    "preview": "# Macros to check if a library needs to be manually linked to another one\n# because it's using a symbol from it but it's"
  },
  {
    "path": "code/CMakeModules/ConfigureChecks.cmake",
    "chars": 2676,
    "preview": "MACRO(NL_CONFIGURE_CHECKS)\n  INCLUDE(CheckIncludeFiles)\n  INCLUDE(CheckFunctionExists)\n  INCLUDE(CheckLibraryExists)\n  I"
  },
  {
    "path": "code/CMakeModules/Find3dsMaxSDK.cmake",
    "chars": 2299,
    "preview": "# - Find DirectInput\n# Find the DirectSound includes and libraries\n#\n#  MAXSDK_DIR         - 3DSMAX SDK root directory\n#"
  },
  {
    "path": "code/CMakeModules/FindCEGUI.cmake",
    "chars": 1264,
    "preview": "# - Locate CEGUI library\n# This module defines\n#  CEGUI_LIBRARY, the library to link against\n#  CEGUI_FOUND, if false, d"
  },
  {
    "path": "code/CMakeModules/FindCppTest.cmake",
    "chars": 2006,
    "preview": "#\n# Find the CppTest includes and library\n#\n# This module defines\n# CPPTEST_INCLUDE_DIR, where to find tiff.h, etc.\n# CP"
  },
  {
    "path": "code/CMakeModules/FindCrashRpt.cmake",
    "chars": 1074,
    "preview": "# - Locate CrashRpt library\n# This module defines\n#  CrashRpt_LIBRARIES, the libraries to link against\n#  CrashRpt_FOUND"
  },
  {
    "path": "code/CMakeModules/FindCurl.cmake",
    "chars": 2365,
    "preview": "# - Locate Curl library\n# This module defines\n# CURL_INCLUDE_DIRS   - where to find curl/curl.h, etc.\n# CURL_LIBRARIES  "
  },
  {
    "path": "code/CMakeModules/FindCustomMFC.cmake",
    "chars": 1378,
    "preview": "# - Locate MFC libraries\n# This module defines\n#  MFC_FOUND, if false, do not try to link to MFC\n#  MFC_LIBRARY_DIR, whe"
  },
  {
    "path": "code/CMakeModules/FindDInput.cmake",
    "chars": 999,
    "preview": "# - Find DirectInput\n# Find the DirectSound includes and libraries\n#\n#  DINPUT_INCLUDE_DIR - where to find dinput.h\n#  D"
  },
  {
    "path": "code/CMakeModules/FindDSound.cmake",
    "chars": 963,
    "preview": "# - Find DirectSound\n# Find the DirectSound includes and libraries\n#\n#  DSOUND_INCLUDE_DIR - where to find dsound.h\n#  D"
  },
  {
    "path": "code/CMakeModules/FindDirectXSDK.cmake",
    "chars": 2136,
    "preview": "# - Find DirectX\n# Find the DirectX includes and libraries\n#\n#  DXSDK_INCLUDE_DIR - where to find baseinterface.h\n#  DXS"
  },
  {
    "path": "code/CMakeModules/FindEFXUtil.cmake",
    "chars": 1208,
    "preview": "# - Locate EFX-Util library\n# This module defines\n#  EFXUTIL_LIBRARY, the library to link against\n#  EFXUTIL_FOUND, if f"
  },
  {
    "path": "code/CMakeModules/FindExternal.cmake",
    "chars": 2548,
    "preview": "# Look for a directory containing external libraries.\n#\n# The following values are defined\n# EXTERNAL_PATH         - whe"
  },
  {
    "path": "code/CMakeModules/FindFMOD.cmake",
    "chars": 1247,
    "preview": "# - Locate FMOD library\n# This module defines\n#  FMOD_LIBRARY, the library to link against\n#  FMOD_FOUND, if false, do n"
  },
  {
    "path": "code/CMakeModules/FindFreeType.cmake",
    "chars": 3082,
    "preview": "# - Locate FreeType library\n# This module defines\n#  FREETYPE_LIBRARIES, libraries to link against\n#  FREETYPE_FOUND, if"
  },
  {
    "path": "code/CMakeModules/FindGTK2.cmake",
    "chars": 13935,
    "preview": "# - Try to find GTK2\n# Once done this will define\n#\n#  GTK2_FOUND - System has GTK2\n#  GTK2_INCLUDE_DIRS - GTK2 include "
  },
  {
    "path": "code/CMakeModules/FindIconv.cmake",
    "chars": 1827,
    "preview": "# - Try to find Iconv \n# Once done this will define \n# \n#  ICONV_FOUND - system has Iconv \n#  ICONV_INCLUDE_DIR - the Ic"
  },
  {
    "path": "code/CMakeModules/FindJpeg.cmake",
    "chars": 1106,
    "preview": "# - Locate Jpeg library\n# This module defines\n#  JPEG_LIBRARY, the library to link against\n#  JPEG_FOUND, if false, do n"
  },
  {
    "path": "code/CMakeModules/FindLibEvent.cmake",
    "chars": 3183,
    "preview": "# - Locate LibEvent library\n# This module defines\n# LIBEVENT_INCLUDE_DIRS   - where to find libevent/libevent.h, etc.\n# "
  },
  {
    "path": "code/CMakeModules/FindLibOVR.cmake",
    "chars": 1790,
    "preview": "# - Locate LibOVR library\n# This module defines\n#  LIBOVR_LIBRARIES, the libraries to link against\n#  LIBOVR_FOUND, if f"
  },
  {
    "path": "code/CMakeModules/FindLibVR.cmake",
    "chars": 890,
    "preview": "# - Locate LibVR library\n# This module defines\n#  LIBVR_LIBRARIES, the libraries to link against\n#  LIBVR_FOUND, if fals"
  },
  {
    "path": "code/CMakeModules/FindLibwww.cmake",
    "chars": 7254,
    "preview": "#\n# Find the W3C libwww includes and library\n#\n# This module defines\n# LIBWWW_INCLUDE_DIR, where to find tiff.h, etc.\n# "
  },
  {
    "path": "code/CMakeModules/FindLua51.cmake",
    "chars": 2673,
    "preview": "# Locate Lua library\n# This module defines\n#  LUA51_FOUND, if false, do not try to link to Lua\n#  LUA_LIBRARIES\n#  LUA_I"
  },
  {
    "path": "code/CMakeModules/FindLua52.cmake",
    "chars": 2614,
    "preview": "# Locate Lua library\n# This module defines\n#  LUA52_FOUND, if false, do not try to link to Lua\n#  LUA_LIBRARIES\n#  LUA_I"
  },
  {
    "path": "code/CMakeModules/FindLua53.cmake",
    "chars": 2361,
    "preview": "# Locate Lua library\n# This module defines\n#  LUA51_FOUND, if false, do not try to link to Lua\n#  LUA_LIBRARIES\n#  LUA_I"
  },
  {
    "path": "code/CMakeModules/FindLuabind.cmake",
    "chars": 5375,
    "preview": "# - Locate Luabind library\n# This module defines\n#  LUABIND_LIBRARIES, the libraries to link against\n#  LUABIND_FOUND, i"
  },
  {
    "path": "code/CMakeModules/FindMSVC.cmake",
    "chars": 3666,
    "preview": "# - Find MS Visual C++\n#\n#  VC_INCLUDE_DIR  - where to find headers\n#  VC_INCLUDE_DIRS - where to find headers\n#  VC_LIB"
  },
  {
    "path": "code/CMakeModules/FindMercurial.cmake",
    "chars": 5051,
    "preview": "# - Extract information from a subversion working copy\n# The module defines the following variables:\n#  Mercurial_HG_EXE"
  },
  {
    "path": "code/CMakeModules/FindMySQL.cmake",
    "chars": 2233,
    "preview": "# - Find MySQL\n# Find the MySQL includes and client library\n# This module defines\n#  MYSQL_INCLUDE_DIR, where to find my"
  },
  {
    "path": "code/CMakeModules/FindMysqlConnector.cmake",
    "chars": 3952,
    "preview": "# - Find MySQL\n# Find the MySQL includes and client library\n# This module defines\n#  MYSQL_INCLUDE_DIR, where to find my"
  },
  {
    "path": "code/CMakeModules/FindOgg.cmake",
    "chars": 1055,
    "preview": "# - Locate Ogg library\n# This module defines\n#  OGG_LIBRARY, the library to link against\n#  OGG_FOUND, if false, do not "
  },
  {
    "path": "code/CMakeModules/FindOpenGLES.cmake",
    "chars": 1204,
    "preview": "# - Try to find OpenGL ES\n# Once done this will define\n#  \n#  OPENGLES_FOUND        - system has OpenGL ES\n#  OPENGLES_E"
  },
  {
    "path": "code/CMakeModules/FindOpenSSL.cmake",
    "chars": 2021,
    "preview": "# - Locate OpenSSL library\n# This module defines\n# OPENSSL_INCLUDE_DIRS   - where to find openssl/ssl.h, etc.\n# OPENSSL_"
  },
  {
    "path": "code/CMakeModules/FindPBC.cmake",
    "chars": 1983,
    "preview": "# - Locate PBC library\n# This module defines\n# PBC_INCLUDE_DIRS   - where to find pbc/pbc.h, etc.\n# PBC_LIBRARIES      -"
  },
  {
    "path": "code/CMakeModules/FindProtoBuf.cmake",
    "chars": 2708,
    "preview": "# - Locate ProtoBuf library\n# This module defines\n#  PROTOBUF_LIBRARIES, the libraries to link against\n#  PROTOBUF_FOUND"
  },
  {
    "path": "code/CMakeModules/FindS3TC.cmake",
    "chars": 1107,
    "preview": "# - Locate S3TC library\n# This module defines\n#  S3TC_LIBRARY, the library to link against\n#  S3TC_FOUND, if false, do n"
  },
  {
    "path": "code/CMakeModules/FindSTLport.cmake",
    "chars": 2100,
    "preview": "# Look for a directory containing STLport.\n#\n# The following values are defined\n# STLPORT_INCLUDE_DIR - where to find ve"
  },
  {
    "path": "code/CMakeModules/FindSquish.cmake",
    "chars": 2066,
    "preview": "#\n# Find the LibSquish includes and library\n#\n# This module defines\n# SQUISH_INCLUDE_DIR, where to find squish.h\n# SQUIS"
  },
  {
    "path": "code/CMakeModules/FindTinyXml.cmake",
    "chars": 2238,
    "preview": "# - Locate TinyXml library\n# This module defines\n#  TINYXML_LIBRARIES, the libraries to link against\n#  TINYXML_FOUND, i"
  },
  {
    "path": "code/CMakeModules/FindToLua.cmake",
    "chars": 2406,
    "preview": "# - Locate ToLua library\n# This module defines\n#  TOLUA_LIBRARIES, the libraries to link against\n#  TOLUA_FOUND, if fals"
  },
  {
    "path": "code/CMakeModules/FindVorbis.cmake",
    "chars": 1530,
    "preview": "# - Locate Vorbis library\n# This module defines\n#  VORBIS_LIBRARY, the library to link against\n#  VORBIS_FOUND, if false"
  },
  {
    "path": "code/CMakeModules/FindWindowsSDK.cmake",
    "chars": 14267,
    "preview": "# - Find Windows Platform SDK\n# Find the Windows includes\n#\n#  WINSDK_INCLUDE_DIR - where to find Windows.h\n#  WINSDK_IN"
  },
  {
    "path": "code/CMakeModules/FindXF86VidMode.cmake",
    "chars": 1237,
    "preview": "# - Locate Jpeg library\n# This module defines\n#  XF86VidMode_LIBRARY, the library to link against\n#  XF86VidMode_FOUND, "
  },
  {
    "path": "code/CMakeModules/GetRevision.cmake",
    "chars": 2565,
    "preview": "CMAKE_MINIMUM_REQUIRED(VERSION 2.6.3)\n\n# ROOT_DIR should be set to root of the repository (where to find the .svn or .hg"
  },
  {
    "path": "code/CMakeModules/PCHSupport.cmake",
    "chars": 15849,
    "preview": "# - Try to find precompiled headers support for GCC 3.4 and 4.x (and MSVC)\n# Once done this will define:\n#\n# Variable:\n#"
  },
  {
    "path": "code/CMakeModules/iOSToolChain.cmake",
    "chars": 8515,
    "preview": "# This file is based off of the Platform/Darwin.cmake and Platform/UnixPaths.cmake\n# files which are included with CMake"
  },
  {
    "path": "code/CMakeModules/nel.cmake",
    "chars": 40454,
    "preview": "# Force Release configuration for compiler checks\nSET(CMAKE_TRY_COMPILE_CONFIGURATION \"Release\")\n\n# Force Release config"
  },
  {
    "path": "code/CMakePackaging.txt",
    "chars": 3081,
    "preview": "cpack_add_install_type(Full DISPLAY_NAME \"Full Install\")\ncpack_add_install_type(Developer DISPLAY_NAME \"Developer Instal"
  },
  {
    "path": "code/COPYING",
    "chars": 34520,
    "preview": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C)"
  },
  {
    "path": "code/CTestConfig.cmake",
    "chars": 565,
    "preview": "## This file should be placed in the root directory of your project.\n## Then modify the CMakeLists.txt file in the root "
  },
  {
    "path": "code/EVA/CMakeLists.txt",
    "chars": 257,
    "preview": "INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/server )\n\n\n#SET(SERVER_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/server)\n\nIF(W"
  },
  {
    "path": "code/EVA/server/CMakeLists.txt",
    "chars": 489,
    "preview": "FIND_PACKAGE(CURL)\nFIND_PACKAGE(MySQL)\n#FIND_PACKAGE(ToLua)\n# move to server_share/CMakeLists.txt\n\nINCLUDE_DIRECTORIES($"
  },
  {
    "path": "code/EVA/server/_del_log.bat",
    "chars": 230,
    "preview": "@echo off\n\ndel *.log\ndel log /q\ndel aes_*.txt\ndel pid.state\n\ndel rns /q\nrd  rns /q\n\ndel aes /q\nrd  aes /q\n\ndel egs /q\nrd"
  },
  {
    "path": "code/EVA/server/_robot_start .bat",
    "chars": 255,
    "preview": "@echo off\n\nREM This script will start all the services with good parameters\n\nREM set MODE=Debug\nREM set MODE=.\nset MODE="
  },
  {
    "path": "code/EVA/server/_robot_stop .bat",
    "chars": 129,
    "preview": "@echo off\n\nREM This script will kill all the services launched by _robot_start.bat\n\nrem  robot\ntaskkill /IM client_robot"
  },
  {
    "path": "code/EVA/server/_shard_start.bat",
    "chars": 484,
    "preview": "@echo off\n\nREM This script will start all the services with good parameters\n\ncall _shard_stop.bat\n\nREM set MODE=Debug\nRE"
  },
  {
    "path": "code/EVA/server/_shard_stop.bat",
    "chars": 273,
    "preview": "@echo off\n\nREM This script will kill all the services launched by _shard_start.bat\n\nrem  ns\ntaskkill /IM naming_service."
  },
  {
    "path": "code/EVA/server/admin_executor_service.cfg",
    "chars": 3899,
    "preview": "// Use with commandline: admin_service -A. -C. -L. --nobreak --fulladminname=admin_executor_service --shortadminname=AES"
  },
  {
    "path": "code/EVA/server/admin_modules/CMakeLists.txt",
    "chars": 751,
    "preview": "FILE(GLOB SRC *.cpp *.h)\n\nNL_TARGET_LIB(eva_adminmodules ${SRC})\n\nINCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR} ${CMAKE_CUR"
  },
  {
    "path": "code/EVA/server/admin_modules/admin_modules.cpp",
    "chars": 1250,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/admin_modules/admin_modules_itf.cpp",
    "chars": 26855,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/admin_modules/admin_modules_itf.h",
    "chars": 60085,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/admin_modules/admin_modules_itf.xml",
    "chars": 17018,
    "preview": "<generator header_tag=\"ADMIN_MODULES_ITF\">\n\t\n\t<include file=\"nel/misc/time_nl.h\"/>\n\n\t<namespace name=\"ADMIN\">\n\n\t\t<!-- PH"
  },
  {
    "path": "code/EVA/server/admin_modules/aes_client_module.cpp",
    "chars": 14124,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/admin_modules/aes_module.cpp",
    "chars": 58461,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/admin_modules/as_module.cpp",
    "chars": 31704,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/admin_service/CMakeLists.txt",
    "chars": 440,
    "preview": "FILE(GLOB SRC *.cpp *.h)\n\nADD_EXECUTABLE(admin_service WIN32 ${SRC})\n\nINCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR} ${ZLIB_"
  },
  {
    "path": "code/EVA/server/admin_service/admin_service.cpp",
    "chars": 2403,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/admin_service.cfg",
    "chars": 1089,
    "preview": "// Use with commandline: admin_service --fulladminname=admin_service --shortadminname=AS -C. -L. --nobreak --writepid\n\n/"
  },
  {
    "path": "code/EVA/server/client_robot/CMakeLists.txt",
    "chars": 265,
    "preview": "FILE(GLOB SRC *.cpp *.h)\n\nADD_EXECUTABLE(client_robot WIN32 ${SRC})\n\nINCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})\n\nTARGET_LIN"
  },
  {
    "path": "code/EVA/server/client_robot/client_robot.cpp",
    "chars": 1362,
    "preview": "#ifdef HAVE_CONFIG_H\n#include \"config.h\"\n#endif // HAVE_CONFIG_H\n\n#include <nel/misc/window_displayer.h>\n#include <serv"
  },
  {
    "path": "code/EVA/server/client_robot.cfg",
    "chars": 314,
    "preview": "RootConfigFilename = \"common.cfg\";\n\nAESAliasName = \"robot\";\nSId = 1;\n\nDontUseNS  = 1;\nDontUseAES = 1;\n\nDisplayedVariable"
  },
  {
    "path": "code/EVA/server/common.cfg",
    "chars": 3000,
    "preview": "// ---- config local variables\n\n// Used by ConfigFile in EGS and WS\nShardId = 0; \n\nUpdateTimeout = 20;\n\n// Used to conne"
  },
  {
    "path": "code/EVA/server/frontend_service/CMakeLists.txt",
    "chars": 727,
    "preview": "FILE(GLOB SRC *.cpp *.h)\n\nADD_EXECUTABLE(frontend_service WIN32 ${SRC})\n\nINCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR} ${LIBEVE"
  },
  {
    "path": "code/EVA/server/frontend_service/frontend_service.cpp",
    "chars": 2494,
    "preview": "#ifdef HAVE_CONFIG_H\n#include \"config.h\"\n#endif // HAVE_CONFIG_H\n\n#include <server_share/server_def.h>\n#include <server"
  },
  {
    "path": "code/EVA/server/frontend_service/frontend_service.h",
    "chars": 847,
    "preview": "#ifndef FRONTEND_SERVICE_H\n#define FRONTEND_SERVICE_H\n\n// We're using the NeL Service framework and layer 5\n#include <ne"
  },
  {
    "path": "code/EVA/server/frontend_service/stdpch.cpp",
    "chars": 809,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/frontend_service/stdpch.h",
    "chars": 1203,
    "preview": "#include \"nel/misc/types_nl.h\"\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <stddef.h>\n#include <math.h>\n#include <t"
  },
  {
    "path": "code/EVA/server/frontend_service.cfg",
    "chars": 362,
    "preview": "RootConfigFilename = \"common.cfg\";\n\nAESAliasName = \"fes_0\";\nSId = 66;\n\nNegFiltersDebug = { \"NET\" };\n\nGraphVars +=\n{\n\t\"FP"
  },
  {
    "path": "code/EVA/server/msg.xml",
    "chars": 6597,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<client_messages_description>\n\n<!--\n                客户端消息转发     li9chuan@qq.com "
  },
  {
    "path": "code/EVA/server/naming_service/CMakeLists.txt",
    "chars": 535,
    "preview": "FILE(GLOB SRC *.cpp *.h)\n\nADD_EXECUTABLE(naming_service WIN32 ${SRC})\n\nINCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})\n\nTARG"
  },
  {
    "path": "code/EVA/server/naming_service/naming_service.cpp",
    "chars": 31165,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/naming_service.cfg",
    "chars": 284,
    "preview": "// link the common configuration file\n#include \"common.cfg\"\n\nDisplayedVariables += { \"\", \"@Services|nsServices\" };\n\nSId "
  },
  {
    "path": "code/EVA/server/player_logic_service/CMakeLists.txt",
    "chars": 740,
    "preview": "FILE(GLOB SRC \t\t\t\t\t\t*.cpp *.h)\n\nADD_EXECUTABLE(player_logic_service WIN32 ${SRC})\n\nINCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR"
  },
  {
    "path": "code/EVA/server/player_logic_service/player_logic_service.cpp",
    "chars": 1598,
    "preview": "#ifdef HAVE_CONFIG_H\n#include \"config.h\"\n#endif // HAVE_CONFIG_H\n\n#include <nel/misc/window_displayer.h>\n#include <serv"
  },
  {
    "path": "code/EVA/server/player_logic_service/player_logic_service.h",
    "chars": 463,
    "preview": "#ifndef PLAYER_LOGIC_SERVICE_H\n#define PLAYER_LOGIC_SERVICE_H\n\n// we have to include windows.h because mysql.h uses it b"
  },
  {
    "path": "code/EVA/server/player_logic_service/stdpch.cpp",
    "chars": 809,
    "preview": "// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>\n// Copyright (C) 2010  Winch Gate Property Limited\n//"
  },
  {
    "path": "code/EVA/server/player_logic_service/stdpch.h",
    "chars": 1116,
    "preview": "#include \"nel/misc/types_nl.h\"\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <stddef.h>\n#include <math.h>\n#include <t"
  },
  {
    "path": "code/EVA/server/player_logic_service.cfg",
    "chars": 255,
    "preview": "RootConfigFilename = \"common.cfg\";\n\nAESAliasName = \"lgc_0\";\nSId = 1;\n\nDisplayedVariables += { \"\", \"@Info|info\", \"@LoadCo"
  },
  {
    "path": "code/EVA/server/save_shard/rrd_graphs/hold_dir",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "code/EVA/server/schedule_service/CMakeLists.txt",
    "chars": 392,
    "preview": "FILE(GLOB SRC *.cpp *.h)\n\nADD_EXECUTABLE(schedule_service WIN32 ${SRC})\n\nINCLUDE_DIRECTORIES(${LUA_INCLUDE_DIR})\n\nTARGET"
  },
  {
    "path": "code/EVA/server/schedule_service/schedule_service.cpp",
    "chars": 1927,
    "preview": "#ifdef HAVE_CONFIG_H\n#include \"config.h\"\n#endif // HAVE_CONFIG_H\n\n#include <server_share/tools.h>\n#include <server_shar"
  },
  {
    "path": "code/EVA/server/schedule_service.cfg",
    "chars": 252,
    "preview": "RootConfigFilename = \"common.cfg\";\n\nAESAliasName = \"egs\";\nSId          =  65;\n\nNegFiltersDebug = { \"NET\" };\n\nStartLuaScr"
  },
  {
    "path": "code/EVA/server/script/.vs/ProjectSettings.json",
    "chars": 35,
    "preview": "{\n  \"CurrentProjectSetting\": null\n}"
  },
  {
    "path": "code/EVA/server/script/.vs/VSWorkspaceState.json",
    "chars": 171,
    "preview": "{\n  \"ExpandedNodes\": [\n    \"\",\n    \"\\\\Framework\",\n    \"\\\\Framework\\\\Net\",\n    \"\\\\_PLS\",\n    \"\\\\_PLS\\\\Games\",\n    \"\\\\_PLS"
  },
  {
    "path": "code/EVA/server/script/BaseService.luaprj",
    "chars": 2525,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Project Name=\"BaseService.luaprj\" Cmd=\"E:\\BaseService\\build\\bin\\Debug\\client_r"
  },
  {
    "path": "code/EVA/server/script/DataTable/RoomConfig.json",
    "chars": 612,
    "preview": "{\n  \"RM_DDZ\": {\n    \"room_type\": \"RM_DDZ\",\n    \"game_type\": \"GM_DDZ\",\n    \"app_name\": \"APP_DDZ\",\n    \"min_ver\": 1.16,\n  "
  },
  {
    "path": "code/EVA/server/script/DataTable/RoomCreateCost.json",
    "chars": 372,
    "preview": "{\n  \"1001\": {\n    \"cost_id\": 1001,\n    \"room_type\": \"RM_DDZ\",\n    \"game_cnt\": 4,\n    \"item_id\": 5001,\n    \"cost_num\": 2\n"
  },
  {
    "path": "code/EVA/server/script/DataTable/SpecialConfig.json",
    "chars": 108,
    "preview": "{\n  \"RM_DDZ\": {\n    \"multi_boom\": 3,\n    \"multi_ct\": 3,\n    \"add_times\": 2,\n    \"game_type\": \"GM_DDZ\"\n\n  }\n}"
  },
  {
    "path": "code/EVA/server/script/DataTable/proto/define_attrib.proto",
    "chars": 228,
    "preview": "syntax = \"proto2\";\npackage PB;\n\nenum TAttribType\n{\n\tINVALID_ATTRIB                           =\t0;\n\n\tID\t=\t2001001\t;\n\tLEVE"
  },
  {
    "path": "code/EVA/server/script/DataTable/proto/define_pro.proto",
    "chars": 14891,
    "preview": "syntax = \"proto2\";\npackage PB;\n\nenum TEvent\n{\n\tEventInvalid\t\t\t                = 0;  \t\t//  无效事件\n    EventPlayerUp\t       "
  },
  {
    "path": "code/EVA/server/script/DataTable/proto/msg_client.proto",
    "chars": 4658,
    "preview": "syntax = \"proto2\";\npackage PB;\n\nimport \"define_pro.proto\";\n\nmessage MsgLogin\n{\n  optional string       Version         ="
  },
  {
    "path": "code/EVA/server/script/DataTable/proto/msg_doudizhu.proto",
    "chars": 11382,
    "preview": "syntax = \"proto2\";\npackage PB;\n\nimport \"msg_client.proto\";\n\nenum TDDZPlayerWik                                          "
  },
  {
    "path": "code/EVA/server/script/DataTable/proto/msg_service.proto",
    "chars": 550,
    "preview": "syntax = \"proto2\";\npackage PB;\n\nmessage MsgGameType\n{\n    optional string         Type                    = 1;\n    optio"
  },
  {
    "path": "code/EVA/server/script/DataTable/ssl/1_root_bundle.crt",
    "chars": 1683,
    "preview": "-----BEGIN CERTIFICATE-----\nMIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1U"
  },
  {
    "path": "code/EVA/server/script/DataTable/ssl/2_ssl.ranatune.com.crt",
    "chars": 1983,
    "preview": "-----BEGIN CERTIFICATE-----\nMIIFjDCCBHSgAwIBAgIQCY9Me/5efgsfOXOdKT7DGDANBgkqhkiG9w0BAQsFADBy\nMQswCQYDVQQGEwJDTjElMCMGA1U"
  },
  {
    "path": "code/EVA/server/script/DataTable/ssl/3_ssl.ranatune.com.key",
    "chars": 1674,
    "preview": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAvYB8EjvTYaJfWKDk7RktBJSgSqvwllpx2+Hab4ffEJuZoLrC\naiLtlPpVIZHPd0R0hU4vTTZ"
  },
  {
    "path": "code/EVA/server/script/Framework/CJsonUtil.lua",
    "chars": 7084,
    "preview": "local json = require \"cjson\"\n\n-- Various common routines used by the Lua CJSON package\n--\n-- Mark Pulford <mark@kyne.com"
  },
  {
    "path": "code/EVA/server/script/Framework/Class.lua",
    "chars": 1513,
    "preview": "function class(classname, super)\n    local superType = type(super)\n    local cls\n\n    if superType ~= \"function\" and sup"
  },
  {
    "path": "code/EVA/server/script/Framework/Event/EventController.lua",
    "chars": 1583,
    "preview": "--========================================================= \n-- 消息派发\n--================================================="
  },
  {
    "path": "code/EVA/server/script/Framework/Event/EventRegister.lua",
    "chars": 1268,
    "preview": "--========================================================= \n-- 消息注册管理\n--==============================================="
  },
  {
    "path": "code/EVA/server/script/Framework/Event/EventTrigger.lua",
    "chars": 163,
    "preview": "EventTrigger = {};\nlocal this = EventTrigger;\n\nfunction EventTrigger.OnEvent( msg_type, ... )\t\n    EventController.Insta"
  },
  {
    "path": "code/EVA/server/script/Framework/Hotfix/HotfixHelper.lua",
    "chars": 2058,
    "preview": "--- Hotfix helper which hotfixes modified modules.\n\nlocal M = class(\"HotfixHelper\")\n\nlocal hotfix = require(\"Hotfix/hotf"
  },
  {
    "path": "code/EVA/server/script/Framework/Hotfix/hotfix.lua",
    "chars": 3010,
    "preview": "--[[\nLua 5.2/5.3 hotfix. Hot update functions and keep old data.\nAuthor: Jin Qing ( http://blog.csdn.net/jq0123 )\n--]]\n\n"
  },
  {
    "path": "code/EVA/server/script/Framework/Hotfix/internal/functions_replacer.lua",
    "chars": 3302,
    "preview": "--- Replace functions of table or upvalue.\n-- Search for the old functions and replace them with new ones.\n\nlocal M = {}"
  },
  {
    "path": "code/EVA/server/script/Framework/Hotfix/internal/module_updater.lua",
    "chars": 5633,
    "preview": "--- Updater to update loaded module.\n-- Updating a table is to update metatable and sub-table of the old table,\n--   and"
  },
  {
    "path": "code/EVA/server/script/Framework/InitFramework.lua",
    "chars": 3220,
    "preview": "--========================================================= \n-- 初始化基础通用工具\n--============================================"
  },
  {
    "path": "code/EVA/server/script/Framework/List.lua",
    "chars": 4283,
    "preview": "local List = class(\"List\");\n\n-- 构造函数\nfunction List:ctor()\n\t-- body\n\t-- 元素列表\n    self._list = {};\n--    nlinfo(self._list"
  },
  {
    "path": "code/EVA/server/script/Framework/Map.lua",
    "chars": 1348,
    "preview": "Map = class(\"Map\")\n\nlocal this = Map\n\nfunction this:ctor()\n\tself.map = {};\n    self.count = 0\nend\n\n-- Map 插入新值\nfunction "
  },
  {
    "path": "code/EVA/server/script/Framework/MapMap.lua",
    "chars": 1651,
    "preview": "MapMap = class(\"MapMap\")\n\nlocal this = MapMap\n\nfunction this:ctor()\n\tself._map = {};\n    self._count = 0\nend\n\n-- MapMap "
  },
  {
    "path": "code/EVA/server/script/Framework/MemoryReferenceInfo.lua",
    "chars": 38145,
    "preview": "--\n-- Collect memory reference info.\n--\n-- @filename  MemoryReferenceInfo.lua\n-- @author    WangYaoqi\n-- @date      2016"
  },
  {
    "path": "code/EVA/server/script/Framework/MiddleClass.lua",
    "chars": 5414,
    "preview": "-- Example\n-- local class = require 'middleclass'\n-- local Fruit = class('Fruit') -- 'Fruit' is the class' name\n\n-- func"
  },
  {
    "path": "code/EVA/server/script/Framework/Net/BaseService.lua",
    "chars": 1993,
    "preview": "BaseService = {}\n\nfunction BaseService:Send( service_id, cmsg_or_type, proto_type, proto_msg )\n\n    local param_type = t"
  },
  {
    "path": "code/EVA/server/script/Framework/Net/CallbackServer.lua",
    "chars": 1606,
    "preview": "local CallbackServer = class(\"CallbackServer\")\n\nfunction CallbackServer:ctor()\n\tself.Service = nil;\n\tself.ConnectCallbac"
  },
  {
    "path": "code/EVA/server/script/Framework/Net/NetWorkHandler.lua",
    "chars": 525,
    "preview": "NetWorkHandler = {};\nlocal this = NetWorkHandler;\n\n-- 收到连接,断开事件\nfunction NetWorkHandler.OnNetEvent( event_from, event_ty"
  },
  {
    "path": "code/EVA/server/script/Framework/Net/protobuf.lua",
    "chars": 11822,
    "preview": "local c = require \"protobuf.c\"\n\nlocal setmetatable = setmetatable\nlocal type = type\nlocal table = table\nlocal assert = a"
  },
  {
    "path": "code/EVA/server/script/Framework/Queue.lua",
    "chars": 773,
    "preview": "\nQueue = class(\"Queue\")\n\n-- 构造函数\nfunction Queue:ctor()\n\t-- body\n\t-- 元素列表\n\tself._list = {};\nend\n\n-- 添加一个元素\nfunction Queue"
  },
  {
    "path": "code/EVA/server/script/Framework/SimpleStateMachine.lua",
    "chars": 9293,
    "preview": "-- region *.lua\n-- Date\n-- 此文件由[BabeLua]插件自动生成\n--local class = require(\"MiddleClass\")\n\nlocal simple_state_machine = clas"
  },
  {
    "path": "code/EVA/server/script/Framework/Stack.lua",
    "chars": 1039,
    "preview": "stack = { }\n\nfunction stack:create()\n    local t = { }\n    t._et = { }\n\n    function t:push(...)\n        if ... then\n   "
  },
  {
    "path": "code/EVA/server/script/Framework/StateFul.lua",
    "chars": 6292,
    "preview": "-- # Example\n-- ``` lua\n-- local class    = require 'middleclass'\n-- local Stateful = require 'stateful'\n-- local Enemy "
  },
  {
    "path": "code/EVA/server/script/Framework/Test/FSMClass.lua",
    "chars": 989,
    "preview": "local FSMClass = class(\"FSMClass\")\n\n-- 构造函数;\nfunction FSMClass:ctor()\n    \n    self._GameFSM \t\t\t= StateMachine:new();\n\n "
  },
  {
    "path": "code/EVA/server/script/Framework/Test/MainTest.lua",
    "chars": 493,
    "preview": "\n\nlocal BasePath = \"E:/BaseService/code/EVA/server/script/\";\npackage.path = BasePath .. \"Framework/Test/?.lua;\" .. BaseP"
  },
  {
    "path": "code/EVA/server/script/Framework/Test/TimerTest.lua",
    "chars": 406,
    "preview": "\nlocal TimerTest = class(\"TimerTest\")\n\nfunction TimerTest:ctor()\n\tself.val = 0; \n    \n    TimerMgr:AddTimer(1000, self, "
  },
  {
    "path": "code/EVA/server/script/Framework/TimerMgr.lua",
    "chars": 3237,
    "preview": "utils = require(\"Utils\")\n\nTimerMgr = {}\n\nlocal tbinsert  = table.insert\nlocal ums2t     = utils.ms2t\n\nfunction TimerMgr:"
  },
  {
    "path": "code/EVA/server/script/Framework/Utils.lua",
    "chars": 1095,
    "preview": "local _M = {}\n\nfunction _M.bind(func, ...)\n\tlocal args = {...}\n\treturn function(...)\n\t\tfunc(table.unpack(args), ...)\n\ten"
  },
  {
    "path": "code/EVA/server/script/Framework/functions.lua",
    "chars": 5074,
    "preview": "\n\n--[[\n实际上,除了 C++ 回调 Lua 函数之外,在其他所有需要回调的地方都可以使用 handler()。\n\n@param mixed obj Lua 对象\n@param function method 对象方法\n\n@return"
  },
  {
    "path": "code/EVA/server/script/Robot.luaprj",
    "chars": 1293,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Project Name=\"Robot.luaprj\" Cmd=\"E:\\BaseService\\build\\bin\\Debug\\client_robot.e"
  },
  {
    "path": "code/EVA/server/script/SharedLib/Event/EventType.lua",
    "chars": 258,
    "preview": "--========================================================= \n-- 事件类型\n--================================================="
  },
  {
    "path": "code/EVA/server/script/SharedLib/InitSharedLib.lua",
    "chars": 444,
    "preview": "--========================================================= \n-- 初始化游戏内共享工具,游戏逻辑相关。\n--==================================="
  },
  {
    "path": "code/EVA/server/script/SharedLib/StaticTableMgr.lua",
    "chars": 868,
    "preview": "StaticTableMgr = {}\n\nfunction StaticTableMgr:Init()\n\t\n    local ConfigPath = Misc.GetBasePath() .. \"/script/DataTable/\";"
  },
  {
    "path": "code/EVA/server/script/_FES/Client/Client.lua",
    "chars": 1079,
    "preview": "local Client = class(\"Client\")\n\n-- 构造函数;\nfunction Client:ctor()\n\tself.SockID     = nil;\n\tself.ConPLS     = nil;\n\tself.UI"
  },
  {
    "path": "code/EVA/server/script/_FES/Client/ClientMgr.lua",
    "chars": 1706,
    "preview": "ClientMgr = {}\n\n-- 初始化函数\nfunction ClientMgr:Init()\n\tself.ClientMap      = {};\n    self.SocketMap      = {};\nend\n\nfunctio"
  },
  {
    "path": "code/EVA/server/script/_FES/FrontEndService.lua",
    "chars": 1047,
    "preview": "FrontEndService = {}\n\nfunction FrontEndService:Init()\n\tself._EventRegister = EventRegister.new();\n\t\n\tself._EventRegister"
  },
  {
    "path": "code/EVA/server/script/_FES/Msg/MsgLogin.lua",
    "chars": 2580,
    "preview": "MsgLogin = {}\n\nfunction MsgLogin:Init()\n\n\tself._EventRegister = EventRegister.new();\n\t\n\tself._EventRegister:RegisterEven"
  },
  {
    "path": "code/EVA/server/script/_FES/Player/PlayerInfo.lua",
    "chars": 167,
    "preview": "-- Player PLS Info\nlocal PlayerInfo = class(\"PlayerInfo\")\n\n-- 构造函数;\nfunction PlayerInfo:ctor()\n\tself.PLSID      = nil;\n\t"
  },
  {
    "path": "code/EVA/server/script/_FES/Player/PlayerInfoMgr.lua",
    "chars": 580,
    "preview": "PlayerInfoMgr = {}\n\n-- 初始化函数\nfunction PlayerInfoMgr:Init()\n\tself.PlayerInfoMap      = Map:new();\nend\n\nfunction PlayerInf"
  },
  {
    "path": "code/EVA/server/script/_FES/_FESMain.lua",
    "chars": 2226,
    "preview": "--========================================================= \n-- 加载常用模块\n--==============================================="
  },
  {
    "path": "code/EVA/server/script/_FES.luaprj",
    "chars": 868,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Project Name=\"_FES.luaprj\" Cmd=\"E:\\BaseService\\build\\bin\\Debug\\frontend_servic"
  },
  {
    "path": "code/EVA/server/script/_PLS/DB/DBMgr.lua",
    "chars": 1691,
    "preview": "DBMgr = {}\n\n\nfunction DBMgr:Init()\n\n    self.ConnPlayerInfo = MysqlConn.NewInstance();\n    local conn_info = { \"localhos"
  },
  {
    "path": "code/EVA/server/script/_PLS/DB/DBProc.lua",
    "chars": 897,
    "preview": "local DBProc = class(\"DBProc\")\n\n-- 构造函数;\nfunction DBProc:ctor( Data )\n\tself:Init();\nend\n\n\nfunction DBProc:LuaTest()\n\n\tnl"
  },
  {
    "path": "code/EVA/server/script/_PLS/DB/DBSubProc.lua",
    "chars": 691,
    "preview": "local DBSubProc = class(\"DBSubProc\")\n\n-- 构造函数;\nfunction DBSubProc:ctor( Data )\n\tself:Init();\nend\n\nfunction DBSubProc:Lua"
  },
  {
    "path": "code/EVA/server/script/_PLS/DB/DBSubStart.lua",
    "chars": 344,
    "preview": "local BasePath = Misc.GetBasePath() .. \"/script/\";\npackage.path = BasePath .. \"_PLS/?.lua;\" .. BasePath .. \"Framework/?."
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/Common/CardsAnalyseRes.lua",
    "chars": 1866,
    "preview": "local CardsAnalyseRes = class(\"CardsAnalyseRes\")\n\n--[[\n        牌型分析结构,表示每张相同牌的信息。\n        Analyse必须是排序后的。\n--]]\n\nfunction"
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/Common/CommonDef.lua",
    "chars": 117,
    "preview": "\n\n\nfunction CardColor( card )\n    return card & 0xF0;\nend\n\nfunction CardValue( card )\n    return card & 0x0F;\nend\n\n\n\n"
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/Common/PokerDef.lua",
    "chars": 1834,
    "preview": "\n\n\n\nConstCardsPoker = {\n        0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,   -- 方块;\n        0x11,"
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/PokerDdz/DDZOutCardData.lua",
    "chars": 663,
    "preview": "local DdzOutCardData = class(\"DdzOutCardData\")\n\n-- 构造函数;\nfunction DdzOutCardData:ctor()\n    self:ClearData();\nend\n\nfunct"
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/PokerDdz/DdzCardTypes.lua",
    "chars": 16791,
    "preview": "DdzCardtypes = {}\n\nfunction DdzCardtypes:Init()\n    self.TempAnalyse    = CardsAnalyseRes:new();\nend\n\n-- out_cards      "
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/PokerDdz/DdzFSM.lua",
    "chars": 4709,
    "preview": "local FSMDouDiZhu = class(\"FSMDouDiZhu\")\n\n--[[\n        ߼״̬\n--]]\n\nfunction FSMDouDiZhu:ctor()\n    self._GameFSM \t\t\t= Stat"
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/PokerDdz/DdzPlayerInfo.lua",
    "chars": 1717,
    "preview": "local DdzPlayerInfo = class(\"DdzPlayerInfo\", RoomPlayerBase)\n\n--[[\n        \n--]]\n\nfunction DdzPlayerInfo:ctor()\n\n    sel"
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/PokerDdz/MsgRoomDdz.lua",
    "chars": 3044,
    "preview": "MsgRoomDdz = {}\n\n--[[\n        斗地主消息处理。\n--]]\n\nfunction MsgRoomDdz:Init()\n\tself._EventRegister = EventRegister.new();\n    "
  },
  {
    "path": "code/EVA/server/script/_PLS/Games/PokerDdz/RoomDdz.lua",
    "chars": 37724,
    "preview": "local RoomDdz = class(\"RoomDdz\", RoomBase)\n\nDdzFSM              = require(\"Games/PokerDdz/DdzFSM\")\nDdzPlayerInfo       ="
  },
  {
    "path": "code/EVA/server/script/_PLS/Msg/MsgLogin.lua",
    "chars": 1313,
    "preview": "MsgLogin = {}\n\nfunction MsgLogin:Init()\n\tself._EventRegister = EventRegister.new();\n    self._EventRegister:RegisterEven"
  },
  {
    "path": "code/EVA/server/script/_PLS/Msg/MsgRoom.lua",
    "chars": 2927,
    "preview": "MsgRoom = {}\n\n-- 构造函数;\nfunction MsgRoom:Init()\n\tself._EventRegister = EventRegister.new();\n\n    self._EventRegister:Regi"
  },
  {
    "path": "code/EVA/server/script/_PLS/Player/PlayerDataHelper.lua",
    "chars": 817,
    "preview": "local PlayerDataHelper = class(\"PlayerDataHelper\")\n\n-- 构造函数;\nfunction PlayerDataHelper:ctor()\n\n    self.f_uid          ="
  },
  {
    "path": "code/EVA/server/script/_PLS/Player/PlayerHelper.lua",
    "chars": 1678,
    "preview": "local PlayerHelper = class(\"PlayerHelper\")\n\n-- 构造函数;\nfunction PlayerHelper:ctor()\n    \n    self.PlayerDataHelper      = "
  },
  {
    "path": "code/EVA/server/script/_PLS/Player/PlayerMgr.lua",
    "chars": 1590,
    "preview": "PlayerMgr = {}\n\n-- 初始化函数\nfunction PlayerMgr:Init()\n\tself.playerMap      = Map:new();\n\n    self.RobotPool      = {};\n    "
  },
  {
    "path": "code/EVA/server/script/_PLS/PlayerLogicService.lua",
    "chars": 2013,
    "preview": "PlayerLogicService = {}\n\nfunction PlayerLogicService:Init()\n\n    -- 注册其它服务器启动的回调\n    Net.SetConnectionCallback(\"SCH\");\n "
  },
  {
    "path": "code/EVA/server/script/_PLS/Room/RoomBase.lua",
    "chars": 7777,
    "preview": "local RoomBase = class(\"RoomBase\")\n\n-- 构造函数;\nfunction RoomBase:ctor()\n    self.RoomID                 = RoomMgr:Generate"
  },
  {
    "path": "code/EVA/server/script/_PLS/Room/RoomFactory.lua",
    "chars": 451,
    "preview": "RoomFactory = {}\n\nfunction RoomFactory:Init()\n\t\n    self.RoomTypes                      = {};\n    self.RoomTypes[\"RM_DDZ"
  },
  {
    "path": "code/EVA/server/script/_PLS/Room/RoomMgr.lua",
    "chars": 3179,
    "preview": "RoomMgr = {}\n\nfunction RoomMgr:Init()\n\t\n    self.GameRooms          = Map:new();               --  {roomid, room_ins}\n  "
  },
  {
    "path": "code/EVA/server/script/_PLS/Room/RoomPlayerBase.lua",
    "chars": 2101,
    "preview": "local RoomPlayerBase = class(\"RoomPlayerBase\")\n\nfunction RoomPlayerBase:ctor()\n\n    self._State         = 0;\n    self._S"
  },
  {
    "path": "code/EVA/server/script/_PLS/_PLSConfig.lua",
    "chars": 276,
    "preview": "PLSConfig = {}\n\n\nPLSConfig[\"GameConfig\"] = {};\n\nPLSConfig.GameConfig[\"RM_DDZ\"] = { Max = 5000 };\n\n\n\n\n\n\n\nPlayerConfig = {"
  },
  {
    "path": "code/EVA/server/script/_PLS/_PLSMain.lua",
    "chars": 2795,
    "preview": "--========================================================= \n-- 加载常用模块\n--==============================================="
  },
  {
    "path": "code/EVA/server/script/_PLS/hotfix_module_names.lua",
    "chars": 212,
    "preview": "-- Module names need hotfix.\n-- hotfix_helper.lua will reload this module in check().\n-- So it can be changed dynamicall"
  },
  {
    "path": "code/EVA/server/script/_PLS.luaprj",
    "chars": 2226,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Project Name=\"_PLS.luaprj\" Cmd=\"E:\\BaseService\\build\\bin\\Debug\\player_logic_se"
  },
  {
    "path": "code/EVA/server/script/_SCH/Msg/MsgLogin.lua",
    "chars": 1825,
    "preview": "--========================================================= \n-- SCH   负责分配到一个PLS\n--====================================="
  },
  {
    "path": "code/EVA/server/script/_SCH/Msg/MsgRoom.lua",
    "chars": 1089,
    "preview": "MsgRoom = {}\n\nfunction MsgRoom:Init()\n\tself._EventRegister = EventRegister.new();\n    self._EventRegister:RegisterEvent("
  },
  {
    "path": "code/EVA/server/script/_SCH/PLSInfo/PLSGameInfo.lua",
    "chars": 292,
    "preview": "local PLSGameInfo = class(\"PLSGameInfo\")\n\n-- 构造函数;\nfunction PLSGameInfo:ctor()\n    self.Type       = \"\";\n\tself.Max      "
  },
  {
    "path": "code/EVA/server/script/_SCH/PLSInfo/PLSInfo.lua",
    "chars": 1000,
    "preview": "local PLSInfo = class(\"PLSInfo\")\n\n-- 构造函数;\nfunction PLSInfo:ctor()\n\tself.ServiceID      = 0;\n    self.ServiceName    = \""
  },
  {
    "path": "code/EVA/server/script/_SCH/PLSInfo/PLSInfoMgr.lua",
    "chars": 1386,
    "preview": "PLSInfoMgr = {}\n\n-- 初始化函数\nfunction PLSInfoMgr:Init()\n    self.PLSMap         = Map:new();\n    self._EventRegister = Even"
  },
  {
    "path": "code/EVA/server/script/_SCH/Player/PlayerInfo.lua",
    "chars": 716,
    "preview": "-- Player SCH Info\nlocal PlayerInfo = class(\"PlayerInfo\")\n\n-- 构造函数;\nfunction PlayerInfo:ctor()\n\tself.ConPLS         = -1"
  },
  {
    "path": "code/EVA/server/script/_SCH/Player/PlayerInfoMgr.lua",
    "chars": 1065,
    "preview": "PlayerInfoMgr = {}\n\n-- 初始化函数\nfunction PlayerInfoMgr:Init()\n\tself.PlayerInfoMap      = Map:new();\n    \n    nlinfo(\"Player"
  },
  {
    "path": "code/EVA/server/script/_SCH/Room/RoomIDAlloter.lua",
    "chars": 869,
    "preview": "local RoomIDAlloter = class(\"RoomIDAlloter\")\n\n-- 构造函数;\nfunction RoomIDAlloter:ctor()\n\tself.IDPool         = {};\n    self"
  },
  {
    "path": "code/EVA/server/script/_SCH/Room/RoomInfo.lua",
    "chars": 230,
    "preview": "local RoomInfo = class(\"RoomInfo\")\n\n-- 构造函数;\nfunction RoomInfo:ctor()\n    \n\tself.PLSID          = -1;\n    self.RoomType "
  },
  {
    "path": "code/EVA/server/script/_SCH/Room/RoomMgr.lua",
    "chars": 3809,
    "preview": "RoomMgr = {}\n\nfunction RoomMgr:Init()\n    \n    self._RoomIDPool            = {};\n    self._RoomsInfo             = MapMa"
  },
  {
    "path": "code/EVA/server/script/_SCH/ScheduleService.lua",
    "chars": 1228,
    "preview": "ScheduleService = {}\n\nfunction ScheduleService:Init()\n\tself._EventRegister = EventRegister.new();\n\t\n\tself._EventRegister"
  },
  {
    "path": "code/EVA/server/script/_SCH/_SCHMain.lua",
    "chars": 1436,
    "preview": "--========================================================= \n-- 加载常用模块\n--==============================================="
  },
  {
    "path": "code/EVA/server/script/_SCH.luaprj",
    "chars": 1218,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Project Name=\"_SCH.luaprj\" Cmd=\"E:\\BaseService\\build\\bin\\Debug\\schedule_servic"
  },
  {
    "path": "code/EVA/server/script/__Robot/RobotSub/FSMRobot.lua",
    "chars": 1758,
    "preview": "local FSMRobot = class(\"FSMRobot\")\n\n--[[\n        ߼״̬\n--]]\n\nfunction FSMRobot:ctor()\n    self._GameFSM \t\t\t= StateMachine:"
  },
  {
    "path": "code/EVA/server/script/__Robot/RobotSub/GameDdz/FSMDdz.lua",
    "chars": 3868,
    "preview": "local FSMDdz = class(\"FSMDdz\")\n\n--[[\n        Ϸ߼״̬\n--]]\n\nfunction FSMDdz:ctor()\n    self._GameFSM \t\t\t= StateMachine:new()"
  },
  {
    "path": "code/EVA/server/script/__Robot/RobotSub/GameDdz/RobotGameDdz.lua",
    "chars": 6002,
    "preview": "local RobotGameDdz = class(\"RobotGameDdz\", RobotGameBase)\n\nfunction RobotGameDdz:ctor()\n    self.super:ctor();\n    self."
  },
  {
    "path": "code/EVA/server/script/__Robot/RobotSub/PublicRoomInfo.lua",
    "chars": 202,
    "preview": "local PublicRoomInfo = class(\"PublicRoomInfo\")\n\nfunction PublicRoomInfo:ctor()\n\t\n    self.RoomType       = \"\";\n    self."
  },
  {
    "path": "code/EVA/server/script/__Robot/RobotSub/PublicRoomInfoMgr.lua",
    "chars": 738,
    "preview": "PublicRoomInfoMgr = {}\n\n-- Ϣrobot佻Ϣʹá\nfunction PublicRoomInfoMgr:Init()\n\t\n    self.Rooms      =   {};  -- room_tyype, {r"
  },
  {
    "path": "code/EVA/server/script/__Robot/RobotSub/Robot.lua",
    "chars": 2899,
    "preview": "local Robot = class(\"Robot\")\n\nfunction Robot:ctor()\n\t\n    self.Data               = RobotData:new();\n    self.Fsm       "
  },
  {
    "path": "code/EVA/server/script/__Robot/RobotSub/RobotData.lua",
    "chars": 760,
    "preview": "local RobotData = class(\"RobotData\")\n\nfunction RobotData:ctor()\n\t\n    self.UID            = 0;\n    self.User           ="
  }
]

// ... and 994 more files (download for full content)

About this extraction

This page contains the full source code of the li9chuan/BaseService GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1194 files (8.3 MB), approximately 2.2M tokens, and a symbol index with 5396 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!