{"id":28506404,"url":"https://github.com/42-course/libftpp-docs","last_synced_at":"2026-02-03T03:31:59.425Z","repository":{"id":263312017,"uuid":"889995388","full_name":"42-Course/libftpp-docs","owner":"42-Course","description":"libftpp documentation","archived":false,"fork":false,"pushed_at":"2024-12-15T22:15:52.000Z","size":5585,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-08T20:05:44.279Z","etag":null,"topics":["documentation","doxygen","sphinx"],"latest_commit_sha":null,"homepage":"https://github.com/42-Course/libftpp","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/42-Course.png","metadata":{"files":{"readme":"README.html","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-17T18:51:22.000Z","updated_at":"2025-05-22T17:41:06.000Z","dependencies_parsed_at":"2024-11-17T19:40:38.839Z","dependency_job_id":"fa9ee701-3309-4b9c-a564-77a4eeed02ec","html_url":"https://github.com/42-Course/libftpp-docs","commit_stats":null,"previous_names":["pulgamecanica/libftpp","42-course/libftpp-docs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/42-Course/libftpp-docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42-Course%2Flibftpp-docs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42-Course%2Flibftpp-docs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42-Course%2Flibftpp-docs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42-Course%2Flibftpp-docs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/42-Course","download_url":"https://codeload.github.com/42-Course/libftpp-docs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/42-Course%2Flibftpp-docs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263061400,"owners_count":23407605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","doxygen","sphinx"],"created_at":"2025-06-08T20:05:39.319Z","updated_at":"2026-02-03T03:31:59.368Z","avatar_url":"https://github.com/42-Course.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n\u003chtml class=\"writer-html5\" lang=\"en\" data-content_root=\"./\"\u003e\n\u003chead\u003e\n  \u003cmeta charset=\"utf-8\" /\u003e\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /\u003e\n\n  \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /\u003e\n  \u003ctitle\u003eWelcome to libftpp \u0026mdash; libftpp 0 documentation\u003c/title\u003e\n      \u003clink rel=\"stylesheet\" type=\"text/css\" href=\"_static/pygments.css?v=80d5e7a1\" /\u003e\n      \u003clink rel=\"stylesheet\" type=\"text/css\" href=\"_static/css/theme.css?v=19f00094\" /\u003e\n\n  \n  \u003c!--[if lt IE 9]\u003e\n    \u003cscript src=\"_static/js/html5shiv.min.js\"\u003e\u003c/script\u003e\n  \u003c![endif]--\u003e\n  \n        \u003cscript src=\"_static/jquery.js?v=5d32c60e\"\u003e\u003c/script\u003e\n        \u003cscript src=\"_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c\"\u003e\u003c/script\u003e\n        \u003cscript src=\"_static/documentation_options.js?v=8dde47fa\"\u003e\u003c/script\u003e\n        \u003cscript src=\"_static/doctools.js?v=9bcbadda\"\u003e\u003c/script\u003e\n        \u003cscript src=\"_static/sphinx_highlight.js?v=dc90522c\"\u003e\u003c/script\u003e\n    \u003cscript src=\"_static/js/theme.js\"\u003e\u003c/script\u003e\n    \u003clink rel=\"index\" title=\"Index\" href=\"genindex.html\" /\u003e\n    \u003clink rel=\"search\" title=\"Search\" href=\"search.html\" /\u003e\n    \u003clink rel=\"next\" title=\"Data Structures\" href=\"data_structures.html\" /\u003e\n    \u003clink rel=\"prev\" title=\"libftpp documentation\" href=\"index.html\" /\u003e \n\u003c/head\u003e\n\n\u003cbody class=\"wy-body-for-nav\"\u003e \n  \u003cdiv class=\"wy-grid-for-nav\"\u003e\n    \u003cnav data-toggle=\"wy-nav-shift\" class=\"wy-nav-side\"\u003e\n      \u003cdiv class=\"wy-side-scroll\"\u003e\n        \u003cdiv class=\"wy-side-nav-search\" \u003e\n\n          \n          \n          \u003ca href=\"index.html\" class=\"icon icon-home\"\u003e\n            libftpp\n          \u003c/a\u003e\n\u003cdiv role=\"search\"\u003e\n  \u003cform id=\"rtd-search-form\" class=\"wy-form\" action=\"search.html\" method=\"get\"\u003e\n    \u003cinput type=\"text\" name=\"q\" placeholder=\"Search docs\" aria-label=\"Search docs\" /\u003e\n    \u003cinput type=\"hidden\" name=\"check_keywords\" value=\"yes\" /\u003e\n    \u003cinput type=\"hidden\" name=\"area\" value=\"default\" /\u003e\n  \u003c/form\u003e\n\u003c/div\u003e\n        \u003c/div\u003e\u003cdiv class=\"wy-menu wy-menu-vertical\" data-spy=\"affix\" role=\"navigation\" aria-label=\"Navigation menu\"\u003e\n              \u003cp class=\"caption\" role=\"heading\"\u003e\u003cspan class=\"caption-text\"\u003eIndex:\u003c/span\u003e\u003c/p\u003e\n\u003cul class=\"current\"\u003e\n\u003cli class=\"toctree-l1 current\"\u003e\u003ca class=\"current reference internal\" href=\"#\"\u003eWelcome to libftpp\u003c/a\u003e\u003cul\u003e\n\u003cli class=\"toctree-l2\"\u003e\u003ca class=\"reference internal\" href=\"#overview\"\u003eOverview\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l2\"\u003e\u003ca class=\"reference internal\" href=\"#requirements\"\u003eRequirements\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l2\"\u003e\u003ca class=\"reference internal\" href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l2\"\u003e\u003ca class=\"reference internal\" href=\"#documentation\"\u003eDocumentation\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l2\"\u003e\u003ca class=\"reference internal\" href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l2\"\u003e\u003ca class=\"reference internal\" href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003cul\u003e\n\u003cli class=\"toctree-l3\"\u003e\u003ca class=\"reference internal\" href=\"#notes\"\u003eNotes:\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli class=\"toctree-l1\"\u003e\u003ca class=\"reference internal\" href=\"data_structures.html\"\u003eData Structures\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l1\"\u003e\u003ca class=\"reference internal\" href=\"design_patterns.html\"\u003eDesign Patterns\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l1\"\u003e\u003ca class=\"reference internal\" href=\"iostream.html\"\u003eIOStream\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l1\"\u003e\u003ca class=\"reference internal\" href=\"thread.html\"\u003eThread\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l1\"\u003e\u003ca class=\"reference internal\" href=\"network.html\"\u003eNetwork\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l1\"\u003e\u003ca class=\"reference internal\" href=\"mathematics.html\"\u003eMathematics\u003c/a\u003e\u003c/li\u003e\n\u003cli class=\"toctree-l1\"\u003e\u003ca class=\"reference internal\" href=\"time.html\"\u003eTime\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n        \u003c/div\u003e\n      \u003c/div\u003e\n    \u003c/nav\u003e\n\n    \u003csection data-toggle=\"wy-nav-shift\" class=\"wy-nav-content-wrap\"\u003e\u003cnav class=\"wy-nav-top\" aria-label=\"Mobile navigation menu\" \u003e\n          \u003ci data-toggle=\"wy-nav-top\" class=\"fa fa-bars\"\u003e\u003c/i\u003e\n          \u003ca href=\"index.html\"\u003elibftpp\u003c/a\u003e\n      \u003c/nav\u003e\n\n      \u003cdiv class=\"wy-nav-content\"\u003e\n        \u003cdiv class=\"rst-content\"\u003e\n          \u003cdiv role=\"navigation\" aria-label=\"Page navigation\"\u003e\n  \u003cul class=\"wy-breadcrumbs\"\u003e\n      \u003cli\u003e\u003ca href=\"index.html\" class=\"icon icon-home\" aria-label=\"Home\"\u003e\u003c/a\u003e\u003c/li\u003e\n      \u003cli class=\"breadcrumb-item active\"\u003eWelcome to libftpp\u003c/li\u003e\n      \u003cli class=\"wy-breadcrumbs-aside\"\u003e\n            \u003ca href=\"_sources/README.md.txt\" rel=\"nofollow\"\u003e View page source\u003c/a\u003e\n      \u003c/li\u003e\n  \u003c/ul\u003e\n  \u003chr/\u003e\n\u003c/div\u003e\n          \u003cdiv role=\"main\" class=\"document\" itemscope=\"itemscope\" itemtype=\"http://schema.org/Article\"\u003e\n           \u003cdiv itemprop=\"articleBody\"\u003e\n             \n  \u003csection id=\"welcome-to-libftpp\"\u003e\n\u003ch1\u003eWelcome to libftpp\u003ca class=\"headerlink\" href=\"#welcome-to-libftpp\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h1\u003e\n\u003csection id=\"overview\"\u003e\n\u003ch2\u003eOverview\u003ca class=\"headerlink\" href=\"#overview\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis library provides 7 core components:\u003c/p\u003e\n\u003ctable class=\"docutils align-default\"\u003e\n\u003cthead\u003e\n\u003ctr class=\"row-odd\"\u003e\u003cth class=\"head\"\u003e\u003cp\u003eComponent\u003c/p\u003e\u003c/th\u003e\n\u003cth class=\"head\"\u003e\u003cp\u003eAll-in-one Header\u003c/p\u003e\u003c/th\u003e\n\u003cth class=\"head\"\u003e\u003cp\u003eDependencies\u003c/p\u003e\u003c/th\u003e\n\u003cth class=\"head\"\u003e\u003cp\u003eDescription\u003c/p\u003e\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd\u003e\u003cp\u003e\u003cstrong\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eData\u003c/span\u003e \u003cspan class=\"pre\"\u003eStructures\u003c/span\u003e\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003edata_structures.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003epool.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003edata_buffer.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eThis structures will help you manage and serialize data.\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003e\u003cstrong\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eDesign\u003c/span\u003e \u003cspan class=\"pre\"\u003ePatterns\u003c/span\u003e\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003edesign_patterns.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ememento.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eobserver.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eobservable_value.hpp\u003c/span\u003e\u003c/code\u003e \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003esingleton.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003estate_machine.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eContains a set of utils to handle different scenarios in your programs.\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd\u003e\u003cp\u003e\u003cstrong\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eIOStream\u003c/span\u003e\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ethread_safe_iostream.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003elogger.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ethread_safe_iostream.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003elogger.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eDefines a structure to deal with output and input for programs using threads, and a logger.\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003e\u003cstrong\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eThread\u003c/span\u003e\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ethreading.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ethread_safe_queue.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ethread.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eworker_pool\u003c/span\u003e \u003cspan class=\"pre\"\u003e.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003epersistent_worker.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eWhich contain a set of utils to handle threads.\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd\u003e\u003cp\u003e\u003cstrong\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eNetwork\u003c/span\u003e\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003enetwork.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003emessage.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eserver.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eclient.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eA set of utils to generate a server and a client which can comunicate via the \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eMessage\u003c/span\u003e\u003c/code\u003e class.\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-odd\"\u003e\u003ctd\u003e\u003cp\u003e\u003cstrong\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eMathematics\u003c/span\u003e\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eIVector2.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eIVector2.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eIVector3.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003erandom_2D_coordinate_generator.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eperlin_noise_2D.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eImplementation of a 2D and 3D vecotor with utils and operators. Implementation of random generator and perlinnoise 2D coordinates generator.\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr class=\"row-even\"\u003e\u003ctd\u003e\u003cp\u003e\u003cstrong\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eTime\u003c/span\u003e\u003c/code\u003e\u003c/strong\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eTime.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003e\u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003echronometer.hpp\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003etimer.hpp\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003escheduler.hpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cp\u003eTime related utils.\u003c/p\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003cp\u003e\u003cem\u003eNote\u003c/em\u003e: \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eServer\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eClient\u003c/span\u003e\u003c/code\u003e use the \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eObserver\u003c/span\u003e\u003c/code\u003e design pattern.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cem\u003eNote\u003c/em\u003e: The \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003ePersistentWorker\u003c/span\u003e\u003c/code\u003e uses \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003eWorkerPool\u003c/span\u003e\u003c/code\u003e to provide a strong and reliable thread worker, abstracting the thread logic.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/section\u003e\n\u003csection id=\"requirements\"\u003e\n\u003ch2\u003eRequirements\u003ca class=\"headerlink\" href=\"#requirements\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eC++17 or later\u003c/strong\u003e: The library utilizes features introduced in C++11 such as \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003estd::unique_ptr\u003c/span\u003e\u003c/code\u003e, \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003estd::stack\u003c/span\u003e\u003c/code\u003e \u0026amp; \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003estd::function\u003c/span\u003e\u003c/code\u003e (lambdas).\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eNo External Dependencies\u003c/strong\u003e: This library does not require any external libraries.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/section\u003e\n\u003csection id=\"installation\"\u003e\n\u003ch2\u003eInstallation\u003ca class=\"headerlink\" href=\"#installation\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003col class=\"arabic\"\u003e\n\u003cli\u003e\u003cp\u003eClone the repository and build:\u003c/p\u003e\n\u003cdiv class=\"highlight-bash notranslate\"\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003egit\u003cspan class=\"w\"\u003e \u003c/span\u003eclone\u003cspan class=\"w\"\u003e \u003c/span\u003ehttps://github.com/pulgamecanica/libftpp.git\n\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003elibftpp\nmake\u003cspan class=\"w\"\u003e \u003c/span\u003eall\nmake\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nb\"\u003etest\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eoptional\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/pre\u003e\u003c/div\u003e\n\u003c/div\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eInclude the header files in your project:\u003c/p\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003cp\u003eAdd include/ directory to the list of searched directories\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eCompile your project:\u003c/p\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003cp\u003eEnsure your build system (e.g., Makefile) includes the header files and links any required dependencies.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eMake sure that you link the library correctly: \u003ccode class=\"docutils literal notranslate\"\u003e\u003cspan class=\"pre\"\u003e-L/path/to/libftpp.a\u003c/span\u003e \u003cspan class=\"pre\"\u003e-lftpp\u003c/span\u003e\u003c/code\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/section\u003e\n\u003csection id=\"documentation\"\u003e\n\u003ch2\u003eDocumentation\u003ca class=\"headerlink\" href=\"#documentation\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFor more details on each class and method, refer to the header files.\u003c/p\u003e\n\u003c/section\u003e\n\u003csection id=\"license\"\u003e\n\u003ch2\u003eLicense\u003ca class=\"headerlink\" href=\"#license\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eThis library is licensed under the MIT License. See the LICENSE file for more details.\u003c/p\u003e\n\u003c/section\u003e\n\u003csection id=\"contributing\"\u003e\n\u003ch2\u003eContributing\u003ca class=\"headerlink\" href=\"#contributing\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003eFeel free to fork the repository and submit pull requests. Contributions are welcome to improve the functionality and performance of the library.\u003c/p\u003e\n\u003chr class=\"docutils\" /\u003e\n\u003csection id=\"notes\"\u003e\n\u003ch3\u003eNotes:\u003ca class=\"headerlink\" href=\"#notes\" title=\"Link to this heading\"\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cul class=\"simple\"\u003e\n\u003cli\u003e\u003cp\u003eThe library is designed to be \u003cstrong\u003eheader-only\u003c/strong\u003e, so you can simply include the relevant header files in your projects.\u003c/p\u003e\u003c/li\u003e\n\u003cli\u003e\u003cp\u003eWhile this library handles basic memory pooling and object serialization needs, it can be extended with more complex features like thread-safety or more advanced serialization strategies and networking.\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/section\u003e\n\u003c/section\u003e\n\u003c/section\u003e\n\n\n           \u003c/div\u003e\n          \u003c/div\u003e\n          \u003cfooter\u003e\u003cdiv class=\"rst-footer-buttons\" role=\"navigation\" aria-label=\"Footer\"\u003e\n        \u003ca href=\"index.html\" class=\"btn btn-neutral float-left\" title=\"libftpp documentation\" accesskey=\"p\" rel=\"prev\"\u003e\u003cspan class=\"fa fa-arrow-circle-left\" aria-hidden=\"true\"\u003e\u003c/span\u003e Previous\u003c/a\u003e\n        \u003ca href=\"data_structures.html\" class=\"btn btn-neutral float-right\" title=\"Data Structures\" accesskey=\"n\" rel=\"next\"\u003eNext \u003cspan class=\"fa fa-arrow-circle-right\" aria-hidden=\"true\"\u003e\u003c/span\u003e\u003c/a\u003e\n    \u003c/div\u003e\n\n  \u003chr/\u003e\n\n  \u003cdiv role=\"contentinfo\"\u003e\n    \u003cp\u003e\u0026#169; Copyright 2024, pulgamecanica.\u003c/p\u003e\n  \u003c/div\u003e\n\n  Built with \u003ca href=\"https://www.sphinx-doc.org/\"\u003eSphinx\u003c/a\u003e using a\n    \u003ca href=\"https://github.com/readthedocs/sphinx_rtd_theme\"\u003etheme\u003c/a\u003e\n    provided by \u003ca href=\"https://readthedocs.org\"\u003eRead the Docs\u003c/a\u003e.\n   \n\n\u003c/footer\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n    \u003c/section\u003e\n  \u003c/div\u003e\n  \u003cscript\u003e\n      jQuery(function () {\n          SphinxRtdTheme.Navigation.enable(true);\n      });\n  \u003c/script\u003e \n\n\u003c/body\u003e\n\u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42-course%2Flibftpp-docs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F42-course%2Flibftpp-docs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F42-course%2Flibftpp-docs/lists"}