From 0c82209bca885b0f9cd80ab4717e63b7dfa75cab Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Fri, 4 Jan 2019 14:34:43 +0100 Subject: Add assorted unfished doc files to repo --- doc/Development/Hacking.asciidoc | 52 +++++++++++++++++++++++++++++ doc/images/browser-for-fun.png | Bin 0 -> 186244 bytes doc/meson.build | 70 +++++++++++++++++++++++---------------- doc/smolbote.asciidoc | 22 ++++++++++++ 4 files changed, 116 insertions(+), 28 deletions(-) create mode 100644 doc/Development/Hacking.asciidoc create mode 100644 doc/images/browser-for-fun.png create mode 100644 doc/smolbote.asciidoc (limited to 'doc') diff --git a/doc/Development/Hacking.asciidoc b/doc/Development/Hacking.asciidoc new file mode 100644 index 0000000..d0332e9 --- /dev/null +++ b/doc/Development/Hacking.asciidoc @@ -0,0 +1,52 @@ +== C++ Performance +(Adapted from CppCon2016 Practical Performance Practices) +https://florianjw.de/en/cpp_coding_standard.html + +- Prefer std::array, then std::vector +- Construct and initialize in one step +- Use const always when possible +- To enable const with complex initialization, use lambdas +- Don't recalculate values that only need to be calculated once +- Don't disable move operations - moving is more efficient than copying +- Avoid shared_ptr copies unless really needed +- Prefer returning unique_ptr from factories +- Use '\n' instead of std::endl +- Use lambdas - they have no overhead compared to direct functions +- final can help the compiler optimize virtual function calls +- Code branches are expensive + +=== Smaller code is faster code + +=== Do one thing and do it well +Simple code is easy to understand, easy to maintain, and as such lead to less bugs. + +=== Only use text formats +They can be edited both by humans and by programs. Use generic formats (ini, json, etc.) instead of custom ones. + +=== Document your changes +Don't do this just for others, do it for your future self. + +== Useful compiler options +- -fuse-ld=gold +- -Wold-style-cast + +=== Setting in meson +Compiler arguments are free-form comma-separated list. +meson configure -Dcpp_args="-Wold-style-cast" +meson configure -Dcpp_link_args="-fuse-ld=gold" + +== C++ Coding Standard + +=== Naming Conventions +- Naming uses camelCase +- Private attributes are prefixed with 'm_'. +- Include guards should be named SMOLBOTE__H + +=== Compiler +- Use the highest sane warning level. + +=== Resource management +- Manage your resources with RAII (Resource Acquisition Is Initialization). + +=== Functions +- Try to keep the complexity low and the body short. diff --git a/doc/images/browser-for-fun.png b/doc/images/browser-for-fun.png new file mode 100644 index 0000000..72d24e6 Binary files /dev/null and b/doc/images/browser-for-fun.png differ diff --git a/doc/meson.build b/doc/meson.build index d45aea1..868b8d5 100644 --- a/doc/meson.build +++ b/doc/meson.build @@ -1,28 +1,42 @@ -if get_option('manpage').enabled() - asciidoctor = find_program('asciidoctor', required: true) - - custom_target('manpage', - # list depend_files so the output can be updated if any of them are changed - depend_files: ['smolbote.7.asciidoc', 'Usage/CommandLine.asciidoc', 'Usage/Configuration.asciidoc', 'Usage/Profile.asciidoc', 'Usage/Plugins.asciidoc', 'Usage/Filter.asciidoc'], - input: 'smolbote.7.asciidoc', - output: 'smolbote.7', - command: [asciidoctor, '--backend=manpage', '--out-file=@OUTPUT@', '@INPUT@'], - build_by_default: true, - install: true, install_dir: join_paths(get_option('mandir'), 'man7') - ) - - custom_target('manpage.5', - # list of files this target depends on - depend_files: ['smolbote.5.asciidoc'], - - input: 'smolbote.5.asciidoc', - output: 'smolbote.5', - - command: [asciidoctor, '--backend=manpage', '--out-file=@OUTPUT@', '@INPUT@'], - - build_by_default: true, - install: true, - install_dir: get_option('mandir') / 'man5' - ) - -endif +asciidoctor = find_program('asciidoctor', required: get_option('manpage')) + +custom_target('manpage.7', + # list depend_files so the output can be updated if any of them are changed + depend_files: ['smolbote.7.asciidoc', 'Usage/CommandLine.asciidoc', 'Usage/Configuration.asciidoc', 'Usage/Profile.asciidoc', 'Usage/Plugins.asciidoc', 'Usage/Filter.asciidoc'], + + input: 'smolbote.7.asciidoc', + output: 'smolbote.7', + + command: [asciidoctor, '--backend=manpage', '--out-file=@OUTPUT@', '@INPUT@'], + + build_by_default: get_option('manpage').enabled(), + install: get_option('manpage').enabled(), + install_dir: join_paths(get_option('mandir'), 'man7') +) + +custom_target('manpage.5', + # list of files this target depends on + depend_files: ['smolbote.5.asciidoc'], + + input: 'smolbote.5.asciidoc', + output: 'smolbote.5', + + command: [asciidoctor, '--backend=manpage', '--out-file=@OUTPUT@', '@INPUT@'], + + build_by_default: get_option('manpage').enabled(), + install: get_option('manpage').enabled(), + install_dir: get_option('mandir') / 'man5' +) + +custom_target('manual', + depend_files: ['smolbote.asciidoc'], + + input: 'smolbote.asciidoc', + output: 'manual.html', + + command: [asciidoctor, '-a', 'imagesdir=images', '--out-file=@OUTPUT@', '@INPUT@'], + + build_by_default: false, + install: false +) + diff --git a/doc/smolbote.asciidoc b/doc/smolbote.asciidoc new file mode 100644 index 0000000..101ce77 --- /dev/null +++ b/doc/smolbote.asciidoc @@ -0,0 +1,22 @@ += smolbote: yet another no-frills web browser +:doctype: book +:toc: left +:data-uri: + +[preface] +image::browser-for-fun.png[World Domination cat, role="thumb right"] +smolbote is a cross-platform keep-it-simple free software web browser based on +Qt and QtWebEngine. + +''' + +include::Usage/CommandLine.asciidoc[] + +include::Usage/Configuration.asciidoc[] + +include::Usage/Profile.asciidoc[] + +include::Usage/Plugins.asciidoc[] + +include::Usage/Filter.asciidoc[] + -- cgit v1.2.1