Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add a switch to allow doxygen to process inlcude files in a specific path #9621

Open
steve02081504 opened this issue Oct 2, 2022 · 33 comments
Labels
C/C++ needinfo reported bug is incomplete, please add additional info

Comments

@steve02081504
Copy link

Describe the bug
I've been using doxygen to generate documentation for my project since yesterday and it's really great!
However, there are some incompatibilities with doxygen in the writing of my project that are causing me some problems, and I don't know how to configure it to solve these problems

First, here is the website I generated with doxygen:
https://elc-lang.github.io/ELC/
Let me take a snippet of code from my project here to illustrate the problem:

//include APIs:elc中可能根据编译环境而修改的底层函数
#include "../../../../../_share/APIs/alloc.hpp"//using at memory/alloc
#include "../../../../../_share/APIs/die.hpp"//using at memory/gc
//include locale:自然语言相关的字符串
#include "../../../../../_share/locale/using.hpp"//strings

namespace elc::defs{ //在elc::defs中定义内容
	#include "../_share/_defs.hpp"

	namespace memory{
		#include "memory/lifetime/_body.hpp"
	}
	namespace base{
		#include "tools/_body.hpp"//依赖lifetime
	}

	namespace memory{
		#include "memory/_body.hpp"//依赖list
	}
	using namespace memory;
//........................

As you can see, my project uses a lot of includes (click here if you're curious about how many), and as far as I know doxygen only handles include definitions in namesapce
But my project pretty much uses includes to build the code, so I had to take a strange approach: I used a tool to pre-process the family of headers in my project that I wanted to document into a single file (it was close to 1mb in size) and then processed the full definition file with doxygen

Expected behavior
I wish there was a switch to allow doxygen to process inlcude files in a specific path normally!

Screenshots
图片

@albert-github albert-github added needinfo reported bug is incomplete, please add additional info C/C++ labels Oct 2, 2022
@albert-github
Copy link
Collaborator

Please don't add external links as they might not persistent, but include the files in a zip or compressed tar file to the question).
It is not 100% clear what you want, did you add the files / directories with the include files to INPUT and INCLUDE_PATH?

  • Can you please attach a, small, self contained example (source+configuration file in a, compressed, tar or zip file) that allows us to reproduce the problem? Please don't add external links as they might not be persistent.
  • Please also specify the full doxygen version used (doxygen -v).

@steve02081504
Copy link
Author

#9621 (comment)

doxygen version:
1.9.5 (2f6875a)

tmp.zip
This is the basic configuration file generated, I'm not sure what you want to reproduce so I've put both versions of the headers in this zip, right now I'm using all_defs.cpp but I want to use all_defs_ref.cpp to generate the documentation

Thanks for the heads up, I tried putting the folder directly in INCLUDE_PATH or INPUT and couldn't get the output I wanted

@albert-github
Copy link
Collaborator

albert-github commented Oct 2, 2022

In the file all_defs_ref.cpp you specified:

#include "include_files/elc/all"

but the file all doesn't exist, do you want that doxygen collects all the include files?

Maybe have a look at the RECURSIVE setting so maybe something like:

INPUT = include_files/elc
RECURSIVE = YES
# to limit just to the *.h files
FILE_PATTERNS = *.h
  • I'm missing the doxygen settings file (i.e. the result of doxygen -x Doxyfile)

@steve02081504
Copy link
Author

#9621 (comment)

Sorry, I wrote the wrong include path in the example file, the all_defs_ref.cpp should include include_files/elc/all
I did configure the documentation generation as you said (the extension filter defaults and recursively processes the entire folder), but if you try it you will see that it does not generate the same result as all_defs.hpp, it does not seem to resolve the namespaces of the classes and functions correctly

And sorry I didn't use the default configuration file name, the configuration file name in zip is ELC.docgen

@albert-github
Copy link
Collaborator

  • You didn't make the typo but I did (corrected)
  • in the zip file I see a lot of empty directories en just the files:
    ./all_defs_ref.cpp
    ./include_files/elc/_files/base_stream/operators/placeholder
    ./include_files/elc/_files/core/args/auto copilot.ahk
    ./include_files/elc/_files/log/log/placeholder
    
    so no ELC.docgen.

Please create a new zip file with the ELC.docgen and without the empty directories, the placeholders and the .ahk file but with one or two .h files (with some information).

@steve02081504
Copy link
Author

#9621 (comment)

I think I understand why, I was using the lzma method to compress the zip file, so some decompression software may not be able to read it correctly.
This is a zip file compressed in the traditional way
tmp.zip

@albert-github
Copy link
Collaborator

I see from the new zip file quite a few more files.
Looks indeed like the unzipper I used (unzip.exe from Cygwin, directly used under Windows) didn't like the original zip file whilst 7-zip and the native view in the file with Windows did see all files.

@steve02081504
Copy link
Author

steve02081504 commented Oct 2, 2022

I have updated the contents of the zip file to make the all_defs.cpp consistent with all_defs_ref.cpp (comments and a loop condition update)
This doesn't affect the result of the documentation, but I just wanted to fix this little problem
XD
tmp.zip

@steve02081504
Copy link
Author

Uh, just in case, if you parse the file with clang, clang will report 1000+ errors, but it's not a problem with the content of the file
图片
See this issue for details
elc/string compiles fine under msvc with c++23 (although elc/core will cause msvc to crash).

@albert-github
Copy link
Collaborator

I think I understand a bit what you want and I don't think this is out of the box possible by doxygen as doxygen uses the include file information in the files where they are included but doesn't show their content with that file. For the later you have to add the files as separate files to INPUT, like

INPUT         = include_files/elc/_files
RECURSIVE = YES

though this will not show all files in one go but as separate parts.

I think that there are some possibilities though with the aid of filters,

  • which command did you use to generate all_defs.cpp?

maybe I can think of something based on this command.

@steve02081504
Copy link
Author

steve02081504 commented Oct 3, 2022

@albert-github
Copy link
Collaborator

OK I understand, so quite specific and dedicated for your project.

  • so in this case what would the syntax be to write the file all_defs.cpp ?
  • Would it be possible to write the output of your tool to standard output?

@steve02081504
Copy link
Author

#9621 (comment)

  • Its syntax is still c++ (fully equivalent to the input file when being included), although doxygen doesn't seem to respond to the #line preprocessing command
  • That's right, I can update it to output to standard output if you want

@steve02081504
Copy link
Author

and this tool is in theory a generic pre-processor but processing only part of the content

@albert-github
Copy link
Collaborator

Its syntax is still c++ (fully equivalent to the input file when being included), although doxygen doesn't seem to respond to the #line preprocessing command

  • Doxygen will / should use the #line as a reference for warnings.
  • How is the file all generated? Is this a workaround or is this always necessary or ....
  • I don't get the syntax this please show the line to go currently from all_defs_ref.cpp to all_defs.cpp as doxygen needs a file as input to act upon, internally the directories mentioned in INPUT are expanded based on the settings like RECURSIVE and FILE_PATTERNS.
    In case your tool would write directly to stdout this would probably be an advantage, but with a bat file any the output can be easily written to standard output with the type command.

@steve02081504
Copy link
Author

#9621 (comment)

  • The all elc/XXX file can be included and used directly under normal circumstances just like a normal header file
  • This little tool was created on a whim and is now used when the target software cannot properly handle indirect file inclusion (such as godbolt's network file inclusion or doxygen's document generation)
  • I don't quite understand what you're saying in 3, as far as I know doxygen only deals with includes in namesapce, whereas my tool deals with all double quoted includes

@albert-github
Copy link
Collaborator

Is the following line:

..\Header_File_constructor\x64\Release\Header_File_constructor.exe all_defs_ref.cpp all_defs.cpp

the line used to obtain the file all_defs.cpp?

@steve02081504
Copy link
Author

#9621 (comment)

Yes!
Sorry my English is not good enough to understand😂

@albert-github
Copy link
Collaborator

albert-github commented Oct 3, 2022

OK probably the following will work:

FILTER_PATTERNS = all_defs_ref.cpp=mybat.bat

with
mybat.bat

@echo off
..\Header_File_constructor\x64\Release\Header_File_constructor.exe %1
type all_defs.cpp

maybe you have to fiddle a bit with the path of the executable.

(I think my Chinese is worse, as it is non-existent 😉)

@steve02081504
Copy link
Author

I've just tried the configuration method you mentioned for a while and it does automate the process of building all_defs.cpp before I run doxygen, but it doesn't look like the generated documentation content attributes the definitions of the different elements to the files indirectly contained in all_defs_ref.hpp but all_defs_ref.hpp itself. In the source code viewer provided on the documentation page, all_defs_ref.hpp is still a huge thing of tens of thousands of lines😢
Is there any way for doxygen to correctly categorise where this content is actually defined and show the entire file tree?🤔

@albert-github
Copy link
Collaborator

To see what happens for this filter in doxygen try to run doxygen with some options:

  • doxygen -d extcmd to see what is called
  • doxygen -d filteroutput to see what doxygen thinks that has to be processed after the filter operation.

The entire file tree, when I understand you correctly, would probably be obtained (without using the filter), when you use settings like:

INPUT         = include_files/elc/_files
RECURSIVE = YES

@steve02081504
Copy link
Author

So I should run doxygen twice, once to get the correct namespace classification and once to get the correct file tree?
I don't quite understand it.

@albert-github
Copy link
Collaborator

No you don't have to run doxygen twice you can also run doxygen -d extcmd -d filteroutput, but it is easier to do the debugging step by step:

  1. see that the command is executed as expected (finding the paths etc.)
  2. see that the filter output for doxygen is what is expected.

@steve02081504
Copy link
Author

I don't think I can debug the config file to make doxygen produce the output I want, and I don't really understand what you are trying to do
If it helps your understanding, here's the file I use to build these things now (with the latest version of Header_File_constructor)
And I'm expecting the same parsing result as with all_defs.hpp and the same file tree as with include_files/elc

tmp.zip

@albert-github
Copy link
Collaborator

In #9621 (comment) I gave a recipe to run the filter (with the remark that you might need to fiddle around a bit with some paths).
In #9621 (comment) options were given to run some tests to see what happens.
Lets concentrate on doxygen -d extcmd first and also use the -q flag (so doxygen -d extcmd -q) or set in your configuration file QUIET = YES.
this should give only a little bit of some output and report this back.

@steve02081504
Copy link
Author

Sorry for the late reply, I think it might be because I didn't sleep well last night I'm not in the best shape right now
I was just debugging the Header_File_constructor and noticed that the fragmented file tree I posted in tmp.zip doesn't seem to be enough to generate the full file content, sorry.
I've rearranged the contents of tmp.zip to make sure it's complete, but I still can't figure out what the problem is.
tmp.zip
When I tried to run doxygen I didn't find any record of a call to the bat file, which is strange, and I'm having trouble concentrating now

with -d extcmd -d filteroutput and

FILTER_PATTERNS = all_defs_ref.cpp=mybat.bat
INPUT = all_defs_ref.cpp
The selected output language "chinese" has not been updated
since release 1.9.4.  As a result some sentences may appear in English.

Doxygen version used: 1.9.5 (2f6875a5ca481a69a6f32650c77a667f87d25e88)
Searching for include files...
Searching for example files...
Searching for images...
Searching for dot files...
Searching for msc files...
Searching for dia files...
Searching for files to exclude
Searching INPUT for files to process...
Reading and parsing tag files
Parsing files
Preprocessing C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp...
Parsing file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp...
Building macro definition list...
Building group list...
Building directory list...
Building namespace list...
Building file list...
Building class list...
Building concept list...
Computing nesting relations for classes...
Associating documentation with classes...
Associating documentation with concepts...
Building example list...
Searching for enumerations...
Searching for documented typedefs...
Searching for members imported via using declarations...
Searching for included using directives...
Searching for documented variables...
Building interface member list...
Building member list...
Searching for friends...
Searching for documented defines...
Computing class inheritance relations...
Computing class usage relations...
Flushing cached template relations that have become invalid...
Computing class relations...
Add enum values to enums...
Searching for member function documentation...
Creating members for template instances...
Building page list...
Search for main page...
Computing page relations...
Determining the scope of groups...
Sorting lists...
Determining which enums are documented
Computing member relations...
Building full member lists recursively...
Adding members to member groups.
Computing member references...
Inheriting documentation...
Generating disk names...
Adding source references...
Adding xrefitems...
Sorting member lists...
Setting anonymous enum type...
Computing dependencies between directories...
Generating citations page...
Counting members...
Counting data structures...
Resolving user defined references...
Finding anchors and sections in the documentation...
Transferring function references...
Combining using relations...
Adding members to index pages...
Correcting members for VHDL...
Computing tooltip texts...
Generating style sheet...
Generating search indices...
Generating example documentation...
Generating file sources...
Generating code for file all_defs_ref.cpp...
Generating file documentation...
Generating docs for file all_defs_ref.cpp...
Generating page documentation...
Generating group documentation...
Generating class documentation...
Generating concept documentation...
Generating namespace index...
Generating graph info page...
Generating directory documentation...
Generating index page...
Generating page index...
Generating module index...
Generating namespace index...
Generating namespace member index...
Generating concept index...
Generating annotated compound index...
Generating alphabetical compound index...
Generating hierarchical class index...
Generating graphical class hierarchy...
Generating member index...
Generating file index...
Generating file member index...
Generating example index...
finalizing index lists...
writing tag file...
Running plantuml with JAVA...
Running dot...
Generating dot graphs using 5 parallel threads...
Executing external command `dot.exe "C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/docs/graph_legend.dot" -Tsvg -o "C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/docs/graph_legend.svg"`
Executing external command `dot.exe "C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/docs/all__defs__ref_8cpp__incl.dot" -Tsvg -o "C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/docs/all__defs__ref_8cpp__incl.svg" -Tcmapx -o "C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/docs/all__defs__ref_8cpp__incl.map"`
Running dot for graph 1/2
Running dot for graph 2/2
Patching output file 1/3
Patching output file 2/3
Patching output file 3/3
type lookup cache used 0/65536 hits=0 misses=0
symbol lookup cache used 0/65536 hits=0 misses=0
finished...
*** Doxygen has finished

I'll probably get some sleep and track these developments in about 10 hours

@steve02081504
Copy link
Author

https://github.com/ELC-lang/Header_File_constructor/releases/tag/v2.2
With this version, you can use this command to produce standard output without a temporary file

Header_File_constructor.exe %1 -s

See you in ten hours!🥱😴

@albert-github
Copy link
Collaborator

albert-github commented Oct 3, 2022

Doesn't look like the filter has been picked up, it is possible that the line should read:

FILTER_PATTERNS = *all_defs_ref.cpp=mybat.bat

or

FILTER_PATTERNS = */all_defs_ref.cpp=mybat.bat

or in this special case

INPUT_FILTER=mybat.bat

@steve02081504
Copy link
Author

steve02081504 commented Oct 4, 2022

with -d extcmd -q and

FILTER_PATTERNS = */all_defs_ref.cpp=mybat.bat
INPUT = all_defs_ref.cpp
Executing popen(`mybat.bat "C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp"`)
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:593: warning: no matching file member found for 
requires::std::is_unsigned_v< T > constexpr auto elc::defs::base::magic_number::rotl_nomod(T v, auto r)
Possible candidates:
 'requires ::std::is_unsigned_v< T > constexpr auto rotl_nomod(const T v, const auto R) noexcept' at line 593 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp 'requires ::std::is_unsigned_v< T > constexpr auto rotl_nomod(const T v, const rot_iterator< T > &r) noexcept' at line 661 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:6718: warning: no uniquely matching class member found for 
  base_t
Possible candidates:
  'array_like_view_t< T > elc::defs::base::array_like_n::array_end_by_zero_t< T >::base_t' at line 1887 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'array_like_view_t< const char_T > elc::defs::base::string_view_n::string_view_t< char_T >::base_t' at line 2914 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'string_view_t< char > elc::defs::base::type_name_t::base_t' at line 3019 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'string_view_t< char_T > elc::defs::base::constexpr_str_n::constexpr_str_view_t< char_T >::base_t' at line 3105 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'constexpr_str_view_t< char_T > elc::defs::base::constexpr_str_n::constexpr_str_t< char_T >::base_t' at line 3135 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_construct_t elc::defs::memory::lifetime_n::construct_t< T >::base_t' at line 5762 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'same_base_t< value_t, base_t_w > elc::defs::base::iterator_n::base_iterator_t< value_t, base_t_w >::base_t' at line 6644 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_alloc_t elc::defs::memory::alloc_n::alloc_t< T >::base_t' at line 7263 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'free_t elc::defs::memory::alloc_n::free_t::base_t' at line 7296 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'realloc_t elc::defs::memory::alloc_n::realloc_t::base_t' at line 7310 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_get_t elc::defs::memory::get_n::get_t< T >::base_t' at line 7744 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'ref_t elc::defs::memory::ptr_n::ref_able< T >::base_t' at line 8457 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'ref_t elc::defs::memory::ptr_n::weak_ref_able< T >::base_t' at line 8488 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'same_ref_p_t< T, ref_type > elc::defs::memory::ptr_n::ptr_t< T, ref_type, do_replace_check >::base_t' at line 8561 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'ptr_t< T, ref_type, do_replace_check > elc::defs::memory::ptr_n::base_ptr_t< T, ref_type, do_replace_check >::base_t' at line 8685 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_func_data_t< Ret_t(Args_t...)> elc::defs::container::function_n::func_data_t< T, Ret_t(Args_t...)>::base_t' at line 9424 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_func_data_t< Ret_t(Args_t...)> elc::defs::container::function_n::default_func_data_t< Ret_t(Args_t...)>::base_t' at line 9461 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'function_data_saver_t< Ret_t(Args_t...)> elc::defs::container::function_n::base_function_t< Ret_t(Args_t...) noexcept(nothrow), promise_nothrow_at_destruct >::base_t' at line 9535 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_stack_t< T > elc::defs::container::stack_n::auto_stack_t< T >::base_t' at line 10177 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'comn_ptr_t< T > elc::defs::memory::ptr_n::root_ptr_t< T, enable_state >::base_t' at line 11102 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'binary_node_base_t elc::defs::core::binary_node_t< T >::base_t' at line 13814 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::null_string_data_t< char_T >::base_t' at line 15456 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::constexpr_string_data_t< char_T >::base_t' at line 15526 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::comn_string_data_t< char_T >::base_t' at line 15648 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::substr_string_data_t< char_T >::base_t' at line 15811 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::base_t' at line 15983 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::end_apply_string_data_t< char_T >::base_t' at line 16258 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::sum_string_data_t< char_T >::base_t' at line 16529 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::erased_string_data_t< char_T >::base_t' at line 16768 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::inserted_string_data_t< char_T >::base_t' at line 17005 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'base_string_data_t< char_T > elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::base_t' at line 17346 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp
  'constexpr elc::defs::core::core_runtime_internal_helper_n::base_t::base_t() noexcept' at line 13461 of file C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp

Executing popen(`mybat.bat "C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp"`)
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:3399: warning: argument 'args' of command @param is not found in the argument list of elc::defs::base::invoke_t< T >::_as(Args &&... rest) const
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:3399: warning: The following parameter of elc::defs::base::invoke_t::_as(Args &&... rest) const is not documented:
  parameter 'rest'
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:7133: warning: found documented return type for elc::defs::memory::alloc_n::default_method::base_free that does not return anything
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:7504: warning: found documented return type for elc::defs::memory::get_n::alloc_size_cut that does not return anything
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:7516: warning: found documented return type for elc::defs::memory::get_n::alloc_size_grow that does not return anything
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:7546: warning: found documented return type for elc::defs::memory::get_n::alloc_size_grow_with_insert_uninitialized_data that does not return anything
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:7624: warning: found documented return type for elc::defs::memory::get_n::forward_alloc_size_cut that does not return anything
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:7657: warning: found documented return type for elc::defs::memory::get_n::forward_alloc_size_grow that does not return anything
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5841: warning: Unsupported xml/html tag <> found
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5841: warning: Unsupported xml/html tag <> found
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5842: warning: Unsupported xml/html tag <> found
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5842: warning: Unsupported xml/html tag <> found
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5854: warning: Unsupported xml/html tag <> found
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5855: warning: Unsupported xml/html tag <> found
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5910: warning: Unsupported xml/html tag <> found
C:/Users/steve02081504/Documents/workstation/ELC_workdirs/tmp/all_defs_ref.cpp:5911: warning: Unsupported xml/html tag <> found
*** Doxygen has finished

The documentation was built successfully, although all_defs_ref.hpp is still tens of thousands of lines long

@albert-github
Copy link
Collaborator

Do I understand it correctly that the problem has been solved?

@steve02081504
Copy link
Author

steve02081504 commented Oct 4, 2022

#9621 (comment)

Maybe I'm misrepresenting it, what I want is for doxygen to correctly process all_defs_ref.cpp and generate the full file tree and generate the correct namespace tree as it does for all_defs.cpp
But at the moment all we are both doing is creating a temporary all_defs.cpp from all_defs_ref.cpp automatically when doxygen generates it, right? This doesn't change the problem with the generated results, and I still don't get the documentation output I want.

@albert-github
Copy link
Collaborator

The mybat.bat contains, to the best of my knowledge, something like .../Header_File_constructor.exe %1 -s so that when all_defs_ref.cpp is offered it will be expanded to an enormous list but no new file should be written as you write about the -s option:

-s, --std-out
    Output to standard output

and this is fed through the popen to doxygen.

For testing / debugging I would as the all_defs_ref.cpp will generated very much output reduce the all_defs_ref.cpp to include just 1 file. You can use at that moment the -d filteroutput to see whether or not doxygen will be fed with the expected input from the filter.

@steve02081504
Copy link
Author

steve02081504 commented Oct 5, 2022

#9621 (comment)

You're right, but all Header_File_constructor does is handle all the double-quoted includes and skip some of the preprocess ifs based on the define, and I think if doxygen could provide an optional function to do the same, at least the problems caused by indirect includes like this could be solved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C/C++ needinfo reported bug is incomplete, please add additional info
Projects
None yet
Development

No branches or pull requests

2 participants