Doxygen tree-view shows only one group/module - doxygen

In a few different .h files, I have:
/**
* #defgroup NAME <title>
* <description>
* #{
*/
// ...
/** #} */
that is, I define a few groups. In the generated HTML documentation, all the groups show up under Modules. However, in the tree view hierarchy, only the first group shows up. Why?
If I enable the normal Modules menu via DISABLE_INDEX = NO, then the menu includes all 3 modules (as it should). So why doesn't the tree view show all 3?
I am using Doxygen 1.8.13.
For completeness, here is my Doxyfile showing only those values that differ from the default:
PROJECT_NAME = "cdecl"
PROJECT_BRIEF = "Compose and decipher C (or C++) type declarations or casts, aka ‘‘gibberish.’’"
INPUT = README.md src
EXTENSION_MAPPING = l=C y=C
FILE_PATTERNS = *.c *.h *.l *.md *.y
FILTER_PATTERNS = "*.h=sed s/CDECL_[A-Z]*_INLINE/inline/"
PREDEFINED = __GNUC__ \
WITH_READLINE \
WITH_TERM_COLUMNS
EXCLUDE = src/config.h \
src/lexer.c \
src/literals.h src/literals.c \
src/parser.c src/parser.h
OUTPUT_DIRECTORY = docs
EXTRACT_ALL = YES
EXTRACT_PACKAGE = YES
EXTRACT_STATIC = YES
DISABLE_INDEX = YES
GENERATE_TREEVIEW = YES
ALPHABETICAL_INDEX = NO
ENUM_VALUES_PER_LINE = 1
FORCE_LOCAL_INCLUDES = YES
INTERNAL_DOCS = YES
JAVADOC_AUTOBRIEF = YES
MARKDOWN_SUPPORT = YES
MAX_INITIALIZER_LINES = 0
OPTIMIZE_OUTPUT_FOR_C = YES
QUIET = YES
SHOW_INCLUDE_FILES = NO
SORT_BRIEF_DOCS = YES
TAB_SIZE = 2
TYPEDEF_HIDES_STRUCT = YES
USE_MDFILE_AS_MAINPAGE = README.md
WARN_NO_PARAMDOC = YES
SOURCE_BROWSER = YES
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_LINK_SOURCE = YES
REFERENCES_RELATION = YES

Despite my using a force-reload in the browser, apparently that does not cause JavaScript to be reloaded. The modules are done using JavaScript (why??). So the answer is that there's nothing wrong with Doxygen or my use of it: it's a stupid browser-caching issue.
In order to force-reload everything, I had to clear the browser cache to see the changes. This is really annoying while writing the documentation.

Related

OpenStack Swift proxy-server.conf already had [filter:authtoken] section

I'm trying to use swift with keystone authentication. I followed this link https://docs.openstack.org/swift/latest/overview_auth.html#keystone-auth to edit my proxy-server.conf but I noticed that at the bottom of the file [filter:authtoken] is already there, while in the comments section I can uncomment a section with the same name of [filter:authtoken], right now the bottom part looks like this:
[filter:authtoken]
include_service_catalog = False
cache = swift.cache
delay_auth_decision = 1
memcached_servers = localhost:11211
cafile = /opt/stack/data/ca-bundle.pem
project_domain_name = Default
project_name = service
user_domain_name = Default
password = 1234
username = swift
auth_url = http://10.180.204.223/identity
interface = public
auth_type = password
What should I do with it? Should I keep it, modify it according to the link, or should I uncomment the section and add the code according to the link?

How to make an extension configurable through extension manager (TYPO3)

