diff --git a/.gitignore b/.gitignore index 7274744..513a0dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # ccls and clangd caches .ccls-cache/ .clangd/ +.cache/ # build directories build*/ diff --git a/example/.gitignore b/example/.gitignore new file mode 100644 index 0000000..2c108a2 --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,11 @@ +# ccls and clangd caches +.ccls-cache/ +.clangd/ +.cache/ + +# build directories +build*/ + +# hdoc output and test files +hdoc-test/ +hdoc-output/ diff --git a/example/.hdoc.toml b/example/.hdoc.toml new file mode 100644 index 0000000..d4492a1 --- /dev/null +++ b/example/.hdoc.toml @@ -0,0 +1,22 @@ +[project] +name = "example" +version = "0.0.1" +git_repo_url = "https://github.com/example/example/" +git_default_branch = "main" + +[paths] +compile_commands = "build/compile_commands.json" +output_dir = "hdoc-output" + +[includes] +paths = [] +use_system_includes = true + +[ignore] +paths = [ + "/tests/", + "/subprojects/", +] + +[pages] +homepage = "README.md" diff --git a/example/example.cpp b/example/example.cpp new file mode 100644 index 0000000..363e9ba --- /dev/null +++ b/example/example.cpp @@ -0,0 +1,405 @@ +#include +#include +#include +#include + +#define EXAMPLE_MACRO_CONST 123 +#define EXAMPLE_MACRO_FUNC(x) ((x) + 1) +#define EXAMPLE_MACRO_VARARGS_1(a, b, ...) ((a)((b), __VA_ARGS__)) +#define EXAMPLE_MACRO_VARARGS_2(...) ((void)(__VA_ARGS__)) + +#define EXAMPLE_MACRO_DEFINE_STRUCT(name) \ + struct macro_##name {}; + +#define EXAMPLE_MACRO_DEFINE_OPERATOR(name, ret, op) ret operator op(const name&) const; + +namespace example { + +EXAMPLE_MACRO_DEFINE_STRUCT(struct) + +struct struct_with_macro_expansions { + EXAMPLE_MACRO_DEFINE_STRUCT(nested_struct) + EXAMPLE_MACRO_DEFINE_OPERATOR(struct_with_macro_expansions, bool, ==) + EXAMPLE_MACRO_DEFINE_OPERATOR(struct_with_macro_expansions, bool, !=) +}; + +enum unscoped_enum { u_value1 = -1, u_value2, u_value3, u_value4 }; +enum unscoped_int_enum : int { ui_value1 = -1, ui_value2, ui_value3, ui_value4 }; +enum class scoped_enum { value1, value2, value3 = value2, value4 }; +enum class scoped_int_enum : int { value1, value2, value3 = value2, value4 }; + +using alias = int; +typedef int alias_typedef; +template using alias_template = std::vector; +template using alias_variadic_template = std::tuple; +template