I am currently developing my own TYPO3 extension (in v 9.5.11) and I would like to make some settings of my extension customisable. When I go to Admin Tools-->Settings-->Extension Configuration-->Configure Extensions, I can already change those settings.
However in earlier versions of TYPO3 (e.g. v7) it was possible to also make an extension configurable through Admin Tools-->Extensions-->"clicking the settings wheel of the desired extension" (see picture).
Where do I implement said function?
You simply define your desired settings in the file ext_conf_template.txt which needs to be stored in the root level of your extension.
The official TYPO3 documentation contains detailed instructions.
Like Michael said, you need to put all settings into the ext_conf_template.txt
Here is an example of my extension "slug" wich you can also find on Github or in the TYPO3 repository. It contains some special fields and even translations.
# Settings
###########################
# cat=defaults; type=options[10,20,30,40,50,60,70,80,90,100,150,200,300,400,500]; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:default.maxentries
defaultMaxEntries = 20
# cat=defaults; type=options[crdate,tstamp,title,slug,sys_language_uid,is_siteroot,doktype]; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:default.orderby
defaultOrderBy = crdate
# cat=defaults; type=options[DESC,ASC]; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:default.order
defaultOrder = DESC
# cat=defaults; type=boolean; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:default.recordInfoEnabled
recordInfoEnabled = 1
# cat=tree; type=boolean; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:tree.enabled
treeEnabled = 1
# cat=tree; type=options[1,2,3,4,5,6,7,8,9,10]; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:tree.depth
treeDefaultDepth = 3
# cat=tree; type=string; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:tree.root
treeDefaultRoot =
# cat=custom records; type=boolean; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:record.enabled
recordEnabled = 0
# cat=custom records; type=options[10,20,30,40,50,60,70,80,90,100,150,200,300,400,500]; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:record.maxentries
recordMaxEntries = 10
# cat=custom records; type=options[crdate,title,path_segment,sys_language_uid]; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:record.orderby
recordOrderBy = crdate
# cat=custom records; type=options[DESC,ASC]; label=LLL:EXT:slug/Resources/Private/Language/locallang_be.xlf:record.order
recordOrder = DESC
And here is how I use the settigs in any Controller I want:
<?php
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
class ExtensionController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
public function __construct() {
$this->backendConfiguration = GeneralUtility::makeInstance(ExtensionConfiguration::class)->get('slug');
}
public function myRandomFunction(){
$variable = $this->backendConfiguration['recordMaxEntries'];
}
}
This is how it looks:

Typo3 using constants in "Constant" field

I want to form file path.
In "Constant" field:
const.siteName = site
templates = fileadmin/templates/{$const.siteName}/
When i look in typoscript object browser:
[siteName] = site
[templates] = fileadmin/templates/{$const.siteName}/
Is it possible to achieve this:
[templates] = fileadmin/templates/site/
using const.siteName?
If yes, how?
=========================================================================
EDIT:
What i am tying to do is next:
In my extension configuration
const.siteName = foo
const.templates = fileadmin/templates/($const.siteName)/
const.path.extensions = ($const.templates)/ext/
I include my extension in typoscript template. In my extension setup i include setup for plugin like this:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:foo/Configuration/TypoScript/Plugin/formhandler.ts">
In Configuration/TypoScript/Plugin/formhandler.ts:
plugin.Tx_Formhandler {
/* snip */
settings.predef.member {
templateFile.value = {$const.path.extensions}formhandler/member/step-1.html // doesn't work
//templateFile.value = fileadmin/templates/foo/ext/formhandler/member/step-1.html // works
}
/* snip */
}
For me, this example works perfect:
Constants:
const.test = foo
const.test2 = {$const.test}/bar
Setup:
page = PAGE
page.10 = TEXT
page.10.value = {$const.test}
page.10.wrap = <p>|</p>
page.20 = TEXT
page.20.value = {$const.test2}
page.20.wrap = <p>|</p>
Output in Browser:
foo
foo/bar
Tested with TYPO3 4.5 and 8.3
Have a look at the TYPO3 NG/ML/Forum:
https://forum.typo3.org/index.php?t=msg&th=212721&goto=740111&#msg_740111
there are a lot of hints how to use constants in typoscript:
you can reuse constants in constants definition, but only up to 10 levels deep.
you can use constants in conditions, but only in setup-part
short : NO
long: you can only use constants in your setup.
what you can do is:
CONSTANTS
const.siteName = site
const.templatePath = fileadmin/templates
SETUP:
myTemplate= {$const.templatePath}/{$const.siteName}

simulink - GetSet Custom Storage Class

I am having a model which takes two input & multiplies them & give the output.
output_1 = input_1 * input_2
I have declared my simulink signals as CustomStorageClass= GetSet
input_1 = Simulink.Signal;
input_1.CoderInfo.StorageClass = 'Custom';
input_1.CoderInfo.CustomStorageClass = 'GetSet';
input_1.CoderInfo.CustomAttributes.GetFunction = 'Get_input_1';
input_1.CoderInfo.CustomAttributes.SetFunction = 'Set_input_1';
input_1.CoderInfo.CustomAttributes.HeaderFile = 'signals.h';
input_2 = Simulink.Signal;
input_2.CoderInfo.StorageClass = 'Custom';
input_2.CoderInfo.CustomStorageClass = 'GetSet';
input_2.CoderInfo.CustomAttributes.GetFunction = 'Get_input_2';
input_2.CoderInfo.CustomAttributes.SetFunction = 'Set_input_2';
input_2.CoderInfo.CustomAttributes.HeaderFile = 'signals.h';
output_1 = Simulink.Signal;
output_1.CoderInfo.StorageClass = 'Custom';
output_1.CoderInfo.CustomStorageClass = 'GetSet';
output_1.CoderInfo.CustomAttributes.GetFunction = 'Get_output_1';
output_1.CoderInfo.CustomAttributes.SetFunction = 'Set_output_1';
output_1.CoderInfo.CustomAttributes.HeaderFile = 'signals.h';
Now I am trying to convert my model to code using simulink coder.
In code generation setting of the model i have selected ert.tlc file in the system target file settings.
But the generated code does not have a Get_input_1() or Get_input_2() call like shown in this link.
http://www.mathworks.com/help/ecoder/ug/getset-custom-storage-classes.html
What i have missed in the setting. Please suggest
I know you probably already solved this issue, but I have also seen this behavior before.
Sometimes MATLAB does not update the header files correctly. If you had set a different configuration for your variable and then made a change involving the header files, I would recommend erasing the *_ert_rtw and slprj folders (they will appear again). It is similar to doing a "Make clean" operation, to ensure that everything is brand new.

Typoscript condition && condition not working?

This is my (shortened) code:
lib.nav = COA
lib.nav {
50 = HMENU
50 {
[ ... ]
wrap = <nav>|</nav>
}
}
[browser = msie] && [version = <9]
lib.nav.50.wrap = <div id="nav">|</div>
[global]
What I know (did):
[browser = msie] alone works but for all IE (I need less than 9)
I installed the conditions extension
I searched for it but couldn't find anything that would fit exactly my problem
What I need is either a TS snippet that would work or maybe a workaround.
Thanks!
I know the question is quite old, but I've just solved similar problem. In my case condition failed because I used it inside a block like this:
config {
# htmlTag_setParams, adding language and some classes for the Foundation framework
[browser = msie] && [version =< 9]
htmlTag_setParams = lang="{$config.language}" class="no-js lt-ie9"
[else]
htmlTag_setParams = lang="{$config.language}" class="no-js"
[global]
}
as soon as I rewritten it as
# htmlTag_setParams, adding language and some classes for the Foundation framework
[browser = msie] && [version =< 9]
config.htmlTag_setParams = lang="{$config.language}" class="no-js lt-ie9"
[else]
config.htmlTag_setParams = lang="{$config.language}" class="no-js"
[global]
it started working as expected
P.S. I'm using Typo3 v6.1
Your condition looks correct.
So, perhaps you have an different error? Try to separate your problems via testing the condition without side-effects. Create a new page, create a new ts-template and put this code into it:
page >
page = PAGE
page.typeNum = 0
page.10 = TEXT
[browser = msie] && [version = <9]
page.10.value = Condition is meet
[else]
page.10.value = Condition is not meet
[global]
Now open this page in your browser. Now you can adjust your Conditions. If everything works, the problem is somewhere else.
If your scripts are stored and nested in the file-system (e.g. with INCLUDE_TYPOSCRIPT), try to insert your condition directly in your typo3 back-end, in the setup field of your main template.
#your previously included file
<INCLUDE_TYPOSCRIPT: source="FILE:fileadmin/templates/_TypoScript/myTyposcriptFile.ts">
#your condition
page >
page = PAGE
page.typeNum = 0
page.10 = TEXT
[browser = msie] && [version = <9]
page.10.value = Condition is meet
[else]
page.10.value = Condition is not meet
[global]
You can also check if your conditions are working as expected by using the "condition" function at the bottom of the TypoScript Object Browser.
The problem is that the [browser = msie] isn't working anymore (T3 4.5+). The test setup always shows that the condition is not meet even though I'm watching in Internet Explorer.