From: gokuls Date: Fri, 9 Jun 2017 03:31:58 +0000 (-0400) Subject: Cleanup code and correct License X-Git-Tag: 1.0.0-Amsterdam~265 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=demo.git;a=commitdiff_plain;h=4d6ce277921f99c440ebcd1796b4d6447af36f3b Cleanup code and correct License Change-Id: I5f1b07772c08d098e44f5e5b987c2dea9e115465 Signed-off-by: Gokul Singaraju --- diff --git a/vnfs/VES5.0/collector/LICENSE.md b/vnfs/VES5.0/collector/LICENSE.md deleted file mode 100644 index f1313840..00000000 --- a/vnfs/VES5.0/collector/LICENSE.md +++ /dev/null @@ -1,27 +0,0 @@ -BSD License - -Copyright (c) 2016, AT&T Intellectual Property. All other rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted -provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions - and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, this list of - conditions and the following disclaimer in the documentation and/or other materials provided - with the distribution. -3. All advertising materials mentioning features or use of this software must display the - following acknowledgement: This product includes software developed by the AT&T. -4. Neither the name of AT&T nor the names of its contributors may be used to endorse or - promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT -SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. diff --git a/vnfs/VES5.0/collector/README.md b/vnfs/VES5.0/collector/README.md deleted file mode 100644 index b81ada39..00000000 --- a/vnfs/VES5.0/collector/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# ECOMP Vendor Event Listener API Test Collector - -This project contains a Python application that represents a test version of -the ECOMP Vendor Event Listener API. For an overview of ECOMP, see the -[ECOMP White Paper](http://att.com/ECOMP). For an overview of the -ECOMP Vendor Event Listener, see the -[ECOMP Vendor Event Listener Library project](http://github.com/blsaws/evel-library). - -Developed in 2016 for AT&T by: - * Alok Gupta (https://github.com/ag1367) - * Paul Potochniak (https://github.com/pp8491) - * Gayathri Patrachari(https://github.com/gp2421) - -Current Maintainers: - * Alok Gupta (https://github.com/ag1367) - * Paul Potochniak (https://github.com/pp8491) - * Gayathri Patrachari(https://github.com/gp2421) - -# Installation - -Clone this project, and follow the instructions in the [Test Collector User -Guide](./docs/test_collector_user_guide/test_collector_user_guide.md). - -# Use - -The code is documented using docstrings - start from the -[Test Collector](./code/collector/collector.py). - -For further information see the [Vendor Event Listener -specification](./docs/att_interface_definition/att_service_specification.docx). \ No newline at end of file diff --git a/vnfs/VES5.0/collector/code/collector/__init__.py b/vnfs/VES5.0/collector/code/collector/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/vnfs/VES5.0/collector/code/collector/collector.py b/vnfs/VES5.0/collector/code/collector/collector.py deleted file mode 100644 index 32c48cbb..00000000 --- a/vnfs/VES5.0/collector/code/collector/collector.py +++ /dev/null @@ -1,656 +0,0 @@ -#!/usr/bin/env python -''' -Program which acts as the collector for the Vendor Event Listener REST API. - -Only intended for test purposes. - -License -------- - -Copyright(c) <2016>, AT&T Intellectual Property. All other rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: This product includes - software developed by the AT&T. -4. Neither the name of AT&T nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' - -from rest_dispatcher import PathDispatcher, set_404_content -from wsgiref.simple_server import make_server -import sys -import os -import platform -import traceback -import time -from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter -import ConfigParser -import logging.handlers -from base64 import b64decode -import string -import json -import jsonschema -from functools import partial - -_hello_resp = '''\ - - - Hello {name} - - -

Hello {name}!

- -''' - -_localtime_resp = '''\ - -''' - -__all__ = [] -__version__ = 0.1 -__date__ = '2015-12-04' -__updated__ = '2015-12-04' - -TESTRUN = False -DEBUG = False -PROFILE = False - -#------------------------------------------------------------------------------ -# Credentials we expect clients to authenticate themselves with. -#------------------------------------------------------------------------------ -vel_username = '' -vel_password = '' - -#------------------------------------------------------------------------------ -# The JSON schema which we will use to validate events. -#------------------------------------------------------------------------------ -vel_schema = None - -#------------------------------------------------------------------------------ -# The JSON schema which we will use to validate client throttle state. -#------------------------------------------------------------------------------ -throttle_schema = None - -#------------------------------------------------------------------------------ -# The JSON schema which we will use to provoke throttling commands for testing. -#------------------------------------------------------------------------------ -test_control_schema = None - -#------------------------------------------------------------------------------ -# Pending command list from the testControl API -# This is sent as a response commandList to the next received event. -#------------------------------------------------------------------------------ -pending_command_list = None - -#------------------------------------------------------------------------------ -# Logger for this module. -#------------------------------------------------------------------------------ -logger = None - -def listener(environ, start_response, schema): - ''' - Handler for the Vendor Event Listener REST API. - - Extract headers and the body and check that: - - 1) The client authenticated themselves correctly. - 2) The body validates against the provided schema for the API. - - ''' - logger.info('Got a Vendor Event request') - print('==== ' + time.asctime() + ' ' + '=' * 49) - - #-------------------------------------------------------------------------- - # Extract the content from the request. - #-------------------------------------------------------------------------- - length = int(environ.get('CONTENT_LENGTH', '0')) - logger.debug('Content Length: {0}'.format(length)) - body = environ['wsgi.input'].read(length) - logger.debug('Content Body: {0}'.format(body)) - - mode, b64_credentials = string.split(environ.get('HTTP_AUTHORIZATION', - 'None None')) - # logger.debug('Auth. Mode: {0} Credentials: {1}'.format(mode, - # b64_credentials)) - logger.debug('Auth. Mode: {0} Credentials: ****'.format(mode)) - if (b64_credentials != 'None'): - credentials = b64decode(b64_credentials) - else: - credentials = None - - logger.debug('Credentials: {0}'.format(credentials)) - #logger.debug('Credentials: ****') - - #-------------------------------------------------------------------------- - # If we have a schema file then check that the event matches that expected. - #-------------------------------------------------------------------------- - if (schema is not None): - logger.debug('Attempting to validate data: {0}\n' - 'Against schema: {1}'.format(body, schema)) - try: - decoded_body = json.loads(body) - jsonschema.validate(decoded_body, schema) - logger.info('Event is valid!') - print('Valid body decoded & checked against schema OK:\n' - '{0}'.format(json.dumps(decoded_body, - sort_keys=True, - indent=4, - separators=(',', ': ')))) - - except jsonschema.SchemaError as e: - logger.error('Schema is not valid! {0}'.format(e)) - print('Schema is not valid! {0}'.format(e)) - - except jsonschema.ValidationError as e: - logger.warn('Event is not valid against schema! {0}'.format(e)) - print('Event is not valid against schema! {0}'.format(e)) - print('Bad JSON body decoded:\n' - '{0}'.format(json.dumps(decoded_body, - sort_keys=True, - indent=4, - separators=(',', ': ')))) - - except Exception as e: - logger.error('Event invalid for unexpected reason! {0}'.format(e)) - print('Schema is not valid for unexpected reason! {0}'.format(e)) - else: - logger.debug('No schema so just decode JSON: {0}'.format(body)) - try: - decoded_body = json.loads(body) - print('Valid JSON body (no schema checking) decoded:\n' - '{0}'.format(json.dumps(decoded_body, - sort_keys=True, - indent=4, - separators=(',', ': ')))) - logger.info('Event is valid JSON but not checked against schema!') - - except Exception as e: - logger.error('Event invalid for unexpected reason! {0}'.format(e)) - print('JSON body not valid for unexpected reason! {0}'.format(e)) - - #-------------------------------------------------------------------------- - # See whether the user authenticated themselves correctly. - #-------------------------------------------------------------------------- - if (credentials == (vel_username + ':' + vel_password)): - logger.debug('Authenticated OK') - print('Authenticated OK') - - #---------------------------------------------------------------------- - # Respond to the caller. If we have a pending commandList from the - # testControl API, send it in response. - #---------------------------------------------------------------------- - global pending_command_list - if pending_command_list is not None: - start_response('202 Accepted', - [('Content-type', 'application/json')]) - response = pending_command_list - pending_command_list = None - - print('\n'+ '='*80) - print('Sending pending commandList in the response:\n' - '{0}'.format(json.dumps(response, - sort_keys=True, - indent=4, - separators=(',', ': ')))) - print('='*80 + '\n') - yield json.dumps(response) - else: - start_response('202 Accepted', []) - yield '' - else: - logger.warn('Failed to authenticate OK'+vel_username + ':' + vel_password) - print('Failed to authenticate OK'+vel_username + ':' + vel_password) - - #---------------------------------------------------------------------- - # Respond to the caller. - #---------------------------------------------------------------------- - start_response('401 Unauthorized', [ ('Content-type', - 'application/json')]) - req_error = { 'requestError': { - 'policyException': { - 'messageId': 'POL0001', - 'text': 'Failed to authenticate' - } - } - } - yield json.dumps(req_error) - -def test_listener(environ, start_response, schema): - ''' - Handler for the Test Collector Test Control API. - - There is no authentication on this interface. - - This simply stores a commandList which will be sent in response to the next - incoming event on the EVEL interface. - ''' - global pending_command_list - logger.info('Got a Test Control input') - print('============================') - print('==== TEST CONTROL INPUT ====') - - #-------------------------------------------------------------------------- - # GET allows us to get the current pending request. - #-------------------------------------------------------------------------- - if environ.get('REQUEST_METHOD') == 'GET': - start_response('200 OK', [('Content-type', 'application/json')]) - yield json.dumps(pending_command_list) - return - - #-------------------------------------------------------------------------- - # Extract the content from the request. - #-------------------------------------------------------------------------- - length = int(environ.get('CONTENT_LENGTH', '0')) - logger.debug('TestControl Content Length: {0}'.format(length)) - body = environ['wsgi.input'].read(length) - logger.debug('TestControl Content Body: {0}'.format(body)) - - #-------------------------------------------------------------------------- - # If we have a schema file then check that the event matches that expected. - #-------------------------------------------------------------------------- - if (schema is not None): - logger.debug('Attempting to validate data: {0}\n' - 'Against schema: {1}'.format(body, schema)) - try: - decoded_body = json.loads(body) - jsonschema.validate(decoded_body, schema) - logger.info('TestControl is valid!') - print('TestControl:\n' - '{0}'.format(json.dumps(decoded_body, - sort_keys=True, - indent=4, - separators=(',', ': ')))) - - except jsonschema.SchemaError as e: - logger.error('TestControl Schema is not valid: {0}'.format(e)) - print('TestControl Schema is not valid: {0}'.format(e)) - - except jsonschema.ValidationError as e: - logger.warn('TestControl input not valid: {0}'.format(e)) - print('TestControl input not valid: {0}'.format(e)) - print('Bad JSON body decoded:\n' - '{0}'.format(json.dumps(decoded_body, - sort_keys=True, - indent=4, - separators=(',', ': ')))) - - except Exception as e: - logger.error('TestControl input not valid: {0}'.format(e)) - print('TestControl Schema not valid: {0}'.format(e)) - else: - logger.debug('Missing schema just decode JSON: {0}'.format(body)) - try: - decoded_body = json.loads(body) - print('Valid JSON body (no schema checking) decoded:\n' - '{0}'.format(json.dumps(decoded_body, - sort_keys=True, - indent=4, - separators=(',', ': ')))) - logger.info('TestControl input not checked against schema!') - - except Exception as e: - logger.error('TestControl input not valid: {0}'.format(e)) - print('TestControl input not valid: {0}'.format(e)) - - #-------------------------------------------------------------------------- - # Respond to the caller. If we received otherField 'ThrottleRequest', - # generate the appropriate canned response. - #-------------------------------------------------------------------------- - pending_command_list = decoded_body - print('===== TEST CONTROL END =====') - print('============================') - start_response('202 Accepted', []) - yield '' - -def main(argv=None): - ''' - Main function for the collector start-up. - - Called with command-line arguments: - * --config ** - * --section *
* - * --verbose - - Where: - - ** specifies the path to the configuration file. - - *
* specifies the section within that config file. - - *verbose* generates more information in the log files. - - The process listens for REST API invocations and checks them. Errors are - displayed to stdout and logged. - ''' - - if argv is None: - argv = sys.argv - else: - sys.argv.extend(argv) - - program_name = os.path.basename(sys.argv[0]) - program_version = 'v{0}'.format(__version__) - program_build_date = str(__updated__) - program_version_message = '%%(prog)s {0} ({1})'.format(program_version, - program_build_date) - if (__import__('__main__').__doc__ is not None): - program_shortdesc = __import__('__main__').__doc__.split('\n')[1] - else: - program_shortdesc = 'Running in test harness' - program_license = '''{0} - - Created on {1}. - Copyright 2015 Metaswitch Networks Ltd. All rights reserved. - - Distributed on an "AS IS" basis without warranties - or conditions of any kind, either express or implied. - -USAGE -'''.format(program_shortdesc, str(__date__)) - - try: - #---------------------------------------------------------------------- - # Setup argument parser so we can parse the command-line. - #---------------------------------------------------------------------- - parser = ArgumentParser(description=program_license, - formatter_class=ArgumentDefaultsHelpFormatter) - parser.add_argument('-v', '--verbose', - dest='verbose', - action='count', - help='set verbosity level') - parser.add_argument('-V', '--version', - action='version', - version=program_version_message, - help='Display version information') - parser.add_argument('-a', '--api-version', - dest='api_version', - default='5', - help='set API version') - parser.add_argument('-c', '--config', - dest='config', - default='/etc/opt/att/collector.conf', - help='Use this config file.', - metavar='') - parser.add_argument('-s', '--section', - dest='section', - default='default', - metavar='
', - help='section to use in the config file') - - #---------------------------------------------------------------------- - # Process arguments received. - #---------------------------------------------------------------------- - args = parser.parse_args() - verbose = args.verbose - api_version = args.api_version - config_file = args.config - config_section = args.section - - #---------------------------------------------------------------------- - # Now read the config file, using command-line supplied values as - # overrides. - #---------------------------------------------------------------------- - defaults = {'log_file': 'collector.log', - 'vel_port': '12233', - 'vel_path': '', - 'vel_topic_name': '' - } - overrides = {} - config = ConfigParser.SafeConfigParser(defaults) - config.read(config_file) - - #---------------------------------------------------------------------- - # extract the values we want. - #---------------------------------------------------------------------- - log_file = config.get(config_section, 'log_file', vars=overrides) - vel_port = config.get(config_section, 'vel_port', vars=overrides) - vel_path = config.get(config_section, 'vel_path', vars=overrides) - vel_topic_name = config.get(config_section, - 'vel_topic_name', - vars=overrides) - global vel_username - global vel_password - vel_username = config.get(config_section, - 'vel_username', - vars=overrides) - vel_password = config.get(config_section, - 'vel_password', - vars=overrides) - vel_schema_file = config.get(config_section, - 'schema_file', - vars=overrides) - base_schema_file = config.get(config_section, - 'base_schema_file', - vars=overrides) - throttle_schema_file = config.get(config_section, - 'throttle_schema_file', - vars=overrides) - test_control_schema_file = config.get(config_section, - 'test_control_schema_file', - vars=overrides) - - #---------------------------------------------------------------------- - # Finally we have enough info to start a proper flow trace. - #---------------------------------------------------------------------- - global logger - print('Logfile: {0}'.format(log_file)) - logger = logging.getLogger('collector') - if verbose > 0: - print('Verbose mode on') - logger.setLevel(logging.DEBUG) - else: - logger.setLevel(logging.INFO) - handler = logging.handlers.RotatingFileHandler(log_file, - maxBytes=1000000, - backupCount=10) - if (platform.system() == 'Windows'): - date_format = '%Y-%m-%d %H:%M:%S' - else: - date_format = '%Y-%m-%d %H:%M:%S.%f %z' - formatter = logging.Formatter('%(asctime)s %(name)s - ' - '%(levelname)s - %(message)s', - date_format) - handler.setFormatter(formatter) - logger.addHandler(handler) - logger.info('Started') - - #---------------------------------------------------------------------- - # Log the details of the configuration. - #---------------------------------------------------------------------- - logger.debug('Log file = {0}'.format(log_file)) - logger.debug('Event Listener Port = {0}'.format(vel_port)) - logger.debug('Event Listener Path = {0}'.format(vel_path)) - logger.debug('Event Listener Topic = {0}'.format(vel_topic_name)) - logger.debug('Event Listener Username = {0}'.format(vel_username)) - # logger.debug('Event Listener Password = {0}'.format(vel_password)) - logger.debug('Event Listener JSON Schema File = {0}'.format( - vel_schema_file)) - logger.debug('Base JSON Schema File = {0}'.format(base_schema_file)) - logger.debug('Throttle JSON Schema File = {0}'.format( - throttle_schema_file)) - logger.debug('Test Control JSON Schema File = {0}'.format( - test_control_schema_file)) - - #---------------------------------------------------------------------- - # Perform some basic error checking on the config. - #---------------------------------------------------------------------- - if (int(vel_port) < 1024 or int(vel_port) > 65535): - logger.error('Invalid Vendor Event Listener port ({0}) ' - 'specified'.format(vel_port)) - raise RuntimeError('Invalid Vendor Event Listener port ({0}) ' - 'specified'.format(vel_port)) - - if (len(vel_path) > 0 and vel_path[-1] != '/'): - logger.warning('Event Listener Path ({0}) should have terminating ' - '"/"! Adding one on to configured string.'.format( - vel_path)) - vel_path += '/' - - #---------------------------------------------------------------------- - # Load up the vel_schema, if it exists. - #---------------------------------------------------------------------- - if not os.path.exists(vel_schema_file): - logger.warning('Event Listener Schema File ({0}) not found. ' - 'No validation will be undertaken.'.format( - vel_schema_file)) - else: - global vel_schema - global throttle_schema - global test_control_schema - vel_schema = json.load(open(vel_schema_file, 'r')) - logger.debug('Loaded the JSON schema file') - - #------------------------------------------------------------------ - # Load up the throttle_schema, if it exists. - #------------------------------------------------------------------ - if (os.path.exists(throttle_schema_file)): - logger.debug('Loading throttle schema') - throttle_fragment = json.load(open(throttle_schema_file, 'r')) - throttle_schema = {} - throttle_schema.update(vel_schema) - throttle_schema.update(throttle_fragment) - logger.debug('Loaded the throttle schema') - - #------------------------------------------------------------------ - # Load up the test control _schema, if it exists. - #------------------------------------------------------------------ - if (os.path.exists(test_control_schema_file)): - logger.debug('Loading test control schema') - test_control_fragment = json.load( - open(test_control_schema_file, 'r')) - test_control_schema = {} - test_control_schema.update(vel_schema) - test_control_schema.update(test_control_fragment) - logger.debug('Loaded the test control schema') - - #------------------------------------------------------------------ - # Load up the base_schema, if it exists. - #------------------------------------------------------------------ - if (os.path.exists(base_schema_file)): - logger.debug('Updating the schema with base definition') - base_schema = json.load(open(base_schema_file, 'r')) - vel_schema.update(base_schema) - logger.debug('Updated the JSON schema file') - - #---------------------------------------------------------------------- - # We are now ready to get started with processing. Start-up the various - # components of the system in order: - # - # 1) Create the dispatcher. - # 2) Register the functions for the URLs of interest. - # 3) Run the webserver. - #---------------------------------------------------------------------- - root_url = '/{0}eventListener/v{1}{2}'.\ - format(vel_path, - api_version, - '/' + vel_topic_name - if len(vel_topic_name) > 0 - else '') - throttle_url = '/{0}eventListener/v{1}/clientThrottlingState'.\ - format(vel_path, api_version) - set_404_content(root_url) - dispatcher = PathDispatcher() - vendor_event_listener = partial(listener, schema = vel_schema) - dispatcher.register('GET', root_url, vendor_event_listener) - dispatcher.register('POST', root_url, vendor_event_listener) - vendor_throttle_listener = partial(listener, schema = throttle_schema) - dispatcher.register('GET', throttle_url, vendor_throttle_listener) - dispatcher.register('POST', throttle_url, vendor_throttle_listener) - - #---------------------------------------------------------------------- - # We also add a POST-only mechanism for test control, so that we can - # send commands to a single attached client. - #---------------------------------------------------------------------- - test_control_url = '/testControl/v{0}/commandList'.format(api_version) - test_control_listener = partial(test_listener, - schema = test_control_schema) - dispatcher.register('POST', test_control_url, test_control_listener) - dispatcher.register('GET', test_control_url, test_control_listener) - - httpd = make_server('', int(vel_port), dispatcher) - print('Serving on port {0}...'.format(vel_port)) - httpd.serve_forever() - - logger.error('Main loop exited unexpectedly!') - return 0 - - except KeyboardInterrupt: - #---------------------------------------------------------------------- - # handle keyboard interrupt - #---------------------------------------------------------------------- - logger.info('Exiting on keyboard interrupt!') - return 0 - - except Exception as e: - #---------------------------------------------------------------------- - # Handle unexpected exceptions. - #---------------------------------------------------------------------- - if DEBUG or TESTRUN: - raise(e) - indent = len(program_name) * ' ' - sys.stderr.write(program_name + ': ' + repr(e) + '\n') - sys.stderr.write(indent + ' for help use --help\n') - sys.stderr.write(traceback.format_exc()) - logger.critical('Exiting because of exception: {0}'.format(e)) - logger.critical(traceback.format_exc()) - return 2 - -#------------------------------------------------------------------------------ -# MAIN SCRIPT ENTRY POINT. -#------------------------------------------------------------------------------ -if __name__ == '__main__': - if TESTRUN: - #---------------------------------------------------------------------- - # Running tests - note that doctest comments haven't been included so - # this is a hook for future improvements. - #---------------------------------------------------------------------- - import doctest - doctest.testmod() - - if PROFILE: - #---------------------------------------------------------------------- - # Profiling performance. Performance isn't expected to be a major - # issue, but this should all work as expected. - #---------------------------------------------------------------------- - import cProfile - import pstats - profile_filename = 'collector_profile.txt' - cProfile.run('main()', profile_filename) - statsfile = open('collector_profile_stats.txt', 'wb') - p = pstats.Stats(profile_filename, stream=statsfile) - stats = p.strip_dirs().sort_stats('cumulative') - stats.print_stats() - statsfile.close() - sys.exit(0) - - #-------------------------------------------------------------------------- - # Normal operation - call through to the main function. - #-------------------------------------------------------------------------- - sys.exit(main()) diff --git a/vnfs/VES5.0/collector/code/collector/rest_dispatcher.py b/vnfs/VES5.0/collector/code/collector/rest_dispatcher.py deleted file mode 100644 index 6911d5e5..00000000 --- a/vnfs/VES5.0/collector/code/collector/rest_dispatcher.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python -''' -Simple dispatcher for the REST API. - -Only intended for test purposes. - -License -------- - -Copyright(c) <2016>, AT&T Intellectual Property. All other rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: This product includes - software developed by the AT&T. -4. Neither the name of AT&T nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' - -import logging -logger = logging.getLogger('collector.disp') - -base_url = '' - -template_404 = b'''POST {0}''' - -def set_404_content(url): - ''' - Called at initialization to set the base URL so that we can serve helpful - diagnostics as part of the 404 response. - ''' - global base_url - base_url = url - return - -def notfound_404(environ, start_response): - ''' - Serve the 404 Not Found response. - - Provides diagnostics in the 404 response showing the hierarchy of valid - REST resources. - ''' - logger.warning('Unexpected URL/Method: {0} {1}'.format( - environ['REQUEST_METHOD'].upper(), - environ['PATH_INFO'])) - start_response('404 Not Found', [ ('Content-type', 'text/plain') ]) - return [template_404.format(base_url)] - -class PathDispatcher: - ''' - A dispatcher which can take HTTP requests in a WSGI environment and invoke - appropriate methods for each request. - ''' - def __init__(self): - '''Constructor: initialize the pathmap to be empty.''' - self.pathmap = { } - - def __call__(self, environ, start_response): - ''' - The main callable that the WSGI app will invoke with each request. - ''' - #---------------------------------------------------------------------- - # Extract the method and path from the environment. - #---------------------------------------------------------------------- - method = environ['REQUEST_METHOD'].lower() - path = environ['PATH_INFO'] - logger.info('Dispatcher called for: {0} {1}'.format(method, path)) - logger.debug('Dispatcher environment is: {0}'.format(environ)) - - #---------------------------------------------------------------------- - # See if we have a handler for this path, and if so invoke it. - # Otherwise, return a 404. - #---------------------------------------------------------------------- - handler = self.pathmap.get((method, path), notfound_404) - logger.debug('Dispatcher will use handler: {0}'.format(handler)) - return handler(environ, start_response) - - def register(self, method, path, function): - ''' - Register a handler for a method/path, adding it to the pathmap. - ''' - logger.debug('Registering for {0} at {1}'.format(method, path)) - print('Registering for {0} at {1}'.format(method, path)) - self.pathmap[method.lower(), path] = function - return function diff --git a/vnfs/VES5.0/collector/code/collector/rest_dispatcher.pyc b/vnfs/VES5.0/collector/code/collector/rest_dispatcher.pyc deleted file mode 100644 index cb00d7f3..00000000 Binary files a/vnfs/VES5.0/collector/code/collector/rest_dispatcher.pyc and /dev/null differ diff --git a/vnfs/VES5.0/collector/code/collector/test_control.py b/vnfs/VES5.0/collector/code/collector/test_control.py deleted file mode 100644 index e2ce8163..00000000 --- a/vnfs/VES5.0/collector/code/collector/test_control.py +++ /dev/null @@ -1,192 +0,0 @@ -#!/usr/bin/env python -''' -Example script to inject a throttling command list to the test_collector. - -Only intended for test purposes. - -License -------- - -Copyright(c) <2016>, AT&T Intellectual Property. All other rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -3. All advertising materials mentioning features or use of this software - must display the following acknowledgement: This product includes - software developed by the AT&T. -4. Neither the name of AT&T nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' -import optparse -import requests -import json - -############################################################################### -# Functions to build up commandList contents -############################################################################### -def command_state(): - "return a provideThrottlingState command" - return {'command': - {'commandType': 'provideThrottlingState'}} - -def command_interval(interval): - "return a measurementIntervalChange command" - return {'command': - {'commandType': 'measurementIntervalChange', - 'measurementInterval': interval}} - -def command_throttle(domain, fields, pairs): - "return a throttlingSpecification" - throttle_spec = {'eventDomain' : domain} - if len(fields): - throttle_spec['suppressedFieldNames'] = fields - if len(pairs): - throttle_spec['suppressedNvPairsList'] = pairs - return {'command': - {'commandType': 'throttlingSpecification', - 'eventDomainThrottleSpecification': throttle_spec}} - -def command_nvpairs(field_name, pair_names): - "return a suppressedNvPairs" - return {'nvPairFieldName' : field_name, - 'suppressedNvPairNames' : pair_names} - -############################################################################### -# Example functions to build up commandLists for various domains. -############################################################################### -def command_list_empty(): - return {'commandList' : []} - -def command_list_provide(): - return {'commandList' : [command_state()]} - -def command_list_interval(interval): - return {'commandList' : [command_interval(interval)]} - -def command_list_fault_suppress_fields(): - "Throttling Specification - two suppressedFieldNames" - fields = ['alarmInterfaceA', 'alarmAdditionalInformation'] - pairs = [] - command_list = [command_throttle('fault', fields, pairs)] - return {'commandList' : command_list} - -def command_list_fault_suppress_nothing(): - "Throttling Specification - no suppression" - fields = [] - pairs = [] - command_list = [command_throttle('fault', fields, pairs)] - return {'commandList' : command_list} - -def command_list_fault_suppress_pairs(): - "Throttling Specification - two suppressedNvPairNames" - fields = [] - pairs = [command_nvpairs('alarmAdditionalInformation', - ['name1', 'name2'])] - command_list = [command_throttle('fault', fields, pairs)] - return {'commandList' : command_list} - -def command_list_fault_suppress_fields_and_pairs(): - "Throttling Specification - a mixture of fields and pairs" - fields = ['alarmInterfaceA'] - pairs = [command_nvpairs('alarmAdditionalInformation', - ['name1', 'name2'])] - command_list = [command_throttle('fault', fields, pairs)] - return {'commandList' : command_list} - -def command_list_measurements_suppress_example(): - "Throttling Specification - measurements" - fields = ['numberOfMediaPortsInUse', 'aggregateCpuUsage'] - pairs = [command_nvpairs('cpuUsageArray', - ['cpu1', 'cpu3'])] - command_list = [command_throttle('measurementsForVfScaling', - fields, pairs)] - return {'commandList' : command_list} - -def command_list_mobile_flow_suppress_example(): - "Throttling Specification - mobile flow" - fields = ['radioAccessTechnology', 'samplingAlgorithm'] - pairs = [] - command_list = [command_throttle('mobileFlow', fields, pairs)] - return {'commandList' : command_list} - -def command_list_state_change_suppress_example(): - "Throttling Specification - state change" - fields = ['reportingEntityId', 'eventType', 'sourceId'] - pairs = [command_nvpairs('additionalFields', ['Name1'])] - command_list = [command_throttle('stateChange', fields, pairs)] - return {'commandList' : command_list} - -def command_list_syslog_suppress_example(): - "Throttling Specification - syslog" - fields = ['syslogFacility', 'syslogProc', 'syslogProcId'] - pairs = [command_nvpairs('additionalFields', ['Name1', 'Name4'])] - command_list = [command_throttle('syslog', fields, pairs)] - return {'commandList' : command_list} - -def command_list_reset_all_domains(): - "Throttling Specification - reset all domains" - command_list = [command_throttle('fault', [], []), - command_throttle('measurementsForVfScaling', [], []), - command_throttle('mobileFlow', [], []), - command_throttle('stateChange', [], []), - command_throttle('syslog', [], [])] - return {'commandList' : command_list} - -def mixed_example(): - fields = ['alarmInterfaceA'] - pairs = [command_nvpairs('alarmAdditionalInformation', - ['name1', 'name2'])] - command_list = [command_throttle('fault', fields, pairs), - command_interval(10), - command_state()] - return {'commandList' : command_list} - -############################################################################### -# Default command line values -############################################################################### -DEFAULT_FQDN = "127.0.0.1" -DEFAULT_PORT = 30000 - -############################################################################### -# Command Line Parsing -############################################################################### -parser = optparse.OptionParser() -parser.add_option('--fqdn', - action="store", - dest="fqdn", - default=DEFAULT_FQDN) -parser.add_option('--port', - action="store", - dest="port", - default=DEFAULT_PORT, - type="int") -options, remainder = parser.parse_args() - -############################################################################### -# Derive the Test Control URL -############################################################################### -url = 'http://%s:%d/testControl/v1.1/commandList'%(options.fqdn, options.port) - -############################################################################### -# Create JSON and POST it to the Test Control URL. -############################################################################### -command_list = command_list_fault_suppress_fields_and_pairs() -requests.post(url, json = command_list) diff --git a/vnfs/VES5.0/collector/config/collector.conf b/vnfs/VES5.0/collector/config/collector.conf deleted file mode 100644 index 224e7b04..00000000 --- a/vnfs/VES5.0/collector/config/collector.conf +++ /dev/null @@ -1,83 +0,0 @@ -#------------------------------------------------------------------------------ -# This is a config file for the collector test harness. -# -# On the target platform is is expected to be located in: -# -# /etc/opt/att/collector.conf -# -# However, the location can be overridden by setting the --config -# argument to the collector code. -#------------------------------------------------------------------------------ - -#------------------------------------------------------------------------------ -# The default section to be used. Alternative configuration sections can be -# provided by using the --section command-line parameter. -#------------------------------------------------------------------------------ -[default] -log_file = /var/log/att/collector.log -schema_file = ../../docs/att_interface_definition/event_format_updated.json -base_schema_file = ../../docs/att_interface_definition/base_schema.json -throttle_schema_file = ../../docs/att_interface_definition/throttle_schema.json -test_control_schema_file = ../../docs/att_interface_definition/test_control_schema.json - -#------------------------------------------------------------------------------ -# Details of the Vendor Event Listener REST service. -# -# REST resources are defined with respect to a ServerRoot: -# ServerRoot = https://{Domain}:{Port}/{optionalRoutingPath} -# -# REST resources are of the form: -# * {ServerRoot}/eventListener/v{apiVersion} -# * {ServerRoot}/eventListener/v{apiVersion}/{topicName} -# * {ServerRoot}/eventListener/v{apiVersion}/eventBatch -# * {ServerRoot}/eventListener/v{apiVersion}/clientThrottlingState -# -# The "vel_topic_name" parameter is used as the "topicName" element in the path -# and may be empty. -# -# Note that the path, if present, should have no leading "/" but should have a -# training "/". -#------------------------------------------------------------------------------ -vel_domain = 127.0.0.1 -vel_port = 30000 -vel_path = vendor_event_listener/ -vel_username = -vel_password = -vel_topic_name = example_vnf - -#------------------------------------------------------------------------------ -# Settings to be used when running in a windows test environment rather than -# the target environment. -#------------------------------------------------------------------------------ -[windows] -log_file = ../../logs/collector.log -schema_file = ../../docs/att_interface_definition/event_format_updated.json -base_schema_file = -throttle_schema_file = ../../docs/att_interface_definition/throttle_schema.json -test_control_schema_file = ../../docs/att_interface_definition/test_control_schema.json - -#------------------------------------------------------------------------------ -# Details of the Vendor Event Listener REST service. -# -# REST resources are defined with respect to a ServerRoot: -# ServerRoot = https://{Domain}:{Port}/{optionalRoutingPath} -# -# REST resources are of the form: -# * {ServerRoot}/eventListener/v{apiVersion} -# * {ServerRoot}/eventListener/v{apiVersion}/{topicName} -# * {ServerRoot}/eventListener/v{apiVersion}/eventBatch -# * {ServerRoot}/eventListener/v{apiVersion}/clientThrottlingState -# -# The "vel_topic_name" parameter is used as the "topicName" element in the path -# and may be empty. -# -# Note that the path, if present, should have no leading "/" but should have a -# training "/". -#------------------------------------------------------------------------------ -vel_domain = 127.0.0.1 -vel_port = 30000 -vel_path = -vel_username = will -vel_password = pill -vel_topic_name = - diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/att_service_specification.docx b/vnfs/VES5.0/collector/docs/att_interface_definition/att_service_specification.docx deleted file mode 100644 index f59abd8b..00000000 Binary files a/vnfs/VES5.0/collector/docs/att_interface_definition/att_service_specification.docx and /dev/null differ diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/base_schema.json b/vnfs/VES5.0/collector/docs/att_interface_definition/base_schema.json deleted file mode 100644 index 8efd08a6..00000000 --- a/vnfs/VES5.0/collector/docs/att_interface_definition/base_schema.json +++ /dev/null @@ -1,10 +0,0 @@ - { - "$schema": "http://json-schema.org/draft-04/schema#", - - "title": "Vendor Event Listener API updated", - "type": "object", - "properties": { - "event": {"$ref": "#/definitions/event"} - }, - "required": ["event"] -} \ No newline at end of file diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json b/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json deleted file mode 100644 index 986ed8f5..00000000 --- a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json +++ /dev/null @@ -1,1896 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - - "definitions": { - "attCopyrightNotice": { - "description": "Copyright (c) <2016>, AT&T Intellectual Property. All other rights reserved", - "type": "object", - "properties": { - "useAndRedistribution": { - "description": "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:", - "type": "string" - }, - "condition1": { - "description": "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.", - "type": "string" - }, - "condition2": { - "description": "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.", - "type": "string" - }, - "condition3": { - "description": "All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the AT&T.", - "type": "string" - }, - "condition4": { - "description": "Neither the name of AT&T nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.", - "type": "string" - }, - "disclaimerLine1": { - "description": "THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS", - "type": "string" - }, - "disclaimerLine2": { - "description": "FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES", - "type": "string" - }, - "disclaimerLine3": { - "description": "(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,", - "type": "string" - }, - "disclaimerLine4": { - "description": "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", - "type": "string" - } - } - }, - "codecsInUse": { - "description": "number of times an identified codec was used over the measurementInterval", - "type": "object", - "properties": { - "codecIdentifier": { "type": "string" }, - "numberInUse": { "type": "integer" } - }, - "required": [ "codecIdentifier", "numberInUse" ] - }, - "command": { - "description": "command from an event collector toward an event source", - "type": "object", - "properties": { - "commandType": { - "type": "string", - "enum": [ - "heartbeatIntervalChange", - "measurementIntervalChange", - "provideThrottlingState", - "throttlingSpecification" - ] - }, - "eventDomainThrottleSpecification": { "$ref": "#/definitions/eventDomainThrottleSpecification" }, - "heartbeatInterval": { "type": "integer" }, - "measurementInterval": { "type": "integer" } - }, - "required": [ "commandType" ] - }, - "commandList": { - "description": "array of commands from an event collector toward an event source", - "type": "array", - "items": { - "$ref": "#/definitions/commandListEntry" - }, - "minItems": 0 - }, - "commandListEntry": { - "description": "reference to a command object", - "type": "object", - "properties": { - "command": {"$ref": "#/definitions/command"} - }, - "required": [ "command" ] - }, - "commonEventHeader": { - "description": "fields common to all events", - "type": "object", - "properties": { - "domain": { - "description": "the eventing domain associated with the event", - "type": "string", - "enum": [ - "fault", - "heartbeat", - "measurementsForVfScaling", - "mobileFlow", - "other", - "sipSignaling", - "stateChange", - "syslog", - "thresholdCrossingAlert", - "voiceQuality" - ] - }, - "eventId": { - "description": "event key that is unique to the event source", - "type": "string" - }, - "eventName": { - "description": "unique event name", - "type": "string" - }, - "eventType": { - "description": "for example - applicationVnf, guestOS, hostOS, platform", - "type": "string" - }, - "internalHeaderFields": { "$ref": "#/definitions/internalHeaderFields" }, - "lastEpochMicrosec": { - "description": "the latest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "nfcNamingCode": { - "description": "3 character network function component type, aligned with vfc naming standards", - "type": "string" - }, - "nfNamingCode": { - "description": "4 character network function type, aligned with vnf naming standards", - "type": "string" - }, - "priority": { - "description": "processing priority", - "type": "string", - "enum": [ - "High", - "Medium", - "Normal", - "Low" - ] - }, - "reportingEntityId": { - "description": "UUID identifying the entity reporting the event, for example an OAM VM; must be populated by the ATT enrichment process", - "type": "string" - }, - "reportingEntityName": { - "description": "name of the entity reporting the event, for example, an EMS name; may be the same as sourceName", - "type": "string" - }, - "sequence": { - "description": "ordering of events communicated by an event source instance or 0 if not needed", - "type": "integer" - }, - "sourceId": { - "description": "UUID identifying the entity experiencing the event issue; must be populated by the ATT enrichment process", - "type": "string" - }, - "sourceName": { - "description": "name of the entity experiencing the event issue", - "type": "string" - }, - "startEpochMicrosec": { - "description": "the earliest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "version": { - "description": "version of the event header", - "type": "number" - } - }, - "required": [ "domain", "eventId", "eventName", "lastEpochMicrosec", - "priority", "reportingEntityName", "sequence", "sourceName", - "startEpochMicrosec", "version" ] - }, - "counter": { - "description": "performance counter", - "type": "object", - "properties": { - "criticality": { "type": "string", "enum": [ "CRIT", "MAJ" ] }, - "name": { "type": "string" }, - "thresholdCrossed": { "type": "string" }, - "value": { "type": "string"} - }, - "required": [ "criticality", "name", "thresholdCrossed", "value" ] - }, - "cpuUsage": { - "description": "usage of an identified CPU", - "type": "object", - "properties": { - "cpuIdentifier": { - "description": "cpu identifer", - "type": "string" - }, - "cpuIdle": { - "description": "percentage of CPU time spent in the idle task", - "type": "number" - }, - "cpuUsageInterrupt": { - "description": "percentage of time spent servicing interrupts", - "type": "number" - }, - "cpuUsageNice": { - "description": "percentage of time spent running user space processes that have been niced", - "type": "number" - }, - "cpuUsageSoftIrq": { - "description": "percentage of time spent handling soft irq interrupts", - "type": "number" - }, - "cpuUsageSteal": { - "description": "percentage of time spent in involuntary wait which is neither user, system or idle time and is effectively time that went missing", - "type": "number" - }, - "cpuUsageSystem": { - "description": "percentage of time spent on system tasks running the kernel", - "type": "number" - }, - "cpuUsageUser": { - "description": "percentage of time spent running un-niced user space processes", - "type": "number" - }, - "cpuWait": { - "description": "percentage of CPU time spent waiting for I/O operations to complete", - "type": "number" - }, - "percentUsage": { - "description": "aggregate cpu usage of the virtual machine on which the VNFC reporting the event is running", - "type": "number" - } - }, - "required": [ "cpuIdentifier", "percentUsage" ] - }, - "diskUsage": { - "description": "usage of an identified disk", - "type": "object", - "properties": { - "diskIdentifier": { - "description": "disk identifier", - "type": "string" - }, - "diskIoTimeAvg": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the average over the measurement interval", - "type": "number" - }, - "diskIoTimeLast": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskIoTimeMax": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskIoTimeMin": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadAvg": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadLast": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadMax": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadMin": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteAvg": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteLast": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteMax": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteMin": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadAvg": { - "description": "number of octets per second read from a disk or partition; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadLast": { - "description": "number of octets per second read from a disk or partition; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadMax": { - "description": "number of octets per second read from a disk or partition; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadMin": { - "description": "number of octets per second read from a disk or partition; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteAvg": { - "description": "number of octets per second written to a disk or partition; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteLast": { - "description": "number of octets per second written to a disk or partition; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteMax": { - "description": "number of octets per second written to a disk or partition; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteMin": { - "description": "number of octets per second written to a disk or partition; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadAvg": { - "description": "number of read operations per second issued to the disk; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadLast": { - "description": "number of read operations per second issued to the disk; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadMax": { - "description": "number of read operations per second issued to the disk; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadMin": { - "description": "number of read operations per second issued to the disk; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteAvg": { - "description": "number of write operations per second issued to the disk; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteLast": { - "description": "number of write operations per second issued to the disk; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteMax": { - "description": "number of write operations per second issued to the disk; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteMin": { - "description": "number of write operations per second issued to the disk; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsAvg": { - "description": "queue size of pending I/O operations per second; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsLast": { - "description": "queue size of pending I/O operations per second; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsMax": { - "description": "queue size of pending I/O operations per second; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsMin": { - "description": "queue size of pending I/O operations per second; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadAvg": { - "description": "milliseconds a read operation took to complete; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadLast": { - "description": "milliseconds a read operation took to complete; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadMax": { - "description": "milliseconds a read operation took to complete; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadMin": { - "description": "milliseconds a read operation took to complete; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteAvg": { - "description": "milliseconds a write operation took to complete; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteLast": { - "description": "milliseconds a write operation took to complete; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteMax": { - "description": "milliseconds a write operation took to complete; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteMin": { - "description": "milliseconds a write operation took to complete; provide the minimum measurement within the measurement interval", - "type": "number" - } - }, - "required": [ "diskIdentifier" ] - }, - "endOfCallVqmSummaries": { - "description": "provides end of call voice quality metrics", - "type": "object", - "properties": { - "adjacencyName": { - "description": " adjacency name", - "type": "string" - }, - "endpointDescription": { - "description": "Either Caller or Callee", - "type": "string", - "enum": ["Caller", "Callee"] - }, - "endpointJitter": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsSent": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsSent": { - "description": "", - "type": "number" - }, - "localJitter": { - "description": "", - "type": "number" - }, - "localRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "localRtpOctetsSent": { - "description": "", - "type": "number" - }, - "localRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "localRtpPacketsSent": { - "description": "", - "type": "number" - }, - "mosCqe": { - "description": "1-5 1dp", - "type": "number" - }, - "packetsLost": { - "description": "", - "type": "number" - }, - "packetLossPercent": { - "description" : "Calculated percentage packet loss based on Endpoint RTP packets lost (as reported in RTCP) and Local RTP packets sent. Direction is based on Endpoint description (Caller, Callee). Decimal (2 dp)", - "type": "number" - }, - "rFactor": { - "description": "0-100", - "type": "number" - }, - "roundTripDelay": { - "description": "millisecs", - "type": "number" - } - }, - "required": [ "adjacencyName", "endpointDescription" ] - }, - "event": { - "description": "the root level of the common event format", - "type": "object", - "properties": { - "commonEventHeader": { "$ref": "#/definitions/commonEventHeader" }, - "faultFields": { "$ref": "#/definitions/faultFields" }, - "heartbeatFields": { "$ref": "#/definitions/heartbeatFields" }, - "measurementsForVfScalingFields": { "$ref": "#/definitions/measurementsForVfScalingFields" }, - "mobileFlowFields": { "$ref": "#/definitions/mobileFlowFields" }, - "otherFields": { "$ref": "#/definitions/otherFields" }, - "sipSignalingFields": { "$ref": "#/definitions/sipSignalingFields" }, - "stateChangeFields": { "$ref": "#/definitions/stateChangeFields" }, - "syslogFields": { "$ref": "#/definitions/syslogFields" }, - "thresholdCrossingAlertFields": { "$ref": "#/definitions/thresholdCrossingAlertFields" }, - "voiceQualityFields": { "$ref": "#/definitions/voiceQualityFields" } - }, - "required": [ "commonEventHeader" ] - }, - "eventDomainThrottleSpecification": { - "description": "specification of what information to suppress within an event domain", - "type": "object", - "properties": { - "eventDomain": { - "description": "Event domain enum from the commonEventHeader domain field", - "type": "string" - }, - "suppressedFieldNames": { - "description": "List of optional field names in the event block that should not be sent to the Event Listener", - "type": "array", - "items": { - "type": "string" - } - }, - "suppressedNvPairsList": { - "description": "Optional list of specific NvPairsNames to suppress within a given Name-Value Field", - "type": "array", - "items": { - "$ref": "#/definitions/suppressedNvPairs" - } - } - }, - "required": [ "eventDomain" ] - }, - "eventDomainThrottleSpecificationList": { - "description": "array of eventDomainThrottleSpecifications", - "type": "array", - "items": { - "$ref": "#/definitions/eventDomainThrottleSpecification" - }, - "minItems": 0 - }, - "eventList": { - "description": "array of events", - "type": "array", - "items": { - "$ref": "#/definitions/event" - } - }, - "eventThrottlingState": { - "description": "reports the throttling in force at the event source", - "type": "object", - "properties": { - "eventThrottlingMode": { - "description": "Mode the event manager is in", - "type": "string", - "enum": [ - "normal", - "throttled" - ] - }, - "eventDomainThrottleSpecificationList": { "$ref": "#/definitions/eventDomainThrottleSpecificationList" } - }, - "required": [ "eventThrottlingMode" ] - }, - "faultFields": { - "description": "fields specific to fault events", - "type": "object", - "properties": { - "alarmAdditionalInformation": { - "description": "additional alarm information", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "alarmCondition": { - "description": "alarm condition reported by the device", - "type": "string" - }, - "alarmInterfaceA": { - "description": "card, port, channel or interface name of the device generating the alarm", - "type": "string" - }, - "eventCategory": { - "description": "Event category, for example: license, link, routing, security, signaling", - "type": "string" - }, - "eventSeverity": { - "description": "event severity", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventSourceType": { - "description": "type of event source; examples: card, host, other, port, portThreshold, router, slotThreshold, switch, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "faultFieldsVersion": { - "description": "version of the faultFields block", - "type": "number" - }, - "specificProblem": { - "description": "short description of the alarm or problem", - "type": "string" - }, - "vfStatus": { - "description": "virtual function status enumeration", - "type": "string", - "enum": [ - "Active", - "Idle", - "Preparing to terminate", - "Ready to terminate", - "Requesting termination" - ] - } - }, - "required": [ "alarmCondition", "eventSeverity", "eventSourceType", - "faultFieldsVersion", "specificProblem", "vfStatus" ] - }, - "featuresInUse": { - "description": "number of times an identified feature was used over the measurementInterval", - "type": "object", - "properties": { - "featureIdentifier": { "type": "string" }, - "featureUtilization": { "type": "integer" } - }, - "required": [ "featureIdentifier", "featureUtilization" ] - }, - "field": { - "description": "name value pair", - "type": "object", - "properties": { - "name": { "type": "string" }, - "value": { "type": "string" } - }, - "required": [ "name", "value" ] - }, - "filesystemUsage": { - "description": "disk usage of an identified virtual machine in gigabytes and/or gigabytes per second", - "type": "object", - "properties": { - "blockConfigured": { "type": "number" }, - "blockIops": { "type": "number" }, - "blockUsed": { "type": "number" }, - "ephemeralConfigured": { "type": "number" }, - "ephemeralIops": { "type": "number" }, - "ephemeralUsed": { "type": "number" }, - "filesystemName": { "type": "string" } - }, - "required": [ "blockConfigured", "blockIops", "blockUsed", "ephemeralConfigured", - "ephemeralIops", "ephemeralUsed", "filesystemName" ] - }, - "gtpPerFlowMetrics": { - "description": "Mobility GTP Protocol per flow metrics", - "type": "object", - "properties": { - "avgBitErrorRate": { - "description": "average bit error rate", - "type": "number" - }, - "avgPacketDelayVariation": { - "description": "Average packet delay variation or jitter in milliseconds for received packets: Average difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "avgPacketLatency": { - "description": "average delivery latency", - "type": "number" - }, - "avgReceiveThroughput": { - "description": "average receive throughput", - "type": "number" - }, - "avgTransmitThroughput": { - "description": "average transmit throughput", - "type": "number" - }, - "durConnectionFailedStatus": { - "description": "duration of failed state in milliseconds, computed as the cumulative time between a failed echo request and the next following successful error request, over this reporting interval", - "type": "number" - }, - "durTunnelFailedStatus": { - "description": "Duration of errored state, computed as the cumulative time between a tunnel error indicator and the next following non-errored indicator, over this reporting interval", - "type": "number" - }, - "flowActivatedBy": { - "description": "Endpoint activating the flow", - "type": "string" - }, - "flowActivationEpoch": { - "description": "Time the connection is activated in the flow (connection) being reported on, or transmission time of the first packet if activation time is not available", - "type": "number" - }, - "flowActivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowActivationTime": { - "description": "time the connection is activated in the flow being reported on, or transmission time of the first packet if activation time is not available; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "flowDeactivatedBy": { - "description": "Endpoint deactivating the flow", - "type": "string" - }, - "flowDeactivationEpoch": { - "description": "Time for the start of the flow connection, in integer UTC epoch time aka UNIX time", - "type": "number" - }, - "flowDeactivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowDeactivationTime": { - "description": "Transmission time of the first packet in the flow connection being reported on; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "flowStatus": { - "description": "connection status at reporting time as a working / inactive / failed indicator value", - "type": "string" - }, - "gtpConnectionStatus": { - "description": "Current connection state at reporting time", - "type": "string" - }, - "gtpTunnelStatus": { - "description": "Current tunnel state at reporting time", - "type": "string" - }, - "ipTosCountList": { - "description": "array of key: value pairs where the keys are drawn from the IP Type-of-Service identifiers which range from '0' to '255', and the values are the count of packets that had those ToS identifiers in the flow", - "type": "array", - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ] - } - }, - "ipTosList": { - "description": "Array of unique IP Type-of-Service values observed in the flow where values range from '0' to '255'", - "type": "array", - "items": { - "type": "string" - } - }, - "largePacketRtt": { - "description": "large packet round trip time", - "type": "number" - }, - "largePacketThreshold": { - "description": "large packet threshold being applied", - "type": "number" - }, - "maxPacketDelayVariation": { - "description": "Maximum packet delay variation or jitter in milliseconds for received packets: Maximum of the difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "maxReceiveBitRate": { - "description": "maximum receive bit rate", - "type": "number" - }, - "maxTransmitBitRate": { - "description": "maximum transmit bit rate", - "type": "number" - }, - "mobileQciCosCountList": { - "description": "array of key: value pairs where the keys are drawn from LTE QCI or UMTS class of service strings, and the values are the count of packets that had those strings in the flow", - "type": "array", - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ] - } - }, - "mobileQciCosList": { - "description": "Array of unique LTE QCI or UMTS class-of-service values observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "numActivationFailures": { - "description": "Number of failed activation requests, as observed by the reporting node", - "type": "number" - }, - "numBitErrors": { - "description": "number of errored bits", - "type": "number" - }, - "numBytesReceived": { - "description": "number of bytes received, including retransmissions", - "type": "number" - }, - "numBytesTransmitted": { - "description": "number of bytes transmitted, including retransmissions", - "type": "number" - }, - "numDroppedPackets": { - "description": "number of received packets dropped due to errors per virtual interface", - "type": "number" - }, - "numGtpEchoFailures": { - "description": "Number of Echo request path failures where failed paths are defined in 3GPP TS 29.281 sec 7.2.1 and 3GPP TS 29.060 sec. 11.2", - "type": "number" - }, - "numGtpTunnelErrors": { - "description": "Number of tunnel error indications where errors are defined in 3GPP TS 29.281 sec 7.3.1 and 3GPP TS 29.060 sec. 11.1", - "type": "number" - }, - "numHttpErrors": { - "description": "Http error count", - "type": "number" - }, - "numL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, including retransmissions", - "type": "number" - }, - "numL7BytesTransmitted": { - "description": "number of tunneled layer 7 bytes transmitted, excluding retransmissions", - "type": "number" - }, - "numLostPackets": { - "description": "number of lost packets", - "type": "number" - }, - "numOutOfOrderPackets": { - "description": "number of out-of-order packets", - "type": "number" - }, - "numPacketErrors": { - "description": "number of errored packets", - "type": "number" - }, - "numPacketsReceivedExclRetrans": { - "description": "number of packets received, excluding retransmission", - "type": "number" - }, - "numPacketsReceivedInclRetrans": { - "description": "number of packets received, including retransmission", - "type": "number" - }, - "numPacketsTransmittedInclRetrans": { - "description": "number of packets transmitted, including retransmissions", - "type": "number" - }, - "numRetries": { - "description": "number of packet retries", - "type": "number" - }, - "numTimeouts": { - "description": "number of packet timeouts", - "type": "number" - }, - "numTunneledL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, excluding retransmissions", - "type": "number" - }, - "roundTripTime": { - "description": "round trip time", - "type": "number" - }, - "tcpFlagCountList": { - "description": "array of key: value pairs where the keys are drawn from TCP Flags and the values are the count of packets that had that TCP Flag in the flow", - "type": "array", - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ] - } - }, - "tcpFlagList": { - "description": "Array of unique TCP Flags observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "timeToFirstByte": { - "description": "Time in milliseconds between the connection activation and first byte received", - "type": "number" - } - }, - "required": [ "avgBitErrorRate", "avgPacketDelayVariation", "avgPacketLatency", - "avgReceiveThroughput", "avgTransmitThroughput", - "flowActivationEpoch", "flowActivationMicrosec", - "flowDeactivationEpoch", "flowDeactivationMicrosec", - "flowDeactivationTime", "flowStatus", - "maxPacketDelayVariation", "numActivationFailures", - "numBitErrors", "numBytesReceived", "numBytesTransmitted", - "numDroppedPackets", "numL7BytesReceived", - "numL7BytesTransmitted", "numLostPackets", - "numOutOfOrderPackets", "numPacketErrors", - "numPacketsReceivedExclRetrans", - "numPacketsReceivedInclRetrans", - "numPacketsTransmittedInclRetrans", - "numRetries", "numTimeouts", "numTunneledL7BytesReceived", - "roundTripTime", "timeToFirstByte" - ] - }, - "heartbeatFields": { - "description": "optional field block for fields specific to heartbeat events", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional heartbeat fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "heartbeatFieldsVersion": { - "description": "version of the heartbeatFields block", - "type": "number" - }, - "heartbeatInterval": { - "description": "current heartbeat interval in seconds", - "type": "integer" - } - }, - "required": [ "heartbeatFieldsVersion", "heartbeatInterval" ] - }, - "internalHeaderFields": { - "description": "enrichment fields for internal VES Event Listener service use only, not supplied by event sources", - "type": "object" - }, - "jsonObject": { - "description": "json object schema, name and other meta-information along with one or more object instances", - "type": "object", - "properties": { - "objectInstances": { - "description": "one or more instances of the jsonObject", - "type": "array", - "items": { - "$ref": "#/definitions/jsonObjectInstance" - } - }, - "objectName": { - "description": "name of the JSON Object", - "type": "string" - }, - "objectSchema": { - "description": "json schema for the object", - "type": "string" - }, - "objectSchemaUrl": { - "description": "Url to the json schema for the object", - "type": "string" - }, - "nfSubscribedObjectName": { - "description": "name of the object associated with the nfSubscriptonId", - "type": "string" - }, - "nfSubscriptionId": { - "description": "identifies an openConfig telemetry subscription on a network function, which configures the network function to send complex object data associated with the jsonObject", - "type": "string" - } - }, - "required": [ "objectInstances", "objectName" ] - }, - "jsonObjectInstance": { - "description": "meta-information about an instance of a jsonObject along with the actual object instance", - "type": "object", - "properties": { - "objectInstance": { - "description": "an instance conforming to the jsonObject schema", - "type": "object" - }, - "objectInstanceEpochMicrosec": { - "description": "the unix time aka epoch time associated with this objectInstance--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "objectKeys": { - "description": "an ordered set of keys that identifies this particular instance of jsonObject", - "type": "array", - "items": { - "$ref": "#/definitions/key" - } - } - }, - "required": [ "objectInstance" ] - }, - "key": { - "description": "tuple which provides the name of a key along with its value and relative order", - "type": "object", - "properties": { - "keyName": { - "description": "name of the key", - "type": "string" - }, - "keyOrder": { - "description": "relative sequence or order of the key with respect to other keys", - "type": "integer" - }, - "keyValue": { - "description": "value of the key", - "type": "string" - } - }, - "required": [ "keyName" ] - }, - "latencyBucketMeasure": { - "description": "number of counts falling within a defined latency bucket", - "type": "object", - "properties": { - "countsInTheBucket": { "type": "number" }, - "highEndOfLatencyBucket": { "type": "number" }, - "lowEndOfLatencyBucket": { "type": "number" } - }, - "required": [ "countsInTheBucket" ] - }, - "measurementGroup": { - "description": "measurement group", - "type": "object", - "properties": { - "name": { "type": "string" }, - "measurements": { - "description": "array of name value pair measurements", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - } - }, - "required": [ "name", "measurements" ] - }, - "measurementsForVfScalingFields": { - "description": "measurementsForVfScaling fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional name-value-pair fields", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "additionalMeasurements": { - "description": "array of named name-value-pair arrays", - "type": "array", - "items": { - "$ref": "#/definitions/namedArrayOfFields" - } - }, - "additionalObjects": { - "description": "array of JSON objects described by name, schema and other meta-information", - "type": "array", - "items": { - "$ref": "#/definitions/jsonObject" - } - }, - "codecUsageArray": { - "description": "array of codecs in use", - "type": "array", - "items": { - "$ref": "#/definitions/codecsInUse" - } - }, - "concurrentSessions": { - "description": "peak concurrent sessions for the VM or VNF over the measurementInterval", - "type": "integer" - }, - "configuredEntities": { - "description": "over the measurementInterval, peak total number of: users, subscribers, devices, adjacencies, etc., for the VM, or subscribers, devices, etc., for the VNF", - "type": "integer" - }, - "cpuUsageArray": { - "description": "usage of an array of CPUs", - "type": "array", - "items": { - "$ref": "#/definitions/cpuUsage" - } - }, - "diskUsageArray": { - "description": "usage of an array of disks", - "type": "array", - "items": { - "$ref": "#/definitions/diskUsage" - } - }, - "featureUsageArray": { - "description": "array of features in use", - "type": "array", - "items": { - "$ref": "#/definitions/featuresInUse" - } - }, - "filesystemUsageArray": { - "description": "filesystem usage of the VM on which the VNFC reporting the event is running", - "type": "array", - "items": { - "$ref": "#/definitions/filesystemUsage" - } - }, - "latencyDistribution": { - "description": "array of integers representing counts of requests whose latency in milliseconds falls within per-VNF configured ranges", - "type": "array", - "items": { - "$ref": "#/definitions/latencyBucketMeasure" - } - }, - "meanRequestLatency": { - "description": "mean seconds required to respond to each request for the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "measurementInterval": { - "description": "interval over which measurements are being reported in seconds", - "type": "number" - }, - "measurementsForVfScalingVersion": { - "description": "version of the measurementsForVfScaling block", - "type": "number" - }, - "memoryUsageArray": { - "description": "memory usage of an array of VMs", - "type": "array", - "items": { - "$ref": "#/definitions/memoryUsage" - } - }, - "numberOfMediaPortsInUse": { - "description": "number of media ports in use", - "type": "integer" - }, - "requestRate": { - "description": "peak rate of service requests per second to the VNF over the measurementInterval", - "type": "number" - }, - "vnfcScalingMetric": { - "description": "represents busy-ness of the VNF from 0 to 100 as reported by the VNFC", - "type": "integer" - }, - "vNicPerformanceArray": { - "description": "usage of an array of virtual network interface cards", - "type": "array", - "items": { - "$ref": "#/definitions/vNicPerformance" - } - } - }, - "required": [ "measurementInterval", "measurementsForVfScalingVersion" ] - }, - "memoryUsage": { - "description": "memory usage of an identified virtual machine", - "type": "object", - "properties": { - "memoryBuffered": { - "description": "kilobytes of temporary storage for raw disk blocks", - "type": "number" - }, - "memoryCached": { - "description": "kilobytes of memory used for cache", - "type": "number" - }, - "memoryConfigured": { - "description": "kilobytes of memory configured in the virtual machine on which the VNFC reporting the event is running", - "type": "number" - }, - "memoryFree": { - "description": "kilobytes of physical RAM left unused by the system", - "type": "number" - }, - "memorySlabRecl": { - "description": "the part of the slab that can be reclaimed such as caches measured in kilobytes", - "type": "number" - }, - "memorySlabUnrecl": { - "description": "the part of the slab that cannot be reclaimed even when lacking memory measured in kilobytes", - "type": "number" - }, - "memoryUsed": { - "description": "total memory minus the sum of free, buffered, cached and slab memory measured in kilobytes", - "type": "number" - }, - "vmIdentifier": { - "description": "virtual machine identifier associated with the memory metrics", - "type": "string" - } - }, - "required": [ "memoryFree", "memoryUsed", "vmIdentifier" ] - }, - "mobileFlowFields": { - "description": "mobileFlow fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional mobileFlow fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "applicationType": { - "description": "Application type inferred", - "type": "string" - }, - "appProtocolType": { - "description": "application protocol", - "type": "string" - }, - "appProtocolVersion": { - "description": "application protocol version", - "type": "string" - }, - "cid": { - "description": "cell id", - "type": "string" - }, - "connectionType": { - "description": "Abbreviation referencing a 3GPP reference point e.g., S1-U, S11, etc", - "type": "string" - }, - "ecgi": { - "description": "Evolved Cell Global Id", - "type": "string" - }, - "flowDirection": { - "description": "Flow direction, indicating if the reporting node is the source of the flow or destination for the flow", - "type": "string" - }, - "gtpPerFlowMetrics": { "$ref": "#/definitions/gtpPerFlowMetrics" }, - "gtpProtocolType": { - "description": "GTP protocol", - "type": "string" - }, - "gtpVersion": { - "description": "GTP protocol version", - "type": "string" - }, - "httpHeader": { - "description": "HTTP request header, if the flow connects to a node referenced by HTTP", - "type": "string" - }, - "imei": { - "description": "IMEI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "imsi": { - "description": "IMSI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "ipProtocolType": { - "description": "IP protocol type e.g., TCP, UDP, RTP...", - "type": "string" - }, - "ipVersion": { - "description": "IP protocol version e.g., IPv4, IPv6", - "type": "string" - }, - "lac": { - "description": "location area code", - "type": "string" - }, - "mcc": { - "description": "mobile country code", - "type": "string" - }, - "mnc": { - "description": "mobile network code", - "type": "string" - }, - "mobileFlowFieldsVersion": { - "description": "version of the mobileFlowFields block", - "type": "number" - }, - "msisdn": { - "description": "MSISDN for the subscriber UE used in this flow, as an integer, if the flow connects to a mobile device", - "type": "string" - }, - "otherEndpointIpAddress": { - "description": "IP address for the other endpoint, as used for the flow being reported on", - "type": "string" - }, - "otherEndpointPort": { - "description": "IP Port for the reporting entity, as used for the flow being reported on", - "type": "integer" - }, - "otherFunctionalRole": { - "description": "Functional role of the other endpoint for the flow being reported on e.g., MME, S-GW, P-GW, PCRF...", - "type": "string" - }, - "rac": { - "description": "routing area code", - "type": "string" - }, - "radioAccessTechnology": { - "description": "Radio Access Technology e.g., 2G, 3G, LTE", - "type": "string" - }, - "reportingEndpointIpAddr": { - "description": "IP address for the reporting entity, as used for the flow being reported on", - "type": "string" - }, - "reportingEndpointPort": { - "description": "IP port for the reporting entity, as used for the flow being reported on", - "type": "integer" - }, - "sac": { - "description": "service area code", - "type": "string" - }, - "samplingAlgorithm": { - "description": "Integer identifier for the sampling algorithm or rule being applied in calculating the flow metrics if metrics are calculated based on a sample of packets, or 0 if no sampling is applied", - "type": "integer" - }, - "tac": { - "description": "transport area code", - "type": "string" - }, - "tunnelId": { - "description": "tunnel identifier", - "type": "string" - }, - "vlanId": { - "description": "VLAN identifier used by this flow", - "type": "string" - } - }, - "required": [ "flowDirection", "gtpPerFlowMetrics", "ipProtocolType", "ipVersion", - "mobileFlowFieldsVersion", "otherEndpointIpAddress", "otherEndpointPort", - "reportingEndpointIpAddr", "reportingEndpointPort" ] - }, - "namedArrayOfFields": { - "description": "an array of name value pairs along with a name for the array", - "type": "object", - "properties": { - "name": { "type": "string" }, - "arrayOfFields": { - "description": "array of name value pairs", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - } - }, - "required": [ "name", "measurements" ] - }, - "otherFields": { - "description": "fields for events belonging to the 'other' domain of the commonEventHeader domain enumeration", - "type": "object", - "properties": { - "hashOfNameValuePairArrays": { - "description": "array of named name-value-pair arrays", - "type": "array", - "items": { - "$ref": "#/definitions/namedArrayOfFields" - } - }, - "jsonObjects": { - "description": "array of JSON objects described by name, schema and other meta-information", - "type": "array", - "items": { - "$ref": "#/definitions/jsonObject" - } - }, - "nameValuePairs": { - "description": "array of name-value pairs", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "otherFieldsVersion": { - "description": "version of the otherFields block", - "type": "number" - } - }, - "required": [ "otherFieldsVersion" ] - }, - "requestError": { - "description": "standard request error data structure", - "type": "object", - "properties": { - "messageId": { - "description": "Unique message identifier of the format ABCnnnn where ABC is either SVC for Service Exceptions or POL for Policy Exception", - "type": "string" - }, - "text": { - "description": "Message text, with replacement variables marked with %n, where n is an index into the list of elements, starting at 1", - "type": "string" - }, - "url": { - "description": "Hyperlink to a detailed error resource e.g., an HTML page for browser user agents", - "type": "string" - }, - "variables": { - "description": "List of zero or more strings that represent the contents of the variables used by the message text", - "type": "string" - } - }, - "required": [ "messageId", "text" ] - }, - "sipSignalingFields": { - "description": "sip signaling fields", - "type": "object", - "properties": { - "additionalInformation": { - "description": "additional sip signaling fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "compressedSip": { - "description": "the full SIP request/response including headers and bodies", - "type": "string" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "localIpAddress": { - "description": "IP address on VNF", - "type": "string" - }, - "localPort": { - "description": "port on VNF", - "type": "string" - }, - "remoteIpAddress": { - "description": "IP address of peer endpoint", - "type": "string" - }, - "remotePort": { - "description": "port of peer endpoint", - "type": "string" - }, - "sipSignalingFieldsVersion": { - "description": "version of the sipSignalingFields block", - "type": "number" - }, - "summarySip": { - "description": "the SIP Method or Response (‘INVITE’, ‘200 OK’, ‘BYE’, etc)", - "type": "string" - }, - "vnfVendorNameFields": { - "$ref": "#/definitions/vendorVnfNameFields" - } - }, - "required": [ "correlator", "localIpAddress", "localPort", "remoteIpAddress", - "remotePort", "sipSignalingFieldsVersion", "vnfVendorNameFields" ] - }, - "stateChangeFields": { - "description": "stateChange fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional stateChange fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "newState": { - "description": "new state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "oldState": { - "description": "previous state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "stateChangeFieldsVersion": { - "description": "version of the stateChangeFields block", - "type": "number" - }, - "stateInterface": { - "description": "card or port name of the entity that changed state", - "type": "string" - } - }, - "required": [ "newState", "oldState", "stateChangeFieldsVersion", "stateInterface" ] - }, - "suppressedNvPairs": { - "description": "List of specific NvPairsNames to suppress within a given Name-Value Field for event Throttling", - "type": "object", - "properties": { - "nvPairFieldName": { - "description": "Name of the field within which are the nvpair names to suppress", - "type": "string" - }, - "suppressedNvPairNames": { - "description": "Array of nvpair names to suppress within the nvpairFieldName", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ "nvPairFieldName", "suppressedNvPairNames" ] - }, - "syslogFields": { - "description": "sysLog fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional syslog fields if needed provided as name=value delimited by a pipe ‘|’ symbol, for example: 'name1=value1|name2=value2|…'", - "type": "string" - }, - "eventSourceHost": { - "description": "hostname of the device", - "type": "string" - }, - "eventSourceType": { - "description": "type of event source; examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "syslogFacility": { - "description": "numeric code from 0 to 23 for facility--see table in documentation", - "type": "integer" - }, - "syslogFieldsVersion": { - "description": "version of the syslogFields block", - "type": "number" - }, - "syslogMsg": { - "description": "syslog message", - "type": "string" - }, - "syslogPri": { - "description": "0-192 combined severity and facility", - "type": "integer" - }, - "syslogProc": { - "description": "identifies the application that originated the message", - "type": "string" - }, - "syslogProcId": { - "description": "a change in the value of this field indicates a discontinuity in syslog reporting", - "type": "number" - }, - "syslogSData": { - "description": "syslog structured data consisting of a structured data Id followed by a set of key value pairs", - "type": "string" - }, - "syslogSdId": { - "description": "0-32 char in format name@number for example ourSDID@32473", - "type": "string" - }, - "syslogSev": { - "description": "numerical Code for severity derived from syslogPri as remaider of syslogPri / 8", - "type": "string", - "enum": [ - "Alert", - "Critical", - "Debug", - "Emergency", - "Error", - "Info", - "Notice", - "Warning" - ] - }, - "syslogTag": { - "description": "msgId indicating the type of message such as TCPOUT or TCPIN; NILVALUE should be used when no other value can be provided", - "type": "string" - }, - "syslogVer": { - "description": "IANA assigned version of the syslog protocol specification - typically 1", - "type": "number" - } - }, - "required": [ "eventSourceType", "syslogFieldsVersion", "syslogMsg", "syslogTag" ] - }, - "thresholdCrossingAlertFields": { - "description": "fields specific to threshold crossing alert events", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional threshold crossing alert fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "additionalParameters": { - "description": "performance counters", - "type": "array", - "items": { - "$ref": "#/definitions/counter" - } - }, - "alertAction": { - "description": "Event action", - "type": "string", - "enum": [ - "CLEAR", - "CONT", - "SET" - ] - }, - "alertDescription": { - "description": "Unique short alert description such as IF-SHUB-ERRDROP", - "type": "string" - }, - "alertType": { - "description": "Event type", - "type": "string", - "enum": [ - "CARD-ANOMALY", - "ELEMENT-ANOMALY", - "INTERFACE-ANOMALY", - "SERVICE-ANOMALY" - ] - }, - "alertValue": { - "description": "Calculated API value (if applicable)", - "type": "string" - }, - "associatedAlertIdList": { - "description": "List of eventIds associated with the event being reported", - "type": "array", - "items": { "type": "string" } - }, - "collectionTimestamp": { - "description": "Time when the performance collector picked up the data; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "dataCollector": { - "description": "Specific performance collector instance used", - "type": "string" - }, - "elementType": { - "description": "type of network element - internal ATT field", - "type": "string" - }, - "eventSeverity": { - "description": "event severity or priority", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventStartTimestamp": { - "description": "Time closest to when the measurement was made; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "interfaceName": { - "description": "Physical or logical port or card (if applicable)", - "type": "string" - }, - "networkService": { - "description": "network name - internal ATT field", - "type": "string" - }, - "possibleRootCause": { - "description": "Reserved for future use", - "type": "string" - }, - "thresholdCrossingFieldsVersion": { - "description": "version of the thresholdCrossingAlertFields block", - "type": "number" - } - }, - "required": [ - "additionalParameters", - "alertAction", - "alertDescription", - "alertType", - "collectionTimestamp", - "eventSeverity", - "eventStartTimestamp", - "thresholdCrossingFieldsVersion" - ] - }, - "vendorVnfNameFields": { - "description": "provides vendor, vnf and vfModule identifying information", - "type": "object", - "properties": { - "vendorName": { - "description": "VNF vendor name", - "type": "string" - }, - "vfModuleName": { - "description": "ASDC vfModuleName for the vfModule generating the event", - "type": "string" - }, - "vnfName": { - "description": "ASDC modelName for the VNF generating the event", - "type": "string" - } - }, - "required": [ "vendorName" ] - }, - "vNicPerformance": { - "description": "describes the performance and errors of an identified virtual network interface card", - "type": "object", - "properties": { - "receivedBroadcastPacketsAccumulated": { - "description": "Cumulative count of broadcast packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedBroadcastPacketsDelta": { - "description": "Count of broadcast packets received within the measurement interval", - "type": "number" - }, - "receivedDiscardedPacketsAccumulated": { - "description": "Cumulative count of discarded packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedDiscardedPacketsDelta": { - "description": "Count of discarded packets received within the measurement interval", - "type": "number" - }, - "receivedErrorPacketsAccumulated": { - "description": "Cumulative count of error packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedErrorPacketsDelta": { - "description": "Count of error packets received within the measurement interval", - "type": "number" - }, - "receivedMulticastPacketsAccumulated": { - "description": "Cumulative count of multicast packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedMulticastPacketsDelta": { - "description": "Count of multicast packets received within the measurement interval", - "type": "number" - }, - "receivedOctetsAccumulated": { - "description": "Cumulative count of octets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedOctetsDelta": { - "description": "Count of octets received within the measurement interval", - "type": "number" - }, - "receivedTotalPacketsAccumulated": { - "description": "Cumulative count of all packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedTotalPacketsDelta": { - "description": "Count of all packets received within the measurement interval", - "type": "number" - }, - "receivedUnicastPacketsAccumulated": { - "description": "Cumulative count of unicast packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedUnicastPacketsDelta": { - "description": "Count of unicast packets received within the measurement interval", - "type": "number" - }, - "transmittedBroadcastPacketsAccumulated": { - "description": "Cumulative count of broadcast packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedBroadcastPacketsDelta": { - "description": "Count of broadcast packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedDiscardedPacketsAccumulated": { - "description": "Cumulative count of discarded packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedDiscardedPacketsDelta": { - "description": "Count of discarded packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedErrorPacketsAccumulated": { - "description": "Cumulative count of error packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedErrorPacketsDelta": { - "description": "Count of error packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedMulticastPacketsAccumulated": { - "description": "Cumulative count of multicast packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedMulticastPacketsDelta": { - "description": "Count of multicast packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedOctetsAccumulated": { - "description": "Cumulative count of octets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedOctetsDelta": { - "description": "Count of octets transmitted within the measurement interval", - "type": "number" - }, - "transmittedTotalPacketsAccumulated": { - "description": "Cumulative count of all packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedTotalPacketsDelta": { - "description": "Count of all packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedUnicastPacketsAccumulated": { - "description": "Cumulative count of unicast packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedUnicastPacketsDelta": { - "description": "Count of unicast packets transmitted within the measurement interval", - "type": "number" - }, - "valuesAreSuspect": { - "description": "Indicates whether vNicPerformance values are likely inaccurate due to counter overflow or other condtions", - "type": "string", - "enum": [ "true", "false" ] - }, - "vNicIdentifier": { - "description": "vNic identification", - "type": "string" - } - }, - "required": [ "valuesAreSuspect", "vNicIdentifier" ] - }, - "voiceQualityFields": { - "description": "provides statistics related to customer facing voice products", - "type": "object", - "properties": { - "additionalInformation": { - "description": "additional voice quality fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "calleeSideCodec": { - "description": "callee codec for the call", - "type": "string" - }, - "callerSideCodec": { - "description": "caller codec for the call", - "type": "string" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "endOfCallVqmSummaries": { - "$ref": "#/definitions/endOfCallVqmSummaries" - }, - "phoneNumber": { - "description": "phone number associated with the correlator", - "type": "string" - }, - "midCallRtcp": { - "description": "Base64 encoding of the binary RTCP data excluding Eth/IP/UDP headers", - "type": "string" - }, - "vendorVnfNameFields": { - "$ref": "#/definitions/vendorVnfNameFields" - }, - "voiceQualityFieldsVersion": { - "description": "version of the voiceQualityFields block", - "type": "number" - } - }, - "required": [ "calleeSideCodec", "callerSideCodec", "correlator", "midCallRtcp", - "vendorVnfNameFields", "voiceQualityFieldsVersion" ] - } - }, - "title": "Event Listener", - "type": "object", - "properties": { - "event": {"$ref": "#/definitions/event"} - } -} diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.new b/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.new deleted file mode 100644 index 740e89d2..00000000 --- a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.new +++ /dev/null @@ -1,1888 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - - "definitions": { - "attCopyrightNotice": { - "description": "Copyright (c) <2016>, AT&T Intellectual Property. All other rights reserved", - "type": "object", - "properties": { - "useAndRedistribution": { - "description": "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:", - "type": "string" - }, - "condition1": { - "description": "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.", - "type": "string" - }, - "condition2": { - "description": "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.", - "type": "string" - }, - "condition3": { - "description": "All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the AT&T.", - "type": "string" - }, - "condition4": { - "description": "Neither the name of AT&T nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.", - "type": "string" - }, - "disclaimerLine1": { - "description": "THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS", - "type": "string" - }, - "disclaimerLine2": { - "description": "FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES", - "type": "string" - }, - "disclaimerLine3": { - "description": "(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,", - "type": "string" - }, - "disclaimerLine4": { - "description": "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", - "type": "string" - } - } - }, - "codecsInUse": { - "description": "number of times an identified codec was used over the measurementInterval", - "type": "object", - "properties": { - "codecIdentifier": { "type": "string" }, - "numberInUse": { "type": "integer" } - }, - "required": [ "codecIdentifier", "numberInUse" ] - }, - "command": { - "description": "command from an event collector toward an event source", - "type": "object", - "properties": { - "commandType": { - "type": "string", - "enum": [ - "heartbeatIntervalChange", - "measurementIntervalChange", - "provideThrottlingState", - "throttlingSpecification" - ] - }, - "eventDomainThrottleSpecification": { "$ref": "#/definitions/eventDomainThrottleSpecification" }, - "heartbeatInterval": { "type": "integer" }, - "measurementInterval": { "type": "integer" } - }, - "required": [ "commandType" ] - }, - "commandList": { - "description": "array of commands from an event collector toward an event source", - "type": "array", - "items": { - "$ref": "#/definitions/command" - }, - "minItems": 0 - }, - "commonEventHeader": { - "description": "fields common to all events", - "type": "object", - "properties": { - "domain": { - "description": "the eventing domain associated with the event", - "type": "string", - "enum": [ - "fault", - "heartbeat", - "measurementsForVfScaling", - "mobileFlow", - "other", - "sipSignaling", - "stateChange", - "syslog", - "thresholdCrossingAlert", - "voiceQuality" - ] - }, - "eventId": { - "description": "event key that is unique to the event source", - "type": "string" - }, - "eventName": { - "description": "unique event name", - "type": "string" - }, - "eventType": { - "description": "for example - applicationVnf, guestOS, hostOS, platform", - "type": "string" - }, - "internalHeaderFields": { "$ref": "#/definitions/internalHeaderFields" }, - "lastEpochMicrosec": { - "description": "the latest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "nfcNamingCode": { - "description": "3 character network function component type, aligned with vfc naming standards", - "type": "string" - }, - "nfNamingCode": { - "description": "4 character network function type, aligned with vnf naming standards", - "type": "string" - }, - "priority": { - "description": "processing priority", - "type": "string", - "enum": [ - "High", - "Medium", - "Normal", - "Low" - ] - }, - "reportingEntityId": { - "description": "UUID identifying the entity reporting the event, for example an OAM VM; must be populated by the ATT enrichment process", - "type": "string" - }, - "reportingEntityName": { - "description": "name of the entity reporting the event, for example, an EMS name; may be the same as sourceName", - "type": "string" - }, - "sequence": { - "description": "ordering of events communicated by an event source instance or 0 if not needed", - "type": "integer" - }, - "sourceId": { - "description": "UUID identifying the entity experiencing the event issue; must be populated by the ATT enrichment process", - "type": "string" - }, - "sourceName": { - "description": "name of the entity experiencing the event issue", - "type": "string" - }, - "startEpochMicrosec": { - "description": "the earliest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "version": { - "description": "version of the event header", - "type": "number" - } - }, - "required": [ "domain", "eventId", "eventName", "lastEpochMicrosec", - "priority", "reportingEntityName", "sequence", "sourceName", - "startEpochMicrosec", "version" ] - }, - "counter": { - "description": "performance counter", - "type": "object", - "properties": { - "criticality": { "type": "string", "enum": [ "CRIT", "MAJ" ] }, - "name": { "type": "string" }, - "thresholdCrossed": { "type": "string" }, - "value": { "type": "string"} - }, - "required": [ "criticality", "name", "thresholdCrossed", "value" ] - }, - "cpuUsage": { - "description": "usage of an identified CPU", - "type": "object", - "properties": { - "cpuIdentifier": { - "description": "cpu identifer", - "type": "string" - }, - "cpuIdle": { - "description": "percentage of CPU time spent in the idle task", - "type": "number" - }, - "cpuUsageInterrupt": { - "description": "percentage of time spent servicing interrupts", - "type": "number" - }, - "cpuUsageNice": { - "description": "percentage of time spent running user space processes that have been niced", - "type": "number" - }, - "cpuUsageSoftIrq": { - "description": "percentage of time spent handling soft irq interrupts", - "type": "number" - }, - "cpuUsageSteal": { - "description": "percentage of time spent in involuntary wait which is neither user, system or idle time and is effectively time that went missing", - "type": "number" - }, - "cpuUsageSystem": { - "description": "percentage of time spent on system tasks running the kernel", - "type": "number" - }, - "cpuUsageUser": { - "description": "percentage of time spent running un-niced user space processes", - "type": "number" - }, - "cpuWait": { - "description": "percentage of CPU time spent waiting for I/O operations to complete", - "type": "number" - }, - "percentUsage": { - "description": "aggregate cpu usage of the virtual machine on which the VNFC reporting the event is running", - "type": "number" - } - }, - "required": [ "cpuIdentifier", "percentUsage" ] - }, - "diskUsage": { - "description": "usage of an identified disk", - "type": "object", - "properties": { - "diskIdentifier": { - "description": "disk identifier", - "type": "string" - }, - "diskIoTimeAvg": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the average over the measurement interval", - "type": "number" - }, - "diskIoTimeLast": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskIoTimeMax": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskIoTimeMin": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadAvg": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadLast": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadMax": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadMin": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteAvg": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteLast": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteMax": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteMin": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadAvg": { - "description": "number of octets per second read from a disk or partition; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadLast": { - "description": "number of octets per second read from a disk or partition; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadMax": { - "description": "number of octets per second read from a disk or partition; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadMin": { - "description": "number of octets per second read from a disk or partition; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteAvg": { - "description": "number of octets per second written to a disk or partition; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteLast": { - "description": "number of octets per second written to a disk or partition; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteMax": { - "description": "number of octets per second written to a disk or partition; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteMin": { - "description": "number of octets per second written to a disk or partition; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadAvg": { - "description": "number of read operations per second issued to the disk; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadLast": { - "description": "number of read operations per second issued to the disk; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadMax": { - "description": "number of read operations per second issued to the disk; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadMin": { - "description": "number of read operations per second issued to the disk; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteAvg": { - "description": "number of write operations per second issued to the disk; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteLast": { - "description": "number of write operations per second issued to the disk; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteMax": { - "description": "number of write operations per second issued to the disk; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteMin": { - "description": "number of write operations per second issued to the disk; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsAvg": { - "description": "queue size of pending I/O operations per second; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsLast": { - "description": "queue size of pending I/O operations per second; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsMax": { - "description": "queue size of pending I/O operations per second; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsMin": { - "description": "queue size of pending I/O operations per second; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadAvg": { - "description": "milliseconds a read operation took to complete; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadLast": { - "description": "milliseconds a read operation took to complete; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadMax": { - "description": "milliseconds a read operation took to complete; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadMin": { - "description": "milliseconds a read operation took to complete; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteAvg": { - "description": "milliseconds a write operation took to complete; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteLast": { - "description": "milliseconds a write operation took to complete; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteMax": { - "description": "milliseconds a write operation took to complete; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteMin": { - "description": "milliseconds a write operation took to complete; provide the minimum measurement within the measurement interval", - "type": "number" - } - }, - "required": [ "diskIdentifier" ] - }, - "endOfCallVqmSummaries": { - "description": "provides end of call voice quality metrics", - "type": "object", - "properties": { - "adjacencyName": { - "description": " adjacency name", - "type": "string" - }, - "endpointDescription": { - "description": "Either Caller or Callee", - "type": "string", - "enum": ["Caller", "Callee"] - }, - "endpointJitter": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsSent": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsSent": { - "description": "", - "type": "number" - }, - "localJitter": { - "description": "", - "type": "number" - }, - "localRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "localRtpOctetsSent": { - "description": "", - "type": "number" - }, - "localRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "localRtpPacketsSent": { - "description": "", - "type": "number" - }, - "mosCqe": { - "description": "1-5 1dp", - "type": "number" - }, - "packetsLost": { - "description": "", - "type": "number" - }, - "packetLossPercent": { - "description" : "Calculated percentage packet loss based on Endpoint RTP packets lost (as reported in RTCP) and Local RTP packets sent. Direction is based on Endpoint description (Caller, Callee). Decimal (2 dp)", - "type": "number" - }, - "rFactor": { - "description": "0-100", - "type": "number" - }, - "roundTripDelay": { - "description": "millisecs", - "type": "number" - } - }, - "required": [ "adjacencyName", "endpointDescription" ] - }, - "event": { - "description": "the root level of the common event format", - "type": "object", - "properties": { - "commonEventHeader": { "$ref": "#/definitions/commonEventHeader" }, - "faultFields": { "$ref": "#/definitions/faultFields" }, - "heartbeatFields": { "$ref": "#/definitions/heartbeatFields" }, - "measurementsForVfScalingFields": { "$ref": "#/definitions/measurementsForVfScalingFields" }, - "mobileFlowFields": { "$ref": "#/definitions/mobileFlowFields" }, - "otherFields": { "$ref": "#/definitions/otherFields" }, - "sipSignalingFields": { "$ref": "#/definitions/sipSignalingFields" }, - "stateChangeFields": { "$ref": "#/definitions/stateChangeFields" }, - "syslogFields": { "$ref": "#/definitions/syslogFields" }, - "thresholdCrossingAlertFields": { "$ref": "#/definitions/thresholdCrossingAlertFields" }, - "voiceQualityFields": { "$ref": "#/definitions/voiceQualityFields" } - }, - "required": [ "commonEventHeader" ] - }, - "eventDomainThrottleSpecification": { - "description": "specification of what information to suppress within an event domain", - "type": "object", - "properties": { - "eventDomain": { - "description": "Event domain enum from the commonEventHeader domain field", - "type": "string" - }, - "suppressedFieldNames": { - "description": "List of optional field names in the event block that should not be sent to the Event Listener", - "type": "array", - "items": { - "type": "string" - } - }, - "suppressedNvPairsList": { - "description": "Optional list of specific NvPairsNames to suppress within a given Name-Value Field", - "type": "array", - "items": { - "$ref": "#/definitions/suppressedNvPairs" - } - } - }, - "required": [ "eventDomain" ] - }, - "eventDomainThrottleSpecificationList": { - "description": "array of eventDomainThrottleSpecifications", - "type": "array", - "items": { - "$ref": "#/definitions/eventDomainThrottleSpecification" - }, - "minItems": 0 - }, - "eventList": { - "description": "array of events", - "type": "array", - "items": { - "$ref": "#/definitions/event" - } - }, - "eventThrottlingState": { - "description": "reports the throttling in force at the event source", - "type": "object", - "properties": { - "eventThrottlingMode": { - "description": "Mode the event manager is in", - "type": "string", - "enum": [ - "normal", - "throttled" - ] - }, - "eventDomainThrottleSpecificationList": { "$ref": "#/definitions/eventDomainThrottleSpecificationList" } - }, - "required": [ "eventThrottlingMode" ] - }, - "faultFields": { - "description": "fields specific to fault events", - "type": "object", - "properties": { - "alarmAdditionalInformation": { - "description": "additional alarm information", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "alarmCondition": { - "description": "alarm condition reported by the device", - "type": "string" - }, - "alarmInterfaceA": { - "description": "card, port, channel or interface name of the device generating the alarm", - "type": "string" - }, - "eventCategory": { - "description": "Event category, for example: license, link, routing, security, signaling", - "type": "string" - }, - "eventSeverity": { - "description": "event severity", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventSourceType": { - "description": "type of event source; examples: card, host, other, port, portThreshold, router, slotThreshold, switch, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "faultFieldsVersion": { - "description": "version of the faultFields block", - "type": "number" - }, - "specificProblem": { - "description": "short description of the alarm or problem", - "type": "string" - }, - "vfStatus": { - "description": "virtual function status enumeration", - "type": "string", - "enum": [ - "Active", - "Idle", - "Preparing to terminate", - "Ready to terminate", - "Requesting termination" - ] - } - }, - "required": [ "alarmCondition", "eventSeverity", "eventSourceType", - "faultFieldsVersion", "specificProblem", "vfStatus" ] - }, - "featuresInUse": { - "description": "number of times an identified feature was used over the measurementInterval", - "type": "object", - "properties": { - "featureIdentifier": { "type": "string" }, - "featureUtilization": { "type": "integer" } - }, - "required": [ "featureIdentifier", "featureUtilization" ] - }, - "field": { - "description": "name value pair", - "type": "object", - "properties": { - "name": { "type": "string" }, - "value": { "type": "string" } - }, - "required": [ "name", "value" ] - }, - "filesystemUsage": { - "description": "disk usage of an identified virtual machine in gigabytes and/or gigabytes per second", - "type": "object", - "properties": { - "blockConfigured": { "type": "number" }, - "blockIops": { "type": "number" }, - "blockUsed": { "type": "number" }, - "ephemeralConfigured": { "type": "number" }, - "ephemeralIops": { "type": "number" }, - "ephemeralUsed": { "type": "number" }, - "filesystemName": { "type": "string" } - }, - "required": [ "blockConfigured", "blockIops", "blockUsed", "ephemeralConfigured", - "ephemeralIops", "ephemeralUsed", "filesystemName" ] - }, - "gtpPerFlowMetrics": { - "description": "Mobility GTP Protocol per flow metrics", - "type": "object", - "properties": { - "avgBitErrorRate": { - "description": "average bit error rate", - "type": "number" - }, - "avgPacketDelayVariation": { - "description": "Average packet delay variation or jitter in milliseconds for received packets: Average difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "avgPacketLatency": { - "description": "average delivery latency", - "type": "number" - }, - "avgReceiveThroughput": { - "description": "average receive throughput", - "type": "number" - }, - "avgTransmitThroughput": { - "description": "average transmit throughput", - "type": "number" - }, - "durConnectionFailedStatus": { - "description": "duration of failed state in milliseconds, computed as the cumulative time between a failed echo request and the next following successful error request, over this reporting interval", - "type": "number" - }, - "durTunnelFailedStatus": { - "description": "Duration of errored state, computed as the cumulative time between a tunnel error indicator and the next following non-errored indicator, over this reporting interval", - "type": "number" - }, - "flowActivatedBy": { - "description": "Endpoint activating the flow", - "type": "string" - }, - "flowActivationEpoch": { - "description": "Time the connection is activated in the flow (connection) being reported on, or transmission time of the first packet if activation time is not available", - "type": "number" - }, - "flowActivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowActivationTime": { - "description": "time the connection is activated in the flow being reported on, or transmission time of the first packet if activation time is not available; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "flowDeactivatedBy": { - "description": "Endpoint deactivating the flow", - "type": "string" - }, - "flowDeactivationEpoch": { - "description": "Time for the start of the flow connection, in integer UTC epoch time aka UNIX time", - "type": "number" - }, - "flowDeactivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowDeactivationTime": { - "description": "Transmission time of the first packet in the flow connection being reported on; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "flowStatus": { - "description": "connection status at reporting time as a working / inactive / failed indicator value", - "type": "string" - }, - "gtpConnectionStatus": { - "description": "Current connection state at reporting time", - "type": "string" - }, - "gtpTunnelStatus": { - "description": "Current tunnel state at reporting time", - "type": "string" - }, - "ipTosCountList": { - "description": "array of key: value pairs where the keys are drawn from the IP Type-of-Service identifiers which range from '0' to '255', and the values are the count of packets that had those ToS identifiers in the flow", - "type": "array", - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ] - } - }, - "ipTosList": { - "description": "Array of unique IP Type-of-Service values observed in the flow where values range from '0' to '255'", - "type": "array", - "items": { - "type": "string" - } - }, - "largePacketRtt": { - "description": "large packet round trip time", - "type": "number" - }, - "largePacketThreshold": { - "description": "large packet threshold being applied", - "type": "number" - }, - "maxPacketDelayVariation": { - "description": "Maximum packet delay variation or jitter in milliseconds for received packets: Maximum of the difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "maxReceiveBitRate": { - "description": "maximum receive bit rate", - "type": "number" - }, - "maxTransmitBitRate": { - "description": "maximum transmit bit rate", - "type": "number" - }, - "mobileQciCosCountList": { - "description": "array of key: value pairs where the keys are drawn from LTE QCI or UMTS class of service strings, and the values are the count of packets that had those strings in the flow", - "type": "array", - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ] - } - }, - "mobileQciCosList": { - "description": "Array of unique LTE QCI or UMTS class-of-service values observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "numActivationFailures": { - "description": "Number of failed activation requests, as observed by the reporting node", - "type": "number" - }, - "numBitErrors": { - "description": "number of errored bits", - "type": "number" - }, - "numBytesReceived": { - "description": "number of bytes received, including retransmissions", - "type": "number" - }, - "numBytesTransmitted": { - "description": "number of bytes transmitted, including retransmissions", - "type": "number" - }, - "numDroppedPackets": { - "description": "number of received packets dropped due to errors per virtual interface", - "type": "number" - }, - "numGtpEchoFailures": { - "description": "Number of Echo request path failures where failed paths are defined in 3GPP TS 29.281 sec 7.2.1 and 3GPP TS 29.060 sec. 11.2", - "type": "number" - }, - "numGtpTunnelErrors": { - "description": "Number of tunnel error indications where errors are defined in 3GPP TS 29.281 sec 7.3.1 and 3GPP TS 29.060 sec. 11.1", - "type": "number" - }, - "numHttpErrors": { - "description": "Http error count", - "type": "number" - }, - "numL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, including retransmissions", - "type": "number" - }, - "numL7BytesTransmitted": { - "description": "number of tunneled layer 7 bytes transmitted, excluding retransmissions", - "type": "number" - }, - "numLostPackets": { - "description": "number of lost packets", - "type": "number" - }, - "numOutOfOrderPackets": { - "description": "number of out-of-order packets", - "type": "number" - }, - "numPacketErrors": { - "description": "number of errored packets", - "type": "number" - }, - "numPacketsReceivedExclRetrans": { - "description": "number of packets received, excluding retransmission", - "type": "number" - }, - "numPacketsReceivedInclRetrans": { - "description": "number of packets received, including retransmission", - "type": "number" - }, - "numPacketsTransmittedInclRetrans": { - "description": "number of packets transmitted, including retransmissions", - "type": "number" - }, - "numRetries": { - "description": "number of packet retries", - "type": "number" - }, - "numTimeouts": { - "description": "number of packet timeouts", - "type": "number" - }, - "numTunneledL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, excluding retransmissions", - "type": "number" - }, - "roundTripTime": { - "description": "round trip time", - "type": "number" - }, - "tcpFlagCountList": { - "description": "array of key: value pairs where the keys are drawn from TCP Flags and the values are the count of packets that had that TCP Flag in the flow", - "type": "array", - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ] - } - }, - "tcpFlagList": { - "description": "Array of unique TCP Flags observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "timeToFirstByte": { - "description": "Time in milliseconds between the connection activation and first byte received", - "type": "number" - } - }, - "required": [ "avgBitErrorRate", "avgPacketDelayVariation", "avgPacketLatency", - "avgReceiveThroughput", "avgTransmitThroughput", - "flowActivationEpoch", "flowActivationMicrosec", - "flowDeactivationEpoch", "flowDeactivationMicrosec", - "flowDeactivationTime", "flowStatus", - "maxPacketDelayVariation", "numActivationFailures", - "numBitErrors", "numBytesReceived", "numBytesTransmitted", - "numDroppedPackets", "numL7BytesReceived", - "numL7BytesTransmitted", "numLostPackets", - "numOutOfOrderPackets", "numPacketErrors", - "numPacketsReceivedExclRetrans", - "numPacketsReceivedInclRetrans", - "numPacketsTransmittedInclRetrans", - "numRetries", "numTimeouts", "numTunneledL7BytesReceived", - "roundTripTime", "timeToFirstByte" - ] - }, - "heartbeatFields": { - "description": "optional field block for fields specific to heartbeat events", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional heartbeat fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "heartbeatFieldsVersion": { - "description": "version of the heartbeatFields block", - "type": "number" - }, - "heartbeatInterval": { - "description": "current heartbeat interval in seconds", - "type": "integer" - } - }, - "required": [ "heartbeatFieldsVersion", "heartbeatInterval" ] - }, - "internalHeaderFields": { - "description": "enrichment fields for internal VES Event Listener service use only, not supplied by event sources", - "type": "object" - }, - "jsonObject": { - "description": "json object schema, name and other meta-information along with one or more object instances", - "type": "object", - "properties": { - "objectInstances": { - "description": "one or more instances of the jsonObject", - "type": "array", - "items": { - "$ref": "#/definitions/jsonObjectInstance" - } - }, - "objectName": { - "description": "name of the JSON Object", - "type": "string" - }, - "objectSchema": { - "description": "json schema for the object", - "type": "string" - }, - "objectSchemaUrl": { - "description": "Url to the json schema for the object", - "type": "string" - }, - "nfSubscribedObjectName": { - "description": "name of the object associated with the nfSubscriptonId", - "type": "string" - }, - "nfSubscriptionId": { - "description": "identifies an openConfig telemetry subscription on a network function, which configures the network function to send complex object data associated with the jsonObject", - "type": "string" - } - }, - "required": [ "objectInstances", "objectName" ] - }, - "jsonObjectInstance": { - "description": "meta-information about an instance of a jsonObject along with the actual object instance", - "type": "object", - "properties": { - "objectInstance": { - "description": "an instance conforming to the jsonObject schema", - "type": "object" - }, - "objectInstanceEpochMicrosec": { - "description": "the unix time aka epoch time associated with this objectInstance--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "objectKeys": { - "description": "an ordered set of keys that identifies this particular instance of jsonObject", - "type": "array", - "items": { - "$ref": "#/definitions/key" - } - } - }, - "required": [ "objectInstance" ] - }, - "key": { - "description": "tuple which provides the name of a key along with its value and relative order", - "type": "object", - "properties": { - "keyName": { - "description": "name of the key", - "type": "string" - }, - "keyOrder": { - "description": "relative sequence or order of the key with respect to other keys", - "type": "integer" - }, - "keyValue": { - "description": "value of the key", - "type": "string" - } - }, - "required": [ "keyName" ] - }, - "latencyBucketMeasure": { - "description": "number of counts falling within a defined latency bucket", - "type": "object", - "properties": { - "countsInTheBucket": { "type": "number" }, - "highEndOfLatencyBucket": { "type": "number" }, - "lowEndOfLatencyBucket": { "type": "number" } - }, - "required": [ "countsInTheBucket" ] - }, - "measurementGroup": { - "description": "measurement group", - "type": "object", - "properties": { - "name": { "type": "string" }, - "measurements": { - "description": "array of name value pair measurements", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - } - }, - "required": [ "name", "measurements" ] - }, - "measurementsForVfScalingFields": { - "description": "measurementsForVfScaling fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional name-value-pair fields", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "additionalMeasurements": { - "description": "array of named name-value-pair arrays", - "type": "array", - "items": { - "$ref": "#/definitions/namedArrayOfFields" - } - }, - "additionalObjects": { - "description": "array of JSON objects described by name, schema and other meta-information", - "type": "array", - "items": { - "$ref": "#/definitions/jsonObject" - } - }, - "codecUsageArray": { - "description": "array of codecs in use", - "type": "array", - "items": { - "$ref": "#/definitions/codecsInUse" - } - }, - "concurrentSessions": { - "description": "peak concurrent sessions for the VM or VNF over the measurementInterval", - "type": "integer" - }, - "configuredEntities": { - "description": "over the measurementInterval, peak total number of: users, subscribers, devices, adjacencies, etc., for the VM, or subscribers, devices, etc., for the VNF", - "type": "integer" - }, - "cpuUsageArray": { - "description": "usage of an array of CPUs", - "type": "array", - "items": { - "$ref": "#/definitions/cpuUsage" - } - }, - "diskUsageArray": { - "description": "usage of an array of disks", - "type": "array", - "items": { - "$ref": "#/definitions/diskUsage" - } - }, - "featureUsageArray": { - "description": "array of features in use", - "type": "array", - "items": { - "$ref": "#/definitions/featuresInUse" - } - }, - "filesystemUsageArray": { - "description": "filesystem usage of the VM on which the VNFC reporting the event is running", - "type": "array", - "items": { - "$ref": "#/definitions/filesystemUsage" - } - }, - "latencyDistribution": { - "description": "array of integers representing counts of requests whose latency in milliseconds falls within per-VNF configured ranges", - "type": "array", - "items": { - "$ref": "#/definitions/latencyBucketMeasure" - } - }, - "meanRequestLatency": { - "description": "mean seconds required to respond to each request for the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "measurementInterval": { - "description": "interval over which measurements are being reported in seconds", - "type": "number" - }, - "measurementsForVfScalingVersion": { - "description": "version of the measurementsForVfScaling block", - "type": "number" - }, - "memoryUsageArray": { - "description": "memory usage of an array of VMs", - "type": "array", - "items": { - "$ref": "#/definitions/memoryUsage" - } - }, - "numberOfMediaPortsInUse": { - "description": "number of media ports in use", - "type": "integer" - }, - "requestRate": { - "description": "peak rate of service requests per second to the VNF over the measurementInterval", - "type": "number" - }, - "vnfcScalingMetric": { - "description": "represents busy-ness of the VNF from 0 to 100 as reported by the VNFC", - "type": "integer" - }, - "vNicPerformanceArray": { - "description": "usage of an array of virtual network interface cards", - "type": "array", - "items": { - "$ref": "#/definitions/vNicPerformance" - } - } - }, - "required": [ "measurementInterval", "measurementsForVfScalingVersion" ] - }, - "memoryUsage": { - "description": "memory usage of an identified virtual machine", - "type": "object", - "properties": { - "memoryBuffered": { - "description": "kilobytes of temporary storage for raw disk blocks", - "type": "number" - }, - "memoryCached": { - "description": "kilobytes of memory used for cache", - "type": "number" - }, - "memoryConfigured": { - "description": "kilobytes of memory configured in the virtual machine on which the VNFC reporting the event is running", - "type": "number" - }, - "memoryFree": { - "description": "kilobytes of physical RAM left unused by the system", - "type": "number" - }, - "memorySlabRecl": { - "description": "the part of the slab that can be reclaimed such as caches measured in kilobytes", - "type": "number" - }, - "memorySlabUnrecl": { - "description": "the part of the slab that cannot be reclaimed even when lacking memory measured in kilobytes", - "type": "number" - }, - "memoryUsed": { - "description": "total memory minus the sum of free, buffered, cached and slab memory measured in kilobytes", - "type": "number" - }, - "vmIdentifier": { - "description": "virtual machine identifier associated with the memory metrics", - "type": "string" - } - }, - "required": [ "memoryFree", "memoryUsed", "vmIdentifier" ] - }, - "mobileFlowFields": { - "description": "mobileFlow fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional mobileFlow fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "applicationType": { - "description": "Application type inferred", - "type": "string" - }, - "appProtocolType": { - "description": "application protocol", - "type": "string" - }, - "appProtocolVersion": { - "description": "application protocol version", - "type": "string" - }, - "cid": { - "description": "cell id", - "type": "string" - }, - "connectionType": { - "description": "Abbreviation referencing a 3GPP reference point e.g., S1-U, S11, etc", - "type": "string" - }, - "ecgi": { - "description": "Evolved Cell Global Id", - "type": "string" - }, - "flowDirection": { - "description": "Flow direction, indicating if the reporting node is the source of the flow or destination for the flow", - "type": "string" - }, - "gtpPerFlowMetrics": { "$ref": "#/definitions/gtpPerFlowMetrics" }, - "gtpProtocolType": { - "description": "GTP protocol", - "type": "string" - }, - "gtpVersion": { - "description": "GTP protocol version", - "type": "string" - }, - "httpHeader": { - "description": "HTTP request header, if the flow connects to a node referenced by HTTP", - "type": "string" - }, - "imei": { - "description": "IMEI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "imsi": { - "description": "IMSI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "ipProtocolType": { - "description": "IP protocol type e.g., TCP, UDP, RTP...", - "type": "string" - }, - "ipVersion": { - "description": "IP protocol version e.g., IPv4, IPv6", - "type": "string" - }, - "lac": { - "description": "location area code", - "type": "string" - }, - "mcc": { - "description": "mobile country code", - "type": "string" - }, - "mnc": { - "description": "mobile network code", - "type": "string" - }, - "mobileFlowFieldsVersion": { - "description": "version of the mobileFlowFields block", - "type": "number" - }, - "msisdn": { - "description": "MSISDN for the subscriber UE used in this flow, as an integer, if the flow connects to a mobile device", - "type": "string" - }, - "otherEndpointIpAddress": { - "description": "IP address for the other endpoint, as used for the flow being reported on", - "type": "string" - }, - "otherEndpointPort": { - "description": "IP Port for the reporting entity, as used for the flow being reported on", - "type": "integer" - }, - "otherFunctionalRole": { - "description": "Functional role of the other endpoint for the flow being reported on e.g., MME, S-GW, P-GW, PCRF...", - "type": "string" - }, - "rac": { - "description": "routing area code", - "type": "string" - }, - "radioAccessTechnology": { - "description": "Radio Access Technology e.g., 2G, 3G, LTE", - "type": "string" - }, - "reportingEndpointIpAddr": { - "description": "IP address for the reporting entity, as used for the flow being reported on", - "type": "string" - }, - "reportingEndpointPort": { - "description": "IP port for the reporting entity, as used for the flow being reported on", - "type": "integer" - }, - "sac": { - "description": "service area code", - "type": "string" - }, - "samplingAlgorithm": { - "description": "Integer identifier for the sampling algorithm or rule being applied in calculating the flow metrics if metrics are calculated based on a sample of packets, or 0 if no sampling is applied", - "type": "integer" - }, - "tac": { - "description": "transport area code", - "type": "string" - }, - "tunnelId": { - "description": "tunnel identifier", - "type": "string" - }, - "vlanId": { - "description": "VLAN identifier used by this flow", - "type": "string" - } - }, - "required": [ "flowDirection", "gtpPerFlowMetrics", "ipProtocolType", "ipVersion", - "mobileFlowFieldsVersion", "otherEndpointIpAddress", "otherEndpointPort", - "reportingEndpointIpAddr", "reportingEndpointPort" ] - }, - "namedArrayOfFields": { - "description": "an array of name value pairs along with a name for the array", - "type": "object", - "properties": { - "name": { "type": "string" }, - "arrayOfFields": { - "description": "array of name value pairs", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - } - }, - "required": [ "name", "measurements" ] - }, - "otherFields": { - "description": "fields for events belonging to the 'other' domain of the commonEventHeader domain enumeration", - "type": "object", - "properties": { - "hashOfNameValuePairArrays": { - "description": "array of named name-value-pair arrays", - "type": "array", - "items": { - "$ref": "#/definitions/namedArrayOfFields" - } - }, - "jsonObjects": { - "description": "array of JSON objects described by name, schema and other meta-information", - "type": "array", - "items": { - "$ref": "#/definitions/jsonObject" - } - }, - "nameValuePairs": { - "description": "array of name-value pairs", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "otherFieldsVersion": { - "description": "version of the otherFields block", - "type": "number" - } - }, - "required": [ "otherFieldsVersion" ] - }, - "requestError": { - "description": "standard request error data structure", - "type": "object", - "properties": { - "messageId": { - "description": "Unique message identifier of the format ABCnnnn where ABC is either SVC for Service Exceptions or POL for Policy Exception", - "type": "string" - }, - "text": { - "description": "Message text, with replacement variables marked with %n, where n is an index into the list of elements, starting at 1", - "type": "string" - }, - "url": { - "description": "Hyperlink to a detailed error resource e.g., an HTML page for browser user agents", - "type": "string" - }, - "variables": { - "description": "List of zero or more strings that represent the contents of the variables used by the message text", - "type": "string" - } - }, - "required": [ "messageId", "text" ] - }, - "sipSignalingFields": { - "description": "sip signaling fields", - "type": "object", - "properties": { - "additionalInformation": { - "description": "additional sip signaling fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "compressedSip": { - "description": "the full SIP request/response including headers and bodies", - "type": "string" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "localIpAddress": { - "description": "IP address on VNF", - "type": "string" - }, - "localPort": { - "description": "port on VNF", - "type": "string" - }, - "remoteIpAddress": { - "description": "IP address of peer endpoint", - "type": "string" - }, - "remotePort": { - "description": "port of peer endpoint", - "type": "string" - }, - "sipSignalingFieldsVersion": { - "description": "version of the sipSignalingFields block", - "type": "number" - }, - "summarySip": { - "description": "the SIP Method or Response (‘INVITE’, ‘200 OK’, ‘BYE’, etc)", - "type": "string" - }, - "vnfVendorNameFields": { - "$ref": "#/definitions/vnfVendorNameFields" - } - }, - "required": [ "correlator", "localIpAddress", "localPort", "remoteIpAddress", - "remotePort", "sipSignalingFieldsVersion", "vnfVendorNameFields" ] - }, - "stateChangeFields": { - "description": "stateChange fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional stateChange fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "newState": { - "description": "new state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "oldState": { - "description": "previous state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "stateChangeFieldsVersion": { - "description": "version of the stateChangeFields block", - "type": "number" - }, - "stateInterface": { - "description": "card or port name of the entity that changed state", - "type": "string" - } - }, - "required": [ "newState", "oldState", "stateChangeFieldsVersion", "stateInterface" ] - }, - "suppressedNvPairs": { - "description": "List of specific NvPairsNames to suppress within a given Name-Value Field for event Throttling", - "type": "object", - "properties": { - "nvPairFieldName": { - "description": "Name of the field within which are the nvpair names to suppress", - "type": "string" - }, - "suppressedNvPairNames": { - "description": "Array of nvpair names to suppress within the nvpairFieldName", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ "nvPairFieldName", "suppressedNvPairNames" ] - }, - "syslogFields": { - "description": "sysLog fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional syslog fields if needed provided as name=value delimited by a pipe ‘|’ symbol, for example: 'name1=value1|name2=value2|…'", - "type": "string" - }, - "eventSourceHost": { - "description": "hostname of the device", - "type": "string" - }, - "eventSourceType": { - "description": "type of event source; examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "syslogFacility": { - "description": "numeric code from 0 to 23 for facility--see table in documentation", - "type": "integer" - }, - "syslogFieldsVersion": { - "description": "version of the syslogFields block", - "type": "number" - }, - "syslogMsg": { - "description": "syslog message", - "type": "string" - }, - "syslogPri": { - "description": "0-192 combined severity and facility", - "type": "integer" - }, - "syslogProc": { - "description": "identifies the application that originated the message", - "type": "string" - }, - "syslogProcId": { - "description": "a change in the value of this field indicates a discontinuity in syslog reporting", - "type": "number" - }, - "syslogSData": { - "description": "syslog structured data consisting of a structured data Id followed by a set of key value pairs", - "type": "string" - }, - "syslogSdId": { - "description": "0-32 char in format name@number for example ourSDID@32473", - "type": "string" - }, - "syslogSev": { - "description": "numerical Code for severity derived from syslogPri as remaider of syslogPri / 8", - "type": "string", - "enum": [ - "Alert", - "Critical", - "Debug", - "Emergency", - "Error", - "Info", - "Notice", - "Warning" - ] - }, - "syslogTag": { - "description": "msgId indicating the type of message such as TCPOUT or TCPIN; NILVALUE should be used when no other value can be provided", - "type": "string" - }, - "syslogVer": { - "description": "IANA assigned version of the syslog protocol specification - typically 1", - "type": "number" - } - }, - "required": [ "eventSourceType", "syslogFieldsVersion", "syslogMsg", "syslogTag" ] - }, - "thresholdCrossingAlertFields": { - "description": "fields specific to threshold crossing alert events", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional threshold crossing alert fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "additionalParameters": { - "description": "performance counters", - "type": "array", - "items": { - "$ref": "#/definitions/counter" - } - }, - "alertAction": { - "description": "Event action", - "type": "string", - "enum": [ - "CLEAR", - "CONT", - "SET" - ] - }, - "alertDescription": { - "description": "Unique short alert description such as IF-SHUB-ERRDROP", - "type": "string" - }, - "alertType": { - "description": "Event type", - "type": "string", - "enum": [ - "CARD-ANOMALY", - "ELEMENT-ANOMALY", - "INTERFACE-ANOMALY", - "SERVICE-ANOMALY" - ] - }, - "alertValue": { - "description": "Calculated API value (if applicable)", - "type": "string" - }, - "associatedAlertIdList": { - "description": "List of eventIds associated with the event being reported", - "type": "array", - "items": { "type": "string" } - }, - "collectionTimestamp": { - "description": "Time when the performance collector picked up the data; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "dataCollector": { - "description": "Specific performance collector instance used", - "type": "string" - }, - "elementType": { - "description": "type of network element - internal ATT field", - "type": "string" - }, - "eventSeverity": { - "description": "event severity or priority", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventStartTimestamp": { - "description": "Time closest to when the measurement was made; with RFC 2822 compliant format: Sat, 13 Mar 2010 11:29:05 -0800", - "type": "string" - }, - "interfaceName": { - "description": "Physical or logical port or card (if applicable)", - "type": "string" - }, - "networkService": { - "description": "network name - internal ATT field", - "type": "string" - }, - "possibleRootCause": { - "description": "Reserved for future use", - "type": "string" - }, - "thresholdCrossingFieldsVersion": { - "description": "version of the thresholdCrossingAlertFields block", - "type": "number" - } - }, - "required": [ - "additionalParameters", - "alertAction", - "alertDescription", - "alertType", - "collectionTimestamp", - "eventSeverity", - "eventStartTimestamp", - "thresholdCrossingFieldsVersion" - ] - }, - "vendorVnfNameFields": { - "description": "provides vendor, vnf and vfModule identifying information", - "type": "object", - "properties": { - "vendorName": { - "description": "VNF vendor name", - "type": "string" - }, - "vfModuleName": { - "description": "ASDC vfModuleName for the vfModule generating the event", - "type": "string" - }, - "vnfName": { - "description": "ASDC modelName for the VNF generating the event", - "type": "string" - } - }, - "required": [ "vendorName" ] - }, - "vNicPerformance": { - "description": "describes the performance and errors of an identified virtual network interface card", - "type": "object", - "properties": { - "receivedBroadcastPacketsAccumulated": { - "description": "Cumulative count of broadcast packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedBroadcastPacketsDelta": { - "description": "Count of broadcast packets received within the measurement interval", - "type": "number" - }, - "receivedDiscardedPacketsAccumulated": { - "description": "Cumulative count of discarded packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedDiscardedPacketsDelta": { - "description": "Count of discarded packets received within the measurement interval", - "type": "number" - }, - "receivedErrorPacketsAccumulated": { - "description": "Cumulative count of error packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedErrorPacketsDelta": { - "description": "Count of error packets received within the measurement interval", - "type": "number" - }, - "receivedMulticastPacketsAccumulated": { - "description": "Cumulative count of multicast packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedMulticastPacketsDelta": { - "description": "Count of multicast packets received within the measurement interval", - "type": "number" - }, - "receivedOctetsAccumulated": { - "description": "Cumulative count of octets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedOctetsDelta": { - "description": "Count of octets received within the measurement interval", - "type": "number" - }, - "receivedTotalPacketsAccumulated": { - "description": "Cumulative count of all packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedTotalPacketsDelta": { - "description": "Count of all packets received within the measurement interval", - "type": "number" - }, - "receivedUnicastPacketsAccumulated": { - "description": "Cumulative count of unicast packets received as read at the end of the measurement interval", - "type": "number" - }, - "receivedUnicastPacketsDelta": { - "description": "Count of unicast packets received within the measurement interval", - "type": "number" - }, - "transmittedBroadcastPacketsAccumulated": { - "description": "Cumulative count of broadcast packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedBroadcastPacketsDelta": { - "description": "Count of broadcast packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedDiscardedPacketsAccumulated": { - "description": "Cumulative count of discarded packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedDiscardedPacketsDelta": { - "description": "Count of discarded packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedErrorPacketsAccumulated": { - "description": "Cumulative count of error packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedErrorPacketsDelta": { - "description": "Count of error packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedMulticastPacketsAccumulated": { - "description": "Cumulative count of multicast packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedMulticastPacketsDelta": { - "description": "Count of multicast packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedOctetsAccumulated": { - "description": "Cumulative count of octets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedOctetsDelta": { - "description": "Count of octets transmitted within the measurement interval", - "type": "number" - }, - "transmittedTotalPacketsAccumulated": { - "description": "Cumulative count of all packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedTotalPacketsDelta": { - "description": "Count of all packets transmitted within the measurement interval", - "type": "number" - }, - "transmittedUnicastPacketsAccumulated": { - "description": "Cumulative count of unicast packets transmitted as read at the end of the measurement interval", - "type": "number" - }, - "transmittedUnicastPacketsDelta": { - "description": "Count of unicast packets transmitted within the measurement interval", - "type": "number" - }, - "valuesAreSuspect": { - "description": "Indicates whether vNicPerformance values are likely inaccurate due to counter overflow or other condtions", - "type": "string", - "enum": [ "true", "false" ] - }, - "vNicIdentifier": { - "description": "vNic identification", - "type": "string" - } - }, - "required": [ "valuesAreSuspect", "vNicIdentifier" ] - }, - "voiceQualityFields": { - "description": "provides statistics related to customer facing voice products", - "type": "object", - "properties": { - "additionalInformation": { - "description": "additional voice quality fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "calleeSideCodec": { - "description": "callee codec for the call", - "type": "string" - }, - "callerSideCodec": { - "description": "caller codec for the call", - "type": "string" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "endOfCallVqmSummaries": { - "$ref": "#/definitions/endOfCallVqmSummaries" - }, - "phoneNumber": { - "description": "phone number associated with the correlator", - "type": "string" - }, - "midCallRtcp": { - "description": "Base64 encoding of the binary RTCP data excluding Eth/IP/UDP headers", - "type": "string" - }, - "vendorVnfNameFields": { - "$ref": "#/definitions/vendorVnfNameFields" - }, - "voiceQualityFieldsVersion": { - "description": "version of the voiceQualityFields block", - "type": "number" - } - }, - "required": [ "calleeSideCodec", "callerSideCodec", "correlator", "midCallRtcp", - "vendorVnfNameFields", "voiceQualityFieldsVersion" ] - } - }, - "title": "Event Listener", - "type": "object", - "properties": { - "event": {"$ref": "#/definitions/event"} - } -} \ No newline at end of file diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.orig b/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.orig deleted file mode 100644 index 37fe7ee1..00000000 --- a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.orig +++ /dev/null @@ -1,1383 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - - "definitions": { - "attCopyrightNotice": { - "description": "Copyright (c) <2016>, AT&T Intellectual Property. All other rights reserved", - "type": "object", - "properties": { - "useAndRedistribution": { - "description": "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:", - "type": "string" - }, - "condition1": { - "description": "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.", - "type": "string" - }, - "condition2": { - "description": "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.", - "type": "string" - }, - "condition3": { - "description": "All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the AT&T.", - "type": "string" - }, - "condition4": { - "description": "Neither the name of AT&T nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.", - "type": "string" - }, - "disclaimerLine1": { - "description": "THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS", - "type": "string" - }, - "disclaimerLine2": { - "description": "FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES", - "type": "string" - }, - "disclaimerLine3": { - "description": "(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,", - "type": "string" - }, - "disclaimerLine4": { - "description": "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", - "type": "string" - } - } - }, - "codecsInUse": { - "description": "number of times an identified codec was used over the measurementInterval", - "type": "object", - "properties": { - "codecIdentifier": { "type": "string" }, - "numberInUse": { "type": "number" } - }, - "required": [ "codecIdentifier", "numberInUse" ] - }, - "codecSelected": { - "description": "codec selected for the call - 'PCMA', 'G729A', ...", - "type": "object", - "properties": { - "codec": { "type": "string" } - } - }, - "codecSelectedTranscoding": { - "description": "codecs selected for the call, when transcoding is occurring", - "type": "object", - "properties": { - "calleeSideCodec": { "type": "string" }, - "callerSideCodec": { "type": "string" } - } - }, - "command": { - "description": "command from an event collector toward an event source", - "type": "object", - "properties": { - "commandType": { - "type": "string", - "enum": [ - "measurementIntervalChange", - "provideThrottlingState", - "throttlingSpecification" - ] - }, - "eventDomainThrottleSpecification": { "$ref": "#/definitions/eventDomainThrottleSpecification" }, - "measurementInterval": { "type": "number" } - }, - "required": [ "commandType" ] - }, - "commandList": { - "description": "array of commands from an event collector toward an event source", - "type": "array", - "items": { - "$ref": "#/definitions/commandListEntry" - }, - "minItems": 0 - }, - "commandListEntry": { - "description": "reference to a command object", - "type": "object", - "properties": { - "command": {"$ref": "#/definitions/command"} - }, - "required": [ "command" ] - }, - "commonEventHeader": { - "description": "fields common to all events", - "type": "object", - "properties": { - "domain": { - "description": "the eventing domain associated with the event", - "type": "string", - "enum": [ - "fault", - "heartbeat", - "measurementsForVfScaling", - "mobileFlow", - "other", - "serviceEvents", - "signaling", - "stateChange", - "syslog", - "thresholdCrossingAlert" - ] - }, - "eventId": { - "description": "event key that is unique to the event source", - "type": "string" - }, - "eventType": { - "description": "unique event topic name", - "type": "string" - }, - "functionalRole": { - "description": "function of the event source e.g., eNodeB, MME, PCRF", - "type": "string" - }, - "lastEpochMicrosec": { - "description": "the latest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "priority": { - "description": "processing priority", - "type": "string", - "enum": [ - "High", - "Medium", - "Normal", - "Low" - ] - }, - "reportingEntityId": { - "description": "UUID identifying the entity reporting the event, for example an OAM VM", - "type": "string" - }, - "reportingEntityName": { - "description": "name of the entity reporting the event, for example, an OAM VM", - "type": "string" - }, - "sequence": { - "description": "ordering of events communicated by an event source instance or 0 if not needed", - "type": "integer" - }, - "sourceId": { - "description": "UUID identifying the entity experiencing the event issue", - "type": "string" - }, - "sourceName": { - "description": "name of the entity experiencing the event issue", - "type": "string" - }, - "startEpochMicrosec": { - "description": "the earliest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "version": { - "description": "version of the event header", - "type": "number" - } - }, - "required": [ "domain", "eventId", "functionalRole", "lastEpochMicrosec", - "priority", "reportingEntityName", "sequence", - "sourceName", "startEpochMicrosec" ] - }, - "counter": { - "description": "performance counter", - "type": "object", - "properties": { - "criticality": { "type": "string", "enum": [ "CRIT", "MAJ" ] }, - "name": { "type": "string" }, - "thresholdCrossed": { "type": "string" }, - "value": { "type": "string"} - }, - "required": [ "criticality", "name", "thresholdCrossed", "value" ] - }, - "cpuUsage": { - "description": "percent usage of an identified CPU", - "type": "object", - "properties": { - "cpuIdentifier": { "type": "string" }, - "percentUsage": { "type": "number" } - }, - "required": [ "cpuIdentifier", "percentUsage" ] - }, - "endOfCallVqmSummaries": { - "description": "", - "type": "object", - "properties": { - "adjacencyName": { - "description": " adjacency name", - "type": "string" - }, - "endpointDescription": { - "description": "‘Caller’, ‘Callee’", - "type": "string", - "enum": ["Caller", "Callee"] - }, - "endpointJitter": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsSent": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsSent": { - "description": "", - "type": "number" - }, - "localJitter": { - "description": "", - "type": "number" - }, - "localRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "localRtpOctetsSent": { - "description": "", - "type": "number" - }, - "localRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "localRtpPacketsSent": { - "description": "", - "type": "number" - }, - "mosCqe": { - "description": "1-5 1dp", - "type": "number" - }, - "packetsLost": { - "description": "", - "type": "number" - }, - "packetLossPercent": { - "description" : "Calculated percentage packet loss based on Endpoint RTP packets lost (as reported in RTCP) and Local RTP packets sent. Direction is based on Endpoint description (Caller, Callee). Decimal (2 dp)", - "type": "number" - }, - "rFactor": { - "description": "0-100", - "type": "number" - }, - "roundTripDelay": { - "description": "millisecs", - "type": "number" - } - } - }, - "errors": { - "description": "receive and transmit errors for the measurements domain", - "type": "object", - "properties": { - "receiveDiscards": { "type": "number" }, - "receiveErrors": { "type": "number" }, - "transmitDiscards": { "type": "number" }, - "transmitErrors": { "type": "number" } - }, - "required": [ "receiveDiscards", "receiveErrors", "transmitDiscards", "transmitErrors" ] - }, - "event": { - "description": "generic event format", - "type": "object", - "properties": { - "commonEventHeader": { "$ref": "#/definitions/commonEventHeader" }, - "faultFields": { "$ref": "#/definitions/faultFields" }, - "measurementsForVfScalingFields": { "$ref": "#/definitions/measurementsForVfScalingFields" }, - "mobileFlowFields": { "$ref": "#/definitions/mobileFlowFields" }, - "otherFields": { "$ref": "#/definitions/otherFields" }, - "serviceEventsFields": { "$ref": "#/definitions/serviceEventsFields" }, - "signalingFields": { "$ref": "#/definitions/signalingFields" }, - "stateChangeFields": { "$ref": "#/definitions/stateChangeFields" }, - "syslogFields": { "$ref": "#/definitions/syslogFields" }, - "thresholdCrossingAlertFields": { "$ref": "#/definitions/thresholdCrossingAlertFields" } - }, - "required": [ "commonEventHeader" ] - }, - "eventDomainThrottleSpecification": { - "description": "specification of what information to suppress within an event domain", - "type": "object", - "properties": { - "eventDomain": { - "description": "Event domain enum from the commonEventHeader domain field", - "type": "string" - }, - "suppressedFieldNames": { - "description": "List of optional field names in the event block that should not be sent to the Event Listener", - "type": "array", - "items": { - "type": "string" - } - }, - "suppressedNvPairsList": { - "description": "Optional list of specific NvPairsNames to suppress within a given Name-Value Field", - "type": "array", - "items": { - "$ref": "#/definitions/suppressedNvPairs" - } - } - }, - "required": [ "eventDomain" ] - }, - "eventDomainThrottleSpecificationList": { - "description": "array of eventDomainThrottleSpecifications", - "type": "array", - "items": { - "$ref": "#/definitions/eventDomainThrottleSpecification" - }, - "minItems": 0 - }, - "eventInstanceIdentifier": { - "description": "event instance identifiers", - "type": "object", - "properties": { - "eventId": { - "description": "event identifier", - "type": "string" - }, - "vendorId": { - "description": "vendor identifier", - "type": "string" - }, - "productId": { - "description": "product identifier", - "type": "string" - }, - "subsystemId": { - "description": "subsystem identifier", - "type": "string" - }, - "eventFriendlyName": { - "description": "event instance friendly name", - "type": "string" - } - }, - "required": [ "eventId", "vendorId" ] - }, - "eventList": { - "description": "array of events", - "type": "array", - "items": { - "$ref": "#/definitions/event" - } - }, - "eventThrottlingState": { - "description": "reports the throttling in force at the event source", - "type": "object", - "properties": { - "eventThrottlingMode": { - "description": "Mode the event manager is in", - "type": "string", - "enum": [ - "normal", - "throttled" - ] - }, - "eventDomainThrottleSpecificationList": { "$ref": "#/definitions/eventDomainThrottleSpecificationList" } - }, - "required": [ "eventThrottlingMode" ] - }, - "faultFields": { - "description": "fields specific to fault events", - "type": "object", - "properties": { - "alarmAdditionalInformation": { - "description": "additional alarm information", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "alarmCondition": { - "description": "alarm condition reported by the device", - "type": "string" - }, - "alarmInterfaceA": { - "description": "card, port, channel or interface name of the device generating the alarm", - "type": "string" - }, - "eventSeverity": { - "description": "event severity or priority", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventSourceType": { - "description": "type of event source; examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "faultFieldsVersion": { - "description": "version of the faultFields block", - "type": "number" - }, - "specificProblem": { - "description": "short description of the alarm or problem", - "type": "string" - }, - "vfStatus": { - "description": "virtual function status enumeration", - "type": "string", - "enum": [ - "Active", - "Idle", - "Preparing to terminate", - "Ready to terminate", - "Requesting termination" - ] - } - }, - "required": [ "alarmCondition", "eventSeverity", - "eventSourceType", "specificProblem", "vfStatus" ] - }, - "featuresInUse": { - "description": "number of times an identified feature was used over the measurementInterval", - "type": "object", - "properties": { - "featureIdentifier": { "type": "string" }, - "featureUtilization": { "type": "number" } - }, - "required": [ "featureIdentifier", "featureUtilization" ] - }, - "field": { - "description": "name value pair", - "type": "object", - "properties": { - "name": { "type": "string" }, - "value": { "type": "string" } - }, - "required": [ "name", "value" ] - }, - "filesystemUsage": { - "description": "disk usage of an identified virtual machine in gigabytes and/or gigabytes per second", - "type": "object", - "properties": { - "blockConfigured": { "type": "number" }, - "blockIops": { "type": "number" }, - "blockUsed": { "type": "number" }, - "ephemeralConfigured": { "type": "number" }, - "ephemeralIops": { "type": "number" }, - "ephemeralUsed": { "type": "number" }, - "filesystemName": { "type": "string" } - }, - "required": [ "blockConfigured", "blockIops", "blockUsed", "ephemeralConfigured", - "ephemeralIops", "ephemeralUsed", "filesystemName" ] - }, - "gtpPerFlowMetrics": { - "description": "Mobility GTP Protocol per flow metrics", - "type": "object", - "properties": { - "avgBitErrorRate": { - "description": "average bit error rate", - "type": "number" - }, - "avgPacketDelayVariation": { - "description": "Average packet delay variation or jitter in milliseconds for received packets: Average difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "avgPacketLatency": { - "description": "average delivery latency", - "type": "number" - }, - "avgReceiveThroughput": { - "description": "average receive throughput", - "type": "number" - }, - "avgTransmitThroughput": { - "description": "average transmit throughput", - "type": "number" - }, - "durConnectionFailedStatus": { - "description": "duration of failed state in milliseconds, computed as the cumulative time between a failed echo request and the next following successful error request, over this reporting interval", - "type": "number" - }, - "durTunnelFailedStatus": { - "description": "Duration of errored state, computed as the cumulative time between a tunnel error indicator and the next following non-errored indicator, over this reporting interval", - "type": "number" - }, - "flowActivatedBy": { - "description": "Endpoint activating the flow", - "type": "string" - }, - "flowActivationEpoch": { - "description": "Time the connection is activated in the flow (connection) being reported on, or transmission time of the first packet if activation time is not available", - "type": "number" - }, - "flowActivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowActivationTime": { - "description": "time the connection is activated in the flow being reported on, or transmission time of the first packet if activation time is not available; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "flowDeactivatedBy": { - "description": "Endpoint deactivating the flow", - "type": "string" - }, - "flowDeactivationEpoch": { - "description": "Time for the start of the flow connection, in integer UTC epoch time aka UNIX time", - "type": "number" - }, - "flowDeactivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowDeactivationTime": { - "description": "Transmission time of the first packet in the flow connection being reported on; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "flowStatus": { - "description": "connection status at reporting time as a working / inactive / failed indicator value", - "type": "string" - }, - "gtpConnectionStatus": { - "description": "Current connection state at reporting time", - "type": "string" - }, - "gtpTunnelStatus": { - "description": "Current tunnel state at reporting time", - "type": "string" - }, - "ipTosCountList": { - "description": "array of key: value pairs where the keys are drawn from the IP Type-of-Service identifiers which range from '0' to '255', and the values are the count of packets that had those ToS identifiers in the flow", - "type": "array", - "uniqueItems": true, - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ], - "additionalItems": false - } - }, - "ipTosList": { - "description": "Array of unique IP Type-of-Service values observed in the flow where values range from '0' to '255'", - "type": "array", - "items": { - "type": "string" - } - }, - "largePacketRtt": { - "description": "large packet round trip time", - "type": "number" - }, - "largePacketThreshold": { - "description": "large packet threshold being applied", - "type": "number" - }, - "maxPacketDelayVariation": { - "description": "Maximum packet delay variation or jitter in milliseconds for received packets: Maximum of the difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "maxReceiveBitRate": { - "description": "maximum receive bit rate", - "type": "number" - }, - "maxTransmitBitRate": { - "description": "maximum transmit bit rate", - "type": "number" - }, - "mobileQciCosCountList": { - "description": "array of key: value pairs where the keys are drawn from LTE QCI or UMTS class of service strings, and the values are the count of packets that had those strings in the flow", - "type": "array", - "uniqueItems": true, - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ], - "additionalItems": false - } - }, - "mobileQciCosList": { - "description": "Array of unique LTE QCI or UMTS class-of-service values observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "numActivationFailures": { - "description": "Number of failed activation requests, as observed by the reporting node", - "type": "number" - }, - "numBitErrors": { - "description": "number of errored bits", - "type": "number" - }, - "numBytesReceived": { - "description": "number of bytes received, including retransmissions", - "type": "number" - }, - "numBytesTransmitted": { - "description": "number of bytes transmitted, including retransmissions", - "type": "number" - }, - "numDroppedPackets": { - "description": "number of received packets dropped due to errors per virtual interface", - "type": "number" - }, - "numGtpEchoFailures": { - "description": "Number of Echo request path failures where failed paths are defined in 3GPP TS 29.281 sec 7.2.1 and 3GPP TS 29.060 sec. 11.2", - "type": "number" - }, - "numGtpTunnelErrors": { - "description": "Number of tunnel error indications where errors are defined in 3GPP TS 29.281 sec 7.3.1 and 3GPP TS 29.060 sec. 11.1", - "type": "number" - }, - "numHttpErrors": { - "description": "Http error count", - "type": "number" - }, - "numL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, including retransmissions", - "type": "number" - }, - "numL7BytesTransmitted": { - "description": "number of tunneled layer 7 bytes transmitted, excluding retransmissions", - "type": "number" - }, - "numLostPackets": { - "description": "number of lost packets", - "type": "number" - }, - "numOutOfOrderPackets": { - "description": "number of out-of-order packets", - "type": "number" - }, - "numPacketErrors": { - "description": "number of errored packets", - "type": "number" - }, - "numPacketsReceivedExclRetrans": { - "description": "number of packets received, excluding retransmission", - "type": "number" - }, - "numPacketsReceivedInclRetrans": { - "description": "number of packets received, including retransmission", - "type": "number" - }, - "numPacketsTransmittedInclRetrans": { - "description": "number of packets transmitted, including retransmissions", - "type": "number" - }, - "numRetries": { - "description": "number of packet retries", - "type": "number" - }, - "numTimeouts": { - "description": "number of packet timeouts", - "type": "number" - }, - "numTunneledL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, excluding retransmissions", - "type": "number" - }, - "roundTripTime": { - "description": "round trip time", - "type": "number" - }, - "tcpFlagCountList": { - "description": "array of key: value pairs where the keys are drawn from TCP Flags and the values are the count of packets that had that TCP Flag in the flow", - "type": "array", - "uniqueItems": true, - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ], - "additionalItems": false - } - }, - "tcpFlagList": { - "description": "Array of unique TCP Flags observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "timeToFirstByte": { - "description": "Time in milliseconds between the connection activation and first byte received", - "type": "number" - } - }, - "required": [ "avgBitErrorRate", "avgPacketDelayVariation", "avgPacketLatency", - "avgReceiveThroughput", "avgTransmitThroughput", - "flowActivationEpoch", "flowActivationMicrosec", - "flowDeactivationEpoch", "flowDeactivationMicrosec", - "flowDeactivationTime", "flowStatus", - "maxPacketDelayVariation", "numActivationFailures", - "numBitErrors", "numBytesReceived", "numBytesTransmitted", - "numDroppedPackets", "numL7BytesReceived", - "numL7BytesTransmitted", "numLostPackets", - "numOutOfOrderPackets", "numPacketErrors", - "numPacketsReceivedExclRetrans", - "numPacketsReceivedInclRetrans", - "numPacketsTransmittedInclRetrans", - "numRetries", "numTimeouts", "numTunneledL7BytesReceived", - "roundTripTime", "timeToFirstByte" - ] - }, - "latencyBucketMeasure": { - "description": "number of counts falling within a defined latency bucket", - "type": "object", - "properties": { - "countsInTheBucket": { "type": "number" }, - "highEndOfLatencyBucket": { "type": "number" }, - "lowEndOfLatencyBucket": { "type": "number" } - }, - "required": [ "countsInTheBucket" ] - }, - "marker": { - "description": "", - "type": "object", - "properties": { - "phoneNumber": { "type": "string" } - } - }, - "measurementGroup": { - "description": "measurement group", - "type": "object", - "properties": { - "name": { "type": "string" }, - "measurements": { - "description": "array of name value pair measurements", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - } - }, - "required": [ "name", "measurements" ] - }, - "measurementsForVfScalingFields": { - "description": "measurementsForVfScaling fields", - "type": "object", - "properties": { - "additionalMeasurements": { - "description": "additional measurement fields", - "type": "array", - "items": { - "$ref": "#/definitions/measurementGroup" - } - }, - "aggregateCpuUsage": { - "description": "aggregate CPU usage of the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "codecUsageArray": { - "description": "array of codecs in use", - "type": "array", - "items": { - "$ref": "#/definitions/codecsInUse" - } - }, - "concurrentSessions": { - "description": "peak concurrent sessions for the VM or VNF over the measurementInterval", - "type": "number" - }, - "configuredEntities": { - "description": "over the measurementInterval, peak total number of: users, subscribers, devices, adjacencies, etc., for the VM, or subscribers, devices, etc., for the VNF", - "type": "number" - }, - "cpuUsageArray": { - "description": "usage of an array of CPUs", - "type": "array", - "items": { - "$ref": "#/definitions/cpuUsage" - } - }, - "errors": { "$ref": "#/definitions/errors" }, - "featureUsageArray": { - "description": "array of features in use", - "type": "array", - "items": { - "$ref": "#/definitions/featuresInUse" - } - }, - "filesystemUsageArray": { - "description": "filesystem usage of the VM on which the VNFC reporting the event is running", - "type": "array", - "items": { - "$ref": "#/definitions/filesystemUsage" - } - }, - "latencyDistribution": { - "description": "array of integers representing counts of requests whose latency in milliseconds falls within per-VNF configured ranges", - "type": "array", - "items": { - "$ref": "#/definitions/latencyBucketMeasure" - } - }, - "meanRequestLatency": { - "description": "mean seconds required to respond to each request for the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "measurementInterval": { - "description": "interval over which measurements are being reported in seconds", - "type": "number" - }, - "measurementsForVfScalingVersion": { - "description": "version of the measurementsForVfScaling block", - "type": "number" - }, - "memoryConfigured": { - "description": "memory configured in the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "memoryUsed": { - "description": "memory usage of the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "numberOfMediaPortsInUse": { - "description": "number of media ports in use", - "type": "number" - }, - "requestRate": { - "description": "peak rate of service requests per second to the VNF over the measurementInterval", - "type": "number" - }, - "vnfcScalingMetric": { - "description": "represents busy-ness of the VNF from 0 to 100 as reported by the VNFC", - "type": "number" - }, - "vNicUsageArray": { - "description": "usage of an array of virtual network interface cards", - "type": "array", - "items": { - "$ref": "#/definitions/vNicUsage" - } - } - }, - "required": [ "measurementInterval" ] - }, - "midCallRtcp": { - "description": "RTCP packet received ", - "type": "object", - "properties": { - "rtcpData": { - "description": "Base64 encoding of the binary RTCP data (excluding Eth/IP/UDP headers) Base64 encoded array of bytes", - "type": "string" - } - } - }, - "mobileFlowFields": { - "description": "mobileFlow fields", - "type": "object", - "properties": { - "applicationType": { - "description": "Application type inferred", - "type": "string" - }, - "appProtocolType": { - "description": "application protocol", - "type": "string" - }, - "appProtocolVersion": { - "description": "application protocol version", - "type": "string" - }, - "cid": { - "description": "cell id", - "type": "string" - }, - "connectionType": { - "description": "Abbreviation referencing a 3GPP reference point e.g., S1-U, S11, etc", - "type": "string" - }, - "ecgi": { - "description": "Evolved Cell Global Id", - "type": "string" - }, - "flowDirection": { - "description": "Flow direction, indicating if the reporting node is the source of the flow or destination for the flow", - "type": "string" - }, - "gtpPerFlowMetrics": { "$ref": "#/definitions/gtpPerFlowMetrics" }, - "gtpProtocolType": { - "description": "GTP protocol", - "type": "string" - }, - "gtpVersion": { - "description": "GTP protocol version", - "type": "string" - }, - "httpHeader": { - "description": "HTTP request header, if the flow connects to a node referenced by HTTP", - "type": "string" - }, - "imei": { - "description": "IMEI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "imsi": { - "description": "IMSI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "ipProtocolType": { - "description": "IP protocol type e.g., TCP, UDP, RTP...", - "type": "string" - }, - "ipVersion": { - "description": "IP protocol version e.g., IPv4, IPv6", - "type": "string" - }, - "lac": { - "description": "location area code", - "type": "string" - }, - "mcc": { - "description": "mobile country code", - "type": "string" - }, - "mnc": { - "description": "mobile network code", - "type": "string" - }, - "mobileFlowFieldsVersion": { - "description": "version of the mobileFlowFields block", - "type": "number" - }, - "msisdn": { - "description": "MSISDN for the subscriber UE used in this flow, as an integer, if the flow connects to a mobile device", - "type": "string" - }, - "otherEndpointIpAddress": { - "description": "IP address for the other endpoint, as used for the flow being reported on", - "type": "string" - }, - "otherEndpointPort": { - "description": "IP Port for the reporting entity, as used for the flow being reported on", - "type": "number" - }, - "otherFunctionalRole": { - "description": "Functional role of the other endpoint for the flow being reported on e.g., MME, S-GW, P-GW, PCRF...", - "type": "string" - }, - "rac": { - "description": "routing area code", - "type": "string" - }, - "radioAccessTechnology": { - "description": "Radio Access Technology e.g., 2G, 3G, LTE", - "type": "string" - }, - "reportingEndpointIpAddr": { - "description": "IP address for the reporting entity, as used for the flow being reported on", - "type": "string" - }, - "reportingEndpointPort": { - "description": "IP port for the reporting entity, as used for the flow being reported on", - "type": "number" - }, - "sac": { - "description": "service area code", - "type": "string" - }, - "samplingAlgorithm": { - "description": "Integer identifier for the sampling algorithm or rule being applied in calculating the flow metrics if metrics are calculated based on a sample of packets, or 0 if no sampling is applied", - "type": "number" - }, - "tac": { - "description": "transport area code", - "type": "string" - }, - "tunnelId": { - "description": "tunnel identifier", - "type": "string" - }, - "vlanId": { - "description": "VLAN identifier used by this flow", - "type": "string" - } - }, - "required": [ "flowDirection", "gtpPerFlowMetrics", "ipProtocolType", - "ipVersion", "otherEndpointIpAddress", "otherEndpointPort", - "reportingEndpointIpAddr", "reportingEndpointPort" ] - }, - "otherFields": { - "description": "additional fields not reported elsewhere", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "requestError": { - "description": "standard request error data structure", - "type": "object", - "properties": { - "messageId": { - "description": "Unique message identifier of the format ‘ABCnnnn’ where ‘ABC’ is either ‘SVC’ for Service Exceptions or ‘POL’ for Policy Exception", - "type": "string" - }, - "text": { - "description": "Message text, with replacement variables marked with %n, where n is an index into the list of elements, starting at 1", - "type": "string" - }, - "url": { - "description": "Hyperlink to a detailed error resource e.g., an HTML page for browser user agents", - "type": "string" - }, - "variables": { - "description": "List of zero or more strings that represent the contents of the variables used by the message text", - "type": "string" - } - }, - "required": [ "messageId", "text" ] - }, - "serviceEventsFields": { - "description": "service events fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional service event fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "codecSelected": { - "$ref": "#/definitions/codecSelected" - }, - "codecSelectedTranscoding": { - "$ref": "#/definitions/codecSelectedTranscoding" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "endOfCallVqmSummaries": { - "$ref": "#/definitions/endOfCallVqmSummaries" - }, - "eventInstanceIdentifier": { - "$ref": "#/definitions/eventInstanceIdentifier" - }, - "marker": { - "$ref": "#/definitions/marker" - }, - "midCallRtcp": { - "$ref": "#/definitions/midCallRtcp" - }, - "serviceEventsFieldsVersion": { - "description": "version of the serviceEventsFields block", - "type": "number" - } - }, - "required": [ "eventInstanceIdentifier" ] - }, - "signalingFields": { - "description": "signaling fields", - "type": "object", - "properties": { - "compressedSip": { - "description": "the full SIP request/response including headers and bodies", - "type": "string" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "eventInstanceIdentifier": { - "$ref": "#/definitions/eventInstanceIdentifier" - }, - "localIpAddress": { - "description": "IP address on VNF", - "type": "string" - }, - "localPort": { - "description": "port on VNF", - "type": "string" - }, - "remoteIpAddress": { - "description": "IP address of peer endpoint", - "type": "string" - }, - "remotePort": { - "description": "port of peer endpoint", - "type": "string" - }, - "signalingFieldsVersion": { - "description": "version of the signalingFields block", - "type": "number" - }, - "summarySip": { - "description": "the SIP Method or Response (‘INVITE’, ‘200 OK’, ‘BYE’, etc)", - "type": "string" - } - }, - "required": [ "eventInstanceIdentifier" ] - }, - "stateChangeFields": { - "description": "stateChange fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional stateChange fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "newState": { - "description": "new state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "oldState": { - "description": "previous state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "stateChangeFieldsVersion": { - "description": "version of the stateChangeFields block", - "type": "number" - }, - "stateInterface": { - "description": "card or port name of the entity that changed state", - "type": "string" - } - }, - "required": [ "newState", "oldState", "stateInterface" ] - }, - "suppressedNvPairs": { - "description": "List of specific NvPairsNames to suppress within a given Name-Value Field for event Throttling", - "type": "object", - "properties": { - "nvPairFieldName": { - "description": "Name of the field within which are the nvpair names to suppress", - "type": "string" - }, - "suppressedNvPairNames": { - "description": "Array of nvpair names to suppress within the nvpairFieldName", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ "nvPairFieldName", "suppressedNvPairNames" ] - }, - "syslogFields": { - "description": "sysLog fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional syslog fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "eventSourceHost": { - "description": "hostname of the device", - "type": "string" - }, - "eventSourceType": { - "description": "type of event source; examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "syslogFacility": { - "description": "numeric code from 0 to 23 for facility--see table in documentation", - "type": "number" - }, - "syslogFieldsVersion": { - "description": "version of the syslogFields block", - "type": "number" - }, - "syslogMsg": { - "description": "syslog message", - "type": "string" - }, - "syslogProc": { - "description": "identifies the application that originated the message", - "type": "string" - }, - "syslogProcId": { - "description": "a change in the value of this field indicates a discontinuity in syslog reporting", - "type": "number" - }, - "syslogSData": { - "description": "syslog structured data consisting of a structured data Id followed by a set of key value pairs", - "type": "string" - }, - "syslogTag": { - "description": "msgId indicating the type of message such as TCPOUT or TCPIN; NILVALUE should be used when no other value can be provided", - "type": "string" - }, - "syslogVer": { - "description": "IANA assigned version of the syslog protocol specification - typically 1", - "type": "number" - } - }, - "required": [ "eventSourceType", "syslogMsg", "syslogTag" ] - }, - "thresholdCrossingAlertFields": { - "description": "fields specific to threshold crossing alert events", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional threshold crossing alert fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "additionalParameters": { - "description": "performance counters", - "type": "array", - "items": { - "$ref": "#/definitions/counter" - } - }, - "alertAction": { - "description": "Event action", - "type": "string", - "enum": [ - "CLEAR", - "CONT", - "SET" - ] - }, - "alertDescription": { - "description": "Unique short alert description such as IF-SHUB-ERRDROP", - "type": "string" - }, - "alertType": { - "description": "Event type", - "type": "string", - "enum": [ - "CARD-ANOMALY", - "ELEMENT-ANOMALY", - "INTERFACE-ANOMALY", - "SERVICE-ANOMALY" - ] - }, - "alertValue": { - "description": "Calculated API value (if applicable)", - "type": "string" - }, - "associatedAlertIdList": { - "description": "List of eventIds associated with the event being reported", - "type": "array", - "items": { "type": "string" } - }, - "collectionTimestamp": { - "description": "Time when the performance collector picked up the data; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "dataCollector": { - "description": "Specific performance collector instance used", - "type": "string" - }, - "elementType": { - "description": "type of network element - internal ATT field", - "type": "string" - }, - "eventSeverity": { - "description": "event severity or priority", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventStartTimestamp": { - "description": "Time closest to when the measurement was made; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "interfaceName": { - "description": "Physical or logical port or card (if applicable)", - "type": "string" - }, - "networkService": { - "description": "network name - internal ATT field", - "type": "string" - }, - "possibleRootCause": { - "description": "Reserved for future use", - "type": "string" - }, - "thresholdCrossingFieldsVersion": { - "description": "version of the thresholdCrossingAlertFields block", - "type": "number" - } - }, - "required": [ - "additionalParameters", - "alertAction", - "alertDescription", - "alertType", - "collectionTimestamp", - "eventSeverity", - "eventStartTimestamp" - ] - }, - "vNicUsage": { - "description": "usage of identified virtual network interface card", - "type": "object", - "properties": { - "broadcastPacketsIn": { "type": "number" }, - "broadcastPacketsOut": { "type": "number" }, - "bytesIn": { "type": "number" }, - "bytesOut": { "type": "number" }, - "multicastPacketsIn": { "type": "number" }, - "multicastPacketsOut": { "type": "number" }, - "packetsIn": { "type": "number" }, - "packetsOut": { "type": "number" }, - "unicastPacketsIn": { "type": "number" }, - "unicastPacketsOut": { "type": "number" }, - "vNicIdentifier": { "type": "string" } - }, - "required": [ "bytesIn", "bytesOut", "packetsIn", "packetsOut", "vNicIdentifier"] - } - }, - "title": "Event Listener", - "type": "object", - "properties": { - "event": {"$ref": "#/definitions/event"} - }, - "required": ["event"] -} \ No newline at end of file diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.wk b/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.wk deleted file mode 100644 index cb2311b5..00000000 --- a/vnfs/VES5.0/collector/docs/att_interface_definition/event_format_updated.json.wk +++ /dev/null @@ -1,1617 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - - "definitions": { - "attCopyrightNotice": { - "description": "Copyright (c) <2016>, AT&T Intellectual Property. All other rights reserved", - "type": "object", - "properties": { - "useAndRedistribution": { - "description": "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:", - "type": "string" - }, - "condition1": { - "description": "Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.", - "type": "string" - }, - "condition2": { - "description": "Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.", - "type": "string" - }, - "condition3": { - "description": "All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the AT&T.", - "type": "string" - }, - "condition4": { - "description": "Neither the name of AT&T nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.", - "type": "string" - }, - "disclaimerLine1": { - "description": "THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS", - "type": "string" - }, - "disclaimerLine2": { - "description": "FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES", - "type": "string" - }, - "disclaimerLine3": { - "description": "(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,", - "type": "string" - }, - "disclaimerLine4": { - "description": "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.", - "type": "string" - } - } - }, - "codecsInUse": { - "description": "number of times an identified codec was used over the measurementInterval", - "type": "object", - "properties": { - "codecIdentifier": { "type": "string" }, - "numberInUse": { "type": "number" } - }, - "required": [ "codecIdentifier", "numberInUse" ] - }, - "codecSelected": { - "description": "codec selected for the call - 'PCMA', 'G729A', ...", - "type": "object", - "properties": { - "codec": { "type": "string" } - } - }, - "codecSelectedTranscoding": { - "description": "codecs selected for the call, when transcoding is occurring", - "type": "object", - "properties": { - "calleeSideCodec": { "type": "string" }, - "callerSideCodec": { "type": "string" } - } - }, - "command": { - "description": "command from an event collector toward an event source", - "type": "object", - "properties": { - "commandType": { - "type": "string", - "enum": [ - "heartbeatIntervalChange", - "measurementIntervalChange", - "provideThrottlingState", - "throttlingSpecification" - ] - }, - "eventDomainThrottleSpecification": { "$ref": "#/definitions/eventDomainThrottleSpecification" }, - "heartbeatInterval": { "type": "integer" }, - "measurementInterval": { "type": "number" } - }, - "required": [ "commandType" ] - }, - "commandList": { - "description": "array of commands from an event collector toward an event source", - "type": "array", - "items": { - "$ref": "#/definitions/commandListEntry" - }, - "minItems": 0 - }, - "commandListEntry": { - "description": "reference to a command object", - "type": "object", - "properties": { - "command": {"$ref": "#/definitions/command"} - }, - "required": [ "command" ] - }, - "commonEventHeader": { - "description": "fields common to all events", - "type": "object", - "properties": { - "domain": { - "description": "the eventing domain associated with the event", - "type": "string", - "enum": [ - "fault", - "heartbeat", - "measurementsForVfScaling", - "mobileFlow", - "other", - "serviceEvents", - "signaling", - "stateChange", - "syslog", - "thresholdCrossingAlert" - ] - }, - "eventId": { - "description": "event key that is unique to the event source", - "type": "string" - }, - "eventType": { - "description": "unique event topic name", - "type": "string" - }, - "functionalRole": { - "description": "function of the event source e.g., eNodeB, MME, PCRF", - "type": "string" - }, - "lastEpochMicrosec": { - "description": "the latest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "priority": { - "description": "processing priority", - "type": "string", - "enum": [ - "High", - "Medium", - "Normal", - "Low" - ] - }, - "reportingEntityId": { - "description": "UUID identifying the entity reporting the event, for example an OAM VM", - "type": "string" - }, - "reportingEntityName": { - "description": "name of the entity reporting the event, for example, an OAM VM", - "type": "string" - }, - "sequence": { - "description": "ordering of events communicated by an event source instance or 0 if not needed", - "type": "integer" - }, - "sourceId": { - "description": "UUID identifying the entity experiencing the event issue", - "type": "string" - }, - "sourceName": { - "description": "name of the entity experiencing the event issue", - "type": "string" - }, - "startEpochMicrosec": { - "description": "the earliest unix time aka epoch time associated with the event from any component--as microseconds elapsed since 1 Jan 1970 not including leap seconds", - "type": "number" - }, - "version": { - "description": "version of the event header", - "type": "number" - } - }, - "required": [ "domain", "eventId", "functionalRole", "lastEpochMicrosec", - "priority", "reportingEntityName", "sequence", - "sourceName", "startEpochMicrosec" ] - }, - "counter": { - "description": "performance counter", - "type": "object", - "properties": { - "criticality": { "type": "string", "enum": [ "CRIT", "MAJ" ] }, - "name": { "type": "string" }, - "thresholdCrossed": { "type": "string" }, - "value": { "type": "string"} - }, - "required": [ "criticality", "name", "thresholdCrossed", "value" ] - }, - "cpuUsage": { - "description": "usage of an identified CPU", - "type": "object", - "properties": { - "cpuIdentifier": { - "description": "cpu identifer", - "type": "string" - }, - "cpuIdle": { - "description": "percentage of CPU time spent in the idle task", - "type": "number" - }, - "cpuUsageInterrupt": { - "description": "percentage of time spent servicing interrupts", - "type": "number" - }, - "cpuUsageNice": { - "description": "percentage of time spent running user space processes that have been niced", - "type": "number" - }, - "cpuUsageSoftIrq": { - "description": "percentage of time spent handling soft irq interrupts", - "type": "number" - }, - "cpuUsageSteal": { - "description": "percentage of time spent in involuntary wait which is neither user, system or idle time and is effectively time that went missing", - "type": "number" - }, - "cpuUsageSystem": { - "description": "percentage of time spent on system tasks running the kernel", - "type": "number" - }, - "cpuUsageUser": { - "description": "percentage of time spent running un-niced user space processes", - "type": "number" - }, - "cpuWait": { - "description": "percentage of CPU time spent waiting for I/O operations to complete", - "type": "number" - }, - "percentUsage": { - "description": "aggregate cpu usage of the virtual machine on which the VNFC reporting the event is running", - "type": "number" - } - }, - "required": [ "cpuIdentifier", "percentUsage" ] - }, - "diskUsage": { - "description": "usage of an identified disk", - "type": "object", - "properties": { - "diskIdentifier": { - "description": "disk identifier", - "type": "string" - }, - "diskIoTimeAvg": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the average over the measurement interval", - "type": "number" - }, - "diskIoTimeLast": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskIoTimeMax": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskIoTimeMin": { - "description": "milliseconds spent doing input/output operations over 1 sec; treat this metric as a device load percentage where 1000ms matches 100% load; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadAvg": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadLast": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadMax": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedReadMin": { - "description": "number of logical read operations that were merged into physical read operations, e.g., two logical reads were served by one physical disk access; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteAvg": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteLast": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the last value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteMax": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the maximum value measurement within the measurement interval", - "type": "number" - }, - "diskMergedWriteMin": { - "description": "number of logical write operations that were merged into physical write operations, e.g., two logical writes were served by one physical disk access; provide the minimum value measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadAvg": { - "description": "number of octets per second read from a disk or partition; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadLast": { - "description": "number of octets per second read from a disk or partition; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadMax": { - "description": "number of octets per second read from a disk or partition; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsReadMin": { - "description": "number of octets per second read from a disk or partition; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteAvg": { - "description": "number of octets per second written to a disk or partition; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteLast": { - "description": "number of octets per second written to a disk or partition; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteMax": { - "description": "number of octets per second written to a disk or partition; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOctetsWriteMin": { - "description": "number of octets per second written to a disk or partition; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadAvg": { - "description": "number of read operations per second issued to the disk; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadLast": { - "description": "number of read operations per second issued to the disk; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadMax": { - "description": "number of read operations per second issued to the disk; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOpsReadMin": { - "description": "number of read operations per second issued to the disk; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteAvg": { - "description": "number of write operations per second issued to the disk; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteLast": { - "description": "number of write operations per second issued to the disk; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteMax": { - "description": "number of write operations per second issued to the disk; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskOpsWriteMin": { - "description": "number of write operations per second issued to the disk; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsAvg": { - "description": "queue size of pending I/O operations per second; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsLast": { - "description": "queue size of pending I/O operations per second; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsMax": { - "description": "queue size of pending I/O operations per second; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskPendingOperationsMin": { - "description": "queue size of pending I/O operations per second; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadAvg": { - "description": "milliseconds a read operation took to complete; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadLast": { - "description": "milliseconds a read operation took to complete; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadMax": { - "description": "milliseconds a read operation took to complete; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskTimeReadMin": { - "description": "milliseconds a read operation took to complete; provide the minimum measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteAvg": { - "description": "milliseconds a write operation took to complete; provide the average measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteLast": { - "description": "milliseconds a write operation took to complete; provide the last measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteMax": { - "description": "milliseconds a write operation took to complete; provide the maximum measurement within the measurement interval", - "type": "number" - }, - "diskTimeWriteMin": { - "description": "milliseconds a write operation took to complete; provide the minimum measurement within the measurement interval", - "type": "number" - } - }, - "required": [ "diskIdentifier" ] - }, - "endOfCallVqmSummaries": { - "description": "", - "type": "object", - "properties": { - "adjacencyName": { - "description": " adjacency name", - "type": "string" - }, - "endpointDescription": { - "description": "‘Caller’, ‘Callee’", - "type": "string", - "enum": ["Caller", "Callee"] - }, - "endpointJitter": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpOctetsSent": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "endpointRtpPacketsSent": { - "description": "", - "type": "number" - }, - "localJitter": { - "description": "", - "type": "number" - }, - "localRtpOctetsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpOctetsReceived": { - "description": "", - "type": "number" - }, - "localRtpOctetsSent": { - "description": "", - "type": "number" - }, - "localRtpPacketsDiscarded": { - "description": "", - "type": "number" - }, - "localRtpPacketsReceived": { - "description": "", - "type": "number" - }, - "localRtpPacketsSent": { - "description": "", - "type": "number" - }, - "mosCqe": { - "description": "1-5 1dp", - "type": "number" - }, - "packetsLost": { - "description": "", - "type": "number" - }, - "packetLossPercent": { - "description" : "Calculated percentage packet loss based on Endpoint RTP packets lost (as reported in RTCP) and Local RTP packets sent. Direction is based on Endpoint description (Caller, Callee). Decimal (2 dp)", - "type": "number" - }, - "rFactor": { - "description": "0-100", - "type": "number" - }, - "roundTripDelay": { - "description": "millisecs", - "type": "number" - } - } - }, - "errors": { - "description": "receive and transmit errors for the measurements domain", - "type": "object", - "properties": { - "receiveDiscards": { "type": "number" }, - "receiveErrors": { "type": "number" }, - "transmitDiscards": { "type": "number" }, - "transmitErrors": { "type": "number" } - }, - "required": [ "receiveDiscards", "receiveErrors", "transmitDiscards", "transmitErrors" ] - }, - "event": { - "description": "generic event format", - "type": "object", - "properties": { - "commonEventHeader": { "$ref": "#/definitions/commonEventHeader" }, - "faultFields": { "$ref": "#/definitions/faultFields" }, - "measurementsForVfScalingFields": { "$ref": "#/definitions/measurementsForVfScalingFields" }, - "heartbeatFields": { "$ref": "#/definitions/heartbeatFields" }, - "mobileFlowFields": { "$ref": "#/definitions/mobileFlowFields" }, - "otherFields": { "$ref": "#/definitions/otherFields" }, - "serviceEventsFields": { "$ref": "#/definitions/serviceEventsFields" }, - "signalingFields": { "$ref": "#/definitions/signalingFields" }, - "stateChangeFields": { "$ref": "#/definitions/stateChangeFields" }, - "syslogFields": { "$ref": "#/definitions/syslogFields" }, - "thresholdCrossingAlertFields": { "$ref": "#/definitions/thresholdCrossingAlertFields" } - }, - "required": [ "commonEventHeader" ] - }, - "eventDomainThrottleSpecification": { - "description": "specification of what information to suppress within an event domain", - "type": "object", - "properties": { - "eventDomain": { - "description": "Event domain enum from the commonEventHeader domain field", - "type": "string" - }, - "suppressedFieldNames": { - "description": "List of optional field names in the event block that should not be sent to the Event Listener", - "type": "array", - "items": { - "type": "string" - } - }, - "suppressedNvPairsList": { - "description": "Optional list of specific NvPairsNames to suppress within a given Name-Value Field", - "type": "array", - "items": { - "$ref": "#/definitions/suppressedNvPairs" - } - } - }, - "required": [ "eventDomain" ] - }, - "eventDomainThrottleSpecificationList": { - "description": "array of eventDomainThrottleSpecifications", - "type": "array", - "items": { - "$ref": "#/definitions/eventDomainThrottleSpecification" - }, - "minItems": 0 - }, - "eventInstanceIdentifier": { - "description": "event instance identifiers", - "type": "object", - "properties": { - "eventId": { - "description": "event identifier", - "type": "string" - }, - "vendorId": { - "description": "vendor identifier", - "type": "string" - }, - "productId": { - "description": "product identifier", - "type": "string" - }, - "subsystemId": { - "description": "subsystem identifier", - "type": "string" - }, - "eventFriendlyName": { - "description": "event instance friendly name", - "type": "string" - } - }, - "required": [ "eventId", "vendorId" ] - }, - "eventList": { - "description": "array of events", - "type": "array", - "items": { - "$ref": "#/definitions/event" - } - }, - "eventThrottlingState": { - "description": "reports the throttling in force at the event source", - "type": "object", - "properties": { - "eventThrottlingMode": { - "description": "Mode the event manager is in", - "type": "string", - "enum": [ - "normal", - "throttled" - ] - }, - "eventDomainThrottleSpecificationList": { "$ref": "#/definitions/eventDomainThrottleSpecificationList" } - }, - "required": [ "eventThrottlingMode" ] - }, - "faultFields": { - "description": "fields specific to fault events", - "type": "object", - "properties": { - "alarmAdditionalInformation": { - "description": "additional alarm information", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "alarmCondition": { - "description": "alarm condition reported by the device", - "type": "string" - }, - "alarmInterfaceA": { - "description": "card, port, channel or interface name of the device generating the alarm", - "type": "string" - }, - "eventSeverity": { - "description": "event severity or priority", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventSourceType": { - "description": "type of event source; examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "faultFieldsVersion": { - "description": "version of the faultFields block", - "type": "number" - }, - "specificProblem": { - "description": "short description of the alarm or problem", - "type": "string" - }, - "vfStatus": { - "description": "virtual function status enumeration", - "type": "string", - "enum": [ - "Active", - "Idle", - "Preparing to terminate", - "Ready to terminate", - "Requesting termination" - ] - } - }, - "required": [ "alarmCondition", "eventSeverity", - "eventSourceType", "specificProblem", "vfStatus" ] - }, - "featuresInUse": { - "description": "number of times an identified feature was used over the measurementInterval", - "type": "object", - "properties": { - "featureIdentifier": { "type": "string" }, - "featureUtilization": { "type": "number" } - }, - "required": [ "featureIdentifier", "featureUtilization" ] - }, - "field": { - "description": "name value pair", - "type": "object", - "properties": { - "name": { "type": "string" }, - "value": { "type": "string" } - }, - "required": [ "name", "value" ] - }, - "filesystemUsage": { - "description": "disk usage of an identified virtual machine in gigabytes and/or gigabytes per second", - "type": "object", - "properties": { - "blockConfigured": { "type": "number" }, - "blockIops": { "type": "number" }, - "blockUsed": { "type": "number" }, - "ephemeralConfigured": { "type": "number" }, - "ephemeralIops": { "type": "number" }, - "ephemeralUsed": { "type": "number" }, - "filesystemName": { "type": "string" } - }, - "required": [ "blockConfigured", "blockIops", "blockUsed", "ephemeralConfigured", - "ephemeralIops", "ephemeralUsed", "filesystemName" ] - }, - "gtpPerFlowMetrics": { - "description": "Mobility GTP Protocol per flow metrics", - "type": "object", - "properties": { - "avgBitErrorRate": { - "description": "average bit error rate", - "type": "number" - }, - "avgPacketDelayVariation": { - "description": "Average packet delay variation or jitter in milliseconds for received packets: Average difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "avgPacketLatency": { - "description": "average delivery latency", - "type": "number" - }, - "avgReceiveThroughput": { - "description": "average receive throughput", - "type": "number" - }, - "avgTransmitThroughput": { - "description": "average transmit throughput", - "type": "number" - }, - "durConnectionFailedStatus": { - "description": "duration of failed state in milliseconds, computed as the cumulative time between a failed echo request and the next following successful error request, over this reporting interval", - "type": "number" - }, - "durTunnelFailedStatus": { - "description": "Duration of errored state, computed as the cumulative time between a tunnel error indicator and the next following non-errored indicator, over this reporting interval", - "type": "number" - }, - "flowActivatedBy": { - "description": "Endpoint activating the flow", - "type": "string" - }, - "flowActivationEpoch": { - "description": "Time the connection is activated in the flow (connection) being reported on, or transmission time of the first packet if activation time is not available", - "type": "number" - }, - "flowActivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowActivationTime": { - "description": "time the connection is activated in the flow being reported on, or transmission time of the first packet if activation time is not available; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "flowDeactivatedBy": { - "description": "Endpoint deactivating the flow", - "type": "string" - }, - "flowDeactivationEpoch": { - "description": "Time for the start of the flow connection, in integer UTC epoch time aka UNIX time", - "type": "number" - }, - "flowDeactivationMicrosec": { - "description": "Integer microseconds for the start of the flow connection", - "type": "number" - }, - "flowDeactivationTime": { - "description": "Transmission time of the first packet in the flow connection being reported on; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "flowStatus": { - "description": "connection status at reporting time as a working / inactive / failed indicator value", - "type": "string" - }, - "gtpConnectionStatus": { - "description": "Current connection state at reporting time", - "type": "string" - }, - "gtpTunnelStatus": { - "description": "Current tunnel state at reporting time", - "type": "string" - }, - "ipTosCountList": { - "description": "array of key: value pairs where the keys are drawn from the IP Type-of-Service identifiers which range from '0' to '255', and the values are the count of packets that had those ToS identifiers in the flow", - "type": "array", - "uniqueItems": true, - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ], - "additionalItems": false - } - }, - "ipTosList": { - "description": "Array of unique IP Type-of-Service values observed in the flow where values range from '0' to '255'", - "type": "array", - "items": { - "type": "string" - } - }, - "largePacketRtt": { - "description": "large packet round trip time", - "type": "number" - }, - "largePacketThreshold": { - "description": "large packet threshold being applied", - "type": "number" - }, - "maxPacketDelayVariation": { - "description": "Maximum packet delay variation or jitter in milliseconds for received packets: Maximum of the difference between the packet timestamp and time received for all pairs of consecutive packets", - "type": "number" - }, - "maxReceiveBitRate": { - "description": "maximum receive bit rate", - "type": "number" - }, - "maxTransmitBitRate": { - "description": "maximum transmit bit rate", - "type": "number" - }, - "mobileQciCosCountList": { - "description": "array of key: value pairs where the keys are drawn from LTE QCI or UMTS class of service strings, and the values are the count of packets that had those strings in the flow", - "type": "array", - "uniqueItems": true, - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ], - "additionalItems": false - } - }, - "mobileQciCosList": { - "description": "Array of unique LTE QCI or UMTS class-of-service values observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "numActivationFailures": { - "description": "Number of failed activation requests, as observed by the reporting node", - "type": "number" - }, - "numBitErrors": { - "description": "number of errored bits", - "type": "number" - }, - "numBytesReceived": { - "description": "number of bytes received, including retransmissions", - "type": "number" - }, - "numBytesTransmitted": { - "description": "number of bytes transmitted, including retransmissions", - "type": "number" - }, - "numDroppedPackets": { - "description": "number of received packets dropped due to errors per virtual interface", - "type": "number" - }, - "numGtpEchoFailures": { - "description": "Number of Echo request path failures where failed paths are defined in 3GPP TS 29.281 sec 7.2.1 and 3GPP TS 29.060 sec. 11.2", - "type": "number" - }, - "numGtpTunnelErrors": { - "description": "Number of tunnel error indications where errors are defined in 3GPP TS 29.281 sec 7.3.1 and 3GPP TS 29.060 sec. 11.1", - "type": "number" - }, - "numHttpErrors": { - "description": "Http error count", - "type": "number" - }, - "numL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, including retransmissions", - "type": "number" - }, - "numL7BytesTransmitted": { - "description": "number of tunneled layer 7 bytes transmitted, excluding retransmissions", - "type": "number" - }, - "numLostPackets": { - "description": "number of lost packets", - "type": "number" - }, - "numOutOfOrderPackets": { - "description": "number of out-of-order packets", - "type": "number" - }, - "numPacketErrors": { - "description": "number of errored packets", - "type": "number" - }, - "numPacketsReceivedExclRetrans": { - "description": "number of packets received, excluding retransmission", - "type": "number" - }, - "numPacketsReceivedInclRetrans": { - "description": "number of packets received, including retransmission", - "type": "number" - }, - "numPacketsTransmittedInclRetrans": { - "description": "number of packets transmitted, including retransmissions", - "type": "number" - }, - "numRetries": { - "description": "number of packet retries", - "type": "number" - }, - "numTimeouts": { - "description": "number of packet timeouts", - "type": "number" - }, - "numTunneledL7BytesReceived": { - "description": "number of tunneled layer 7 bytes received, excluding retransmissions", - "type": "number" - }, - "roundTripTime": { - "description": "round trip time", - "type": "number" - }, - "tcpFlagCountList": { - "description": "array of key: value pairs where the keys are drawn from TCP Flags and the values are the count of packets that had that TCP Flag in the flow", - "type": "array", - "uniqueItems": true, - "items": { - "type": "array", - "items": [ - { "type": "string" }, - { "type": "number" } - ], - "additionalItems": false - } - }, - "tcpFlagList": { - "description": "Array of unique TCP Flags observed in the flow", - "type": "array", - "items": { - "type": "string" - } - }, - "timeToFirstByte": { - "description": "Time in milliseconds between the connection activation and first byte received", - "type": "number" - } - }, - "required": [ "avgBitErrorRate", "avgPacketDelayVariation", "avgPacketLatency", - "avgReceiveThroughput", "avgTransmitThroughput", - "flowActivationEpoch", "flowActivationMicrosec", - "flowDeactivationEpoch", "flowDeactivationMicrosec", - "flowDeactivationTime", "flowStatus", - "maxPacketDelayVariation", "numActivationFailures", - "numBitErrors", "numBytesReceived", "numBytesTransmitted", - "numDroppedPackets", "numL7BytesReceived", - "numL7BytesTransmitted", "numLostPackets", - "numOutOfOrderPackets", "numPacketErrors", - "numPacketsReceivedExclRetrans", - "numPacketsReceivedInclRetrans", - "numPacketsTransmittedInclRetrans", - "numRetries", "numTimeouts", "numTunneledL7BytesReceived", - "roundTripTime", "timeToFirstByte" - ] - }, - "heartbeatFields": { - "description": "optional field block for fields specific to heartbeat events", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional heartbeat fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "heartbeatFieldsVersion": { - "description": "version of the heartbeatFields block", - "type": "number" - }, - "heartbeatInterval": { - "description": "current heartbeat interval in seconds", - "type": "integer" - } - }, - "required": [ "heartbeatFieldsVersion", "heartbeatInterval" ] - }, - "latencyBucketMeasure": { - "description": "number of counts falling within a defined latency bucket", - "type": "object", - "properties": { - "countsInTheBucket": { "type": "number" }, - "highEndOfLatencyBucket": { "type": "number" }, - "lowEndOfLatencyBucket": { "type": "number" } - }, - "required": [ "countsInTheBucket" ] - }, - "marker": { - "description": "", - "type": "object", - "properties": { - "phoneNumber": { "type": "string" } - } - }, - "measurementGroup": { - "description": "measurement group", - "type": "object", - "properties": { - "name": { "type": "string" }, - "measurements": { - "description": "array of name value pair measurements", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - } - }, - "required": [ "name", "measurements" ] - }, - "measurementsForVfScalingFields": { - "description": "measurementsForVfScaling fields", - "type": "object", - "properties": { - "additionalMeasurements": { - "description": "additional measurement fields", - "type": "array", - "items": { - "$ref": "#/definitions/measurementGroup" - } - }, - "aggregateCpuUsage": { - "description": "aggregate CPU usage of the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "codecUsageArray": { - "description": "array of codecs in use", - "type": "array", - "items": { - "$ref": "#/definitions/codecsInUse" - } - }, - "concurrentSessions": { - "description": "peak concurrent sessions for the VM or VNF over the measurementInterval", - "type": "number" - }, - "configuredEntities": { - "description": "over the measurementInterval, peak total number of: users, subscribers, devices, adjacencies, etc., for the VM, or subscribers, devices, etc., for the VNF", - "type": "number" - }, - "cpuUsageArray": { - "description": "usage of an array of CPUs", - "type": "array", - "items": { - "$ref": "#/definitions/cpuUsage" - } - }, - "errors": { "$ref": "#/definitions/errors" }, - "featureUsageArray": { - "description": "array of features in use", - "type": "array", - "items": { - "$ref": "#/definitions/featuresInUse" - } - }, - "filesystemUsageArray": { - "description": "filesystem usage of the VM on which the VNFC reporting the event is running", - "type": "array", - "items": { - "$ref": "#/definitions/filesystemUsage" - } - }, - "latencyDistribution": { - "description": "array of integers representing counts of requests whose latency in milliseconds falls within per-VNF configured ranges", - "type": "array", - "items": { - "$ref": "#/definitions/latencyBucketMeasure" - } - }, - "meanRequestLatency": { - "description": "mean seconds required to respond to each request for the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "measurementInterval": { - "description": "interval over which measurements are being reported in seconds", - "type": "number" - }, - "measurementsForVfScalingVersion": { - "description": "version of the measurementsForVfScaling block", - "type": "number" - }, - "memoryConfigured": { - "description": "memory configured in the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "memoryUsed": { - "description": "memory usage of the VM on which the VNFC reporting the event is running", - "type": "number" - }, - "numberOfMediaPortsInUse": { - "description": "number of media ports in use", - "type": "number" - }, - "requestRate": { - "description": "peak rate of service requests per second to the VNF over the measurementInterval", - "type": "number" - }, - "vnfcScalingMetric": { - "description": "represents busy-ness of the VNF from 0 to 100 as reported by the VNFC", - "type": "number" - }, - "vNicUsageArray": { - "description": "usage of an array of virtual network interface cards", - "type": "array", - "items": { - "$ref": "#/definitions/vNicUsage" - } - } - }, - "required": [ "measurementInterval" ] - }, - "midCallRtcp": { - "description": "RTCP packet received ", - "type": "object", - "properties": { - "rtcpData": { - "description": "Base64 encoding of the binary RTCP data (excluding Eth/IP/UDP headers) Base64 encoded array of bytes", - "type": "string" - } - } - }, - "mobileFlowFields": { - "description": "mobileFlow fields", - "type": "object", - "properties": { - "applicationType": { - "description": "Application type inferred", - "type": "string" - }, - "appProtocolType": { - "description": "application protocol", - "type": "string" - }, - "appProtocolVersion": { - "description": "application protocol version", - "type": "string" - }, - "cid": { - "description": "cell id", - "type": "string" - }, - "connectionType": { - "description": "Abbreviation referencing a 3GPP reference point e.g., S1-U, S11, etc", - "type": "string" - }, - "ecgi": { - "description": "Evolved Cell Global Id", - "type": "string" - }, - "flowDirection": { - "description": "Flow direction, indicating if the reporting node is the source of the flow or destination for the flow", - "type": "string" - }, - "gtpPerFlowMetrics": { "$ref": "#/definitions/gtpPerFlowMetrics" }, - "gtpProtocolType": { - "description": "GTP protocol", - "type": "string" - }, - "gtpVersion": { - "description": "GTP protocol version", - "type": "string" - }, - "httpHeader": { - "description": "HTTP request header, if the flow connects to a node referenced by HTTP", - "type": "string" - }, - "imei": { - "description": "IMEI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "imsi": { - "description": "IMSI for the subscriber UE used in this flow, if the flow connects to a mobile device", - "type": "string" - }, - "ipProtocolType": { - "description": "IP protocol type e.g., TCP, UDP, RTP...", - "type": "string" - }, - "ipVersion": { - "description": "IP protocol version e.g., IPv4, IPv6", - "type": "string" - }, - "lac": { - "description": "location area code", - "type": "string" - }, - "mcc": { - "description": "mobile country code", - "type": "string" - }, - "mnc": { - "description": "mobile network code", - "type": "string" - }, - "mobileFlowFieldsVersion": { - "description": "version of the mobileFlowFields block", - "type": "number" - }, - "msisdn": { - "description": "MSISDN for the subscriber UE used in this flow, as an integer, if the flow connects to a mobile device", - "type": "string" - }, - "otherEndpointIpAddress": { - "description": "IP address for the other endpoint, as used for the flow being reported on", - "type": "string" - }, - "otherEndpointPort": { - "description": "IP Port for the reporting entity, as used for the flow being reported on", - "type": "number" - }, - "otherFunctionalRole": { - "description": "Functional role of the other endpoint for the flow being reported on e.g., MME, S-GW, P-GW, PCRF...", - "type": "string" - }, - "rac": { - "description": "routing area code", - "type": "string" - }, - "radioAccessTechnology": { - "description": "Radio Access Technology e.g., 2G, 3G, LTE", - "type": "string" - }, - "reportingEndpointIpAddr": { - "description": "IP address for the reporting entity, as used for the flow being reported on", - "type": "string" - }, - "reportingEndpointPort": { - "description": "IP port for the reporting entity, as used for the flow being reported on", - "type": "number" - }, - "sac": { - "description": "service area code", - "type": "string" - }, - "samplingAlgorithm": { - "description": "Integer identifier for the sampling algorithm or rule being applied in calculating the flow metrics if metrics are calculated based on a sample of packets, or 0 if no sampling is applied", - "type": "number" - }, - "tac": { - "description": "transport area code", - "type": "string" - }, - "tunnelId": { - "description": "tunnel identifier", - "type": "string" - }, - "vlanId": { - "description": "VLAN identifier used by this flow", - "type": "string" - } - }, - "required": [ "flowDirection", "gtpPerFlowMetrics", "ipProtocolType", - "ipVersion", "otherEndpointIpAddress", "otherEndpointPort", - "reportingEndpointIpAddr", "reportingEndpointPort" ] - }, - "otherFields": { - "description": "additional fields not reported elsewhere", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "requestError": { - "description": "standard request error data structure", - "type": "object", - "properties": { - "messageId": { - "description": "Unique message identifier of the format ‘ABCnnnn’ where ‘ABC’ is either ‘SVC’ for Service Exceptions or ‘POL’ for Policy Exception", - "type": "string" - }, - "text": { - "description": "Message text, with replacement variables marked with %n, where n is an index into the list of elements, starting at 1", - "type": "string" - }, - "url": { - "description": "Hyperlink to a detailed error resource e.g., an HTML page for browser user agents", - "type": "string" - }, - "variables": { - "description": "List of zero or more strings that represent the contents of the variables used by the message text", - "type": "string" - } - }, - "required": [ "messageId", "text" ] - }, - "serviceEventsFields": { - "description": "service events fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional service event fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "codecSelected": { - "$ref": "#/definitions/codecSelected" - }, - "codecSelectedTranscoding": { - "$ref": "#/definitions/codecSelectedTranscoding" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "endOfCallVqmSummaries": { - "$ref": "#/definitions/endOfCallVqmSummaries" - }, - "eventInstanceIdentifier": { - "$ref": "#/definitions/eventInstanceIdentifier" - }, - "marker": { - "$ref": "#/definitions/marker" - }, - "midCallRtcp": { - "$ref": "#/definitions/midCallRtcp" - }, - "serviceEventsFieldsVersion": { - "description": "version of the serviceEventsFields block", - "type": "number" - } - }, - "required": [ "eventInstanceIdentifier" ] - }, - "signalingFields": { - "description": "signaling fields", - "type": "object", - "properties": { - "compressedSip": { - "description": "the full SIP request/response including headers and bodies", - "type": "string" - }, - "correlator": { - "description": "this is the same for all events on this call", - "type": "string" - }, - "eventInstanceIdentifier": { - "$ref": "#/definitions/eventInstanceIdentifier" - }, - "localIpAddress": { - "description": "IP address on VNF", - "type": "string" - }, - "localPort": { - "description": "port on VNF", - "type": "string" - }, - "remoteIpAddress": { - "description": "IP address of peer endpoint", - "type": "string" - }, - "remotePort": { - "description": "port of peer endpoint", - "type": "string" - }, - "signalingFieldsVersion": { - "description": "version of the signalingFields block", - "type": "number" - }, - "summarySip": { - "description": "the SIP Method or Response (‘INVITE’, ‘200 OK’, ‘BYE’, etc)", - "type": "string" - } - }, - "required": [ "eventInstanceIdentifier" ] - }, - "stateChangeFields": { - "description": "stateChange fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional stateChange fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "newState": { - "description": "new state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "oldState": { - "description": "previous state of the entity", - "type": "string", - "enum": [ - "inService", - "maintenance", - "outOfService" - ] - }, - "stateChangeFieldsVersion": { - "description": "version of the stateChangeFields block", - "type": "number" - }, - "stateInterface": { - "description": "card or port name of the entity that changed state", - "type": "string" - } - }, - "required": [ "newState", "oldState", "stateInterface" ] - }, - "suppressedNvPairs": { - "description": "List of specific NvPairsNames to suppress within a given Name-Value Field for event Throttling", - "type": "object", - "properties": { - "nvPairFieldName": { - "description": "Name of the field within which are the nvpair names to suppress", - "type": "string" - }, - "suppressedNvPairNames": { - "description": "Array of nvpair names to suppress within the nvpairFieldName", - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ "nvPairFieldName", "suppressedNvPairNames" ] - }, - "syslogFields": { - "description": "sysLog fields", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional syslog fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "eventSourceHost": { - "description": "hostname of the device", - "type": "string" - }, - "eventSourceType": { - "description": "type of event source; examples: other, router, switch, host, card, port, slotThreshold, portThreshold, virtualMachine, virtualNetworkFunction", - "type": "string" - }, - "syslogFacility": { - "description": "numeric code from 0 to 23 for facility--see table in documentation", - "type": "number" - }, - "syslogFieldsVersion": { - "description": "version of the syslogFields block", - "type": "number" - }, - "syslogMsg": { - "description": "syslog message", - "type": "string" - }, - "syslogProc": { - "description": "identifies the application that originated the message", - "type": "string" - }, - "syslogProcId": { - "description": "a change in the value of this field indicates a discontinuity in syslog reporting", - "type": "number" - }, - "syslogSData": { - "description": "syslog structured data consisting of a structured data Id followed by a set of key value pairs", - "type": "string" - }, - "syslogTag": { - "description": "msgId indicating the type of message such as TCPOUT or TCPIN; NILVALUE should be used when no other value can be provided", - "type": "string" - }, - "syslogVer": { - "description": "IANA assigned version of the syslog protocol specification - typically 1", - "type": "number" - } - }, - "required": [ "eventSourceType", "syslogMsg", "syslogTag" ] - }, - "thresholdCrossingAlertFields": { - "description": "fields specific to threshold crossing alert events", - "type": "object", - "properties": { - "additionalFields": { - "description": "additional threshold crossing alert fields if needed", - "type": "array", - "items": { - "$ref": "#/definitions/field" - } - }, - "additionalParameters": { - "description": "performance counters", - "type": "array", - "items": { - "$ref": "#/definitions/counter" - } - }, - "alertAction": { - "description": "Event action", - "type": "string", - "enum": [ - "CLEAR", - "CONT", - "SET" - ] - }, - "alertDescription": { - "description": "Unique short alert description such as IF-SHUB-ERRDROP", - "type": "string" - }, - "alertType": { - "description": "Event type", - "type": "string", - "enum": [ - "CARD-ANOMALY", - "ELEMENT-ANOMALY", - "INTERFACE-ANOMALY", - "SERVICE-ANOMALY" - ] - }, - "alertValue": { - "description": "Calculated API value (if applicable)", - "type": "string" - }, - "associatedAlertIdList": { - "description": "List of eventIds associated with the event being reported", - "type": "array", - "items": { "type": "string" } - }, - "collectionTimestamp": { - "description": "Time when the performance collector picked up the data; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "dataCollector": { - "description": "Specific performance collector instance used", - "type": "string" - }, - "elementType": { - "description": "type of network element - internal ATT field", - "type": "string" - }, - "eventSeverity": { - "description": "event severity or priority", - "type": "string", - "enum": [ - "CRITICAL", - "MAJOR", - "MINOR", - "WARNING", - "NORMAL" - ] - }, - "eventStartTimestamp": { - "description": "Time closest to when the measurement was made; with RFC 2822 compliant format: ‘Sat, 13 Mar 2010 11:29:05 -0800’", - "type": "string" - }, - "interfaceName": { - "description": "Physical or logical port or card (if applicable)", - "type": "string" - }, - "networkService": { - "description": "network name - internal ATT field", - "type": "string" - }, - "possibleRootCause": { - "description": "Reserved for future use", - "type": "string" - }, - "thresholdCrossingFieldsVersion": { - "description": "version of the thresholdCrossingAlertFields block", - "type": "number" - } - }, - "required": [ - "additionalParameters", - "alertAction", - "alertDescription", - "alertType", - "collectionTimestamp", - "eventSeverity", - "eventStartTimestamp" - ] - }, - "vNicUsage": { - "description": "usage of identified virtual network interface card", - "type": "object", - "properties": { - "broadcastPacketsIn": { "type": "number" }, - "broadcastPacketsOut": { "type": "number" }, - "bytesIn": { "type": "number" }, - "bytesOut": { "type": "number" }, - "multicastPacketsIn": { "type": "number" }, - "multicastPacketsOut": { "type": "number" }, - "packetsIn": { "type": "number" }, - "packetsOut": { "type": "number" }, - "unicastPacketsIn": { "type": "number" }, - "unicastPacketsOut": { "type": "number" }, - "vNicIdentifier": { "type": "string" } - }, - "required": [ "bytesIn", "bytesOut", "packetsIn", "packetsOut", "vNicIdentifier"] - } - }, - "title": "Event Listener", - "type": "object", - "properties": { - "event": {"$ref": "#/definitions/event"} - }, - "required": ["event"] -} diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/test_control_schema.json b/vnfs/VES5.0/collector/docs/att_interface_definition/test_control_schema.json deleted file mode 100644 index ced01535..00000000 --- a/vnfs/VES5.0/collector/docs/att_interface_definition/test_control_schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Test Collector Test Control API - commands", - "type": "object", - "properties": { - "commandList": { - "description": "array of commands from an event collector toward an event source", - "type": "array", - "items": { - "$ref": "#/definitions/commandListEntry" - }, - "minItems": 0} - }, - "required": ["commandList"] -} diff --git a/vnfs/VES5.0/collector/docs/att_interface_definition/throttle_schema.json b/vnfs/VES5.0/collector/docs/att_interface_definition/throttle_schema.json deleted file mode 100644 index 7763a344..00000000 --- a/vnfs/VES5.0/collector/docs/att_interface_definition/throttle_schema.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Vendor Event Listener API - eventThrottlingState", - "type": "object", - "properties": { - "eventThrottlingState": {"$ref": "#/definitions/eventThrottlingState"} - }, - "required": ["eventThrottlingState"] -} diff --git a/vnfs/VES5.0/collector/docs/test_collector_user_guide/images/architecture.png b/vnfs/VES5.0/collector/docs/test_collector_user_guide/images/architecture.png deleted file mode 100644 index 98adb318..00000000 Binary files a/vnfs/VES5.0/collector/docs/test_collector_user_guide/images/architecture.png and /dev/null differ diff --git a/vnfs/VES5.0/collector/docs/test_collector_user_guide/test_collector_user_guide.md b/vnfs/VES5.0/collector/docs/test_collector_user_guide/test_collector_user_guide.md deleted file mode 100644 index 5e12a904..00000000 --- a/vnfs/VES5.0/collector/docs/test_collector_user_guide/test_collector_user_guide.md +++ /dev/null @@ -1,275 +0,0 @@ -# AT&T Vendor Event Listener Service - Test Collector - User Guide - -Introduction -============ - -Background ----------- - -This document describes how to use the Test Collector application to simulate -the service API described in "AT&T Service Specification, Service: -Vendor Event Listener Revision 2.11, 16-Sep-2016". - -Purpose -------- - -This User Guide is intended to enable the reader to understand how - the Test Collector can be used to verify the operation of applications - supporting the Vendor Event Listener API. - - -Realization -=========== - -The realization of the Test Collector is a Python script which acts as a -server for the Vendor Event Listener API. It uses [jsonschema](https://pypi.python.org/pypi/jsonschema) -in order to validate the received JSON events against AT&T's published -schema for the API. - -The overall system architecture is shown in Figure 1 and comprises - three key deliverables: - -* The web-application itself. - -* A Backend service. - -* A validating test collector application. - -The Test Collector is described in more detail in the - following sections. The other two components are described in a separate - documents: - -* Reference VNF User Guide - -* Reference VNF Application Note - -Figure 1: Realization Architecture - -![Realization Architecture](images/architecture.png) - -Note that items shown in green in the diagram are existing AT&T - systems and do not form part of the delivery. - -Validating Collector --------------------- - -The validating collector provides a basic test capability for - the Reference VNF. The application implements the Vendor Event - Listener API providing: - -- Logging of new requests. - -- Validating requests against the published schema. - -- Validating the credentials provided in the request. - -- Responding with a 202 Accepted for valid requests. - -- Test Control endpoint allowing a test harness or user to set a pending - commandList, to be sent in response to the next event received. - -- Responding with a 202 Accepted plus a pending commandList. - -- Responding with a 401 Unauthorized error response-code and a JSON - exception response for failed authentication. - -It is intended to be used in environments where the "real" AT&T - Vendor Event Listener service is not available in order to test the - Reference VNF or, indeed, any other software which needs to send - events to a server. - -Using the Validating Collector -============================== - -The test collector can be run manually, either on a Linux platform - or a Windows PC. It is invoked with a number of command-line - arguments: - -``` - C:> python collector.py --config - --section
- --verbose -``` - -Where: - - - **config** defines the path to the config file to be used. - - - **section** defines the section in the config file to be used. - - - **verbose** controls the level of logging to be generated. - -Wherever you chose to run the Test Collector, note that the - configuration of the backend service running on the VM generating - the events has to match so that the events generated by the backend - service are sent to the correct location and the Test Collector is - listening on the correct ports and URLs. The relevant section of the - Test Collector config file is: - -``` - #------------------------------------------------------------------------------ - # Details of the Vendor Event Listener REST service. - # - # REST resources are defined with respect to a ServerRoot: - # ServerRoot = https://{Domain}:{Port}/{optionalRoutingPath} - # - # REST resources are of the form: - # * {ServerRoot}/eventListener/v{apiVersion} - # * {ServerRoot}/eventListener/v{apiVersion}/{topicName} - # * {ServerRoot}/eventListener/v{apiVersion}/eventBatch - # * {ServerRoot}/eventListener/v{apiVersion}/clientThrottlingState - # - # The "vel\_topic\_name" parameter is used as the "topicName" element in the path - # and may be empty. - # - # Note that the path, if present, should have no leading "/" but should have a - # training "/". - #------------------------------------------------------------------------------ - vel_domain = 127.0.0.1 - vel_port = 30000 - vel_path = vendor_event_listener/ - vel_username = Alice - vel_password = This isn't very secure! - vel_topic_name = example_vnf -``` -The equivalent section of the backend service's configuration has to - match, or the equivalent parameters injected in the VM by the - OpenStack metadata service have to match. - -When events are sent from the web application, the results of the - validation will be displayed on stdout and be written to the log - file specified in the configuration file. - -For example: A Fault event failing to validate: - -``` - ; - - [29/Feb/2016 10:58:28] "POST - /vendor_event_listener/eventListener/v1/example_vnf HTTP/1.1" 204 0 - Event is not valid against schema! 'eventSeverity' is a required - property - Failed validating 'required' in - schema['properties']['event']['properties']['faultFields']: - {'description': 'fields specific to fault events', - 'properties': {'alarmAdditionalInformation': {'description':'additional alarm information', - 'items': {'$ref': '#/definitions/field'}, - 'type': 'array'}, - 'alarmCondition': {'description': 'alarm condition reportedby the device', - 'type': 'string'}, - 'alarmInterfaceA': {'description': 'card, port, channel or interface name of the device generating the alarm', - 'type': 'string'}, - 'eventSeverity': {'description': 'event severity or priority', - 'enum': ['CRITICAL', - 'MAJOR', - 'MINOR', - 'WARNING', - 'NORMAL'], - 'type': 'string'}, - 'eventSourceType': {'description': 'type of event source', - 'enum': ['other(0)', - 'router(1)', - 'switch(2)', - 'host(3)', - 'card(4)', - 'port(5)', - 'slotThreshold(6)', - 'portThreshold(7)', - 'virtualMachine(8)'], - 'type': 'string'}, - 'faultFieldsVersion': {'description': 'version of the faultFields block', - 'type': 'number'}, - 'specificProblem': {'description': 'short description of the alarm or problem', - 'type': 'string'}, - 'vfStatus': {'description': 'virtual function status enumeration', - 'enum': ['Active', - 'Idle', - 'Preparing to terminate', - 'Ready to terminate', - 'Requesting termination'], - 'type': 'string'}}, - 'required': ['alarmCondition', - 'eventSeverity', - 'eventSourceType', - 'specificProblem', - 'vfStatus'], - 'type': 'object'} - On instance['event']['faultFields']: - {'alarmAdditionalInformation': [{'name': 'extra information', - 'value': '2'}, - {'name': 'more information', - 'value': '1'}], - 'alarmCondition': 'alarm condition 1', - 'eventSourceType': 'virtualMachine(8)', - 'faultFieldsVersion': 1, - 'specificProblem': 'problem 1', - 'vfStatus': 'Active'} - Bad JSON body decoded: - { - "event": { - "commonEventHeader": { - "domain": "fault", - "eventId": "6", - "eventType": "event type 1", - "functionalRole": "unknown", - "lastEpochMicrosec": 1456743510381000.0, - "priority": "Normal", - "reportingEntityId": "Not in OpenStack", - "reportingEntityName": "Not in OpenStack Environment", - "sequence": 0, - "sourceId": "Not in OpenStack", - "sourceName": "Not in OpenStack Environment", - "startEpochMicrosec": 1456743510381000.0, - "version": 1 - }, - "faultFields": { - "alarmAdditionalInformation": [ - { - "name": "extra information", - "value": "2" - }, - { - "name": "more information", - "value": "1" - } - ], - "alarmCondition": "alarm condition 1", - "eventSourceType": "virtualMachine(8)", - "faultFieldsVersion": 1, - "specificProblem": "problem 1", - "vfStatus": "Active" - } - } - } -``` - -Test Control Interface ----------------------- - -The test collector will accept any valid commandList on the Test Control interface, -and will store it until the next event is received at the collector. -At this point, it will send it to the event sender, and discard the pending commandList. - -For example, a POST of the following JSON will result in a measurement interval change -command being sent to the sender of the next event. - -``` -{ - "commandList": [ - { - "command": { - "commandType": "measurementIntervalChange", - "measurementInterval": 60 - } - } - ] -} -``` - -A python script "test_control.py" provides an example of commandList injection, -and contains various functions to generate example command lists. - -The test control script can be run manually, either on a Linux platform or a Windows PC. -It is invoked with optional command-line arguments for the fqdn and port number of the -test collector to be controlled: -``` - C:> python test_control.py --fqdn 127.0.0.1 --port 30000 -``` diff --git a/vnfs/VES5.0/collector/scripts/linux/go-collector.sh b/vnfs/VES5.0/collector/scripts/linux/go-collector.sh deleted file mode 100644 index d3119bc9..00000000 --- a/vnfs/VES5.0/collector/scripts/linux/go-collector.sh +++ /dev/null @@ -1,6 +0,0 @@ -# Run the validating test collector. - -python ../../code/collector/collector.py \ - --config ../../config/collector.conf \ - --section windows \ - --verbose diff --git a/vnfs/VES5.0/collector/scripts/windows/go-collector.bat b/vnfs/VES5.0/collector/scripts/windows/go-collector.bat deleted file mode 100644 index 4dbf9d91..00000000 --- a/vnfs/VES5.0/collector/scripts/windows/go-collector.bat +++ /dev/null @@ -1,7 +0,0 @@ -@echo off -REM Run the validating test collector. - -python ..\..\code\collector\collector.py ^ - --config ..\..\config\collector.conf ^ - --section windows ^ - --verbose diff --git a/vnfs/VES5.0/config/collector.conf b/vnfs/VES5.0/config/collector.conf deleted file mode 100644 index 3a77b47f..00000000 --- a/vnfs/VES5.0/config/collector.conf +++ /dev/null @@ -1,83 +0,0 @@ -#------------------------------------------------------------------------------ -# This is a config file for the collector test harness. -# -# On the target platform is is expected to be located in: -# -# /etc/opt/att/collector.conf -# -# However, the location can be overridden by setting the --config -# argument to the collector code. -#------------------------------------------------------------------------------ - -#------------------------------------------------------------------------------ -# The default section to be used. Alternative configuration sections can be -# provided by using the --section command-line parameter. -#------------------------------------------------------------------------------ -[default] -log_file = /var/log/att/collector.log -schema_file = ../../docs/att_interface_definition/event_format_updated.json -base_schema_file = ../../docs/att_interface_definition/base_schema.json -throttle_schema_file = ../../docs/att_interface_definition/throttle_schema.json -test_control_schema_file = ../../docs/att_interface_definition/test_control_schema.json - -#------------------------------------------------------------------------------ -# Details of the Vendor Event Listener REST service. -# -# REST resources are defined with respect to a ServerRoot: -# ServerRoot = https://{Domain}:{Port}/{optionalRoutingPath} -# -# REST resources are of the form: -# * {ServerRoot}/eventListener/v{apiVersion} -# * {ServerRoot}/eventListener/v{apiVersion}/{topicName} -# * {ServerRoot}/eventListener/v{apiVersion}/eventBatch -# * {ServerRoot}/eventListener/v{apiVersion}/clientThrottlingState -# -# The "vel_topic_name" parameter is used as the "topicName" element in the path -# and may be empty. -# -# Note that the path, if present, should have no leading "/" but should have a -# training "/". -#------------------------------------------------------------------------------ -vel_domain = 127.0.0.1 -vel_port = 30000 -vel_path = vendor_event_listener/ -vel_username = -vel_password = -vel_topic_name = example_vnf - -#------------------------------------------------------------------------------ -# Settings to be used when running in a windows test environment rather than -# the target environment. -#------------------------------------------------------------------------------ -[windows] -log_file = ../../logs/collector.log -schema_file = ../../docs/att_interface_definition/event_format_updated.json -base_schema_file = -throttle_schema_file = ../../docs/att_interface_definition/throttle_schema.json -test_control_schema_file = ../../docs/att_interface_definition/test_control_schema.json - -#------------------------------------------------------------------------------ -# Details of the Vendor Event Listener REST service. -# -# REST resources are defined with respect to a ServerRoot: -# ServerRoot = https://{Domain}:{Port}/{optionalRoutingPath} -# -# REST resources are of the form: -# * {ServerRoot}/eventListener/v{apiVersion} -# * {ServerRoot}/eventListener/v{apiVersion}/{topicName} -# * {ServerRoot}/eventListener/v{apiVersion}/eventBatch -# * {ServerRoot}/eventListener/v{apiVersion}/clientThrottlingState -# -# The "vel_topic_name" parameter is used as the "topicName" element in the path -# and may be empty. -# -# Note that the path, if present, should have no leading "/" but should have a -# training "/". -#------------------------------------------------------------------------------ -vel_domain = 127.0.0.1 -vel_port = 30000 -vel_path = -vel_username = -vel_password = -vel_topic_name = - diff --git a/vnfs/VES5.0/doxygen-1.8.12.linux.bin.tar.gz b/vnfs/VES5.0/doxygen-1.8.12.linux.bin.tar.gz deleted file mode 100644 index 8285f493..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12.linux.bin.tar.gz and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/.makeconfig b/vnfs/VES5.0/doxygen-1.8.12/.makeconfig deleted file mode 100644 index a7a4c63d..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/.makeconfig +++ /dev/null @@ -1,7 +0,0 @@ -RM = rm -f -VERSION = 1.8.12 -INSTALL = /usr/local -INSTTOOL = /usr/bin/install -DOXYDOCS = .. - -export TMAKEPATH diff --git a/vnfs/VES5.0/doxygen-1.8.12/INSTALL b/vnfs/VES5.0/doxygen-1.8.12/INSTALL deleted file mode 100644 index 169a3976..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/INSTALL +++ /dev/null @@ -1,7 +0,0 @@ -DOXYGEN Version 1.8.12 - -Please read the installation section of the manual -(http://www.doxygen.org/install.html) for instructions. - --------- -Dimitri van Heesch (05 September 2016) diff --git a/vnfs/VES5.0/doxygen-1.8.12/LICENSE b/vnfs/VES5.0/doxygen-1.8.12/LICENSE deleted file mode 100644 index 219ec285..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) yyyy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) yyyy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/vnfs/VES5.0/doxygen-1.8.12/Makefile b/vnfs/VES5.0/doxygen-1.8.12/Makefile deleted file mode 100644 index 4ee9b2a6..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# This file was generated from Makefile.in on Tue Apr 25 13:12:52 PDT 2017 -# - -RM = rm -f -VERSION = 1.8.12 -INSTALL = /usr/local -INSTTOOL = /usr/bin/install -DOXYDOCS = .. - -export TMAKEPATH -install: - $(INSTTOOL) -d $(INSTALL)/bin - $(INSTTOOL) -d $(INSTALL)/doc/doxygen - $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin - $(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin - #$(INSTTOOL) -m 755 bin/doxywizard $(INSTALL)/bin - cp -r html $(INSTALL)/doc/doxygen - cp -r examples $(INSTALL)/doc/doxygen diff --git a/vnfs/VES5.0/doxygen-1.8.12/Makefile.in b/vnfs/VES5.0/doxygen-1.8.12/Makefile.in deleted file mode 100644 index 96ddbcf1..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/Makefile.in +++ /dev/null @@ -1,8 +0,0 @@ -install: - $(INSTTOOL) -d $(INSTALL)/bin - $(INSTTOOL) -d $(INSTALL)/doc/doxygen - $(INSTTOOL) -m 755 bin/doxygen $(INSTALL)/bin - $(INSTTOOL) -m 755 bin/doxytag $(INSTALL)/bin - #$(INSTTOOL) -m 755 bin/doxywizard $(INSTALL)/bin - cp -r html $(INSTALL)/doc/doxygen - cp -r examples $(INSTALL)/doc/doxygen diff --git a/vnfs/VES5.0/doxygen-1.8.12/README b/vnfs/VES5.0/doxygen-1.8.12/README deleted file mode 100644 index 79d7a939..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/README +++ /dev/null @@ -1,19 +0,0 @@ -DOXYGEN Version 1.8.12 - -The binaries are located in the bin directory. - -The manual for doxygen is included in HTML format in this package. -Other formats can be downloaded separately. - -The HTML version of the manual can be found in the html directory. -Please start reading at html/index.html. - -The examples that are included in the manual can be found in the examples -directory. - -The latest version of doxygen can be obtained at - http://www.stack.nl/~dimitri/doxygen - -Enjoy, - -Dimitri van Heesch (dimitri@stack.nl) (05 September 2016) diff --git a/vnfs/VES5.0/doxygen-1.8.12/VERSION b/vnfs/VES5.0/doxygen-1.8.12/VERSION deleted file mode 100644 index 7d2424c9..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.8.12 diff --git a/vnfs/VES5.0/doxygen-1.8.12/bin/doxygen b/vnfs/VES5.0/doxygen-1.8.12/bin/doxygen deleted file mode 100755 index 62052d64..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/bin/doxygen and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/bin/doxyindexer b/vnfs/VES5.0/doxygen-1.8.12/bin/doxyindexer deleted file mode 100755 index 808e677e..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/bin/doxyindexer and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/bin/doxysearch.cgi b/vnfs/VES5.0/doxygen-1.8.12/bin/doxysearch.cgi deleted file mode 100755 index ada327e0..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/bin/doxysearch.cgi and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/configure b/vnfs/VES5.0/doxygen-1.8.12/configure deleted file mode 100755 index 9d623b19..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/configure +++ /dev/null @@ -1,118 +0,0 @@ -#! /bin/sh -# -# $Id: configure,v 1.1 1999/07/19 17:00:15 root Exp $ -# -# Copyright (C) 1997-2000 by Dimitri van Heesch. -# -# Permission to use, copy, modify, and distribute this software and its -# documentation under the terms of the GNU General Public License is hereby -# granted. No representations are made about the suitability of this software -# for any purpose. It is provided "as is" without express or implied warranty. -# See the GNU General Public License for more details. -# -# Documents produced by Doxygen are derivative works derived from the -# input used in their production; they are not affected by this license. -# -# shell script to configure doxygen - -f_prefix=/usr/local -f_insttool=NO - -while test -n "$1"; do - case $1 in - --prefix) - shift; f_prefix=$1 - ;; - --install) - shift; f_insttool=$1 - ;; - -h | -help | --help) - f_help=y - ;; - *) - echo $1: unknown argument - f_help=y - f_error=y - ;; - esac - shift -done - -if test "$f_help" = y; then - cat </dev/null | grep utils`"; then - install_found=YES - install_prog="$j/$i" - break 2 - fi - fi - done - done - f_insttool="$install_prog" -fi - -if test "$f_insttool" = NO; then - if test "$install_found" = YES; then - echo "GNU version of install is required!" - else - echo "not found!"; - fi - echo - exit 2 -fi -echo "using $f_insttool"; - -# ---------------------------------------------------------- - - -cat > .makeconfig < $DST <> $DST - echo " Created $DST from $SRC..." -done diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/arch.html b/vnfs/VES5.0/doxygen-1.8.12/html/arch.html deleted file mode 100644 index 88bcf74e..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/arch.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -Doxygen: Doxygen's Internals - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Doxygen's Internals
-
-
-

Doxygen's internals

-

Note that this section is still under construction!

-

The following picture shows how source files are processed by doxygen.

-
-archoverview.gif -
-Data flow overview
-

The following sections explain the steps above in more detail.

-

Config parser

-

The configuration file that controls the settings of a project is parsed and the settings are stored in the singleton class Config in src/config.h. The parser itself is written using flex and can be found in src/config.l. This parser is also used directly by doxywizard, so it is put in a separate library.

-

Each configuration option has one of 5 possible types: String, List, Enum, Int, or Bool. The values of these options are available through the global functions Config_getXXX(), where XXX is the type of the option. The argument of these function is a string naming the option as it appears in the configuration file. For instance: Config_getBool("GENERATE_TESTLIST") returns a reference to a boolean value that is TRUE if the test list was enabled in the config file.

-

The function readConfiguration() in src/doxygen.cpp reads the command line options and then calls the configuration parser.

-

C Preprocessor

-

The input files mentioned in the config file are (by default) fed to the C Preprocessor (after being piped through a user defined filter if available).

-

The way the preprocessor works differs somewhat from a standard C Preprocessor. By default it does not do macro expansion, although it can be configured to expand all macros. Typical usage is to only expand a user specified set of macros. This is to allow macro names to appear in the type of function parameters for instance.

-

Another difference is that the preprocessor parses, but not actually includes code when it encounters a #include (with the exception of #include found inside { ... } blocks). The reasons behind this deviation from the standard is to prevent feeding multiple definitions of the same functions/classes to doxygen's parser. If all source files would include a common header file for instance, the class and type definitions (and their documentation) would be present in each translation unit.

-

The preprocessor is written using flex and can be found in src/pre.l. For condition blocks (#if) evaluation of constant expressions is needed. For this a yacc based parser is used, which can be found in src/constexp.y and src/constexp.l.

-

The preprocessor is invoked for each file using the preprocessFile() function declared in src/pre.h, and will append the preprocessed result to a character buffer. The format of the character buffer is

-
0x06 file name 1 
-0x06 preprocessed contents of file 1
-...
-0x06 file name n
-0x06 preprocessed contents of file n
-

Language parser

-

The preprocessed input buffer is fed to the language parser, which is implemented as a big state machine using flex. It can be found in the file src/scanner.l. There is one parser for all languages (C/C++/Java/IDL). The state variables insideIDL and insideJava are uses at some places for language specific choices.

-

The task of the parser is to convert the input buffer into a tree of entries (basically an abstract syntax tree). An entry is defined in src/entry.h and is a blob of loosely structured information. The most important field is section which specifies the kind of information contained in the entry.

-

Possible improvements for future versions:

    -
  • Use one scanner/parser per language instead of one big scanner.
  • -
  • Move the first pass parsing of documentation blocks to a separate module.
  • -
  • Parse defines (these are currently gathered by the preprocessor, and ignored by the language parser).
  • -
-

Data organizer

-

This step consists of many smaller steps, that build dictionaries of the extracted classes, files, namespaces, variables, functions, packages, pages, and groups. Besides building dictionaries, during this step relations (such as inheritance relations), between the extracted entities are computed.

-

Each step has a function defined in src/doxygen.cpp, which operates on the tree of entries, built during language parsing. Look at the "Gathering information" part of parseInput() for details.

-

The result of this step is a number of dictionaries, which can be found in the doxygen "namespace" defined in src/doxygen.h. Most elements of these dictionaries are derived from the class Definition; The class MemberDef, for instance, holds all information for a member. An instance of such a class can be part of a file ( class FileDef ), a class ( class ClassDef ), a namespace ( class NamespaceDef ), a group ( class GroupDef ), or a Java package ( class PackageDef ).

-

Tag file parser

-

If tag files are specified in the configuration file, these are parsed by a SAX based XML parser, which can be found in src/tagreader.cpp. The result of parsing a tag file is the insertion of Entry objects in the entry tree. The field Entry::tagInfo is used to mark the entry as external, and holds information about the tag file.

-

Documentation parser

-

Special comment blocks are stored as strings in the entities that they document. There is a string for the brief description and a string for the detailed description. The documentation parser reads these strings and executes the commands it finds in it (this is the second pass in parsing the documentation). It writes the result directly to the output generators.

-

The parser is written in C++ and can be found in src/docparser.cpp. The tokens that are eaten by the parser come from src/doctokenizer.l. Code fragments found in the comment blocks are passed on to the source parser.

-

The main entry point for the documentation parser is validatingParseDoc() declared in src/docparser.h. For simple texts with special commands validatingParseText() is used.

-

Source parser

-

If source browsing is enabled or if code fragments are encountered in the documentation, the source parser is invoked.

-

The code parser tries to cross-reference to source code it parses with documented entities. It also does syntax highlighting of the sources. The output is directly written to the output generators.

-

The main entry point for the code parser is parseCode() declared in src/code.h.

-

Output generators

-

After data is gathered and cross-referenced, doxygen generates output in various formats. For this it uses the methods provided by the abstract class OutputGenerator. In order to generate output for multiple formats at once, the methods of OutputList are called instead. This class maintains a list of concrete output generators, where each method called is delegated to all generators in the list.

-

To allow small deviations in what is written to the output for each concrete output generator, it is possible to temporarily disable certain generators. The OutputList class contains various disable() and enable() methods for this. The methods OutputList::pushGeneratorState() and OutputList::popGeneratorState() are used to temporarily save the set of enabled/disabled output generators on a stack.

-

The XML is generated directly from the gathered data structures. In the future XML will be used as an intermediate language (IL). The output generators will then use this IL as a starting point to generate the specific output formats. The advantage of having an IL is that various independently developed tools written in various languages, could extract information from the XML output. Possible tools could be:

    -
  • an interactive source browser
  • -
  • a class diagram generator
  • -
  • computing code metrics.
  • -
-

Debugging

-

Since doxygen uses a lot of flex code it is important to understand how flex works (for this one should read the man page) and to understand what it is doing when flex is parsing some input. Fortunately, when flex is used with the -d option it outputs what rules matched. This makes it quite easy to follow what is going on for a particular input fragment.

-

To make it easier to toggle debug information for a given flex file I wrote the following perl script, which automatically adds or removes -d from the correct line in the Makefile:

-
#!/usr/bin/perl 
-
-$file = shift @ARGV;
-print "Toggle debugging mode for $file\n";
-if (!-e "../src/${file}.l")
-{
-  print STDERR "Error: file ../src/${file}.l does not exist!";
-  exit 1;
-}
-system("touch ../src/${file}.l");
-unless (rename "src/CMakeFiles/_doxygen.dir/build.make","src/CMakefiles/_doxygen.dir/build.make.old") {
-  print STDERR "Error: cannot rename src/CMakeFiles/_doxygen.dir/build.make!\n";
-  exit 1;
-}
-if (open(F,"<src/CMakeFiles/_doxygen.dir/build.make.old")) {
-  unless (open(G,">src/CMakefiles/_doxygen.dir/build.make")) {
-    print STDERR "Error: opening file build.make for writing\n";
-    exit 1;
-  }
-  print "Processing build.make...\n";
-  while (<F>) {
-    if ( s/flex \$\(LEX_FLAGS\) -P${file}YY/flex \$(LEX_FLAGS) -d -P${file}YY/ ) {
-      print "Enabling debug info for $file.l\n";
-    }
-    elsif ( s/flex \$\(LEX_FLAGS\) -d -P${file}YY/flex \$(LEX_FLAGS) -P${file}YY/ ) {
-      print "Disabling debug info for $file\n";
-    }
-    print G "$_";
-  }
-  close F;
-  unlink "src/CMakeFiles/_doxygen.dir/build.make.old";
-}
-else {
-  print STDERR "Warning file src/CMakeFiles/_doxygen.dir/build.make does not exist!\n"; 
-}
-
-# touch the file
-$now = time;
-utime $now, $now, $file
-

Another way to get rules matching / debugging information from the flex code is setting LEX_FLAGS with cmake.

-

Note that by running doxygen with -d lex you get information about which flex codefile is used.

-

-Return to the index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/archoverview.gif b/vnfs/VES5.0/doxygen-1.8.12/html/archoverview.gif deleted file mode 100644 index f404076d..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/archoverview.gif and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/autolink.html b/vnfs/VES5.0/doxygen-1.8.12/html/autolink.html deleted file mode 100644 index 101cb3f9..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/autolink.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -Doxygen: Automatic link generation - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Automatic link generation
-
-
- -

Most documentation systems have special `see also' sections where links to other pieces of documentation can be inserted. Although doxygen also has a command to start such a section (See section \sa), it does allow you to put these kind of links anywhere in the documentation. For $\mbox{\LaTeX}$ documentation a reference to the page number is written instead of a link. Furthermore, the index at the end of the document can be used to quickly find the documentation of a member, class, namespace or file. For man pages no reference information is generated.

-

The next sections show how to generate links to the various documented entities in a source file.

-

-Links to web pages and mail addresses

-

Doxygen will automatically replace any URLs and mail addresses found in the documentation by links (in HTML). To manually specify link text, use the HTML 'a' tag:

<a href="linkURL">link text</a> 

which will be automatically translated to other output formats by doxygen.

-

-Links to classes

-

All words in the documentation that correspond to a documented class and contain at least one non-lower case character will automatically be replaced by a link to the page containing the documentation of the class. If you want to prevent that a word that corresponds to a documented class is replaced by a link you should put a % in front of the word. To link to an all lower case symbol, use \ref.

-

-Links to files

-

All words that contain a dot (.) that is not the last character in the word are considered to be file names. If the word is indeed the name of a documented input file, a link will automatically be created to the documentation of that file.

-

-Links to functions

-

Links to functions are created if one of the following patterns is encountered:

    -
  1. -<functionName>"("<argument-list>")"
  2. -
  3. -<functionName>"()"
  4. -
  5. -"::"<functionName>
  6. -
  7. -(<className>"::")n<functionName>"("<argument-list>")"
  8. -
  9. -(<className>"::")n<functionName>"("<argument-list>")"<modifiers>
  10. -
  11. -(<className>"::")n<functionName>"()"
  12. -
  13. -(<className>"::")n<functionName>
  14. -
-

where n>0.

-
Note 1:
Function arguments should be specified with correct types, i.e. 'fun(const std::string&,bool)' or '()' to match any prototype.
-
Note 2:
Member function modifiers (like 'const' and 'volatile') are required to identify the target, i.e. 'func(int) const' and 'func(int)' target different member functions.
-
Note 3:
For JavaDoc compatibility a # may be used instead of a :: in the patterns above.
-
Note 4:
In the documentation of a class containing a member foo, a reference to a global variable is made using "::foo", whereas #foo will link to the member.
-

For non overloaded members the argument list may be omitted.

-

If a function is overloaded and no matching argument list is specified (i.e. pattern 2 or 6 is used), a link will be created to the documentation of one of the overloaded members.

-

For member functions the class scope (as used in patterns 4 to 7) may be omitted, if:

    -
  1. -The pattern points to a documented member that belongs to the same class as the documentation block that contains the pattern.
  2. -
  3. -The class that corresponds to the documentation blocks that contains the pattern has a base class that contains a documented member that matches the pattern.
  4. -
-

-Links to other members

-

All of these entities can be linked to in the same way as described in the previous section. For sake of clarity it is advised to only use patterns 3 and 7 in this case.

-
Example:
/*! \file autolink.cpp
Testing automatic link generation.
A link to a member of the Autolink_Test class: Autolink_Test::member,
More specific links to the each of the overloaded members:
Autolink_Test::member(int) and Autolink_Test#member(int,int)
A link to a protected member variable of Autolink_Test: Autolink_Test#var,
A link to the global enumeration type #GlobEnum.
A link to the define #ABS(x).
A link to the destructor of the Autolink_Test class: Autolink_Test::~Autolink_Test,
A link to the typedef ::B.
A link to the enumeration type Autolink_Test::EType
A link to some enumeration values Autolink_Test::Val1 and ::GVal2
*/
/*!
Since this documentation block belongs to the class Autolink_Test no link to
Autolink_Test is generated.
Two ways to link to a constructor are: #Autolink_Test and Autolink_Test().
Links to the destructor are: #~Autolink_Test and ~Autolink_Test().
A link to a member in this class: member().
More specific links to the each of the overloaded members:
member(int) and member(int,int).
A link to the variable #var.
A link to the global typedef ::B.
A link to the global enumeration type #GlobEnum.
A link to the define ABS(x).
A link to a variable \link #var using another text\endlink as a link.
A link to the enumeration type #EType.
A link to some enumeration values: \link Autolink_Test::Val1 Val1 \endlink and ::GVal1.
And last but not least a link to a file: autolink.cpp.
\sa Inside a see also section any word is checked, so EType,
Val1, GVal1, ~Autolink_Test and member will be replaced by links in HTML.
*/
class Autolink_Test
{
public:
Autolink_Test(); //!< constructor
~Autolink_Test(); //!< destructor
void member(int); /**< A member function. Details. */
void member(int,int); /**< An overloaded member function. Details */
/** An enum type. More details */
enum EType {
Val1, /**< enum value 1 */
Val2 /**< enum value 2 */
};
protected:
int var; /**< A member variable */
};
/*! details. */
Autolink_Test::Autolink_Test() { }
/*! details. */
Autolink_Test::~Autolink_Test() { }
/*! A global variable. */
int globVar;
/*! A global enum. */
enum GlobEnum {
GVal1, /*!< global enum value 1 */
GVal2 /*!< global enum value 2 */
};
/*!
* A macro definition.
*/
#define ABS(x) (((x)>0)?(x):-(x))
typedef Autolink_Test B;
/*! \fn typedef Autolink_Test B
* A type definition.
*/
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-

-typedefs

-

Typedefs that involve classes, structs and unions, like

typedef struct StructName TypeName
-

create an alias for StructName, so links will be generated to StructName, when either StructName itself or TypeName is encountered.

-
Example:
/*! \file restypedef.cpp
* An example of resolving typedefs.
*/
/*! \struct CoordStruct
* A coordinate pair.
*/
struct CoordStruct
{
/*! The x coordinate */
float x;
/*! The y coordinate */
float y;
};
/*! Creates a type name for CoordStruct */
typedef CoordStruct Coord;
/*!
* This function returns the addition of \a c1 and \a c2, i.e:
* (c1.x+c2.x,c1.y+c2.y)
*/
Coord add(Coord c1,Coord c2)
{
}
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-

-Go to the next section or return to the - index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/bc_s.png b/vnfs/VES5.0/doxygen-1.8.12/html/bc_s.png deleted file mode 100644 index fd162ea7..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/bc_s.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/bdwn.png b/vnfs/VES5.0/doxygen-1.8.12/html/bdwn.png deleted file mode 100644 index 7c943f01..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/bdwn.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/changelog.html b/vnfs/VES5.0/doxygen-1.8.12/html/changelog.html deleted file mode 100644 index dd80ba1b..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/changelog.html +++ /dev/null @@ -1,3242 +0,0 @@ - - - - - - - -Doxygen: Changelog - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Changelog
-
-
- -

-1.8 Series

-

-Release 1.8.12

-

-(release date 05-09-2016) - -

-
    -
  • Bug 306025 - Fix missing title in non-page docanchors from tag files [view] -
  • Bug 504305 - FILTER_PATTERNS won't take command with arguments [view] -
  • Bug 675165 - Uses <img> instead of <object> html tag for SVG images [view] -
  • Bug 700381 - error state 21 with fortran code (fixed format) [view] -
  • Bug 710611 - Missing Page References in the Index Chapters of the LaTex/PDF output [view] -
  • Bug 722654 - Inherited member of template class issues warning and is not documented [view] -
  • Bug 742452 - Fortran: attributes after a blank line are ignored / Bug 625602 - FORTRAN: comment in subroutine argument list [view] -
  • Bug 749924 - Doxygen handles comments in Objective-C code blocks incorrectly. [view] -
  • Bug 750930 - Representation of arrows [view] -
  • Bug 751416 - Markdown: > escaped within backticks [view] -
  • Bug 751984 - Use UTC timezone when displaying QDateTimes parsed from SOURCE_DATE_EPOCH [view] -
  • Bug 752712 - last entry missing in a @name group of typedefs [view] -
  • Bug 753608 - Link of typedef within namespace on group pages missing [view] -
  • Bug 757509 - __init__.py causes to ignore some inheritance [view] -
  • Bug 760086 - Figure title needs to be on separate line in order for it to work [view] -
  • Bug 760836 - Phantom variables/functions in XML, created from non-code files [view] -
  • Bug 760970 - CASE_SENSE_NAMES ignored [view] -
  • Bug 761007 - Spaces between the closing bracket of the typename and the opening bracket of the parameter list cause detection issues. [view] -
  • Bug 761139 - python unicode docstrings are ignored [view] -, [view] -
  • Bug 761471 - Do not allow ligatures in log output [view] -
  • Bug 762670 - References for one function can inherit References from subsequent non documented function [view] -
  • Bug 762934 - External search does not properly escape user supplied data, resulting in vulnerability [view] -
  • Bug 762982 - regression, Unescaped percent sign in doxygen output [view] -
  • Bug 763104 - hyperref link label drop underscores [view] -
  • Bug 763105 - Directory list is not generated in HTML output [view] -
  • Bug 763471 - imported section anchors are copied in project tagfile [view] -
  • Bug 763720 - Exclusion of a new line at the end of source code file causing nesting of HTML code for function documentation [view] -, [view] -
  • Bug 764359 - Recent File list allows only 2 entries [view] -, [view] -
  • Bug 764515 - doxygen crashes no resolved [view] -
  • Bug 764656 - generated xml has errors [view] -
  • Bug 764711 - quick link index in alphabetical class list in classes.html doesn't work [view] -
  • Bug 765001 - Bad character escaping scheme in HTML anchor generation. [view] -
  • Bug 765002 - `@addindex`entries fail to link to the exact location in Compiled HTML Help. [view] -
  • Bug 765070 - Java: final keyword on a parameter brakes docs inherinance [view] -
  • Bug 765692 - Using `@page` to add title to Markdown file generates surplus empty page. [view] -
  • Bug 766059 - DOT_PATH not expanded [view] -
  • Bug 766069 - Files with incorrect extensions (.doc) are picked up by doxygen [view] -
  • Bug 766464 - python: missing cross-links in sources (option SOURCE_BROWSER = YES) [view] -
  • Bug 766698 - VHDL: missing last sign in html documentation of constant declaration [view] -
  • Bug 766787 - HTML Tables with 10+ columns are broken for LaTeX based output [view] -
  • Bug 766809 - Enumerations heading present but none listed [view] -
  • Bug 767171 - ALIASES stop working after verbatim with formula and /** */ [view] -
  • Bug 768830 - Doxygen segfault (return code 134) when parsing a c++ enum class contained in a class [view] -
  • Bug 768954 - Segmentation fault when processing md containing only header [view] -
  • Bug 769018 - Invalid XHTML if the directives brief and exception are following immediately [view] -
  • Bug 769028 - Can't scroll using finger documentation in Chrome browser on Android OS [view] -
  • Bug 769736 - doxygen generates incorrect documentation for C enum in latex [view] -
  • Bug 770660 - Code snippet always shows line numbers from 1 [view] -
  • Bug 770747 - Broken links in HTML output with SHOW_FILES=NO [view] -
  • Add caption in verbatim blocks. [view] -
  • Add parameter in/out specifiers to output. [view] -
  • Add section title to output. [view] -
  • Added .codedocs file [view] -
  • Added an option to add "anonymous" headings to the table of contents (currently Markdown only). [view] -
  • Added generating template files and reading templates from disk if present [view] -
  • Added missing free [view] -
  • Added support for encoding tag to the template engine used for HTML help indices [view] -
  • Adding compilation options for flex/lex and bison/yacc [view] -
  • Adding partial htmlhelp support to template system [view] -
  • Adjusted Doxygen to doxygen in running text in the manual [view] -
  • Allow verbatim code block to be placed on the output. [view] -
  • Also map .f95, .f03 and .f08 file types to Fortran [view] -
  • Another possible fix [view] -
  • Applied responsive design to menu bar using smartmenus [view] -
  • Assertion failure generation documentation [view] -
  • Bug fix for rendering the VHDL Hierarchy (thanks to a patch by Martin Kreis) [view] -
  • Building doxyapp fails after update of config methodology to improve performance [view] -
  • Bump version for GIT repo [view] -
  • CMAKE: Fix building on Windows with VS 2015 [view] -
  • Changed configuration mechanism to directly access options in order to improve performance [view] -
  • Code with "extension" unparsed shows line numbers [view] -
  • Color code word OPERATOR and ASSIGNMENT as keyword in FORTRAN code [view] -
  • Color code word RESULT as keyword in FORTRAN code [view] -
  • Determination of end of parameter list [view] -
  • Disable selecting line number [view] -
  • Disabled debug prints [view] -
  • Documentation for extensions .f95, .f03 and .f08 [view] -
  • Doxygen fails to copy logo image to LaTex output dir [view] -
  • FORTRAN determination string in preprocessing [view] -
  • Feature: Translations for german language (changes since 1.8.4) [view] -
  • Fix STRIP_FROM_PATH when running from drive root [view] -
  • Fix Windows build instructions. [view] -
  • Fix documentation typos [view] -
  • Fix for HTML output when using server side search and the the new menu bar [view] -
  • Fix for changed references due to different removeRedudantWhiteSpace() implementation [view] -
  • Fix for empty file name [view] -
  • Fix for error in travis.yml [view] -
  • Fix issue escaping backslash inside markdown style code span [view] -
  • Fix linker flags for building with clang on Windows [view] -
  • Fix order of member initilaization [view] -
  • Fix return-type warnings with -DNDEBUG [view] -
  • Fix search box rendering in HTML when menu bar is disabled [view] -
  • Fix uppercase letters B-Z being unnecessarily escaped in index HTML anchors. [view] -
  • Fixed for index.hhp output when using template engine [view] -
  • Fixed issue escaping ndashes (\--) and mdashes (\---) [view] -
  • Fixed problem with -w command when no Doxyfile was present and specified [view] -
  • Fixed two regressions found during extensive testing [view] -
  • Fixed typos. [view] -
  • Fixed wrong <p> nesting issue for call/caller graphs [view] -
  • Fortran inline source code and crash on Linux [view] -
  • Improve output on mobile devices [view] -
  • Improved list of files in htmlhelp.hhp [view] -
  • Improved sorting performance for directories and files [view] -
  • Include command show line number (e.g. LaTeX) [view] -
  • Initialization of python variables and type determination [view] -
  • Introducing commands includedoc and snippetdoc [view] -
  • Latex page numbering [view] -
  • Minor build fixes [view] -
  • Minor correction for BUILD.txt [view] -
  • Minor performance improvement sorting directories [view] -
  • Minor update to the installation instructions [view] -
  • Missing semicolon in navtree.css [view] -
  • Modified (readability) layout for member title in HTML and LaTex [view] -
  • Optimized use of convertNameToFile to improve performance [view] -
  • PDF generation stops when image with caption is included in a table. [view] -, [view] -
  • Parse more than 1 size indiction in defaultHandleTitleAndSize [view] -
  • Problem jumping to line number in source code due to wrong hypertarget name [view] -
  • Python strip code comments [view] -
  • Reimplemented node renumbering for dot graph to improve performance [view] -
  • Remove unused variables [view] -, [view] -
  • Removed ambiguity in the XML schema definition [view] -
  • Revert #291 [view] -
  • Simplified code of fix for Bug 765001 [view] -
  • Sorting in latex index and missing \@ in index [view] -
  • Split apt-get install commands in travis config in an attempt to reduce timeouts [view] -
  • Style fixes and added numbering to overloaded members [view] -
  • Table of contents breaks when documentation spans multiple comment blocks with same @page [view] -
  • Unified display of enum values across output formats and languages [view] -
  • Unify handling of extra packages in formula.cpp and latexgen.cpp so formula.cpp handles package arguments correctly [view] -
  • Update LICENSE file to latest from FSF [view] -
  • Update copyright year in docs [view] -
  • Updated README.md to include code docs [view] -
  • Updated stylesheet for the manual to fix layout issue in the navigation tree [view] -
  • Warnings from CLANG compiler [view] -
  • fix ninja build error [view] -
  • fixed rtf subsection [view] -
  • mangen.h: remove italic in brief member descriptions [view] -
  • reimplemented removeRedundantWhiteSpace() to improve performance [view] -
  • sqlite3gen: defnname -> defname [view] -
  • sqlite3gen: export proper memberdef refid [view] -
  • sqlite3gen: insert xrefs using integer refids [view] -
  • sqlite3gen: stripFromPath on all calls to insertFile [view] -
  • sqlite3gen: stripWhitespace on bitfield's text [view] -
  • sqlite3gen: sync with xmlgen [view] -
  • sqlite3gen: use the refid stored in the refids table [view] -
-

-

-

-Release 1.8.11

-

-(release date 30-12-2015) - -

-
    -
  • Bug 149792 - Mainpage title has wrong style in RTF [view and [view]
  • -
  • Bug 333106 - $line param [view]
  • -
  • Bug 361814 - python: tuple assignment not recognized as variable initialization [view]
  • -
  • Bug 485701 - Fixes angle brackets (< and >) not escaped in HTML formula alt text [view]
  • -
  • Bug 578720 - [Python] Add pyw as a valid extension [view]
  • -
  • Bug 593642 - Python: STRIP_CODE_COMMENTS Doesn't work within the source code [view]
  • -
  • Bug 595186 - Python ignores \private tag [view]
  • -
  • Bug 606104 - Deprecated list: Wrong prefix '<globalScope>::' for global functions [view]
  • -
  • Bug 629249 - Incorrect "References" and "Referenced by" [view]
  • -
  • Bug 641036 - python script with #!/usr/bin/python are not documented correctly [view]
  • -
  • Bug 646002 - htmlonly content appears in generated XML output [view] and [view]
  • -
  • Bug 648865 - PYTHON: stops processing the file after encountering \"""" [view]
  • -
  • Bug 661814 - writeMemberNavIndex template calls static fixSpaces [view]
  • -
  • Bug 682373 - Math does not work in LaTeX with custom header and footer. [view]
  • -
  • Bug 731509 - Markdown backticks not processed within Markdown links. [view]
  • -
  • Bug 732356 - doxygen's \param command is confused by some python default values [view]
  • -
  • Bug 735152 - Python: Allow undocumented "cls" parameter for class methods [view]
  • -
  • Bug 742715 - Unnamed structs gives: QGDict::hashAsciiKey: Invalid null key [view]
  • -
  • Bug 744938 - PATCH: add option to build latex without timestamps [view]
  • -
  • Bug 745659 - The table in classes.html has no class attribute [view]
  • -
  • Bug 746162 - formulas creating invalid HTML code [view]
  • -
  • Bug 746361 - Doxygen thinks C++ class is Objective-C [view]
  • -
  • Bug 751300 - Doxygen don't support longer key in bibtex [view]
  • -
  • Bug 751321 - \cite still rejects valid BibTeX keys [view]
  • -
  • Bug 751755 - using plantuml cause a popup "openwith" windows when calling java.exe [view]
  • -
  • Bug 751984 - PATCH: Honour SOURCE_DATE_EPOCH environment variable for reproducible output [view]
  • -
  • Bug 752657 - XML not documenting a class in python [view]
  • -
  • Bug 752658 - XML empty <argsstring/> in python [view]
  • -
  • Bug 752712 - last entry missing in a @name group of typedefs [view]
  • -
  • Bug 752845 - Non-alphanumeric characters in Markdown links don't work properly [view]
  • -
  • Bug 753500 - $file when using @name is wrong [view]
  • -
  • Bug 753909 - Copy and paste of code fragment from CHM merges all pasted text into single line [view]
  • -
  • Bug 754130 - class="current" not applied to <li> for module tab within 'group__*.html' module html files [view]
  • -
  • Bug 754184 - \bug paragraph doesn't end with a new sectioning command [view]
  • -
  • Bug 754606 - Double anchors when using groups [view]
  • -
  • Bug 755080 - xrefitem link to list incorrect when using SHORT_NAMES [view]
  • -
  • Bug 755293 - Tree view pane overlaps with content tabs [view]
  • -
  • Bug 755783 - RTF output has incomplete "References" and "Referenced by" sections [view]
  • -
  • Bug 755786 - fatal: Cannot open 'graph_legend': No such file or directory [view]
  • -
  • Bug 755939 - Warning refers to incorrect line for undocumented member function (C++) [view]
  • -
  • Bug 756241 - Race condition in parallel DOT runs [view]
  • -
  • Bug 756604 - Unable to prevent a numbered list [view] and [view]
  • -
  • Bug 756724 - Inline markdown links don't support reference targets that contain ) [view]
  • -
  • Bug 757300 - Failed to document nested classes with "reference to array" parameters [view]
  • -
  • Bug 757621 - unclosed tag, c# generics method with where [view]
  • -
  • Bug 757812 - Doxygen do not support comparison angle bracket in template [view]
  • -
  • Bug 758132 - Brief description of non documented functions [view] and [view]
  • -
  • Bug 758495 - Bug in VHDL parser + other fixes [view]
  • -
  • Bug 758900 - C++ templated member-function appears both as public and private [view]
  • -
  • Bug 759177 - Markdown fenced code blocks not parsed properly in comment [view]
  • -
  • Bug 759247 - C++11 unified initializer for array with templates treated as function [view]
  • -
  • Bug 759281 - Doxygen parser confused by C++11 attributes [view]
  • -
  • Bug 759381 - unable to @ref or @link C++ templated operator overloads [view]
  • -
  • Bug 759622 - problems with charset using plantuml [view]
  • -
  • Actually using value of GROUP_NESTED_COMPOUNDS option [view]
  • -
  • Add RPM build for Red Hat [view]
  • -
  • Add WARN_AS_ERROR option to stop execution at first warning (equivalent of compilers' -Werror option) [view]
  • -
  • Add examples to LaTeX / PDF doxygen manual [view and [view]
  • -
  • Add mathjax support to template & context. [view]
  • -
  • Add support for "value" attribute in FORTRAN scanner [view]
  • -
  • Added documentation for creating tables [view]
  • -
  • Added javascript search engine data to the template context [view]
  • -
  • Added missing html resources to the html template file [view]
  • -
  • Added missing information to template version of the all members list [view]
  • -
  • Added support for directory dependency graphs to template engine [view]
  • -
  • Adding compilation options for flex/lex and bison/yacc [view]
  • -
  • Adjusted used option for CLANG usage with CMake in documentation [view]
  • -
  • Alignment in LaTeX parameter table [view]
  • -
  • Avoid using Resource::data as string, as it is not null terminated. [view]
  • -
  • Better handling of implicit statement in source code browser [view]
  • -
  • Bug 149792 - Mainpage title has wrong style in RTF [view]
  • -
  • Bump version so that the GIT repo represents the version for the "next" release [view]
  • -
  • Cmake tries to remove directory refman.tex instead of file refman.tex [view]
  • -
  • Copy user EXTRA_FILES at the end to overrule files generated by default by doxygen [view]
  • -
  • Correct / set types for python variables [view]
  • -
  • Correcting print format error in config.l [view]
  • -
  • DO NOT hardcode x86-64 architecture. [view]
  • -
  • Don't show a console when launching doxywizard on Windows. [view]
  • -
  • Fix computeCommonDirPrefix sometimes not finding the correct prefix [view]
  • -
  • Fix error documentation of in flex debug script [view]
  • -
  • Fix for broken link in the manual [view]
  • -
  • Fix hexChar for inputs 0 <= i < 10 [view and [view]
  • -
  • Fix spelling in doc/commands.doc (descriptionm) [view]
  • -
  • Fix typo in function name [view and [view]
  • -
  • Fixed a couple of small memory leaks [view]
  • -
  • Fixed a number of memory leaks in the template engine [view]
  • -
  • Fixed compiler warning for MacOSX [view]
  • -
  • Fixed link issue for MacOSX 10.11 [view]
  • -
  • Fixed minor typos in comments [view]
  • -
  • Fixed preprocessor macros for flex version check [view]
  • -
  • Fixed problem with latex and PDF bookmarks [view]
  • -
  • Fixed various issues found by PVS-Studio. [view]
  • -
  • Fixes bug 485701: Angle brackets (< and >) not escaped in HTML formula alt text [view]
  • -
  • Fixes to support nested tables again [view]
  • -
  • Fortran module private variables and EXTRACT_PRIVATE = NO [view and view]
  • -
  • Improved handling of <caption> in tables for LaTeX output. [view]
  • -
  • IncludeInfo class had uninitialized member variable [view]
  • -
  • Made paragraph spacing more flexible in the LaTeX output to prevent page overflows [view]
  • -
  • Made several improvements to the performance of template engine [view]
  • -
  • Make doxywizard compatible with Qt5 [view]
  • -
  • Make list of default extensions consistent with language mapping list [view]
  • -
  • Markdown with @cond and @endcond [view]
  • -
  • Markdown with @cond and @endcond [view]
  • -
  • Merge remote-tracking branch 'upstream/master' [view]
  • -
  • Minor change to pycode.l:codifyLines [view]
  • -
  • Moved creation of inline class documentation to separate template file [view]
  • -
  • RTF improvement: Example section was merged with next function title [view]
  • -
  • Remove obsolete py files [view]
  • -
  • Removed BOM marker from greek translator to avoid Visual C warnings [view]
  • -
  • Repaired breaking @include for LaTeX output [view]
  • -
  • Revert "Spelling correction for error message with USE_HTAGS usage" [view]
  • -
  • Revert using container-based infra as sudo is needed :-( [view]
  • -
  • Reverted change that caused doxygen to return error code 2 when it produced a warning [view]
  • -
  • Rework the generation of packages DEB/RPM/... (CPack) [view]
  • -
  • Right alignment of in page table of contents [view]
  • -
  • Small correction of errors in case of CSharp XML tags [view]
  • -
  • Small documentation corrections [view]
  • -
  • Spelling correction for error message with USE_HTAGS usage [view] and [view]
  • -
  • Started with generating LaTeX output via the template engine [view]
  • -
  • Stop when doxygen configuration file ("Doxyfile") cannot be read [view]
  • -
  • Support flex-2.6.0 [view] and [view]
  • -
  • Support set in code highlighting [view]
  • -
  • Template enhancements and various other small fixes [view]
  • -
  • Title in case of USE_MDFILE_AS_MAINPAGE [view]
  • -
  • Tooltip can still contain < and > signs [view]
  • -
  • Tweaked the htmlonly sections in the manual so it produces valid HTML output [view]
  • -
  • Undo _doxygen to libdoxygen target change [view]
  • -
  • Updated instructions to toggle debugging flex code [view]
  • -
  • Updated Italian translation and translator email address [view]
  • -
  • Updated the Greek translation [view]
  • -
  • Use CPack to generate rpm/deb packages [view]
  • -
  • Use STATIC libraries to prevent them being shared [view]
  • -
  • Using tabu package for LaTeX tables [view]
  • -
  • [Bug 755225] On Windows, generated layout is with UNIX EOL [view]
  • -
  • [Doxygen-users] plugin / filter not behaving as expected [view]
  • -
  • add spaces like "Doyxgen"CN_SPC->"Doyxgen" CN_SPC [view]
  • -
  • allow building with custom iconv on Windows [view]
  • -
  • doc: generate doxygen's documentation. [view]
  • -
  • doc: put man pages under share/man/man1 [view]
  • -
  • docparser: warn when finding a documented empty return type [view]
  • -
  • docs: add examples as a dependency of docs [view]
  • -
  • doxyapp and CLANG linking [view]
  • -
  • fixed for travis ci config file [view]
  • -
  • libpng warning: iCCP: known incorrect sRGB profile [view]
  • -
  • rename build target _doxygen to libdoxygen [view]
  • -
  • run_translator.cmake is no longer used [view]
  • -
  • runtests: Simplify dictionary usage [view]
  • -
-

-

-

-Release 1.8.10

-

-(release date 27-06-2015) - -

-
    -
  • change the build system to use cmake [view], -[view], -[view], -[view], -[view], -[view], -[view], -[view]
  • -
  • Add support for basic XML syntax highlighting. [view]
  • -
  • Added documentation for ``` style fenced code block and more robust parsing [view]
  • -
  • Added function arguments to the LaTeX toc [view]
  • -
  • Added missing files and build instructions [view]
  • -
  • Added missing libraries for building doxysearch on Windows [view]
  • -
  • Added support for language codes [view]
  • -
  • Added type constraint relations for Java generics to dot graphs and XML output [view]
  • -
  • Adding commands \hidecallgraph and \hidecallergraph [view]
  • -
  • Adjust test script for longer version number [view]
  • -
  • Adjusted version in configure script [view]
  • -
  • Alignment of project name [view]
  • -
  • Allow selection of specific translators to compile in at build time [view]
  • -
  • Based on the report of Peter D. Barnes in the doxygen forum (http://doxygen.10944.n7.nabble.com/doxygen-1-8-9-1-upgrade-errors-td6990.html) [view]
  • -
  • Better error message in case of IDL inconsistency [view]
  • -
  • Bug 659590 - EXTRA_PACKAGES can't handle package options [view], -[view]
  • -
  • Bug 739680 - Using HTML entities in PROJECT_NAME [view]
  • -
  • Bug 742095 - Missing documentation after nested C++11 unified initializer [view]
  • -
  • Bug 742151 - Bogus warning: citelist: Unexpected new line character [view]
  • -
  • Bug 742230 - @todo paragraphs incorrectly placed in rtf output [view]
  • -
  • Bug 742235 - Bogus message with addtogroup [view]
  • -
  • Bug 742408 - Configuring doxyfile to only output docbook produces erroneous warning [view]
  • -
  • Bug 742427 - latex compilation: \backmatter incompatible with COMPACT_LATEX=YES [view]
  • -
  • Bug 742445 - Wrong icons in TOC of CHM help [view]
  • -
  • Bug 742899 - <CAPTION> inside <TABLE> no longer works for LaTex output [view]
  • -
  • Bug 743604 - Duplicate anchors from tagfiles [view]
  • -
  • Bug 743605 - Tagfile anchors not generated for enumeration values [view]
  • -
  • Bug 743675 - Non-ascii characters are not emphasised [view]
  • -
  • Bug 744762 - Using TAGFILES prevents symbol extraction [view]
  • -
  • Bug 745439 - PATCH: please consider making doxygen output byte for byte identical between individual runs by default [view]
  • -
  • Bug 745481 - Doxygen generates bad "More..." file links for functions within a namespace [view]
  • -
  • Bug 745870 - [PATCH] QT4's qmake is titled differently on Fedora 21 [view], -[view]
  • -
  • Bug 746226 - last enum member not documented [view]
  • -
  • Bug 746417 - Nested list in C# XML comments closes outer list prematurely [view], -[view]
  • -
  • Bug 746614 - Bogus warning regarding nested comments [view]
  • -
  • Bug 746619 - Bogus warnings in case of anonymous namespace and @todo [view]
  • -
  • Bug 746734 - Don't warn about missing documentation for deleted functions. [view], -[view]
  • -
  • Bug 747111 - Table of content incorrect with escaped symbols [view]
  • -
  • Bug 747780 - man output should escape minus signs [view]
  • -
  • Bug 748208 - Bug #313527 regression - Enum in bitfield is not parsed properly. [view], -[view]
  • -
  • Bug 750016 - FILE_PATTERNS ignores arbitrary extensions [view]
  • -
  • Bug 751455 - class scoped enum documentation appearing at group level instead of class level [view]
  • -
  • Build fixes for windows build [view]
  • -
  • Bump copyright year [view]
  • -
  • Bump version in configure script [view]
  • -
  • Cleanup & adapt travis config [view]
  • -
  • Consistency in handling HTML and LaTeX in respect to header and footer [view]
  • -
  • Correct string buffer sizes for RTF output, such that the string is always correctly sized. [view]
  • -
  • Crash in case of non generic interface in Fortran [view]
  • -
  • Documentation HTML Header, Footer, and Stylesheet changes [view], [view]
  • -
  • Documenting RESULT variable of Fortran FUNCTION [view], [view]
  • -
  • Doxygen LaTeX / PDF links point to page 1 [view]
  • -
  • Enable relative paths referenced source files [view]
  • -
  • Escape "@" in names as it is not allowed in XML / Docbook names (coming from anon namespaces) [view]
  • -
  • Fix for bug 746673. [view]
  • -
  • Fix for building diagram example conditionally [view]
  • -
  • Fix for issue 744670 [view]
  • -
  • Fix for issue 744671 [view]
  • -
  • Fix for rendering the template parameters of members of variadic template classes. [view]
  • -
  • Fix missing brief documentation for overload and specialization functions [view]
  • -
  • Fix nesting of XML tag "literallayout" for docbook output of enums. [view]
  • -
  • Fix parsing of ODL-style properties [view]
  • -
  • Fix potential null pointer dereference in src/classdef.cpp [view]
  • -
  • Fix potential null pointer dereference in src/context.cpp [view]
  • -
  • Fixed a couple of cases where sharing string data could lead to corruption [view]
  • -
  • Fixed code reachability bug found by coverity in translator_fi.h [view]
  • -
  • Fixed compilation issue on Windows [view]
  • -
  • Fixed issue accessing uninitialized buffer under certain conditions. [view]
  • -
  • Fixed potential crash while generating dot graphs [view]
  • -
  • Fixed potential string buffer issue for dot graphs [view]
  • -
  • Fixed regression due to buffer resizing while generating RTF. [view]
  • -
  • Fixed regression in argument processing [view]
  • -
  • Fixed type in printdocvisitor.h [view]
  • -
  • Fixed typos in comments. [view]
  • -
  • Fixes for showing type constraint relations [view]
  • -
  • Fortran FUNCTION source code [view], [view]
  • -
  • Fortran: code color GOTO as flow keyword. [view]
  • -
  • Fortran: fixed format position 73 and further is comment [view], [view]
  • -
  • Fortran: warning message about not documented module member [view]
  • -
  • Guarded debug prints against printing a NULL pointer. [view]
  • -
  • HTML entity &deg; gives problems in LaTeX [view]
  • -
  • Help message regarding layout file [view],[view]
  • -
  • Internal debug option -d lex is not described [view], [view]
  • -
  • Internal doxygen docs gives: warning: Unsupported xml/html tag <...> found [view]
  • -
  • Missing cross reference link [view]
  • -
  • Patch fixing a typo in Pull Request 307 [view], [view]
  • -
  • Prevent example.tag from being regenerated [view]
  • -
  • Problem running tests under Windows [view]
  • -
  • Remove the new line after @startuml in generated pu file [view]
  • -
  • Remove unreachable code [view]
  • -
  • Remove unused local and static global variables [view]
  • -
  • Remove wrong </File> [view], [view]
  • -
  • Removed OS version check for MACOSX (was not used anywhere) [view]
  • -
  • Removed dbus XML parser, various refinements [view], [view]
  • -
  • Removed old build files, added install targets and other options [view]
  • -
  • Repair doxygen generate invalid styleSheetFile and extensionsFile of RTF [view]
  • -
  • Replace to_c_cmd by resource compiler [view]
  • -
  • Restore deleted file [view]
  • -
  • Showing grey/gray in documentation [view]
  • -
  • Suggestion to use stripPrefix has been implemented for RESULT. For consistency also implemented for arguments. [view], [view]
  • -
  • Support diff that returns "No differences encountered" when comparing test results [view]
  • -
  • Support generating index-color PNG files [view]
  • -
  • Switched back to version 6.2 of JavaCC for VHDL parser generation. [view]
  • -
  • Tcl: fix for extra line breaks in source browser introduced by commit 312bef5 [view]
  • -
  • TranslatorSwedish updated [view]
  • -
  • Update of search from "endless search to 'Character search: criterion. [view]
  • -
  • Update translator_cn.h [view]
  • -
  • Updated changelog for 1.8.9.1 [view]
  • -
  • Updated installation section of the manual [view]
  • -
  • Various VHDL related fixes [view], -[view], -[view]
  • -
  • Various minor changes [view]
  • -
  • Warning message multiple mainpages [view]
  • -
  • Warnings without filename [view]
  • -
  • add support for github flavored fenced code blocks [view]
  • -
  • added HHC.exe own output to the debug output when extcmd flag enabled [view]
  • -
  • doc/translator.py -- minor updates [view]
  • -
  • drop #include <unistd.h> [view]
  • -
  • fix *.l for three backticks [view]
  • -
  • fix enum brief description in RTF output [view]
  • -
  • fix for CHM TOC "Classes" entry to point to annotated file [view]
  • -
  • fix for src/translator_tw.h by Gary Lee (translation cleaned) [view]
  • -
  • increase the size of l when result is modified [view]
  • -
  • move layout_default.xml to templates/html/ [view]
  • -
  • runtests.pl: mmn version has dash as separator [view]
  • -
  • specify that doxygen searches files in INPUT tag [view]
  • -
  • sqlite3: add regexp searches to search.py [view]
  • -
  • sqlite3: add schema comments [view]
  • -
  • sqlite3: fix constness [view]
  • -
  • version.py pass configure file path as parameter [view]
  • -
  • xml: use STRIP_FROM_PATH on @file attributes. [view], [view]
  • -
-

-

-

-Release 1.8.9.1

-

-(release date 04-01-2015) - -

-
    -
  • Fixed a couple of cases where sharing string data could lead to corruption [view]
  • -
  • Various VHDL related fixes [view]
  • -
  • Bug 742151 - Bogus warning: citelist: Unexpected new line character [view]
  • -
  • Bug 742230 - @todo paragraphs incorrectly placed in rtf output [view]
  • -
  • Bug 742235 - Bogus message with addtogroup [view]
  • -
  • Documentation HTML Header, Footer, and Stylesheet changes [view]
  • -
  • Documenting RESULT variable of Fortran FUNCTION [view]
  • -
  • Fix potential null pointer dereference in src/context.cpp [view]
  • -
  • Fixed compilation issue on Windows [view]
  • -
  • Fortran FUNCTION source code [view]
  • -
  • Fortran: code color GOTO as flow keyword. [view]
  • -
  • Help message regarding layout file [view]
  • -
  • Remove unused local and static global variables [view]
  • -
  • Suggestion to use stripPrefix has been implemented for RESULT. For consistency also implemented for arguments. [view]
  • -
  • Switched back to version 6.2 of JavaCC for VHDL parser generation. [view]
  • -
-

-

-

-Release 1.8.9

-

-(release date 25-12-2014) - -

-
    -
  • Bug 634763 - Fortran: external subroutine as dummy argument not recognized [view]
  • -
  • Bug 634763 - Fortran: external subroutine as dummy argument not recognized [view]
  • -
  • Bug 651859 - Brief description misplaced in man page output [view]
  • -
  • Bug 652276 - Typedefs in manpages has too few linebreak possiblilities [view]
  • -
  • Bug 685597 - C# <code> tag in an <example> tag does not render as expected. [view]
  • -
  • Bug 687576 - Add support for LATEX_EXTRA_STYLESHEET [view]
  • -
  • Bug 704090 - Allow Class{T}.Method in cref to refer to a generic class in XML comments [view]
  • -
  • Bug 722940 - classes with same name in different namespace adding to same group [view]
  • -
  • Bug 729063 - Missing link for item inside the same namespace [view]
  • -
  • Bug 729236 - Added HIDE_COMPOUND_REFERENCE config option [view]
  • -
  • Bug 735145 - QHP toc broken if mainpage with PROJECT_NAME title has sections/subpages [view]
  • -
  • Bug 735194 - src/Makefile.libdoxycfg shouldn't be distributed [view]
  • -
  • Bug 735198 - plantUML requires epstopdf for building PDF files [view]
  • -
  • Bug 735376 - tag file: Unknown compound attribute `singleton' found! [view]
  • -
  • Bug 735441 - Fix a resource leak in src/vhdldocgen.cpp [view]
  • -
  • Bug 735462 - There's no such thing as a private Q_PROPERTY [view]
  • -
  • Bug 735475 - Same Expression in translator_kr.h [view]
  • -
  • Bug 735477 - Fix a potential null pointer dereference in src/memberdef.cpp [view]
  • -
  • Bug 735481 - Mismatch in memory allocation/de-allocation function in vhdlparser/vhdlstring.h [view]
  • -
  • Bug 735482 - Remove a not needed initialization of a local variable in src/mangen.cpp [view]
  • -
  • Bug 735483 - Fix a potential null pointer dereference in src/searchindex.cpp [view]
  • -
  • Bug 735497 - Fix wrong pointer initialization in src/definition.cpp [view]
  • -
  • Bug 735499 - Fix potential modulo by zero in src/template.cpp [view]
  • -
  • Bug 735584 - Reached end of file while still insided a (nested) comment in Markdown [view]
  • -
  • Bug 735587 - Fix a terminating null character after fread in src/filedef.cpp [view]
  • -
  • Bug 735589 - Remove not needed variable initialization in src/classdef.cpp [view]
  • -
  • Bug 735590 - Remove not needed pointer initialization in src/entry.cpp [view]
  • -
  • Bug 735591 - Provide exit code in case generatePlantUMLOutput fails [view]
  • -
  • Bug 735620 - Remove not needed variable caching in src/markdown.cpp [view]
  • -
  • Bug 735622 - Do not cache inputSize in src/doxygen.cpp [view]
  • -
  • Bug 735623 - Expression is always false because 'else if' condition matches previous condition [view]
  • -
  • Bug 735726 - Fix missing break in switch case statement [view]
  • -
  • Bug 735745 - Spurious ASSERT message [view]
  • -
  • Bug 735759 - Broken man pages due to bad use of autoBreak [view]
  • -
  • Bug 735767 - Fix potential copy and paste issue in vhdlparser/VhdlParser.cc [view]
  • -
  • Bug 735924 - [Patch] Documentation: Wrong link for \\diafile [view]
  • -
  • Bug 735925 - [Patch] DocBook: Possible name clash for generated image files [view]
  • -
  • Bug 735926 - RTF output: \\diafile and \\mscfile do not work [view]
  • -
  • Bug 735929 - Windows: Process exit code is ignored for processes launched using ShellExecuteEx() [view]
  • -
  • Bug 735982 - Fix potential allocation of huge memory amount due to type overflow in src/lodepng.cpp [view]
  • -
  • Bug 735985 - Fix missing unchecked return value in src/dot.cpp [view]
  • -
  • Bug 736018 - Fix potential null pointer dereference in src/dbusxmlscanner.cpp [view]
  • -
  • Bug 736020 - Fix identical code for different branches in src/translator_tw.h [view]
  • -
  • Bug 736022 - Fix potential null pointer dereference in src/index.cpp [view]
  • -
  • Bug 736023 - Remove not needed variable initialization in src/cite.cpp [view]
  • -
  • Bug 736027 - Remove not needed local variable in src/doxygen.cpp [view]
  • -
  • Bug 736029 - Remove redundant if/else branch in src/lodepng.cpp [view]
  • -
  • Bug 736030 - Remove redundant if/else branch in src/translator_lt.h [view]
  • -
  • Bug 736031 - Cleanup redundant if/else branch in src/translator_kr.h [view]
  • -
  • Bug 736032 - Cleanup redundant if/else branch in src/translator_sr.h [view]
  • -
  • Bug 736033 - Cleanup redundant if/else branch in src/translator_tw.h [view]
  • -
  • Bug 736034 - Cleanup redundant if/else branch in src/translator_vi.h [view]
  • -
  • Bug 736036 - Remove redundant local variable initialization in qtools/qstring.cpp [view]
  • -
  • Bug 736037 - Fix wrong member variable initialization in src/define.cpp [view]
  • -
  • Bug 736385 - Fix potential null pointer dereference in src/util.cpp [view]
  • -
  • Bug 736386 - Fix another potential null pointer dereference in src/util.cpp [view]
  • -
  • Bug 736387 - Fix a potential null pointer dereference in src/index.cpp [view]
  • -
  • Bug 736389 - Fix a potential null pointer dereference in src/vhdldocgen.cpp [view]
  • -
  • Bug 736992 - Member functions omitted from tagfile [view]
  • -
  • Bug 737444 - Java: Annotations with brackets prevent documentation [view]
  • -
  • Bug 737830 - Invalid element name in footer part when GENERATE_TREEVIEW specified [view]
  • -
  • Bug 738063 - Fortran attribute contiguous not identified [view]
  • -
  • Bug 738167 - Entity references in XML command attributes are incorrectly handled [view]
  • -
  • Bug 738173 - Entity references in XML code command are incorrectly handled [view]
  • -
  • Bug 738548 - latex: dead links to source code [view]
  • -
  • Bug 738574 - &hellip; is replaced by \cdots rather than \dots in the LaTeX output [view]
  • -
  • Bug 739054 - Python xml not outputting info of functions inside __init__.py [view]
  • -
  • Bug 739056 - Python xml - argsstring is empty, while HTML have arguments [view]
  • -
  • Bug 739209 - Invalid warning about undocumented C++ function imported from tagfile [view]
  • -
  • Bug 739210 - C++11 scoped enums with same name inside different classes are merged if using tagfile [view]
  • -
  • Bug 739211 - Cannot make explicit links to C++ const member functions [view]
  • -
  • Bug 739214 - Cannot make unscoped link to C++ conversion operator [view]
  • -
  • Bug 739462 - Using "doxygen.css" for HTML_EXTRA_STYLESHEET fails silently [view]
  • -
  • Bug 739863 - Regression: Base classes incorrect when using CRTP with default template parameter [view]
  • -
  • Bug 740218 - Full scope needed when making link inside cross-referenced section [view]
  • -
  • Bug 740218 - Full scope needed when making link inside cross-referenced section (fixed regression) [view]
  • -
  • Bug 740446 - invalid copydoc target does not result in warning [view]
  • -
  • Bug 741100 - Latex to PDF hangs when using Markdown tables [view]
  • -
  • Bug 741417 - Crash when building gtkmm documentation [view]
  • -
  • Bug 741778 - \cite confused by labels ending with a dot (improved warning message) [view]
  • -
  • fix docbook output [view] -
    1. support other than english
    2. -
    3. fix broken example link id
    4. -
    5. fix incomplete TOC : no Classe etc.
    6. -
    7. add brief description for Functions etc.
    8. -
    9. Comply with REPEAT_BRIEF
    10. -
    11. Do not output duplicated contents when detailed description is missing.
    12. -
    13. set table colwidth for Param/RetVal
    14. -
    -
  • -
  • Add missing escape in doxysearch.cpp when result contained a double quote [view]
  • -
  • Add source code possibility for RTF output [view]
  • -
  • Added Coverity Scan Build Status to Readme [view]
  • -
  • Added clearer range checks for string class to help compiler [view]
  • -
  • Added compilation support for MacOSX 10.10 (yosemite) [view]
  • -
  • Added faster reference counted string implementation with short string optimization [view]
  • -
  • Added graphical hierarchy support to template engine [view]
  • -
  • Added guard to prevent (theoretical) out of bound access [view]
  • -
  • Added language attribute to XML output for classes, namespaces, and files [view]
  • -
  • Avoid a (theoretical) memory leak [view]
  • -
  • Better handling of inline Fortran parameter documentation [view]
  • -
  • Fixed bug for page numbers in the latex indices [view]
  • -
  • Compilation fixes for Windows for new string implementation. [view]
  • -
  • Convert FORTRAN modules to namespaces [view]
  • -
  • Create an easy possibility to take a snippet from the current file. [view]
  • -
  • Debian Bug 762272: segfault with cyclic subgroups [view]
  • -
  • Disabled enter/exit printing for doctokenizer (produced too much noise) [view]
  • -
  • Empty entry in \tableofcontents in case e.g. section without description. [view]
  • -
  • Extra empty line in source fragments [view]
  • -
  • Fix bug with C++11 static_assert [view]
  • -
  • Fix bug: language switch command "\~" failed to detect language id which contains '-' [view]
  • -
  • Fix for https://bugzilla.gnome.org/show_bug.cgi?id=651850 [view]
  • -
  • Fix for the second issue in bz 651848 [view]
  • -
  • Fix potential crash when reading tag file which contained nested java classes using generics [view]
  • -
  • Fix rules for closing FORTRAN module and typedef scopes [view]
  • -
  • Fix to ignore the contents of \verbatim and friends while looking for sections [view]
  • -
  • Fix to show relations between C#/Java generic classes [view]
  • -
  • Fixed a number of issues (resource leaks, uninitialized members, etc) found by coverity [view]
  • -
  • Fixed bug in new QCString::sprintf for long string. [view]
  • -
  • Fixed extension matching issue if path contained a dot. [view]
  • -
  • Fixed issue accessing uninitialized data when combining RTF output. [view]
  • -
  • Fixed issue parsing @end directly followed by the end of the file [view]
  • -
  • Fixed problem finding \enduml when using /// style comments. [view]
  • -
  • Fixed refcounting bug in new string implementation [view]
  • -
  • Fixed several Coverity warnings [view]
  • -
  • Fixed to small memory leaks [view]
  • -
  • Fixed typos and formatting in Doxyfile (thanks to Armin Mueller) [view]
  • -
  • Fixed typos in C/C++ comments. There are no functional changes. [view]
  • -
  • Fixed typos in comments. [view]
  • -
  • Fixed typos in comments. No functional changes. [view]
  • -
  • Fortran code color END (regression pull request 259) [view]
  • -
  • Fortran color CALL as keyword [view]
  • -
  • Fortran color code of END [view]
  • -
  • Fortran continuation character seen as begin of function call [view]
  • -
  • Generate error message in case bibtex generation fails [view]
  • -
  • Improved main page rendering via template engine [view]
  • -
  • Initialized potentially uninitialized variable in markdown part [view]
  • -
  • Introduce new optimized string implementation (attempt 2) [view]
  • -
  • Introduced template directory for template and resource files and resource compiler & manager [view]
  • -
  • LaTeX problem with 2 consecutive single quotes [view]
  • -
  • Last comment of \code{.f90} missing [view]
  • -
  • Limit images sizes and make more uniform (LaTeX) [view]
  • -
  • Package mathptmx gives discrepancy between pdf and HTML formulas [view]
  • -
  • Portuguese and Brazilian Portuguese translators updated to 1.8.5. [view]
  • -
  • Prevent overly long terms from stopping the search indexer [view]
  • -
  • Problem in case of line termination (., a dot) direct after the \cite command [view]
  • -
  • Regression class<T extends V> resulted in class<V> as the page title [view]
  • -
  • Remove bogus argument to avoid compiler warning [view]
  • -
  • Remove dependency of PlantUML on HAVE_DOT [view]
  • -
  • Remove extraneous 'README' to allow successful RPM creation [view]
  • -
  • Remove filtering rule when generating FORTRAN module links [view]
  • -
  • Remove redundant code [view]
  • -
  • Removed bash specific construct from ./configure script to make it work on Solaris [view]
  • -
  • Removed some comment statements. [view]
  • -
  • Revert "Bug 634763 - Fortran: external subroutine as dummy argument not recognized" [view]
  • -
  • Reverted back to old string implementation. New one needs more work. [view]
  • -
  • Show tag file name instead of <unknown> for warnings pointing to symbols extracted from tag files. [view]
  • -
  • Show the parent-child type specialization relation in Java/C# generics inheritance diagrams [view]
  • -
  • Support charset option for PlantUML [view]
  • -
  • Support for INLINE_SOURCES in Fortran [view]
  • -
  • Support plantuml !include statement [view]
  • -
  • Support visible=no for main page tab. [view]
  • -
  • Supporting linking for methods bound to FORTRAN classes in source definitions [view]
  • -
  • This is the patch attached to bz 651848 by Robin Gareus. [view]
  • -
  • Update README.md [view]
  • -
  • Updated configuration script and libdoxygen.pro.in to use llvm-config [view]
  • -
  • Use result of vsnprintf [view]
  • -
  • Use substitute() instead of QString conversion [view]
  • -
  • Various VHDL fixes [view]
  • -
  • various fixes and restructuring [view]
  • -
  • Various latex problems [view]
  • -
-

-

-

-Release 1.8.8

-

-(release date 21-08-2014) - -

-

New features

-
    -
  • Bug 731947 - Support for PlantUML [view]
  • -
  • Add BREAD_CRUMB_TRAIL. [view]
  • -
-

Bug fixes

-
    -
  • Bug 172072 $title doesn't work in LateX header [view]
  • -
  • Bug 583958 Class diagrams and class hierarchy don't work for java generic classes [view]
  • -
  • Bug 589707 Flex .rule file for Visual Studio build can't cope with spaces in filenames [view]
  • -
  • Bug 623299 Fortran: quotation after define causes error [view]
  • -
  • Bug 625601 FORTRAN: recognition free versus fixed formatted code [view]
  • -
  • Bug 700510 Bibliography duplicate filenames fails [view] and - [view]
  • -
  • Bug 702584 \cite rejects valid BibTeX keys [view] and - [view]
  • -
  • Bug 705503 TCL: Documentation of oo::define is not working [view]
  • -
  • Bug 727732 Nested C structures/unions does not work with groups [view]
  • -
  • Bug 728654 configuration stops with settings.h missing [view]
  • -
  • Bug 728740 XML Output: Doxygen doesn't escape & characters (included in a hyperlink) in <detaileddescription> [view]
  • -
  • Bug 729017 function object in member initializer causes documentation loss [view]
  • -
  • Bug 729427 [PATCH] Propagate configure's perl to makefiles [view]
  • -
  • Bug 730418 man page extension is incorrect [view]
  • -
  • Bug 730520 No documentation generated for method-less C++ struct [view]
  • -
  • Bug 730887 [PATCH] Fix potential copy and paste error in inputstring.cpp [view]
  • -
  • Bug 730888 [PATCH] Fix missing '&' in Boolean operation in qstring.cpp [view]
  • -
  • Bug 731238 Dead links in html documentation when using tabs for indentation in c++ [view]
  • -
  • Bug 731363 Callgraphs for C# only generated for methods inside the same class [view]
  • -
  • Bug 731985 Variadic macros failing to expand if trailing ... is empty [view]
  • -
  • Bug 732594 Two entries for a single member in doxygen XML [view]
  • -
  • Bug 732768 nested html tables cause pdflatex to hang (1.8.4 and 1.8.6) [view]
  • -
  • Bug 733451 volatile declaration on member functions is not handled as xml attribute [view]
  • -
  • Bug 733605 Incorrect LaTeX generation for private union member in C++ [view]
  • -
  • Bug 733722 XML Output invalid: XML_PROGRAMLISTING=YES copies Unicode form feed character (U+000C) to XML files [view]
  • -
  • Bug 733856 segfault in QGListIterator while parsing fortran code [view]
  • -
  • Bug 733938 Explicit links using operator()() not generated. [view]
  • -
  • Bug 734077 no uniquely matching class member found for inline function definition where parameter argument names don't match [view]
  • -
  • Bug 734099 Add support for non-parsed language [view]
  • -
  • Bug 734245 Q_PROPERTY switches the member access from private to public [view]
  • -
  • Bug 734331 Strong enum members listed in containing namespace [view]
  • -
  • Bug 734704 Sigsegv while generating XML output [view]
  • -
  • Bug 734727 GENERATE_TAGFILE no longer includes any @*section links [view] and - [view]
  • -
  • Bug 734828 Request: disable building documentation if Python 2.6 or newer not available [view]
  • -
  • Bug 735001 No output for markdown pages with duplicate label title (different anchor) [view]
  • -
  • Bug 735037 QGDict::hashAsciiKey: Invalid null key [view]
  • -
  • Add FORTRAN 2003 keywords and commands [view]
  • -
  • Add type option to FORTRAN select statements [view]
  • -
  • Added build support for Python3+ and Python2.6+ [view]
  • -
  • Added class/procedure vardefs to FORTRAN code highlighting [view]
  • -
  • Added documentation for some missing HTML commands [view]
  • -
  • Added flatten, listsort and paginate filters [view]
  • -
  • Added get filter, unified index properties [view]
  • -
  • Added groupby filter and some more context info [view]
  • -
  • Added import keyword to FORTRAN code highlighting [view]
  • -
  • Added lists for indices to template context [view]
  • -
  • Added mainpage to context and improved page tree [view]
  • -
  • Added member indexes to template context [view]
  • -
  • Added missing links in changelog when multiple bug ids were on one line [view]
  • -
  • Added more missing links to the changelog [view]
  • -
  • Added namespace info to the context [view]
  • -
  • Addition of module data to context and alphaIndex filter [view]
  • -
  • Coded coloring of flow statements corrected (regression) [view]
  • -
  • Corrected copyright year [view]
  • -
  • Correction of typing error [view]
  • -
  • Disabled/fixed segments that produced doxygen warnings while running the test [view]
  • -
  • Docbook output improvements [view]
  • -
  • Documentation generator: added support for C# property accessors visibility modifiers. [view]
  • -
  • Doxywizard: make the Next button on the last page of the expert tab switch to the run tab [view]
  • -
  • Doxywizard: make the Next button on the last page of the wizard switch to the run tab [view]
  • -
  • Error linking 32-bit windows [view]
  • -
  • Fix FORTRAN code function scope test [view]
  • -
  • Fix after rebase from master [view]
  • -
  • Fix description of USE_PDFLATEX [view]
  • -
  • Fix highlighting issues [view]
  • -
  • Fix typo [view]
  • -
  • Fix unnecessary rules for FORTRAN types [view]
  • -
  • Fix warning about unused functions in qstring.cpp [view]
  • -
  • Fixed keyword type [view]
  • -
  • Fixed missing include for Linux [view]
  • -
  • Fixed test 021 [view]
  • -
  • Fixed typo [view]
  • -
  • Fixed typo and used QString for directory [view]
  • -
  • Fixed windows compile issue for is_neutral [view]
  • -
  • Fixes for ./configure script on Solaris [view]
  • -
  • Fixes regression due to PR 169 [view]
  • -
  • Language parser: added support for C# property accessors visibility modifiers. [view]
  • -
  • Made INSTALL file version and date independent [view]
  • -
  • Made bread crumb trails enabled unconditionally [view]
  • -
  • Made setName() virtual so overloading works [view]
  • -
  • Make index for faq [view]
  • -
  • Messages truncated in warnings file [view]
  • -
  • Minor fixes [view]
  • -
  • Minor fixes to the template context [view]
  • -
  • Missing word after \n command in doxygen rtf output, version 1.8.5 & up [view]
  • -
  • More robust extraction of scope information from tag files [view]
  • -
  • No warning in case cite definition is missing [view]
  • -
  • Preparations for release 1.8.8 [view]
  • -
  • Removed not implemented HTML commands from documentation [view]
  • -
  • Removed unsupported HTML commands from the docs [view]
  • -
  • Set deployment targets for MacOSX 10.5+ versions [view]
  • -
  • Support multiple extra HTML stylesheets. [view]
  • -
  • Tcl: add missing file that breaks test 057 [view]
  • -
  • Tcl: add test code for Bug 729092 [view]
  • -
  • Tcl: collect XRefs also if INLINE_SOURCES = no [view]
  • -
  • Tcl: correct namespace resolution in case of INLINE_SOURCES = YES [view]
  • -
  • Tcl: recurse for [] [view]
  • -
  • Tcl: refactor similar code into tcl_codify_token function [view]
  • -
  • Tcl: support eval/catch commands [view]
  • -
  • Tcl: support switch command [view]
  • -
  • Tcl: test 057 additionally tests mutual Xrefs for two files [view]
  • -
  • Template context support for CREATE_SUBDIRS [view]
  • -
  • Update dot.cpp [view]
  • -
  • Update latexgen.cpp [view]
  • -
  • Update test 058 because commit 9d315a9 fixes also Bug 729135 [view]
  • -
  • Replaced the VHDL parser with the VHDL scanner from 1.7.5 to avoid potential licensing issues [view]
  • -
  • New VHDL parser implementation [view]
  • -
  • Vhdl fixes [view]
  • -
  • \usepackage{fixltx2e} must come before use \usepackage{float} [view]
  • -
  • cache anonymous into ClassDefImpl::isAnonymous [view]
  • -
  • changed append filter and added index and path attributes to node [view]
  • -
  • doc/translator.py -- unification for Python 2.6+ and 3.3+ (not finished) [view]
  • -
  • doc/translator.py unified for Python 2.6+ and Python 3.0+ [view]
  • -
  • make.bat: change current directory [view] and - [view]
  • -
  • removeRedundantWhiteSpace micro-optimization [view]
  • -
  • resolves the error of unbalanced tags opened/closed in docbook output: parser error : Opening and ending tag mismatch: para line 358 and tbody [view]
  • -
  • winbuild/pack_the_distribution_for_windows.py minor updates [view]
  • -
-

-

-

-Release 1.8.7

-

-(release date 21-04-2014) - -

-
    -
  • Bug 436885 - c-source and h-source missing for latex [view]
  • -
  • Bug 625601 - FORTRAN: recognition free versus fixed formatted code [view]
  • -
  • Bug 626172 - Latex $projectname with "&" gets no escaped [view]
  • -
  • Bug 643618 - Fortran: variable with name "type" confuses doxygen [view]
  • -
  • Bug 674851 - Percent to prevent auto-linking in page title is not removed for navpath [view]
  • -
  • Bug 678436 - Nested \if messes up list items [view]
  • -
  • Bug 678436 - Nested \if messes up list items [view]
  • -
  • Bug 683115 - Command ignored when using umlauts in markdown and also C-comments in markdown didn't work properly [view]
  • -
  • Bug 692985 - Notes in xml output are not correctly separated [view]
  • -
  • Bug 705220 - Enables using unicode (non ASCII) to name output files [view]
  • -
  • Bug 705499 - Nested namespace causes incorrect display when referenced via .tag file [view]
  • -
  • Bug 712251 - Documentation for enumeration not generated [view]
  • -
  • Bug 720691 - Code coloring in case of file without extension [view]
  • -
  • Bug 721032 - Trouble with /cond /endcond [view]
  • -
  • Bug 721169 - Wrong call graph in simple situation [view]
  • -
  • Bug 721302 - [Latex/PDF] Merging brief and detailed description in file section [view]
  • -
  • Bug 721462 - Parsing problem with C++11 empty initializer lists [view]
  • -
  • Bug 721618 - Move constructors and move assignment operators of embedded classes of template classes cannot be matched. [view]
  • -
  • Bug 721878 - Dia diagrams not displayed by Firefox [view]
  • -
  • Bug 722457 - regression referencing namespaced type [view]
  • -
  • Bug 722603 - doxygen nested \if \endif sample not working [view]
  • -
  • Bug 722619 - doxygen 1.8.6 sorts the contents of a namespace by group within the Class List [view]
  • -
  • Bug 722711 - Link refs with no title swallow an extra newline [view]
  • -
  • Bug 722759 - Documentation for derived classes no longer has an "Additional Inherited Members" section after upgrading doxygen from 1.8.3.1 to 1.8.6 [view]
  • -
  • Bug 722786 - configure --prefix=/opt/foo not accepted [view]
  • -
  • Bug 722788 - Command \| not working when last character in markdown table line [view]
  • -
  • Bug 723299 - Last line of code block lost if it is only one character and there is no text afterward [view]
  • -
  • Bug 723314 - Doxygen crashes on incorrect end group /**< @} */ [view]
  • -
  • Bug 723516 - star is not printed in \code environment [view]
  • -
  • Bug 724241 - Internal inconsistency: namespace in IDL [view]
  • -
  • Bug 724949 - Server side (PHP) search broke in 1.8.3 [view]
  • -
  • Bug 726219 - python3 import style causes doxygen to ignore some inheritances [view]
  • -
  • Bug 726294 - Markdown Extra - fenced code block: '>' before tab width parsed as block quote [view]
  • -
  • Bug 726469 - Tilde sign in combination with <pre> and MARKDOWN_SUPPORT disabled [view]
  • -
  • Bug 726722 - Blockquote followed by text inserts an extra paragraph [view]
  • -
  • Bug 726734 - alignment of blockquotes in pdf [view]
  • -
  • Bug 728077 - Build fails when --with-libclang on Fedora [view]
  • -
  • Bug 728530 - Crash on \addindex \term [view]
  • -
  • A new files have been added but is not incorporated in the windows build part [view]
  • -
  • Add docbook directory to be removed as well [view]
  • -
  • Add extra (documenattion) directories to ignore pattern [view]
  • -
  • Add index support to context [view]
  • -
  • Add line numbers in case comment is not closed properly. [view]
  • -
  • Add template context for annotated class index [view]
  • -
  • Add validation of internal consistency to html entity mapper [view]
  • -
  • Add warning when encountering a nested comment start (/*) without matching end (*/). [view]
  • -
  • Added \latexinclude command (thanks to Juan Zaratiegui for the patch) [view]
  • -
  • Added basic arithmetic operations to the template expressions, and made the expression lexer faster [view]
  • -
  • Added dir tree nodes to the context [view]
  • -
  • Added directory info to the context [view]
  • -
  • Added doc/config.doc to .gitignore [view]
  • -
  • Added language update for Swedish (thanks to Björn Palmqvist) [view]
  • -
  • Added last and first attributes to index tree node [view]
  • -
  • Added missing \+ command to build LaTeX manual [view]
  • -
  • Added new language maintainer for Swedish, removed generated file language.doc [view]
  • -
  • Added optional [block] option to \htmlonly [view]
  • -
  • Added reference counting for all context objects [view]
  • -
  • Added stricter URL filtering to prevent DOM Based XSS when the tree view is enabled [view]
  • -
  • Added support for \-- and \--- to prevent interpretation as ndash and mdash [view]
  • -
  • Added support for elif to the template language [view]
  • -
  • Added support for range tag in the template language [view]
  • -
  • Alterative way to get rules information from flex [view]
  • -
  • Better message in case doxygen -u is used [view]
  • -
  • Changed "See Also" back to "See also" [view]
  • -
  • Chm don't add images multiple times [view]
  • -
  • Command \< and \> are not properly shown in section headers (and consequently in index) [view]
  • -
  • Consistency of usage of the word LaTeX in the documentation [view]
  • -
  • Context enhancement [view]
  • -
  • Corrected some definitions for some Fortran keywords [view]
  • -
  • Disabled config dependency check to avoid regression [view]
  • -
  • Documentation corrections [view]
  • -
  • Enable Previous and Next buttons in chm output file [view]
  • -
  • Enabling possibility to have { and } in (latex) index items [view]
  • -
  • Error message is given for make distclean as generated_src is a directory [view]
  • -
  • Extension in config.xml if type=string with format=image [view]
  • -
  • Extension specific filtering [view]
  • -
  • Fix id parsing for atx markdown headers [view]
  • -
  • Fix segfault on invalid bounding FIG when patching dot [view]
  • -
  • Fix to VHDL scanner. [view]
  • -
  • Fix typos in russian translation [view]
  • -
  • Fixed Tidy's 'empty span' warning in HTML output [view]
  • -
  • Fixed compiler warnings in section.h [view]
  • -
  • Fixed difference between generated XML schema and XML files for HTML entities [view]
  • -
  • Fixed issues with @parblock and added regression test case [view]
  • -
  • Fixed issues with SEPARATE_MEMBER_PAGES and INLINE_SIMPLE_STRUCTS [view]
  • -
  • Fixed memory leak in nested comment administration [view]
  • -
  • Fixed off-by one error for last character in compound.xsd [view]
  • -
  • Fixed potential crash caused by overloading the variadic warn function [view]
  • -
  • Fixed problem handling Obj-C protocol list when proceeded by a newline [view]
  • -
  • Fixed problem with ending a paragraph when htmlonly was at the end of a comment block [view]
  • -
  • Fixed typo in changelog [view]
  • -
  • Fixed typo in doxyindexer.vcproj [view]
  • -
  • Fixes for missing build dependencies [view]
  • -
  • Give message when PROJECT_LOGO cannot be found or cannot be converted [view]
  • -
  • Handlingh of -- by \c and <code> results in - adjusted documentation [view]
  • -
  • Improve rendering of sub and superscripts in LaTeX [view]
  • -
  • Improved handling of percent symbol [view]
  • -
  • Improved performance of rendering large index pages, by replacing images in the tables by spans [view]
  • -
  • In case of sections with the same name they are not reported. [view]
  • -
  • Inconsistency in usage of simplesecr versus simplesectsep corrected [view]
  • -
  • Inconsistency in usage of simplesecr versus simplesectsep corrected [view]
  • -
  • Incorrect handling dependencies [view]
  • -
  • Items XML_SCHEMA and XML_DTD declared obsolete [view]
  • -
  • List only the project pages in "Related Pages" [view]
  • -
  • Made documentation more consistent [view]
  • -
  • Make sure all ids in g_linkRefs are lower case [view]
  • -
  • Make the MAN_SUBDIR setting override the name of the directory the man pages are placed in. [view]
  • -
  • Meta tag in the HTML search page was not closed properly [view]
  • -
  • Minor fixes for the new build locations [view]
  • -
  • Missing & and chars after " in tree of chm documentation [view]
  • -
  • More context changes [view]
  • -
  • More work on the template and context mechanisms [view]
  • -
  • On windows citelist.doc remains [view]
  • -
  • Place where dot executable is found [view]
  • -
  • Properly escape the XCODE path. [view]
  • -
  • Pull out property names in Objective-C. [view]
  • -
  • Recognize all HTML4 special character entities [view]
  • -
  • Reduced and improved functionality of QList [view]
  • -
  • Removed config.doc as it is generated by configgen.py [view]
  • -
  • Removed generated file src/settings.h from source repository [view]
  • -
  • Removed message, minor restructuring [view]
  • -
  • Removed remark about installdox from the FAQ [view]
  • -
  • Restructured html entity handling [view]
  • -
  • Reverted #132 after submitter reported that it did not work [view]
  • -
  • Showing error message on windows in case on error on startup [view]
  • -
  • Simplified LaTeX header/footer escaping [view]
  • -
  • Some restructuring and some compiler warning fixes [view]
  • -
  • Spitting generated files better from source files [view]
  • -
  • Superfluous < sign [view]
  • -
  • Superfluous backslash in documentation [view]
  • -
  • Superfluous include removed [view]
  • -
  • Undo previous commit [view]
  • -
  • Unified DirFileContext and NestingContext [view]
  • -
  • Update doctokenizer.l [view]
  • -
  • Update doctokenizer.l [view]
  • -
  • Updated copyright [view]
  • -
  • Use \newline i.s.o. \par for linebreaks in LaTeX [view]
  • -
  • Use hook arrow for hyphens in symbol names in the LaTeX output. [view]
  • -
  • Wrong UTF 8 codes [view]
  • -
  • Fix broken links to subpages in LaTeX output [view]
  • -
  • \xmlonly aoppeared twice in see also section of \htmlonly and \docbookonly [view]
  • -
  • add css-escape to avoid jquery based xss [view]
  • -
  • add parameter [view]
  • -
  • add search.py, a client for doxygen_sqlite3.db [view]
  • -
  • add space between br and / for better compatibility [view]
  • -
  • added option to have numbers in the bookmark pane (PDF output) [view]
  • -
  • config.l: dependency checks for booleans [view]
  • -
  • detect python2 as Python 2 binary [view]
  • -
  • fixed compile issue on Linux [view]
  • -
  • pass libclang header file location; add paths for Ubuntu's llvm-3.4 [view]
  • -
  • sqlite3: SQLITE_TRANSIENTs [view]
  • -
  • sqlite3: add new searches to search.py [view]
  • -
  • sqlite3: clear bindings on errors and more care with return [view]
  • -
  • sqlite3: extract more info [view]
  • -
  • sqlite3: fedora has libsqlite3.so in /usr/lib64 [view]
  • -
  • sqlite3: leave out insertMemberReference until xref location is valid [view]
  • -
  • sqlite3: remove some debug messages [view]
  • -
  • sqlite3: speedup the SELECTs [view]
  • -
  • sqlite3: updates [view]
  • -
  • sqlite3: use the new qtools API [view]
  • -
  • testsqlite3: a test for sqlite3gen [view]
  • -
  • util/patternMatch: break when pattern is found [view]
  • -
  • util/patternMatch: don't extract a QCString(QFileInfo) each time we QRegExp.match [view]
  • -
-

-

-

-Release 1.8.6

-

-(release date 24-12-2013) - -

-

Bug fixes

-
    -
  • Bug 154880 - if "using namespace" used, call of a static member function in C++ is not recognized or recognized wrong
  • -
  • Bug 647517 - make install prepends a slash to the installation path Removed superfluous /
  • -
  • Bug 668424 - HTML links in RTF output are broken
  • -
  • Bug 683897 - class list not sorted?
  • -
  • Bug 692004 - show includes for free functions
  • -
  • Bug 693537 - Create possibility to keep user comments in Doxyfile
  • -
  • Bug 701949 - Latex: Hyperlinks for \secreflist / \refitem
  • -
  • Bug 702265 - Generated Doxyfile differs from result of doxygen -u (partial fix)
  • -
  • Bug 705910 - Indexing and searching cannot treat non ASCII identifiers
  • -
  • Bug 706520 - Fortran: in body documentation lands on wrong place In some cases, in propriety code, with in body Fortran documentation doxygen crashed. I REOPENED Bug_706520 for this
  • -
  • Bug 706804 - Fortran: Doxygen mixes up function-attributes with the return type test string should not be equal to "function" but should contain "function"
  • -
  • Bug 706813 - RPM build via spec file fails
  • -
  • Bug 706874 - Doxygen crash if missing new-line in a snippet
  • -
  • Bug 706916 - C++ exception specifications are no longer parsed correctly
  • -
  • Bug 707102 - update the Japanese translation
  • -
  • Bug 707353 - Accept IDs using unicode(non ASCII) characters in python codes
  • -
  • Bug 707389 - GENERATE_TREEVIEW=YES disables touch scrolling with Android 3.x
  • -
  • Bug 707431 - Cannot @ref or @link C++ operator overloads
  • -
  • Bug 707483 - Wrong page number and header in pdf output
  • -
  • Bug 707554 - When I use @INCLUDE DoxyWizard is closed Current directory was not changed at the right time so the include files could not be found in the "current" directory (i.e. the directory where the Doxyfile resides too, as this directory is shown as the current directory in the doxywizard). This is also important when the doxywizard is started from a shortcut.
  • -
  • Bug 707567 - Asterisks in comment wrongly displayed for @code
  • -
  • Bug 707641 - `FILTER_SOURCE_FILES=YES` required to build CALL_GRAPHS https://bugzilla.gnome.org/show_bug.cgi?id=707641
  • -
  • Bug 707685 - Fortran: error message when missing last EOL In case the original buffer in either fixed or free format code does not contain an EOL as last character, add it.
  • -
  • Bug 707713 - Add support for dia diagrams
  • -
  • Bug 707825 - Const treatment
  • -
  • Bug 707925 - False warning for Java "warning: missing ( in exception list on member"
  • -
  • Bug 707985 - Strange output when : appended to an parameter description
  • -
  • Bug 707995 - @copydoc not working for const member overloads
  • -
  • Bug 708446 - Deprecated list breaks HTML tree with xhtml extension
  • -
  • Bug 708455 - Enabling INLINE_SIMPLE_STRUCTS messes up Data Structures in tree
  • -
  • Bug 708806 - Wrong path to graph_legend figure in graph_legend.html when CREATE_SUBDIRS = YES
  • -
  • Bug 709052 - Templated and non-templated method mixup documentation
  • -
  • Bug 709226 - Struct member fields not documented with INLINE_SIMPLE_STRUCTS
  • -
  • Bug 709526 - C++ parsing problem with operators <<, <, >, >> inside templates
  • -
  • Bug 709706 - Terminating C comments within markdown files breaks aliases
  • -
  • Bug 709780 - Copying of files via \image tag can get confused by symlinks at the destination
  • -
  • Bug 709803 - Generated hhc file contains an error for a section of a mainpage
  • -
  • Bug 709845 - Fortran: problem with types with name starting with is
  • -
  • Bug 709870 - Broken links on members HTML page when using BUILTIN_STL_SUPPORT
  • -
  • Bug 709921 - position of linebreak in template argument list affects inheritance relation
  • -
  • Bug 710917 - Segfault while parsing a C file
  • -
  • Bug 710998 - latex_count=5 is not enough
  • -
  • Bug 711004 - Vertical bars cannot be sent straight to makeindex
  • -
  • Bug 711097 - Compiler warnings because char is unsigned on ARM/PPC: "comparison is always false"
  • -
  • Bug 711378 - Nested Aliases fail when the nested alias has two or more arguments.
  • -
  • Bug 711639 - [PATCH] #include does not work with absolute paths
  • -
  • Bug 711723 - Comment /**/ confuses doxygen
  • -
  • Bug 711787 - Long initialization line in C stops doxygen An extra "breakpoint" in the input string has been created in the form of a , (comma), so for initialization lines the line will be shorter and the , (comma) will be copied later on.
  • -
  • Bug 712795 - segmentation fault in memberdef.cpp
  • -
  • Bug 712819 - Some external namespaces appear in list despite having ALLEXTERNALS = NO
  • -
  • Bug 715172 - Consistently document Fortran's equivalent function bodies
  • -
  • Bug 719389 - HTML escaping incorrectly applied in source tooltips
  • -
  • Bug 719422 - private java class is mentioned in inherited by list of super class
  • -
  • Bug 719463 - Invalid null key and segmentation fault
  • -
  • Bug 719489 - Label "abstract" instead of "pure virtual" for Java language
  • -
  • Bug 719525 - Can't build because the definitions of ***YY_flex_debug are missing.
  • -
  • Bug 719591 - expand_as_defined macro does not properly work
  • -
  • Bug 719639 - @xrefitem with empty heading string
  • -
  • Bug 720046 - Document inline objective-C blocks
  • -
  • Bug 720092 - USE_MDFILE_AS_MAINPAGE doesn't work if full path is specified.
  • -
  • Bug 720580 - inline source browser shows wrong code with multi-line c++11's raw strings
  • -
  • Add support for honoring svg image format preference in msc
  • -
  • Added @parblock and @endparblock commands
  • -
  • Added compile support for Mavericks
  • -
  • Added fix to avoid errors with older compilers.
  • -
  • Added generated files to gitignore
  • -
  • Added missing docs tag
  • -
  • Added missing pthread lib to doxyapp
  • -
  • Added missing space after @parblock
  • -
  • Added rudimentary support for Django like template system for output creation.
  • -
  • Added the possibility to specify the -d option in the Visual studio GUI on windows for the lex rules
  • -
  • Adjust internationalization part to current situation
  • -
  • Alignment of @code and @verbatim section When having a code and a verbatim section the boxes are not aligned, this patch fixes this. Example code, aa.c; standard Doxyfile: /** \file
  • -
  • Allow @ref to unlabeled markdown page by name, i.e. @ref mypage.md
  • -
  • Allow links to other markdown pages of the form [link text](page.md)
  • -
  • Avoid accessing uninitialized memory in fileToString
  • -
  • Build problem with unistd.h and Cygwin The standard g++ compiler under windows (win32-g++) has unistd.gh file; Microsoft windows does not have it, therefore it is better to use the winbuild directory in case of windows and no dependency otherwise
  • -
  • Consistency in language part of the documentation Made documentation more inline with other parts of the documentation (regarding the way e.g. filenames are presented) Corrected some spelling errors Corrected the warning in the language.doc by placing ta reference to the files from which language.doc is generated Corrected the color for the languages that are still v1.4.6 (language name now also red in stead of a pink background, was confusing with languages that were 1.5 / 1.6 compatible)
  • -
  • Corrected some inconsistencies in the comments
  • -
  • Debug output for lexical analyzer
  • -
  • Deleted generated files from source repository
  • -
  • Doxygen didn't allow @ref to parameters of type reference to an array.
  • -
  • Doxysearch under Cygwin should not have extension cgi.exe but just .cgi
  • -
  • Esperanto not supported by htmlhelp compiler reverting for Esperanto to default language (US English)
  • -
  • Fixed a number of compiler warnings reported by newer clang compiler
  • -
  • Fixed compilation issues in doxyapp
  • -
  • Fixed compile warning
  • -
  • Fixed compiler warning related to implicit size_t to int conversion
  • -
  • Fixed constness warning
  • -
  • Fixed invalid if statement found by cppcheck
  • -
  • Fixed issue with Romanian translator preventing treeview from working
  • -
  • Fixed regression autolinking C# template such as MyGenericClass<T>.g()
  • -
  • Fixed regression in argument matching for the template example
  • -
  • Fortran added keyword IMPURE
  • -
  • French translator up-to-date.
  • -
  • Internal documentation for debug possibilities Documentation regarding usage of -d option with [f]lex Initial documentation regarding the -d options with doxygen
  • -
  • LaTeX: Fix ToC entries of index/bibliography
  • -
  • Made lexer rule explicit
  • -
  • Make Python detection in configure work with version older than 2.7
  • -
  • Minor layout tweaks and extra guard
  • -
  • More fixes for the Windows build
  • -
  • Patch regarding generating the rules file for the windows build regarding languages, some inconsistencies in the (windows) build system, corrections to some spelling.
  • -
  • Regenerated language.doc
  • -
  • Removed Japanese characters in maintainers.txt as they break the build
  • -
  • Removed redundant backslashes in regexp pattern
  • -
  • Report details about fork() failure in logs.
  • -
  • Russian translator updated, new Russian maintainer added.
  • -
  • Small spelling correction to generate an rtf extensions file -> to generate a rtf extensions file
  • -
  • Some texts can be independent of \htmlonly / \latexonly
  • -
  • Space missing in error message. the word 'in' and the vale of filesOption were concatenated
  • -
  • This patch contains changes regarding the build system so that the *nix and Windows systems use the same information (consistency). Some use names routine names have been changed (from .l files with -P option) to reflect the file name that generated the routines, this makes it easier to create a general procedure. A number of include / header files are files are generated from different file types (html, xml, js), due some limitations of the windows build system the generated file names had to be changed (the extension in the windows build system is only available including the '.' so e.g. the file jquery_fx.js generates now jquery_fx.js.h instead of jquery_fx_js.h) In the windows version the creation of .cpp files from .l files has been adjusted to correct for the YY_BUF_SIZE problems. Furthermore on windows (and also used on *nix) some commends have been replaced with python scripts so that on windows only python is need (besides flex and bison). On *nix also perl is required for the generation using tmake.
  • -
  • Updated Visual Studio project files to include new source files
  • -
  • Usage of the -d option corrected Giving an error when a wrong -d option is given. Made some error messages more consistent. Corrected usage of the exit call, in case of an error: exit(1) otherwise exit(0). A closer look should be made on exitDoxygen as it does not contain any exit statements and it is unclear (to me) when it is used.
  • VHDL-2008 and arrays on unconstrained elements
  • -
  • consider currentFile when searching for global symbols
  • -
  • doc/language.doc generated from the updated sources (bgcolored)
  • -
  • doc/language.tpl -- UTF-8 reflected in the langhowto template
  • -
  • doc/language.tpl -- trailing spaces removed
  • -
  • doc/translator.py -- coloured status in HTML
  • -
  • doxygen /** style creates spurious code blocks with markdown enabled
  • -
  • doxygen version 1.8.5 throws many "Internal Inconsistency" errors when parsing .idl files
  • -
  • doxygen.sty.h was not ignored and not included/generated properly
  • -
  • testing dir was missing from 'make archive'
  • -
  • usage: make -d print dev doxygen options
  • -
-

-

-

-Release 1.8.5

-

-(release date 23-08-2013) - -

-

Changes

-
    -
  • Doxygen's source code is now managed using git and GitHub. Automatic builds - and regression tests are scheduled via Travis CI.
  • -
  • Configuration data for the config file, the documentation, and the wizard - are now produced from a single source (thanks to Albert)
  • -
  • All translation files have been migrated to UTF-8 (thanks to Petr Prikryl)
  • -
  • Added black box testing framework and a set of tests.
  • -
-

New features

-
    -
  • Added SOURCE_TOOLTIPS option for advanced tooltip support while source browsing.
  • -
-

Bug fixes

-
    -
  • Bug 668007 - HTML commands - documentation of </dd> tag missing
  • -
  • Bug 676879 - parameter on doxywizard manual Added sentence in respect to possible argument for doxywizard Added images to the LaTex / pdf version of the manual
  • -
  • Bug 684324 - Strange behavior when placing cite within brief.
  • -
  • Bug 688858 - SHORT_NAMES break references to \page in PDF output
  • -
  • Bug 691315 - Line breaks are not copied/displayed properly when using @copydoc.
  • -
  • Bug 691830 - Logical confusion with DISABLE_INDEX and GENERATE_TREEVIEW
  • -
  • Bug 694147 - #undef is ignored by doxygen
  • -
  • Bug 698998 - vhdldocgen fails to generate proper latex for VHDL record type
  • -
  • Bug 700385 - Incorrectly parsed Q_PROPERTY with 'unsigned int' type
  • -
  • Bug 700646 - XML output does not handle HTML entities in titles
  • -
  • Bug 700693 - Duplicate entry for class template member function with no parameter
  • -
  • Bug 700696 - Template static member functions duplicated as non-static public
  • -
  • Bug 700709 - typedef warning when "using" some operator functions
  • -
  • Bug 700710 - Docbook output produces invalid XML for <programlisting> elements
  • -
  • Bug 700740 - Doxygen does not create links on C++ 11 style enum classes
  • -
  • Bug 700788 - support @cite within brief description.
  • -
  • Bug 700908 - code after \@cond is removed
  • -
  • Bug 701295 - Doxygen 1.8.4 goes into an endless loop
  • -
  • Bug 701314 - URLs are not created on C# classes in some cases
  • -
  • Bug 701550 - Error List window in Visual Studio no longer recognizes doxygen warnings
  • -
  • Bug 701771 - EXPAND_AS_DEFINED not working with some project structures
  • -
  • Bug 701919 - VHDL cross-references fail when unpaired apostrophe present
  • -
  • Bug 702066 - VHDL: Bad HTML formatting when using inline sources
  • -
  • Bug 702170 - Missing space before optional option in method argument list
  • -
  • Bug 702189 - Markdown and @image
  • -
  • Bug 702491 - UTF-16LE BOM not handled by source browser and \snippet
  • -
  • Bug 702590 - Crash with TAB_SIZE=-1
  • -
  • Bug 702676 - Closing ) of function in function documentation is in wrong color
  • -
  • Bug 703574 - Add configure options to enable static SQLite and non-standard SQLite
  • -
  • Bug 703112 - Backward documentation comments are not allowed in Fortran type-bound procedures
  • -
  • Bug 703133 - "operator--()" transformed to "operator&ndash;()" in @copydoc
  • -
  • Bug 703170 - Segmentation fault parsing a fortran file
  • -
  • Bug 703213 - Can't use @ref instead of \ref with msc
  • -
  • Bug 703301 - Misleading warning about DOT font
  • -
  • Bug 703791 - Out-of-line docs for class template specialisations failing
  • -
  • Bug 704079 - Generated XML is malformed
  • -
  • Bug 704172 - Nested Aliases fail when the nested alias has two or more arguments.
  • -
  • Bug 704412 - doxygen don't hide private Inherited Members
  • -
  • Bug 704971 - Can't build with MinGW
  • -
  • Bug 704973 - Doxywizard can't show file names using non-ASCII(Unicode)
  • -
  • Bug 705190 - Incorrectly parsed Q_PROPERTY with 'long long' or 'long int' type
  • -
  • Bug 705217 - Can't use unicode characters to execute external commands
  • -
  • Bug 705218 - QRegExp doesn't work with 80-FF
  • -
  • Bug 705219 - Accept IDs using unicode for C/C++ preprocessor
  • -
  • Bug 705586 - @code tag as the last line of a comment block causes the parser to hang
  • -
  • Bug 705702 - Post-comment blocks on C++11 using definitions attach to following entity
  • -
  • Bug 706236 - Confusing use of GENERATE_TAGFILE
  • -
  • Bug 706520 - Fortran: in body documentation lands on wrong place
  • -
  • Small typo corrected in doxywizard_usage.doc Generated config.doc file in git is not identical to the generated one
  • -
  • Various improvements to the (still experimental) sqlite3 support (thanks to Adrian Negreanu)
  • -
  • jquery: use the env MINIFIER if specified
  • -
  • Some words now in code style __attribute__ was seen (markdown) as the bold word attribute Reformulation of a sentence due to a not nice split of word (__declspec was split directly after __ in pdf)
  • -
  • Extended list with supported options for automatic link generation
  • -
  • Added -v option (analogous to --version). In case option started with -- and is not a known value (help or version) and error is given instead of starting doxygen
  • -
  • Fixed regression when nested class were processed before their parent
  • -
  • Minor changes to the way the code for config options is generated (thanks to Albert for the patch)
  • -
  • Brief description did not appear in the page index, when a page did not have any details.
  • -
  • Using & in the project name caused invalid HTML and LaTeX output
  • -
  • Fixed regression caused by the patch for bug 705219
  • -
  • Fixed issue running dot on files with non-ascii characters
  • -
  • Delayed expanding the HTML navigation tree until after the page has loaded
  • -
  • Made some fixed to the configure script for Cygwin (thanks to David Stacey)
  • -
  • config.xml is now used to generate configoptions.cpp and config.doc
  • -
  • Fixed whitespace issue when using \overload without arguments
  • -
  • Avoid space in the output after \n command following by a newline.
  • -
  • Fixed problem handling C comments inside a \code block.
  • -
  • Improved handling of \internal and \endinternal
  • -
  • Removed extra newline when reading in an input file
  • -
  • Make XML output adhere to MAX_INITIALIZER_LINES
  • -
  • Fixed issue handling \elseif after \ifnot
  • -
  • Fixed regression that could cause double nested classes
  • -
  • Fixed issue handling \docbookonly..\enddocbookonly section
  • -
  • The language specifier in e.g. \code{.py} was ignored for the XML output
  • -
  • Fix reference to scoped enum imported via a tag file.
  • -
  • Replaced utf8 character that broke latex compilation of the manual
  • -
  • Fixed unused parameter warnings
  • -
  • Add support for writing and importing C++11 style enums to and from tag files
  • -
  • Fixed regression introduced by fixed bug 700740
  • -
  • Fixed type in function name
  • -
  • Remove some unneeded and still enabled debug info
  • -
  • Included fix for "Constant Groups" regression on file pages (thanks to Michael Stahl)
  • -
  • Add scopes to Fortran prototype name parsing (thanks to Oleg Batrashev).
  • -
  • Prototype scan for function, does not yet catch parameter types (thanks to Oleg Batrashev).
  • -
-

-

-

-Release 1.8.4

-

-(release date 19-05-2013) - -

-

Changes

-
    -
  • id 686384: When INLINE_SIMPLE_STRUCTS is enabled, also structs with - simple typedefs will be inlined.
  • -
  • Doxywizard: scrolling with mouse wheel no longer affects the values in - the expert view.
  • -
  • id 681733: More consistent warnings and errors.
  • -
-

New features

-
    -
  • Added support for "clang assisted parsing", which allows - the code to also be parsed via libclang (C/C++ frontend of LLVM) - and can improve the quality of the syntax highlighting, cross-references, - and call graphs, especially for template heavy C++ code. To enable - this feature you have to configure doxygen with the --with-libclang - option. Then you get two new configuration options: CLANG_ASSISTED_PARSING - to enable or disable parsing via clang and CLANG_OPTIONS to pass additional - compiler options needed to compile the files. Note that enabling this feature - has a significant performance penalty.
  • -
  • Included patch donated by Intel which adds Docbook support. - This can be enabled via GENERATE_DOCBOOK and the output location can - be controlled using DOCBOOK_OUTPUT. Docbook specific sections can be - added using \docbookonly ... \enddocbookonly
  • -
  • Added support for UNO IDL (interface language used in Open/Libre Office), thanks to - Michael Stahl for the patch.
  • -
  • Included patch by Adrian Negreanu which stores data gathered by - doxygen in a sqlite3 database. Currently still work in progress and - can only be enabled using --with-sqlite3 during ./configure.
  • -
  • For interactive SVG graphs, edges are now highlighted when hovered by - the mouse.
  • -
  • Include patch by Adrian Negreanu to show duration statistics after a run. - You can enable this by running doxygen with the "-d Time" option.
  • -
  • Included patch by Markus Geimer which adds a new option - LATEX_EXTRA_FILES which works similarly to HTML_EXTRA_FILES in that - it copied specified files to the LaTeX output directory.
  • -
  • id 698223: Added support for C++11 keyword alignas
  • -
  • id 693178: Added support for processing DocSets with Dash (thanks to - Bogdan Popescu for the patch
  • -
  • id 684782: Added option EXTERNAL_PAGES which can be used to determine - whether or not pages importated via tags will appear under related - pages (similar to EXTERNAL_GROUPS).
  • -
  • id 692227: Added new MathJax command MATHJAX_CODEFILE which supports - including a file with MathJax related scripting to be inserted before - the MathJax script is loaded. Thanks to Albert for the patch.
  • -
  • id 693537: Comments in the config file starting with ## will now be - kept when upgrading the file with doxygen -u (and doxygen -s -u). - Thanks to Albert for the patch.
  • -
  • id 693422: Adds support for Latvian (thanks to a patch by Lauris).
  • -
  • Included language updates for Ukrainian, Romanian, and Korean
  • -
-

Bug fixes

-
    -
  • id 145294: Fixed parse issue when using less than inside a template - argument.
  • -
  • id 325266 man page output was missing a linebreak before .SH when - definition a group with a section.
  • -
  • id 338205: @anchor were wrong when CREATE_SUBDIRS was enabled.
  • -
  • id 427012: Putting a @todo in front of an anonymous namespace caused - bogus entry in the todo list.
  • -
  • id 564462: Fixed alignment issue with tabs and multibyte characters.
  • -
  • id 567542: Character entities in titles were not rendered correctly - in the HTML navigation tree.
  • -
  • id 571561: No space between * and tag (e.g. \endcode) made parser - misbehave
  • -
  • id 583233: Included patch to limit generated Doxyfile comments to 80 - columns
  • -
  • id 592626: Fixed off-by-one with MAX_DOT_GRAPH_DEPTH.
  • -
  • id 619790: Improved linking to template specializations. - Thanks to David Haney for the patch.
  • -
  • id 627712: Doxygen Header in C Files makes empty Lines in HTML Source - Code when starts in Line 1
  • -
  • id 639954: Fortran: array constructors with brackets were not correctly - recognized.
  • -
  • id 646428: The generated man pages had a .PP just before the subject - description
  • -
  • id 646431: On generated manpages the return section is incorrectly - indented
  • -
  • id 650004: use \page now generates a man page were the . is not - replaced by _8.
  • -
  • id 657704: Fixed issue with PROJECT_LOGO when using backslashes in - the path.
  • -
  • id 666008: Fortran: Using @var at module level didn't work. - expect a file/path name.
  • -
  • id 673218: Replaced "echo -n" with "printf" in the configure script.
  • -
  • id 674856: Removed warning when using \endinternal
  • -
  • id 675607: Added &, @, and # as allowed characters for commands that
  • -
  • id 679626: Included patch by Abert to correctly link pages in the manual
  • -
  • id 681874: Added support for single column Markdown tables.
  • -
  • id 682369: Incomplete documentation on doxygen -w latex
  • -
  • id 683516: Doxygen crashed when structural commands (like \var) appeared - in .md files.
  • -
  • id 686259: Fixed character encoding problem when multibytes characters - were used in anchors.
  • -
  • id 691071: Documentation before an anonymous member did not appear.
  • -
  • id 692162: Fixed Markdown related indentation problem.
  • -
  • id 692320: Regression: Text after @copydoc was not visible anymore.
  • -
  • id 692537: Linked to external pages was done using the page label - rather than the file name.
  • -
  • id 693331: build using ./configure ; make did not work if the path - contained a space.
  • -
  • id 693406: Tag files are now identfied by the full path instead of - only the name of the tag file.
  • -
  • id 694376: In some cases members were missing from the tag file.
  • -
  • id 694027: Fortran: derive intent from documentation in case no - intent is specified
  • -
  • id 694610: Warning was not reported at the correct line in two cases.
  • -
  • id 694631, 694632: @cond..@endcond did not work properly for removing - macro definitions.
  • -
  • id 694685: Fixed crash when adding two different functions with the - same name to the same group.
  • -
  • id 694726: VHDL: fixed issue generating LaTeX output.
  • -
  • id 695277: Fortran: improved handling of protected statement
  • -
  • id 695974: Fortran: Fixed issue resulting in - "Stack buffers nested too deeply" error.
  • -
  • id 696708: @cond was not handled properly by the preprocessor.
  • -
  • id 697233: @copyright command did not end a brief description.
  • -
  • id 697249: Markdown tables caused errors reported at wrong line number.
  • -
  • id 697494: Removed double entry from the messages produced by doxygen.
  • -
  • id 698818: Fixed problem handling @cond for #define's
  • -
  • id 698007: Fixed potential crash when searching files.
  • -
  • id 696925: #include's inside namespace could result in duplicate entries.
  • -
  • id 696954: Doxywizard: Labels of items are now also grayed out - when an item is disabled (thanks to Albert for the patch).
  • -
  • id 699195: Changed Markdown page label to support multiple .md files - with the same name.
  • -
  • id 699218: Fixed issue with margin computation in resize.js.
  • -
  • id 699381: Lonely h4,h5,h6 end tag caused assert.
  • -
  • id 699437: Trailing comments were not always rendered properly if - MARKDOWN_SUPPORT was enabled.
  • -
  • id 699460: Updated doxygen man page (thanks to Manuel for the patch).
  • -
  • id 699464: Added reference to \xmlonly and \docbookonly in \htmlonly
  • -
  • id 699731: LaTeX: switch to using the xtabular package instead of - longtable to prevent overfull vbox errors.
  • -
  • id 699732: Template parameters and Exceptions were rendered differently - than Parameters and Return Values in the LaTeX output.
  • -
  • id 700153: Tcl: Fixed crash when parsing certain Tcl code.
  • -
  • id 700345: Comment blocking ending with ///// made slashes appear in - the output.
  • -
  • id 700456: Added support for separating auto list items with an - empty paragraph.
  • -
  • Included a couple of VHDL fixes (thanks to Martin Kreis for the patch)
  • -
  • \include and \includelineno both showed line numbers.
  • -
  • Putting '// @endverbatim' inside a C comment block was not handled - properly by the preprocessor.
  • -
  • Fixed various typo's in the manual and improved cross referencing - (thanks to Albert and Guillem Jover for their help)
  • -
  • Added a couple of missing configuration dependencies.
  • -
-

-

-

-Release 1.8.3.1

-

-(release date 20-01-2013) - -

-

Changes

-
    -
  • Changed to way the search results for multiple projects can be linked - together. A project is now no longer identified by the tag files name but - via new option EXTERNAL_SEARCH_ID giving a bit more flexibility.
  • -
  • Disabled the disk cache for member data. Allows removing quite some complexity - in doxygen and is not really needed now that 64bit systems with >4GB RAM - are becoming more common. Let me know if you think you benefit from this caching.
  • -
  • id 691607: Using $relpath$ in a custom footer could lead to ambiguities - when followed by a name that could also be a marker, like 'search'. - Now $relpath^ should be used instead. $relpath$ is still supported for - backward compatibility.
  • -
-

New features

-
    -
  • You can now use EXTENSION_MAPPING on files without any extension using - no_extension as placeholder (thanks to Jason Majors for the patch).
  • -
  • To make navindex section inside a layout file that links to - a specific URL you can use usergroup with the url attribute.
  • -
  • To make navindex section without any link inside a layout file you - can use usergroup with special title [none].
  • -
-

Bug fixes

-
    -
  • id 644350: Fortran: Included patch to improve parsing line continuation - characters.
  • -
  • id 645423: Fortran: added support for protected attribute
  • -
  • id 682550, 691315: When using @copydoc, paragraphs breaks did not appear - in the copied documentation.
  • -
  • id 686581: Fortran: handle single quotes in normal Fortran comment.
  • -
  • id 686689, 691335: Scope of forwardly declared template class was lost - in the output.
  • -
  • id 689713: Tcl: Inline source code was not rendered correctly.
  • -
  • id 690787: Fixed case were a cyclic inheritance relation could crash - doxygen.
  • -
  • id 690831: Using @subpage in a -# style list was not handled properly.
  • -
  • id 691000: For a mainpage without title the project name is now shown as - the title in the XML output.
  • -
  • id 691277: The generated list of citations is now no longer included in - the tag file.
  • -
  • id 691073: Documenting strongly typed enum values outside of the enum - did not work.
  • -
  • id 691310: Python: = was missing in the output for variable assignment.
  • -
  • id 691323: Doxygen could crash when creating inline msc graphs.
  • -
  • id 691340: Members didn't have a More.. link to jump to detailed docs.
  • -
  • id 691602: Doxygen did not probably distinguish between two template
  • -
  • id 691798: regression: C++ style comments that started with a line of - slashes did not get processed correctly anymore.
  • -
  • id 692031: Fixed parse error when left shift operator occurred as a - default parameter. - members or functions that only differ in the return type.
  • -
  • Setting SEARCH_INCLUDES to NO resulted in no include graphs and no - include files being listed in the output.
  • -
  • Improved support for MinGW (thanks to a patch by Brecht Sanders).
  • -
  • Removed the Graphviz/dot dependency when building the doxygen - documentation.
  • -
  • Anchors to sub pages were wrong in the XML output.
  • -
  • Included VHDL patch by Martin Kreis that improves the flow chart - generation.
  • -
  • corrected several code pages and fontsets for proper RTF output for - a number of languages such as Greek.
  • -
-

-

-

-Release 1.8.3

-

- -(release date 26-12-2012) -

-

Changes

-
    -
  • Expanding the tree in an index page of the HTML output, will now - expand only one level instead of the whole sub-tree (thanks to - Pez Cuckow for the patch).
  • -
  • A blockquote in Markdown does no longer require a whitespace - after the last '>' if the '>' is followed by a newline.
  • -
  • id 682718: Included patch to add version info to all generated - template files (headers, footers, stylesheets, layout files, etc).
  • -
-

New features

-
    -
  • Added support for using external tools to index and search through - the HTML documentation. An example index tool is provided (doxyindexer) - and an example search engine (doxysearch.cgi). - To configure the external search engine the following new options - are added to the configuration file: EXTERNAL_SEARCH (to enable the - feature), SEARCHENGINE_URL (to specify the URL of the search engine), - SEARCHDATA_FILE (to specify the name of the raw search data to index), - EXTRA_SEARCH_MAPPINGS (for search through multiple projects). - See the manual for details.
  • -
  • Added USE_MDFILE_AS_MAINPAGE config option to select a markdown page to - be used as the main page.
  • -
  • id 630645: This patch (contributed by Albert) adds support for - simple logic expressions for \cond, \if, and friends, i.e. you can do - \if (SOME_SECTION_NAME && (!THIS_ALTERNATIVE || THAT_ALTERNATIVE))
  • -
  • id 684152: Patch (contributed by Albert) adds a new configuration - option MATHJAX_FORMAT to select the MathJax output format. Options are - HTML-CSS, NativeMML, or SVG.
  • -
-

Bug fixes

-
    -
  • id 670853: Fixed compile issues with 0 to QCString cast for - old compilers.
  • -
  • id 678139: A class A deriving from another class B inside a namespace - not known to doxygen, caused class B to appear in the global scope.
  • -
  • id 681209: Fixed problem processing .bib files when they were located - in a path containing spaces.
  • -
  • id 681830: Using \addindex in a page will now produce a link to the - word, instead of the start of the page.
  • -
  • id 681831: The TREEVIEW_WIDTH option did not have any effect.
  • -
  • id 681898: Jumping from a level 3 section to a level 1 section did - not appear correctly in the page TOC.
  • -
  • id 681976: C++11: Improved handling of noexcept expressions, e.g.: - Test() noexcept ( noexcept(T::T()) ) = default;
  • -
  • id 682048: Improved SIGINT handling when running multiple dot instances.
  • -
  • id 682602: Fixed problem processing .bib files when using a non default - output directory.
  • -
  • id 682713: Comment for IDL_PROPERTY_SUPPORT in the config file template - did not have line wrapping.
  • -
  • id 682728: Setting SHOW_FILES to NO prevented call graphs from being - generated.
  • -
  • id 682740: Fortran: In initialization statement the "=" was missing
  • -
  • id 683284: Fortran: ALIASes where not replaced in !! and !< comments.
  • -
  • id 683976: Added meta tag "generator" to HTML output (thanks to - Albert for the patch).
  • -
  • id 684781: Sections of the main page did not appear in the - navigation tree until the main page had sub pages. - Also fixed bug in treeview that caused mainpage with title and - sections to appear at the same level as the sections.
  • -
  • id 685125: Doxygen could select the wrong overloaded method when - the only difference in parameter types was the template type of - a typedef.
  • -
  • id 685181: Inheriting member documentation did not work in combination - with Java interfaces.
  • -
  • id 685623: Enum values did not appear in the detailed documentation - when using C++11 style enums.
  • -
  • id 685879: Even though HIDE_UNDOC_MEMBERS was enabled, the navigation - still showed undocumented members.
  • -
  • id 685940: Fixed back button behaviour when using the navigation tree.
  • -
  • id 686284: Added anchors to refs in the index.qhp TOC.
  • -
  • id 686826: Added XML declaration to index.qhp TOC.
  • -
  • id 686956: When a class and its base class has the same nested class, - the collaboration diagram could point to the wrong class.
  • -
  • id 686983: Comments inside a function macro parameter appeared before - the expanded macro, instead of being treated as part of the parameter.
  • -
  • id 687301: Allow minus in the name of a HTML attribute.
  • -
  • id 687572: Code fragments were wrapped too early in the latex output.
  • -
  • id 688226: Fixed Qt version number in ./configure --help text.
  • -
  • id 688463: Included patch to prevent processing identifiers starting - with _ or __ as markdown.
  • -
  • id 688531: Horizontal ruler inside paragraph caused missing </p>
  • -
  • id 688542: Using "usergroup" in the layout.xml caused missing <div>
  • -
  • id 688739: Fixed problem with user defined entries in the eclipse help - index (thanks to Rene Papenhoven for the fix).
  • -
  • id 688647: Fixed problem parsing initializer list with C++11 style - uniform types.
  • -
  • id 689341: \if around list item preceded by whitespace caused wrong - list in the output.
  • -
  • id 689461: Correct link in documentation of SIP_SUPPORT option.
  • -
  • id 689720: Fixed bug that could prevent refman.tex from being generated.
  • -
  • id 689833: Fixed missing space in Chinese translation.
  • -
  • id 690093: Files added via HTML_EXTRA_STYLESHEET did not correct refer - to files that where placed in a subdirectory.
  • -
  • id 690190: Searching for multibyte characters did not work with the - server based search engine.
  • -
  • id 690250: Fixed case where line numbers got out of sync with the code.
  • -
  • id 690341: First member of an anonymous C++11 style enum was not shown - properly.
  • -
  • id 690385: Fixed case where _'s where falsely converted to Markdown - emphasis.
  • -
  • id 690403: Title not used when \ref'ing to a \section imported via - a tag file.
  • -
  • id 690418: Behavior of @cond was accidentally reversed by new expression - parser.
  • -
  • id 690602: Fixed problems handling @cond inside /// comments.
  • -
  • id 690629: Fixed case where doxygen would during preprocessing.
  • -
  • id 690685: A file specified using HTML_EXTRA_STYLEHSHEET did not end - up in the Qt Help index.
  • -
  • Improved the way enum's are rendered in the HTML output.
  • -
  • When inlining structs (INLINE_SIMPLE_STRUCTS=YES) a <p> was missing - for members with a detailed description, causing invalid XHTML.
  • -
  • Fixed problem loading the navigation tree when using .xhtml as the - file extension.
  • -
  • The navigation tree was not always correctly positioned upon initial - load when using Chrome.
  • -
  • HTML Navigation tree showed static members even when EXTRACT_STATIC was - set to NO.
  • -
  • Same word could appear multiple times in the match list for an entry - in the search results when using server based search.
  • -
-

-

-

-Release 1.8.2

-

- -(release date 11-08-2012) -

-

Changes

-
    -
  • Using a fenced block (~~~~) in Markdown without explicit extension will - now be interpreted as a @code..@endcode block instead - of @verbatim..@endverbatim.
  • -
  • Classes inheriting from an class that is outside the scope of doxygen - are still shown in diagrams. This does not hold for usage relations.
  • -
-

New features

-
    -
  • Added support for C++11: -
      -
    • strongly typed enums, e.g.: -
      enum class E
    • -
    • enums with explicit type, e.g.: -
      enum E : unsigned int { ... }
    • -
    • id 678097: added support for final keyword on classes and methods.
    • -
    • support for override keyword for methods.
    • -
    • nullptr is new a type keyword in code fragments.
    • -
    • support for variables with initializer lists, - e.g.:
      const int var {10};
    • -
    • support for trailing return types, - e.g.:
      auto foo() -> Bar;
    • -
    • id 672372: added support for template aliases, - e.g.:
      template<typename T> using A = B<T>;
    • -
    • support for C++11 variadic templates, - e.g.:
      template<typename... Values> class C;
    • -
    • support for documenting template class declarations.
    • -
    • id 680098: static_assert(...); inside a class is now ignored.
    • -
    • id 679740: Add support parameters with default lambda functions, - e.g.:
      int foo(int i, std::function<int(int)> f = [](int x) -> int { return x / 2; })
    • -
    • default initializers for non-static data members, - e.g.:
      class C { public: int x = 4; int y {6}; int z = y*func(); };
    • -
    • support for decltype as a way selecting a type for a variable, - e.g.:
      int x; decltype(x) y;
    • -
    • support for new string literals, - e.g.
      u8"utf8", u"utf-16", U"utf-32", L"wchar"
    • -
    • support for raw string literals (with and without user defined - delimiter), - e.g.
      R"(some"thing)", u8R"raw(some)"thing)raw"
    • -
    • support for explicitly deleted and defaulted special members - (=default and =delete).
    • -
  • -
  • Made several improvements to the way Objective-C categories and protocols - are handled: -
      -
    • Class extensions are now treated as part of the class, whereas - categories are listed separately.
    • -
    • Fixed parse problem where category had a { } section.
    • -
    • Fixed parse problem for categories that implemented protocols.
    • -
    • Fixed render bug for protocols in class diagrams.
    • -
    • Attributes with the same name as a method are now no longer matched.
    • -
    • Internal properties are now also marked with [implementation]
    • -
    • Members of categories are shown in the class they extend as well, and - cross reference links are made between these members.
    • -
    • Class extension implementing protocols are now shown as protocols - inherited by the class itself, including the "Implemented by" relation.
    • -
  • -
  • Added option HTML_EXTRA_STYLESHEET which allows adding an additional - stylesheet without completely replacing doxygen.css.
  • -
  • Added option AUTOLINK_SUPPORT which can be used to enable/disable - autolinking globally.
  • -
  • Included language updates for Czech, Spanish, Greek, Slovak, and - Esparanto.
  • -
-

Bug fixes

-
    -
  • Fixed render glitch where template member of a base class was not - properly hidden in the derived class.
  • -
  • Privately nested classes no longer appear in the declaration section - of their parent if EXTRACT_PRIVATE is disabled.
  • -
  • In the declaration section the separator line was in between the - member and its brief description.
  • -
  • Fixed a couple of compiler warning with the new XCode 4.4 compiler.
  • -
  • Added compilation support for Mountain Lion (Mac OS X 10.8).
  • -
  • id 679631: Nested namespaces did not appear in the namespace list if the - parent namespace was undocumented.
  • -
  • id 680227: Fixed some spelling errors in the code comments.
  • -
  • id 680398: Fortran: comma at begin of argument list description in - case of implicit type
  • -
  • id 680405: Fortran: Entities on line with USE, ONLY were not hyperlinked - in code.
  • -
  • id 680408: Fortran: handle carriage return in non terminated strings.
  • -
  • id 680492: Using Markdown formatting in @todo/@bug/.. like descriptions - did not work.
  • -
  • id 680575: Fixed potential crash when <code> appeared inside <summary> - for C# code.
  • -
  • id 680697: \xrefitems of the same type are not grouped together under - the same heading (just like \todo and friends).
  • -
  • Fixed case where full directory path was shown even though - FULL_PATH_NAMES was set to NO.
  • -
  • id 680709: HTML output of template-derived classes contained unescaped - characters.
  • -
  • id 679963: "Class Index" appeared twice in the PDF TOC, Index at the - end did not appear at all.
  • -
  • In a declaration no link was created when referring to a class inside - an undocumented namespace imported via a tag file.
  • -
  • id 681281: Make default for TAB_SIZE 4 and added remark in Markdown - section of the manual about the effect of TAB_SIZE on code block - processing when using tabs in the comment block.
  • -
  • id 681023: Project logo was not included in the Qt help output.
  • -
  • id 680992: Fixed a couple of typos in the comments.
  • -
  • id 681350: Fixed a problem with Markdown processing of a @code block - inside an indented /// style comment.
  • -
  • id 679928: Disabled section level correction for Markdown pages as - it was confusing.
  • -
-

-

-

-Release 1.8.1.2

-

- -(release date 12-07-2012) -

-

Changes

-
    -
  • doxygen now strips the leading indentation shared by the lines in a - @code..@endcode block.
  • -
  • id 678218: Changed title of the SVG graphs from 'G' to the root node - of the graph.
  • -
-

New features

-
    -
  • Added button in the navigation tree to allow enabling/disabling - syncing the navigation tree with the content.
  • -
  • Extended the number of HTML entities with Greek letters and other - symbols (thanks to Charles Karney for the patch).
  • -
  • id 663645: Added support for C++11 strongly typed enums - (enum class E { ... }).
  • -
-

Bug fixes

-
    -
  • id 590518: Added missing class member initialization to a - class in doxmlparser and made the library compile again.
  • -
  • id 667678: Added support for Obj-C property attribute "unsafe_retained".
  • -
  • id 674842, 676984: Unmatched quote in a comment prevented alias expansion.
  • -
  • id 676019: Fixed another case where local include path did not appear - correctly in the class documentation.
  • -
  • id 676966: Fortran: Some keyword were not colored in the source view.
  • -
  • id 676981: Fortran: Argument type was wrong type of in case of out of - place !> comment
  • -
  • id 677935: Included patch to fix problem compiling for x86 release on - Windows.
  • -
  • id 677992: Section without title could result in an invalid Qt Help - index.
  • -
  • id 678022: Anonymous enum could result in an invalid Qt Help index.
  • -
  • id 678102: Superfluous trailing comma in javascript - prevented navigation tree to load in IE7.
  • -
  • id 678177: a + at the start of a line inside a <pre> block, - triggered the start of a list. Also -- and --- where not kept untouched - inside a <pre> block.
  • -
  • id 678180: ndash (--) appearing in a brief description could lead - to invalid SVG images.
  • -
  • id 678288: -- and --- inside a Markdown code block were not handled - properly.
  • -
  • id 679331, 675766: In body documentation with a different indentation then the - main documentation was not rendered correctly (MARKDOWN=YES).
  • -
  • id 679436: Using an escaped pipe symbol in a Markdown table did not get - unescaped in the output.
  • -
  • id 679533: Code fragments did not appear properly in the doxygen manual.
  • -
  • id 679615: Added missing delete call in a piece of debugging code.
  • -
  • id 679626: Fixed some navigation issues in the manual
  • -
  • Not all inherited members appeared in the "Additional inherited members" - list.
  • -
  • Link to call after "Inherited members" was not correct when - CREATE_SUBDIRS was enabled.
  • -
  • New VHDL diagram was not generated if the path contained spaces.
  • -
  • Fixed a couple of problems handling Objective-C categories.
  • -
-

-

-

-Release 1.8.1.1

-

- -(release date 10-06-2012) -

-

Changes

-
    -
  • Integrated the root navigation tree in navtree.js for faster loading.
  • -
  • When the navigation tree is enabled, clicking jump to a line in - the source code view will now highlight the line.
  • -
-

New features

-
    -
  • VHDL code now has a new Design Overview page (thanks for Martin Kreis - for the patch). Requires HAVE_DOT=YES, and DOT_IMAGE_FORMAT=svg.
  • -
  • id 677678: Added support for strong and weak attributes in Objective-C - properties.
  • -
-

Bug fixes

-
    -
  • id 618462: Fortran: Appearance of comments in the HTML output - are now customizable via CSS again.
  • -
  • id 673660: <code> inside a <summary> or <remarks> section is now treated - as @code (was already the code for C#).
  • -
  • id 673921: When a comment started at indent >= 4 after a /** and - continued at the same indent without leading * after a blank line, - the continued part appeared at as a code block when Markdown was enabled.
  • -
  • id 675036: If a file was not indexed, the navigation tree became empty.
  • -
  • id 676019: Include path using quotes did not work as documented.
  • -
  • id 676877: @warning did not end at blank line when followed by - a numbered list.
  • -
  • id 676902: An anonymous namespace could introduce an invalid entry in - the navigation list.
  • -
  • id 676948: Breadcrumb navigation path had wrong links when - CREATE_SUBDIRS was enabled.
  • -
  • id 677315: Fixed case where function was incorrectly detected as a - variable.
  • -
  • id 677589: Fixed typo in the documentation of the LAYOUT_FILE option.
  • -
  • id 677771: Fixed visual misalignment for first argument.
  • -
  • The "arrow out" button in interactive SVG did not work when - served from a web server, due to the use of an absolute path.
  • -
  • If a declaration was too wide for a page, the content in HTML spilled - over the boundary of its box, which looked ugly.
  • -
  • Empty lines in a code fragment were collapsed.
  • -
  • Navigation tree entries of the hierarchy appeared under class index as - well.
  • -
  • Grouped globals and enum values were not added to the navigation index.
  • -
  • Inlined class were not properly shows in the navigation index.
  • -
  • Documented class in undocumented namespace did not show up in - class list and navigation tree.
  • -
  • ALLEXTERNALS=YES did not show all external classes in the class list.
  • -
  • External reference via URL did not work for new - "Additional Inherited Members" section + inherited from class link.
  • -
  • Objective-C protocols and C# generics were not index and listed - properly in the navigation tree and indices.
  • -
  • Undocumented files could produce a broken link in the navigation tree.
  • -
  • Additional Inherited Members could turn up empty of all members of - the inherited class were grouped and SUBGROUPING was set to NO.
  • -
-

-

-

-Release 1.8.1

-

- -(release date 19-05-2012) -

-

Changes

-
    -
  • Changed the way indexes (Class,File,Namespace,Groups) are rendered: -

    - There are now shown in a uniform way in the HTML output as a tree. - Trees can be expanded and collapsed interactively - (this makes USE_INLINE_TREES obsolete). -

    - The class list now also shows namespaces and nested classes. - The file list now also shows directories (this makes SHOW_DIRECTORIES - obsolete). -

    - Member sections are now each rendered in a separate table. - This makes the HTML_ALIGN_MEMBERS option obsolete. -

    -Note: If you use a custom header for the HTML output (HTML_HEADER) -make sure you add the following: -

    -
    -<script type="text/javascript" src="$relpath$jquery.js"></script>
    -<script type="text/javascript" src="$relpath$dynsections.js"></script>

    - Otherwise the interactivity of the trees does not work. -

    -
  • -
  • Included a couple of performance improvements (thanks to Dirk Reiners)
  • -
  • Changed the way member attributes (like protected, virtual, and static) - are rendered in the HTML output.
  • -
  • Changed the look of the source code output.
  • -
  • Included language updates for Chinese, Czech, German, Esperanto, - Italian, Slovak, Spanish, Hungarian, and Polish.
  • -
  • Syntax highlighting in source code fragments is no longer dependent - on LATEX_SOURCE_CODE being set to YES.
  • -
  • Added natural scrolling for tablet devices (like the iPad) - when using the treeview.
  • -
  • For interactive SVGs the print button has been replaced by a - "arrow out" button that opens the original non-interactive SVG in a - new window for easy printing or saving.
  • -
  • id 661499: Long names are now wrapped in the dot nodes to avoid - very wide graphs.
  • -
-

New features

-
    -
  • id 666527: Added support for <inheritdoc/> C# XML command - (thanks to John Werner for the patch).
  • -
  • id 670965, Added support for resolving environment variables of the - form $(PROGRAMFILES(X86)) inside the config file
  • -
  • Doxygen now shows Objective-C properties in collaboration diagrams - (thanks to Sven Weidauer for the patch).
  • -
  • Added ability to search for group or page titles.
  • -
  • Inherited class members are now shown as expandable sections in the - member overview (default is collapsed). Each section is rendered as - a table.
  • -
  • id 674349: Included build support for NetBSD.
  • -
  • A -- will now be rendered as an 'en dash', similarly, --- will produce an - mdash.
  • -
-

Bug fixes

-
    -
  • id 523156: Fortran: Prefix of routines got stripped.
  • -
  • id 666088: Include VHDL patch (thanks to Martin Kreis).
  • -
  • id 670235: Fixed include guard detection problem when using - #pragma once
  • -
  • id 670805: A numbered list (1. 2. 3.) where each list item ended with - an empty line is no longer treated as a set of separate lists (all - starting with 1.).
  • -
  • id 670889: Java: last enum value did not appear in the output unless it was - followed by a comma.
  • -
  • id 671023, 671312: Regression: Autolist items starting on a new paragraph - at indent level larger than 0 were not processed correctly.
  • -
  • id 671076: Sections could be missing from the navigation tree in - some situations.
  • -
  • id 671158: @tableofcontents did not work for the main page (@mainpage)
  • -
  • id 671159: Sections in a separate markdown page did not appear in the - table of contents.
  • -
  • id 671166: Fortran: Fixed problem causing call/caller graphs not to be - generated.
  • -
  • id 671171: RPM spec file was updated to make it work with RHEL 6.2 - (thanks to Peter Klotz for the patch)
  • -
  • id 671240: Corrected line number of error message reported for - pages.
  • -
  • id 671291: C# regression: enum values where not shown in the docs.
  • -
  • id 671395: When #some_member appeared at the start of a line it was - seen as a level one header instead of a link to a member when - Markdown processing was enabled. Now at least one space is required - after the # to make it a header.
  • -
  • id 671426: Fixed case where doxygen could crash when a section and - subsection had the same label.
  • -
  • id 671591: docset creating could fail due to invalid Nodes.xml
  • -
  • id 671702: Using \internal in a group or member did not hide it - from the navigation tree if there was no documentation.
  • -
  • id 671709: Backticks in C# comments did not appear as inline - fragments, like was the case for other languages.
  • -
  • id 672119: PHP: defines are now shown as constants rather than enums.
  • -
  • id 672662: File with .md or .markdown extension were not included - with the default setting of FILE_PATTERNS.
  • -
  • id 672366: mailto style URLs did not work correctly in combination with - CREATE_SUBDIRS = YES.
  • -
  • id 672472: Removed bogus </b> when using @par.
  • -
  • id 672475: Added "warning:" prefix to "missing \endcode" message.
  • -
  • id 672479: Doxygen comments after a macro definition were not - removed in the source browser view.
  • -
  • id 672526: Removed black line in front of custom paragraphs.
  • -
  • id 672536: PHP: use keyword was not handled correctly when importing - classes from another namespace.
  • -
  • id 672620: Switched to using "Macro" in the output instead of "Define".
  • -
  • id 672656: Using ![caption](filename.png) did not work correctly for - local images pointed to with IMAGE_PATH.
  • -
  • id 673045: A block of ///'s inside a verbatim block inside a .md - file was replaced by /** .. */
  • -
  • id 673066: Doxygen now skips scanning files in directories starting with - a dot (e.g. .svn).
  • -
  • id 673219: Included patch by Ryan Schmidt to make the Mac versions - in qglobal.h match that of Apple header files.
  • -
  • id 673870: Added C++11 classes when BUILTIN_STL_SUPPORT is enabled.
  • -
  • id 673983: Using a backslash in a section cause 026E30F to appear in the - latex TOC.
  • -
  • id 674563: Fortran: case sensitiveness for routines and functions - did not work
  • -
  • id 674583: Fortran: continuation by ampersand not placed in code output.
  • -
  • id 675757: Fixed indenting issue after the end of a markdown code block - inside a list.
  • -
  • id 676116: Use new index style for page index.
  • -
  • id 676294: Fixed LaTeX error when backslash appeared in a hyperlinked - code fragment.
  • -
  • Tag files had wrong character encoding set in the header.
  • -
  • C# in/out did not appear in generics using covariance or contravariance.
  • -
  • When marker of an alias appeared at the end of the alias text it was - not expanded.
  • -
  • Aliases did not work in Markdown files.
  • -
  • Fixed some problems with the navigation tree for IE9 and Opera.
  • -
  • Included patch by Jake Colman to make the configgen.py work with older - Python version such as 2.4.3.
  • -
  • Fixed problem parsing \code{.py}...\endcode
  • -
  • UML_LIMIT_NUM_FIELDS did not work correctly in all cases.
  • -
  • Setting SORT_GROUP_NAMES to YES, had no effect on child groups within - a group.
  • -
-

-

-

-Release 1.8.0

-

- -(release date 25-02-2012) -

-

Changes

-
    -
  • Auto list items can now consist of multiple paragraphs. - The indentation of the (first line) of a new paragraph detemines - to which list item the paragraph belongs or if it marks the end of the - list.
  • -
  • When UML_LOOK is enabled, relations shown on the edge of a graph - are not shown as attributes (conform to the UML notation)
  • -
  • Updated the manual and improved the look.
  • -
  • Made the contents in the navigation tree more consistent for - groups, pages with subpages, and grouped subpages.
  • -
  • id 669079: Latex: made the margins of latex page layout smaller using - the geometry package.
  • -
  • The tool doxytag has been declared obsolete and is removed - (it wasn't working properly anyway). Same goes for the installdox - script.
  • -
  • Updated the copyright in source code and doxywizard "about" to 2012.
  • -
  • id 668008: HTML version of the manual now has the treeview enabled - for easier navigation.
  • -
-

New features

-
    -
  • Added support for - Markdown - formatting. - This is enabled by default, but can be disabled by - setting MARKDOWN_SUPPORT to NO. When enabled the following is - processed differently: -
      -
    • tabs are converted to spaces according to TAB_SIZE.
    • -
    • blockquotes are created for lines that start with one or more >'s - (amount of >'s determine the indentation level).
    • -
    • emphasis using *emphasize this* or _emphasis this_ or - strong emphasis using **emphasis this**. Unlike classic - Markdown 'some_great_indentifier' is not touched.
    • -
    • code spans can be created using back-ticks, i.e. `here's an example`
    • -
    • Using three or more -'s or *'s alone on a line with only spaces - will produce a horizontal ruler.
    • -
    • A header can be created by putting a ===== (for h1) or ----- (for h2) - on the next line or by using 1 to 6 #'s at the start of a line - for h1-h6.
    • -
    • auto lists item can also start with + or * instead of only -
    • -
    • ordered lists can be made using 1. 2. ... labels.
    • -
    • verbatim blocks can be produced by indenting 4 additional spaces. - Note that doxygen uses a relative indent of 4 spaces, not an - absolute indent like Markdown does.
    • -
    • Markdown style hyperlinks and hyperlink references.
    • -
    • Simple tables can be created using the Markdown Extra format.
    • -
    • Fenced code blocks are also supported, include language selection.
    • -
    • files with extension .md or .markdown are converted to related pages.
    • -
    - See the section about Markdown support in the manual for details.
  • -
  • It is now possible to add user defined tabs or groups of tabs to - the navigation menu using the layout file (see the section of the manual - about customizing the output for details).
  • -
  • Added new command \tableofcontents (or [TOC] if you prefer Markdown) - which can be used in a related page with sections to produce a - table of contents at the top of the HTML page (for other formats the - command has no effect).
  • -
  • When using SVG images and INTERACTIVE_SVG is enabled, a print icon - will be visible along with the navigation controls to facilitate - printing of the part of the graph that is visible on screen.
  • -
  • Added obfuscation of email addresses for the HTML output to make - email harvesting more difficult.
  • -
  • Added build targets for 64 bit Windows (thanks to Vladimir Simonov). - The installer script is also updated to install a 64 bit version of - doxygen on 64 bit systems and the 32 bit version on 32 bit systems.
  • -
  • Added support for using the HTML tag <blockquote> in comments.
  • -
  • Included patch by Gauthier Haderer that fixes some issues with the - dbus XML parser.
  • -
  • Added support for Markdown style fenced code blocks.
  • -
  • Added option to @code command to force parsing and syntax highlighting - according to a particular language.
  • -
  • Section of pages are now added to the navigation index.
  • -
  • Added support for cell alignment and table header shading in - LaTeX and RTF output.
  • -
  • Added -d filteroutput option to show the output of an input filter - (thanks to Albert for the patch).
  • -
  • id 668010: Latex: for Windows doxygen new generates a makepdf.bat - file in the latex output dir to create the latex documentation.
  • -
-

Bug fixes

-
    -
  • id 498703: Fixed encoding issue in CHM index file for group titles.
  • -
  • id 510975: FORTRAN: Keywords like .GT. recognized as symbols for - cross ref.
  • -
  • id 511906, 581303, 622749: \copydoc did copy the brief description - into the detailed section, causing a difference between the original - and the copy.
  • -
  • id 555327: Using @ref for an example file, caused it to appear as - file::ext.
  • -
  • id 567494: Fortran: Included patch for blockdata sub-programs.
  • -
  • id 628417: Fortran: doxygen filter, preparsing fixed form of null
  • -
  • id 662286: TCL: Included patch to fixed UTF-8 support.
  • -
  • id 662289: TCL: Included patch to prevent ##### from appearing in the - output.
  • -
  • id 646319: Using a file name with path for HTML_STYLESHEET caused the - path to appear in the HTML output.
  • -
  • id 664826: Fixed one more problem with include guard detection.
  • -
  • id 665629: Fixed parse problem when a #define appeared inside an enum.
  • -
  • id 665855: Fixed problem parsing C++ template specialization of the - form A<func(T*)> such as used in boost::signal2 types.
  • -
  • id 666047: A </p> followed by an htmlonly..endhtmlonly section - caused invalid XHTML output.
  • -
  • id 666085: Fixed include handling in case the include guard was - documented.
  • -
  • id 666124: Fixed problem loading the navigation tree in IE8 when - serving pages via a web server.
  • -
  • id 666337: Included patch to avoid hyphenation hints in front of the - first capital in a word.
  • -
  • id 666568: When SHOW_FILES was NO, a grouped function did not appear - in the javascript based search index.
  • -
  • id 666909: \copybrief introduced extra spacing in the HTML output.
  • -
  • id 666986: Fixed case where search engine specific code appeared - twice in the HTML output.
  • -
  • id 666993: Fixed bug in the generated makefile causing index not - to be generated when using pdflatex.
  • -
  • id 667020: HTML output for example pages was not well-formed.
  • -
  • id 667192: Include statements in latex output where placed all on - one line in the LaTeX output.
  • -
  • id 667835: PHP: Fixed problem handling heredoc blocks
  • -
  • id 667844: For aliases with a single argument it is no longer required - to escape commas that appear inside the argument text.
  • -
  • id 668037: Latex: tables can now span multiple pages by using the xtab - package.
  • -
  • id 668218: Doxygen will ignore the common prefix shared by all - directories when computing a names for the directory's output files. - This will make the names of the output more stable.
  • -
  • id 668519: Added missing newline in man page output.
  • -
  • id 669071, 669072: Fixed parse problem for Q_PROPERTY when a template - with a namespaced type was used.
  • -
  • id 669078: Included patch which changes MATHJAX_RELPATH to use the - content delivery network by default.
  • -
  • id 669138: Fortran: Fixed problem handling multiple definition - statements on one line.
  • -
  • id 669406: Using -d Preprocessor now also works when QUIET is YES.
  • -
  • id 669434: Latex: citations where only generated properly if the - bib files specified via CITE_BIB_FILES did not have a path.
  • -
  • id 669758: Tcl: Same function in multiple Tcl namespaces not added.
  • -
  • id 670289: Fixed case where doxygen would not correctly detect - >> as a termination of a nested template.
  • -
  • id 670571: subpages generate empty pages in latex/rtf output and - broken links when SHORT_NAME was set to YES.
  • -
  • Included VHDL fixes provided by Martin Kreis.
  • -
  • The word "dummy" wrongly appeared before the first parameter type in - the LaTeX output for an Objective-C method.
  • -
  • Fixed several small glitches in the tree view javascript code.
  • -
  • Included a patch by Vladimir Simonov to make it possible to compile - doxygen with Visual Studio 2005.
  • -
  • Fixed some typos in the manual (thanks Albert).
  • -
-

-

-

-1.7 Series

-

- -

-

Doxygen Release 1.7.6.1

-

(release date 10-12-2011)

-

Changes

-
    -
  • Doxygen now reports its cache usage (for the symbol and the - lookup cache) at the end of a run (if QUIET=NO), and recommends - settings for SYMBOL_CACHE_SIZE and LOOKUP_CACHE_SIZE for your - project if either cache is too small.
  • -
-

New features

-
    -
  • Added new option LOOKUP_CACHE_SIZE to control the internal cache - doxygen uses to find symbols given their name and a context.
  • -
  • Python: added support for @staticmethod
  • -
-

Bug fixes

-
    -
  • Python: scopes are now shown with . instead of ::
  • -
  • id 665313: Space before @if was not preserved, causing problems - with inline @if .. @endif constructs.
  • -
  • id 665583: Fixed XHTML validity problem when using mscgen graphs.
  • -
  • id 665641: Fixed XHTML validity problem when GENERATE_TREEVIEW was - disabled.
  • -
  • id 665720: Included patch to fix hang issue when non-empty - INCLUDE_PATH was used.
  • -
  • id 665778: Fixed parse issue when a comma appeared as part of an - enum's value.
  • -
- -

Doxygen Release 1.7.6

-

(release date 03-12-2011)

-

Changes

-
    -
  • To improve the performance of loading the navigation tree, - the data is now split into multiple javascript files which - are loaded dynamically.
  • -
  • The selected member is now briefly highlighted in the HTML output - (when GENERATE_TREEVIEW is enabled).
  • -
  • The navigation tree (GENERATE_TREEVIEW) now shows the same information - as the index.
  • -
  • The navindex section of layout now also controls what is shown in - the navigation tree.
  • -
  • Improved HTML output support for IE9.
  • -
  • Included redesigned VHDL parser (thanks to Martin Kreis for the patch)
  • -
  • When a class/structs has many (>15) members of the same type, only - the first 10 are shown in the UML diagram.
  • -
  • Made the output of the javascript based search engine more compact.
  • -
-

New features

-
    -
  • Update of the French translation.
  • -
  • id 607305: Added support for PHP heredoc and nowdoc constructs.
  • -
  • Added support for cross-referencing in case of operator-> overloading. - This includes support for std::auto_ptr,std::smart_ptr,std::unique_ptr - and std::weak_ptr when BUILTIN_STL_SUPPORT is enabled.
  • -
-

Bug fixes

-
    -
  • Regression: some information was no longer available for a class, - due to accidental deletion of a code block.
  • -
  • Regression: fixed matching problem in the code parser.
  • -
  • Included fixes for TCL to support commands with \ and command - definitions preceded by whitespace (thanks to Rene Zaumseil)
  • -
  • When using "static int a,b" variable "b" incorrectly appeared in the - output even though EXTRACT_STATIC was set to NO.
  • -
  • id 521717: .spec file was only updated after running ./configure
  • -
  • id 656642: Fixed potential crash when using doxygen for large projects.
  • -
  • id 656878: Fixed problem running bibtex with \cite command on Windows.
  • -
  • id 657152: Fixed constant expression evaluation error in the - preprocessor.
  • -
  • id 652277: Removed bogus ' from the man page output.
  • -
  • id 659244: Quotes in the brief description could appear unescaped in - the tooltip.
  • -
  • id 641336: #includes with ../ were not always processed correctly.
  • -
  • Fixed potential crash when INLINE_GROUPED_CLASSES and INLINE_SIMPLE_STRUCTS - are set to YES.
  • -
  • id 658896: Fixed preprocessor problem handling #defines whose value was - a constant string containing ///.
  • -
  • id 660332: Using a \ at the end of a comment line could cause - parsing problems for C# as the \ was treated as a line continuation.
  • -
  • id 658033: Fixed parser problem when using multiple member groups - inside a macro definition.
  • -
  • id 503239: Fixed several issues related to \cite handling.
  • -
  • id 658587: Improved the way macro definitions are collected.
  • -
  • id 660501: Fixed LaTeX error when using \name with a description.
  • -
  • id 661292: The documentation for \mainpage incorrectly mentioned that - one has to use \ref main in case GENERATE_TREEVIEW was set to YES, which - is no longer the case.
  • -
  • id 659096: Nested aliases definitions where not always expanded properly - (regression w.r.t version 1.7.4)
  • -
  • id 658038: Fixed preprocessor problem where the @ character inside a - macro definition could appear as @@.
  • -
  • id 658646: Fixed problem running mscgen for LaTeX and RTF output.
  • -
  • id 661723: Using ClassName%'s did not work anymore, and also - ClassName's wasn't autolinked.
  • -
  • id 662044: Fixed potential printing of null pointer when using - a version filter that returned blanks.
  • -
  • id 625518: Fortran: first problem where subroutine using results - variable appeared as a function.
  • -
  • id 654153: If an URL appeared at the end of a sentence, the period - was included in the URL.
  • -
  • id 656560: Fortran: Added support for the Double Complex type.
  • -
  • id 663640: Included workaround for Solaris CC issue in index.cpp
  • -
  • id 662190: Included patch to fix some TCL issues and add the TCL_SUBST - configuration option.
  • -
  • id 661672: Fortran: Added support for ALIAS expansion in comment blocks.
  • -
  • id 663101: Fixed case where a macro was not corrected found in the header - file when it could only be found via INCLUDE_PATH.
  • -
  • id 664718: using multiple <para>'s inside a <summary> block caused - text to be joined without spacing.
  • -
  • id 656556: Java enums are now parsed as classes.
  • -
  • id 664826: Fixed problem in the preprocessor regarding the handling - of include guards.
  • -
  • id 664893: Fixed typo in the docs for EXCLUDE_SYMLINKS.
  • -
  • id 665466: Using a relative URL with <a href> did not work when - CREATE_SUBDIRS was enabled.
  • -
  • id 665464: Using an absolute URL with <img> did not work when - CREATE_SUBDIRS was enabled.
  • -
- -

Doxygen Release 1.7.5.1

-

(release date 21-08-2011)

-

New features

-
    -
  • Update of the French translation.
  • -
-

Bug fixes

-
    -
  • id 521717: .spec file was only updated after running ./configure
  • -
  • id 656642: Fixed potential crash when using doxygen for large projects.
  • -
  • id 656878: Fixed problem running bibtex with \cite command on Windows.
  • -
  • Regression: some information was no longer available for a class, - due to accidental deletion of a code block.
  • -
  • Regression: fixed matching problem in the code parser.
  • -
- -

Doxygen Release 1.7.5

-

(release date 14-08-2011)

-

Changes

-
    -
  • id 641904: Function in the call graphs are now shown based on first - appearance rather then alphabetical order.
  • -
  • id 616213: When customizing the HTML header $title now only generates - the title excluding the project name (which can still be added using - $projectname)
  • -
  • Improved the look of the class index: all items now have equal spacing.
  • -
-

New features

-
    -
  • New option INTERACTIVE_SVG which when set to YES in combination - with DOT_IMAGE_FORMAT=svg will make doxygen - generate interactive SVG diagrams that support zooming and - panning via the mouse (only for large graphs).
  • -
  • Added support for the Tcl programming language - (thanks to Rene Zaumseil and Samuel Bentley for the patch).
  • -
  • Added @copyright command.
  • -
  • added option MATHJAX_EXTENSIONS to provide additional extensions for - MathJax (thanks to David Munger for the patch).
  • -
  • added option INLINE_SIMPLE_STRUCTS which when enabled shows the fields - of simple classes and structs (with only public data fields) as a table - and inline in context (file/group/namespace/class) provided this context - is documented.
  • -
  • When using the server based search engine (SEARCHENGINE=YES and - SERVER_BASED_SEARCH=YES) doxygen now advertises a opensearch provider - for your project, that allows integrating the search directly in - the search field of the browser (thanks to Phil Lello for the patch).
  • -
  • id 503239: Added new option CITE_BIB_FILES and LATEX_BIB_STYLE and a new - command \cite, allowing you to make references to literature (as defined - in one or more .bib files). This also works for output formats other - than LaTeX. The tool bibtex is required for this to work though. Thanks - to David Munger for the initial patch upon which this feature is based.
  • -
  • PHP namespaces are now shown as A\B in the output.
  • -
  • Added new \snippet command that can be used to include marked - sections from a source file. See - http://www.doxygen.org/commands.html#cmdsnippet for more info.
  • -
  • Added translation support for Armenian, thank to Armen Tangamyan. - and included translation updates for a number of languages.
  • -
-

Bug fixes

-
    -
  • Fixed a couple of potential race conditions found by Helgrind while - running dot from multiple threads.
  • -
  • Graphs did not appear when enabling both INTERACTIVE_SVG and - HTML_DYNAMIC_SECTIONS.
  • -
  • PDFs generated by newer versions of dot (i.e. 2.28) did not appear - in the output, because doxygen failed to extract the bounding box.
  • -
  • Improved call graph and cross-reference support for Python.
  • -
  • INTERACTIVE_SVG now also works with IE9 if the html file extension is - set to xhtml.
  • -
  • Fixed several cases where the LaTeX output could produce too long - lines.
  • -
  • id 318061: Putting two functions in the same group that only - different in the number of template arguments did not work.
  • -
  • id 437346, 564614: Fixed proper encoding of multibyte output in RTF - depending on the code page (thanks to Hirao for the patch).
  • -
  • id 521717: The .spec file in the source distribution did not get - updated to the latest version.
  • -
  • id 521861: Fortran: Continuation character was not recognised in - fixed format code.
  • -
  • id 522496: Fortran: @param checking was not case insensitive.
  • -
  • id 560105: Fixed problem combining @cond with preprocessor directives.
  • -
  • id 577359: Using "struct A : C, D {};" showed a private inheritance - relation for D.
  • -
  • id 584194: Some links to typedef where pointing to the typedef'ed - class instead.
  • -
  • id 619560: Anonymous enums caused an invalid entry in the LaTeX TOC.
  • -
  • id 622935: Deriving from an unknown template class could cause the - class to appear with a -g postfix in C#
  • -
  • id 625731: Fortran: Fixed issue handling private subroutines.
  • -
  • id 632946: LaTeX now starts a new page when starting a new module.
  • -
  • id 634837: Fortran: Prefix of function was overwritten and the word - 'function' not specified.
  • -
  • id 637099: Fortran: Included fix for using collaboration diagrams.
  • -
  • id 642468: Added PHP support for namespace with curly braces.
  • -
  • id 643219: Fortran: Improved handling of semicolons.
  • -
  • id 643617: Fortran: Added support for "type is".
  • -
  • id 643944: A macro added to a group appeared twice in the group - documentation if was also made related to a class using \relates.
  • -
  • id 646321: Fixed problem were the search box was missing when using - a custom HTML header.
  • -
  • id 646447: Fixed unterminated img tab in the XHTML output.
  • -
  • id 646463: Fixed problem handling MSCFILE_DIRS option with multiple - paths.
  • -
  • id 646533: Included patch to sort overloaded members by appearance in - the code.
  • -
  • id 646747, 646879: Putting an autolist inside a @todo, @bug or similar - section did not work anymore.
  • -
  • id 646922: Referring to a logo with a relative path, caused - a broken image target when using a custom HTML header.
  • -
  • id 647499: Fixed HTML rendering problem on older browsers when - GENERATE_TREEVIEW was enabled.
  • -
  • id 647768: Linking to a section on the main page could result in a - broken link when GENERATE_TREEVIEW was enabled.
  • -
  • id 647889: Fixed invalid warning when using @deparated method with - default values for parameters.
  • -
  • id 648302: A function made related using @relates could end up in - the wrong class if there was already a method with a matching - argument list in that other class.
  • -
  • id 649103: Return types containing multiple *'s ended up in the - output with only one * in some cases.
  • -
  • id 650397: Fixed problem with alias substitution if the alias had - more then 9 parameters.
  • -
  • id 650430: For nested anonymous structs @xx markers could appear in - the output.
  • -
  • id 650463: Added compilation support for MacOSX 10.7 (aka Lion).
  • -
  • id 650958: Fixed issue printing HTML pages when the - GENERATE_TREEVIEW option is set to YES.
  • -
  • id 651611: Fixed broken link to an undocumented namespace.
  • -
  • id 652138: Fixed potential crash while parsing Fortran code.
  • -
  • id 652188: Fixed problem parsing comment which included - an unterminated alias within quotes (i.e. "\word{")
  • -
  • id 652277: Lines starting with . did not appear in the man page output.
  • -
  • id 652389: Fortran: Fixed text is detailed function section.
  • -
  • id 652396: When enabling INTERACTIVE_SVG wide graphs are now also - fit to the screen width.
  • -
  • id 652695: Added missing space between parameter type and name in - the RTF output.
  • -
  • id 652741: Use background-color instead of background in doxygen.css.
  • -
  • id 653344: Fixed potential segfault while creating man pages.
  • -
  • id 653666: Fortran: add a space to "type" in argument list.
  • -
  • id 653801: Fixed problem handling include guard when multiple - blocks guarded by the same guard were used in a header file.
  • -
  • id 653963: Fortran: Unified handling of @params at various places.
  • -
  • id 654108: make clean failed on a system without qmake.
  • -
  • id 654244: Fixed compile issue for HP Itanium.
  • -
  • id 654779: Fortran: Interface was seen as a class with constructor / - destructor.
  • -
  • id 654869: Using the word "property" as a type in C caused wrong - results.
  • -
  • id 654866: Fortran: fixed issue parsing function type that looked like - C function pointers.
  • -
  • id 655178: Fortran: Fixed parse issue when using variable name - starting with the word interface.
  • -
  • id 655591: Improved error handling for empty html style list.
  • -
  • id 655935: Fixed case where %s could end up in a warning messge.
  • -
  • id 656005: Methods of Objective-C categories defined in an .m file are - now marked as private.
  • -
- -

Doxygen Release 1.7.4

-

(release date 28-03-2011)

-

Changes

-
    -
  • doxygen -w html now reads the default Doxyfile even if not specified - explicitly
  • -
  • doxygen -w html now produces a template header and footer that can - be used independent of the configuration options used.
  • -
-

New features

-
    -
  • New option INLINE_GROUPED_CLASSES that when enabled shows grouped - classes inside the group documentation, instead of on a separate page.
  • -
  • Included updates for the Italian and Russian translation.
  • -
  • id 640875: Added option HTML_EXTRA_FILES which makes it easier to copy - additional files to the HTML output and also add them to the index files.
  • -
  • id 642579: Included patch that adds new LATEX_FOOTER option to - customize the end of refman.tex in the LaTeX output.
  • -
-

Bug fixes

-
    -
  • id 140259: Jumping to a @section did not work in the RTF output.
  • -
  • id 521854: Fortran: included patch for supporting multiple argument - declarations on one line.
  • -
  • id 521861: Fixed problem with line continuation in Fortran.
  • -
  • id 566921: %A::B now prevents a link for A::B, instead of only for A - and generating a warning that ::B cannot be linked.
  • -
  • id 598481: Fortran: Added support for extends keyword.
  • -
  • id 618374: Added support for inlining code in the VHDL output.
  • -
  • id 625519: Fortran: argument name starting with a reserved word was - not handled properly.
  • -
  • id 634415: Fixed problem parsing an array of character literals.
  • -
  • id 635537: Links to file members were not made when found in tag files.
  • -
  • id 638637: The Doxyfile documentation contained some very long lines.
  • -
  • id 638655: Double quote in page or group title broke treeview.
  • -
  • id 638733: Improved documentation for DOT_IMAGE_FORMAT option.
  • -
  • id 638829: Added documentation to warn for consequences of using - HTML_HEADER.
  • -
  • id 638856: Fixed problem autolinking to struct field using #S::a
  • -
  • id 639272: using @dot...@endot produced an image referenced with - absolute path.
  • -
  • id 639521: \mscfile did not work properly for LaTeX output.
  • -
  • id 639716: Fixed problem where #include's could cause phantom __pad__ - members to appear in the output (appeared on Windows only).
  • -
  • id 640259: Options PROJECT_LOGO and PROJECT_BRIEF were missing - from the manual.
  • -
  • id 640463: Fixed problem parsing PHP "use" statement when the argument - did not have a namespace scope.
  • -
  • id 640588: Included fix for proper splitting of multiple arguments - given to the QHP_CUST_FILTER_ATTRS option.
  • -
  • id 640646: Long error messages could cause memory corruption.
  • -
  • id 640742: XML: switched indent option to no in the combine.xslt script.
  • -
  • id 640754: Comment with XML style list of type table was not rendered - properly.
  • -
  • id 640822: Added support for overloading of C# indexer operators.
  • -
  • id 640828: Internal section marked with @internal was not shown as - such anymore in the XML output.
  • -
  • id 640847: PHP: Fixed parse problem referring to class in global - namespace.
  • -
  • id 640924: Included patch by Haffmans to make the custom header and - footer independent of the chosen config options.
  • -
  • id 640927: Included fix to prevent a warning in the server side PHP - search script.
  • -
  • id 641026: Included patch to fix broken hyperlink to page entry - in xreflists.
  • -
  • id 641188: Header of \page was wrong in Man page output.
  • -
  • id 641336: #include's to other directories were not always linked.
  • -
  • id 641673: Using "use Foo\Foo;" in PHP could cause doxygen to hang.
  • -
  • id 641814: In some cases the HTML output could contain an extra </p>.
  • -
  • id 642030: Tooltips with HTML entities could be wrongly truncated.
  • -
  • id 642475: Include graphs could be incomplete.
  • -
  • id 643056: Fixed problem with macro expansion.
  • -
  • id 643279: Fixed potential crash when generating a warning for - void f(int %x) style parameter, which is valid in C++/CLI.
  • -
  • id 643280: Included patch to enabled LargeAddressAware for Windows - builds.
  • -
  • id 643276: Fixed cases where FILE_VERSION_FILTER was called for - dummy files with name "generated".
  • -
  • id 643655: Fixed argument matching issue when one of match candidates - was a typedef of a method pointer.
  • -
  • id 645754: mscfile tag was closed with dotfile in the XML output.
  • -
  • doxygen -w html now ignores the values for HTML_HEADER and HTML_FOOTER - found in the config file.
  • -
  • Importing a group via a tag file could overrule a local group with - the same name even when EXTERNAL_GROUPS was disabled.
  • -
- -

Doxygen Release 1.7.3

-

(release date 03-01-2011)

-

Changes

-
    -
  • Added a header for each HTML page above the navigation menu, - showing the project name and logo and a short descriptin (all optional). - Disabling the index (with DISABLE_INDEX) still shows the new header - (you can still customize this using HTML_HEADER). This now works - nicely in combination with GENERATE_TREEVIEW = YES and/or - SEARCH_ENGINE = YES.
  • -
  • Redesigned the treeview feature. Instead of using frames, the - navigation tree is now loaded on each page dynamically. This allows - bookmarking a page and always keeps the top menu visible. Also the - current item is automatically highlighted in the tree. - Also updated the icons in the treeview to match the overall look'n'feel. - Note: if you now use a custom HTML header, please update it using - doxygen with the -w and the edit the default header.
  • -
-

New features

-
    -
  • id 499544: Added SVG support to doxygen's dot output - (setting DOT_IMAGE_FORMAT to svg now works as expected)
  • -
  • Added control to the wizard to configure the color of the output - visually.
  • -
  • Added options to specify project synopsis and select a - project logo to the wizard.
  • -
  • Added option PROJECT_LOGO which can be used to specify an image - which will be shown in the header of each HTML page along with - the project name (PROJECT_NAME option).
  • -
  • Added option PROJECT_BRIEF which can be used to specify a brief - description which will be shown in the header of each HTML page - just below the project name.
  • -
  • Added new option FILTER_SOURCE_PATTERNS which can be used - in combination with FILTER_SOURCE_FILES to filter files used for - the source browser based on file extension, which can overwrite - the filter set by FILTER_PATTERNS and/or INPUT_FILTER.
  • -
  • Added new option STRICT_PROTO_MATCHING which is disabled by default, - and makes the parameter matching to be less strict, resulting in - fewer "No matching class member found" warnings.
  • -
-

Bug fixes

-
    -
  • id 306076: code blocks with using directives did not get hyperlinked.
  • -
  • id 313527: enum values with bitfields did not get parsed correctly.
  • -
  • id 565715, 630582: Included a patch that fixes a couple of Fortran issues - (thanks to Albert).
  • -
  • id 615507: Fixed problem handling @cond..@endcond in Fortran code.
  • -
  • id 619040: Scope was missing in Tokens.xml when using docsets.
  • -
  • id 625517, 523156: Applied patch tp avoid stripping prefixes for Fortran - subroutines.
  • -
  • id 626476: allow label before end statement in Fortran
  • -
  • id 630901: </see> was not handled properly in comment block.
  • -
  • id 632311: Fixed potential crash for empty verbatim section.
  • -
  • id 632426: closing brace of a function with one parameter has wrong - color in HTML.
  • -
  • id 632543: Added support for Fortran TYPEs with language bindings. - (thanks to a patch by Daniel Franke)
  • -
  • id 632879: An explicit link request such as #blah did not longer produce - a warning if no symbol named blah was found.
  • -
  • id 633891: warnings in "inbody" documentation were shown with "unknown" - file name.
  • -
  • id 634116: Titles customized via the layout file did not appear in - the title page and navigation tree, only in the top menu.
  • -
  • id 634600: Fixed problem resolving typedef.
  • -
  • id 634775: Fixed a problem were // inside a code block got removed.
  • -
  • id 634857: Added support for escaping :: by using \:: (or @::)
  • -
  • id 634962: #include with relative path to parent dir did not get - hyperlinked.
  • -
  • id 634986: Removed double definition of docParamName in compound.xsd.
  • -
  • id 635198: C++/CLI Finalizer methods were not parsed properly.
  • -
  • id 636475: Objective-C method names can now be used as the - the first argument of \ref.
  • -
  • id 636588: Fixed a couple of problems in the compound.xsd schema used - for XML output.
  • -
  • id 636598: DISTRIBUTE_GROUP_DOC now works again for enum values.
  • -
  • id 636947: Improved matching of typedef'ed array parameter and non - typedef'ed array parameter.
  • -
  • id 637610: Added a number of fixed for Fortran interfaces.
  • -
  • id 637712: Handle files with the .for extension as Fortran.
  • -
  • id 637987: Fixed error in the grouping documentation.
  • -
  • Fixed line number sync problem when using Objective-C #import - statements.
  • -
  • Fixed problem handling /** @cond */ in the preprocessor.
  • -
  • Member groups could get reordered in the output.
  • -
- -

Doxygen Release 1.7.2

-

(release date 09-10-2010)

- -

Changes

-
    -
  • Changed the default font of the LaTeX output to helvetica.
  • -
  • Changed the way parameters and return values are represented in the - LaTeX and RTF output. They are now listed using tables.
  • -
-

New features

-
    -
  • added support for Apple's block object extension for C/Obj-C/C++.
  • -
  • added support for detecting Python constructors and destructors.
  • -
  • id 624575: Added \endinternal command that can be used to force - the end of a section started with \internal.
  • -
  • id 552605: Added parsing support for PHP 5.3+ style namespaces.
  • -
  • id 582532: added \mscfile command which can be used to insert a - message sequence chart given a .msc file. - Also added a new config option MSCFILE_DIRS to provide directories - were msc files are searched (Thanks to Adrien for the patch).
  • -
  • Added support for type specifiers for documenting PHP parameters, - format: "@param type $paramname docs"
  • -
  • Added support for rendering formulas in the HTML output - using MathJax instead of using prerendered bitmaps. - For this purpose the options USE_MATHJAX and MATHJAX_RELPATH were - added.
  • -
-

Bug fixes

-
    -
  • id 306076: Fixed case where using of a namespace did not work inside - an example.
  • -
  • id 336053, 487871: /// were not stripped from formulas and \dot..\enddot
  • -
  • id 563698: dropped support for a4wide paper format for LaTeX, since - it is on the LaTeX taboo list.
  • -
  • id 571014: Behaviour of CLASS_DIAGRAM=NO in combination with - HAVE_DOT=YES, was not propely documented.
  • -
  • id 576291: Python comments for next class or method could end up in - code of a method/class when enabling INLINE_SOURCES.
  • -
  • id 611174: Fixed problem handling nested classes in Python.
  • -
  • id 621733: removed unexpected warnings about undocumented return types
  • -
  • id 622737: Undefined function macros could cause constant expression - errors.
  • -
  • id 622780: updated copyright statement in PDF docs.
  • -
  • id 622935: C# generics appeared with -g extension in the output in - some situations.
  • -
  • id 623023: Fixed parsing problem for "int &foo1(),&foo2();"
  • -
  • id 623052: Link to destructor was wrong in the member index.
  • -
  • id 623424: Fixed problem where struct description gets added to variable - of struct type.
  • -
  • id 623673: Anchors were missing in the Qhp index for members.
  • -
  • id 623733: Fixed potential crash due to uninitialized line number.
  • -
  • id 623765: closed.png was wrongly linked when GENERATE_SUBDIRS and - HTML_DYNAMIC_SECTIONS were enabled.
  • -
  • id 624014: Function macro was not handled properly when there was - a line continuation directly after the name.
  • -
  • id 624095: Linking to a class via a tag file did not work if the class - was in an undocumented namespace.
  • -
  • id 624104: Fixed a couple of typos in lodepng.h
  • -
  • id 624323: Graph legend image was missing form the index files.
  • -
  • Fixed a number of typos in the config file documentation - (thanks to Jens Schweikhardt)
  • -
  • id 624514: Some enums were not cross-referenced.
  • -
  • id 624829: Missing \endcond could cause preprocessor issues in - next file(s) to be parsed.
  • -
  • id 625070: a function definition in a namespace, documented in the - header did not always get cross-referenced.
  • -
  • id 625296: Removed superfluous <td></td> from parameter list in - HTML output.
  • -
  • id 625317: Unterminated comment could crash doxygen.
  • -
  • id 625531: Inherited documentation was only included for the - last derived class in case of multiple inheritance.
  • -
  • id 625578: In the HTML output </div> was missing for built-in - class diagrams.
  • -
  • id 625555: References in example files with underscores were wrong.
  • -
  • id 625982: When using Japanese characters mixed with ascii characters - doxygen incorrectly ended the brief description with a dot.
  • -
  • id 625952: setting MULTILINE_CPP_IS_BRIEF to YES, cause /// to appear - in the output.
  • -
  • id 626033, 567774: EXTENSION_MAPPING did not work if a mapped - language was handled by the same parser as used for the original - extension.
  • -
  • id 626175: Fixed bracket bug in LaTeX fancy headers.
  • -
  • id 626508: Allow hyphen in key argument of \xrefitem.
  • -
  • id 626647: \copydoc did not work for array type arguments (e.g. int[]).
  • -
  • Use \dotfile did not produce the correct map file, so URLs in dot - files did not work.
  • -
  • id 627371: #define's in files only found via INCLUDE_PATH were not - correctly handled.
  • -
  • id 628065: auto brief description ending with .) cause the ) to - end up in the detailed part.
  • -
  • id 628242: Fixed encoding issue for the Spanish translation.
  • -
  • id 628678: Fixed segmentation fault in case of very long errors.
  • -
  • id 629040: Fixed type in search page of the documentation.
  • -
  • id 629182: Fixed problem detecting include guard.
  • -
  • id 629270: Made file extension to parser mapping case insensitive.
  • -
  • id 629485: Latex makefile clean target used rm command also for Windows.
  • -
  • id 629942: the EXCLUDE_SYMBOLS option was missing form the online docs.
  • -
  • id 631094: \htmlinclude and \verbinclude ended the brief description.
  • -
  • id 631380: Inconsistent behaviour when a brief description was given - following by a detailed comment block with JAVADOC_AUTOBRIEF enabled.
  • -
  • Fixed a number of typos in the documentation - (thanks to Albert van der Meer)
  • -
  • Fixed potential hangup when scanning directories defined as - symlinks to absolute paths.
  • -
  • HTML attributes other than src were not copied for the <img> tag.
  • -
- -

Doxygen Release 1.7.1

-

(release date 25-06-2010)

-

Changes

-
    -
  • id 621695: Made warning and error messages appear with lower case - "warning:" and "error:" prefix to make it easier to use the messages - from Visual Studio.
  • -
-

New features

-
    -
  • id 621908: Added new config option FORMULA_TRANSPARENT which allows - selecting between transparent (YES) or non-transparent (NO) PNGs for - formulas in the HTML output.
  • -
  • Update for Turkish translation.
  • -
-

Bug fixes

-
    -
  • id 533821: Inheritance relation for a C# class deriving from - a generic class was not handled correctly.
  • -
  • id 554638: Changing DOT_IMAGE_FORMAT did not cause the graphs to be - regenerated.
  • -
  • id 576533: A field of the form "enum E *p" was ignore.
  • -
  • id 597016: Hide scope name was not working properly for todo items - inside class members, where the class was inside a namespace.
  • -
  • id 617761: In dot graphs now also @ref worked (previously only \ref was - supported).
  • -
  • id 621653: Fixed error when compiling doxygen for Solaris 8.
  • -
  • id 621733: Removed bogus warning about undocumented return type for - define when WARN_NO_PARAMDOC was enabled.
  • -
  • id 621780: Fixed parsing support for a function that returns a - struct definition.
  • -
  • id 621785: Doxygen could hang when using \copydoc in a function with - \param.
  • -
  • id 621805: Using //!< after a #define no longer worked.
  • -
  • id 621854, 622219, 622593: html help compiler (and also the Qt - help compiler) was called before all dot images were generated.
  • -
  • id 621984: Using a auto-list in combination with \subpage cause the - items to be inlined.
  • -
  • id 622018: Fixed problem parsing a @param command where the - text part started with a formula.
  • -
  • id 622019: Added some instructions how to document Fortran code.
  • -
  • id 622041: Using \var multiple times in a comment block did not - work properly.
  • -
  • id 622413: Tooltips could get wrongly truncated when multi-byte - UTF-8 characters were used.
  • -
  • id 622471: Argument matching failed for typedef in another namespace.
  • -
  • Fixed crash situation while handling commands inside a @ref section.
  • -
  • Treeview icons were missing in the HTML output when setting - GENERATE_TREEVIEW to NO and USE_INLINE_TREES to YES.
  • -
- - -

Doxygen Release 1.7.0

-

(release date 15-06-2010)

-

Changes

-
    -
  • Changed the look of the HTML output.
  • -
  • Made several internal changes that should have a positive effect on the - overall performance.
  • -
-

New features

-
    -
  • The color of the HTML output can now easily be adjusted using three new - options: HTML_COLORSTYLE_HUE, HTML_COLORSTYLE_SAT, - and HTML_COLORSTYLE_GAMMA, which control respectively the hue, - saturation, and gamma of all elements in the HTML output.
  • -
  • Moved dot invocations to the end of a doxygen run. Doxygen will now - run multiple instances of dot in parallel (for better CPU utilisation - on multi-core systems). The new config option DOT_NUM_THREADS - determines the number of threads used (were 0 is auto-detect).
  • -
  • Added option EXT_LINKS_IN_WINDOW which controls whether or not - links to symbols imported via tag files will be opened in a new window.
  • -
  • Included various language updates (thanks to Petr for coordinating).
  • -
  • Included patch by Stefan Oberhumer that allows customizing the - way parameter lists are shown in the LaTeX output.
  • -
-

Bug fixes

-
    -
  • id 306076: source browser could miss links for used namespaces.
  • -
  • id 361476, 620924: \if and \endif did not work properly inside auto lists.
  • -
  • id 557164: No warning for missing return type documentation even though - WARN_NO_PARAMDOC was set to YES.
  • -
  • id 577005: Handling of nesting \defgroup's was not always working - properly.
  • -
  • id 578739: ø was not translated correctly in the LaTeX output.
  • -
  • id 583526: Use relative paths for mscgen diagrams to avoid errors in the - LaTeX output.
  • -
  • id 592991: The "Use current settings at startup" feature of Doxywizard - was broken.
  • -
  • id 593679: Links in the search results were broken if they pointed to - symbols imported via tag files using an absolute path or URL.
  • -
  • id 593760, 615682: Fixed man page output problem when using @par.
  • -
  • id 594021: A C comment before a #endif caused the preprocessor - statement to be ignored.
  • -
  • id 597013: When HIDE_SCOPE_NAMES was enabled also the scope for - nested classes was stripped. Now only the namespace scope will be - stripped as before.
  • -
  • id 600829: Autolinks to namespace members did not work if - an explicit # or :: was used.
  • -
  • id 602732: Slashes inside strings in java annotations were not handled - properly.
  • -
  • id 606335: Fixed the "show html output" button in doxywizard - for Windows when IE was set as the default browser.
  • -
  • id 608292: Formatting was lost for section copied with \copydoc.
  • -
  • id 608359: Fixed C++ parse issue for "class : public base {} var;" - construct.
  • -
  • id 611056: Generated HTML footer file did not have UTF-8 encoding and - the relative path marker needed when using CREATE_SUBDIRS = YES.
  • -
  • id 611193: Fixed parsing problem with try-functions having multiple - catch handlers.
  • -
  • id 611642: Specialized private template member function appeared as - public.
  • -
  • id 611888: Include dependency graphs were sometimes wrong.
  • -
  • id 612170: Some lines in the generated Doxyfile where too long.
  • -
  • id 612275: Fixed auto-link problem for certain URLs.
  • -
  • id 612292: Improved handling of ellipsis inside brief description when - JAVADOC_AUTOBRIEF is enabled.
  • -
  • id 612364: Accessibility of macros was not handled properly in all cases.
  • -
  • id 612310: Enabling REFERENCED_BY_RELATION without SOURCE_BROWSER could - result in broken links.
  • -
  • id 612458: Fixed problem handling @copydoc for function operators.
  • -
  • id 612609: A raw C# string constant could end up in the next string.
  • -
  • id 612969: subpages were not part of the XML output.
  • -
  • id 613024: First list item in the paragraph after a @todo - item was not parsed properly.
  • -
  • id 614204: Generated man page links were having a heading underscore.
  • -
  • id 614443: Made include guard detect a bit more strict to avoid false - positives.
  • -
  • id 614447: The labels of CVS tags were missing a colon.
  • -
  • id 614438: Fixed problem parsing Q_PROPERTY with template type and - spaces.
  • -
  • id 615165: Made the date string in the HTML footer translatable, - along with some other sentences on the directory pages.
  • -
  • id 612858: Inline attribute was shown also for non-inline template - members.
  • -
  • id 615583: Fixed problem handling @copy for operators with - const qualifier.
  • -
  • id 615755: Fixed problem handling '"' inside comments.
  • -
  • id 615957: Made the LaTeX output a bit less spacious using \input.
  • -
  • id 615695: Fixed preprocessor issue where a macro that was redefined - was not resolved.
  • -
  • Fixed character encoding issue on the search results page.
  • -
  • id 615670: C# namespaces are now extracted also without comment block - (the language spec does not allow XML documentation).
  • -
  • id 616209: included patch that fixes some typos in the code.
  • -
  • id 616344, 610604: Pages with an underscore in the label generated a - file name containing two underscores.
  • -
  • id 616387: text of the form something.symbol got autolinked when - symbol had a global scope.
  • -
  • id 616761: Call graph could be wrong when local variable has the same - name as a global function.
  • -
  • id 616947: Added documentation patch on how to create URL links with - custom text.
  • -
  • id 616988: Doxywizard now removes non-existent files from the - recent list and has an option to clear the list completely.
  • -
  • id 617051: A macro defined via PREDEFINED did not always overrule a - macro definition in the code.
  • -
  • id 617278: Enabling call graphs produced invalid XHTML output.
  • -
  • id 617871: Non ascii characters in file or directory names - caused problems on Windows.
  • -
  • id 618079: An ALIAS with parameters spanning multiple lines - caused problems with /// style comments.
  • -
  • id 618632: Included patch to prevent image overflowing the page in - the LaTeX output.
  • -
  • id 619728: Fixed problem using EXTENSION_MAPPING for C# (thanks to - Vsevolod Kukol for the patch).
  • -
  • id 619978: Links to external files could be wrong when CREATE_SUBDIR - was enabled.
  • -
  • id 620229: /* characters in a print broke parsing within an conditional - section.
  • -
  • id 620926: \if and \endif did not work properly inside HTML tables.
  • -
  • Using @include in combination with LATEX_SOURCE_CODE caused wrong - output.
  • -
  • Included a patch by Guido Tack which adds two new options - for docsets (DOCSET_PUBLISHER_ID and DOCSET_PUBLISHER_NAME) and - fixes an issue with linking to docset members.
  • -
  • Included patch by Stefan Oberhumer to support escaped {}'s in alias - definition and parameters.
  • - -
-

-

-

-1.6 Series

-

- -

-

Doxygen Release 1.6.3

-

(release date 21-02-2010)

-

New features

-
    -
  • id 608480: Using \dir without argument will create directory - documentation for the directory in which the \dir command - was found.
  • -
-

Bug fixes

-
    -
  • id 590161: perlmod output was wrong when using paragraph commands.
  • -
  • id 600525: Included patch for VHDL.
  • -
  • id 605698: Replaced size attribute of hr tag by class attribute in the - HTML output.
  • -
  • id 606030, 606192, 607563: - Using \dot produced "Error opening map file" or - could even crash doxygen.
  • -
  • id 606084: Loading a new config file in doxywizard did not reset all - values of a previously loaded config file.
  • -
  • id 606104: Grouped members with todo-like items were shown with - "GlobalScope" prefix.
  • -
  • id 606156: Fixed RTF rendering problem with group index.
  • -
  • id 606206, 610133: Added missing line break in LaTeX output.
  • -
  • id 606330, 608056: The title of pages whose label had an underscore - was not shown
  • -
  • id 606717: Include guard not starting with #ifndef SOME_GUARD_H were not - recognised as such.
  • -
  • id 606718: Setting SEARCHENGINE to YES and GENERATE_HTML to NO caused - error that search results directory could not be created.
  • -
  • id 606772, 608493: typedef'ed enums or struct with the same as the - typedef did no longer show up.
  • -
  • id 607088, 607946: Related pages (manual and automatic like the todo page) - caused broken links when SHORT_NAMES was enabled.
  • -
  • id 607432, 608002: Automatically generated related pages (like the - todo page) caused broken links when CREATE_SUBDIR was enabled.
  • -
  • id 607736: comments after #if could cause next function call not to be - cross-referenced.
  • -
  • id 607743: \internal inside a conditional section caused warning.
  • -
  • id 608016: Using \internal inside a \section did not end at the - next \section as documented.
  • -
  • id 608018: \internal command produced message with .: in - the LaTeX output.
  • -
  • id 608072: HTML Tables with custom attributes were not rendered - properly.
  • -
  • id 608227: Man pages with underscore got double underscore in the name.
  • -
  • id 608590: Buffer overflow when using non-ascii characters as class - name.
  • -
  • id 608921: Macro definition had effect even if the definition was not - actually included.
  • -
  • id 609504: config.h and config.l where missing from the SVN repository.
  • -
  • id 609624: Todo items were merged for overloaded functions.
  • -
  • id 609709: C# enum values with @todo items were missing from the todo - list.
  • -
  • id 610437: Removed bogus warning when using <br/> tag.
  • -
  • Fixed parsing problem for function pointer type starting with - "typedef enum".
  • -
  • Preprocessor did not take EXCLUDE_PATTERNS into account, which - could cause parse issues when importing a .tlb file.
  • -
- - - -

Doxygen Release 1.6.2

-

(release date 30-12-2009)

-

Changes

-
    -
  • id 594787: Autolinking to all-lower case words has been disabled, - in accordance with the documentation.
  • -
  • id 604543: Doxygen now allows any extension supported by dot via the - DOT_IMAGE_FORMAT option.
  • -
  • Switched back to using PNGs for built-in diagrams and formulas using - the Lode Vandevenne's PNG encoder.
  • -
-

New features

-
    -
  • Added new option SERVER_BASED_SEARCH to re-enable searching via a - PHP enabled web browser instead of only using javascript locally. - This method better scales to larger projects and allows full text - search.
  • -
  • Added new options GENERATE_ECLIPSEHELP and ECLIPSE_DOC_ID - to generate an index file that can be used to embed doxygen's HTML - output into Eclipse as a help plugin - (thanks to a patch by Ondrej Starek).
  • -
  • Wrote new documentation - regarding the methods of searching in the HTML output.
  • -
  • Included patch by Ed Rosten to render formulas with - proper anti-aliasing on non-white backgrounds using transparency.
  • -
  • Add new option FORCE_LOCAL_INCLUDES to make the default #include - appearance in class documentation with "" i.s.o sharp brackets.
  • -
  • id 558457: Make \addindex put keywords into the .qhp file.
  • -
  • id 595214: #cmakedefine is now treated the same was as #define - (for users of the CMake build system).
  • -
  • Added compilation support for OSX 10.6 (aka Snow Leopard)
  • -
  • Included language update for Brazilian.
  • -
-

Bug fixes

-
    -
  • Doxywizard did not warn when it failed to save its config file.
  • -
  • id 557035: Empty class definitions were not included in Tokens file - for docsets.
  • -
  • id 563233: GENERATE_QHP details was considered even though it is - not defined.
  • -
  • id 567346: Comment parser could get stuck in certain cases.
  • -
  • id 570369: GENERATE_QHP should generate keywords for classes in - generated *.qhc.
  • -
  • id 571964: Fixed two issues in the compound.xsd schema definition.
  • -
  • id 592991: Fixed wrong default destination directory.
  • -
  • id 593040: Fixed problem with distributing member group documentation - for anonymous member groups.
  • -
  • id 593273: GENERATE_TODOLIST=NO and friends not longer worked.
  • -
  • id 593928: Added support for UCS-2 encoded input files.
  • -
  • id 594391: Fixed problem parsing fully-qualified java annotations.
  • -
  • id 594592, 596815: Fixed problem handling quotes.
  • -
  • id 595191: Not all configuration options appeared in the index of - the documentation and some were not sorted correctly.
  • -
  • id 595253: formulas had the .png extension while they were gifs.
  • -
  • id 595833: Fixed recursive lockup while resolving template relations.
  • -
  • id 595935: Doxygen's preprocessor got confused when /**/ appeared as - part of a macro definition.
  • -
  • id 596085: Removed obsolete option USE_WINDOWS_ENCODING from the docs.
  • -
  • id 596233: RTF output was missing a new paragraph for brief - member descriptions.
  • -
  • id 596807, 596819: Code reformatting done for the LaTeX output could - break multibyte UTF-8 characters causing invalid output.
  • -
  • id 596809: Using multibyte characters in a page label caused invalid - output.
  • -
  • id 596816: Documented the interaction between LATEX_CMD_NAME and - USE_PDFLATEX.
  • -
  • id 597015: Todo items for two inner classes with the same name where - collapsed together in the todo list when HIDE_SCOPE_NAMES - was enabled.
  • -
  • id 597016: Scope was not hidden for members in the todo list even - though HIDE_SCOPE_NAMES was set to YES.
  • -
  • id 598497: Struct variable with explicit struct keyword got labelled - with [read] attribute.
  • -
  • id 596902: PHP was not parsed properly when it appeared in a - <script language="php"> section.
  • -
  • id 597415: Fixed problem matching base class member against the - member in the derived class.
  • -
  • id 597518: Makefile for Docsets now honors DESTDIR.
  • -
  • id 598298: Made browsing for HHC_LOCATION via the wizard - yield an absolute path.
  • -
  • id 599128: Changed default for CHM_INDEX_ENCODING to CP1250 to avoid - issues in a Solaris environment.
  • -
  • id 595931: Removed unnecessary paragraphs from HTML table cells.
  • -
  • id 597541: referring to page labels of the form a-1 did not work.
  • -
  • id 599224: Code generators could produce extra </span> tags.
  • -
  • id 599974: Included the PHP search engine again (with new config - option SERVER_BASED_SEARCH to enable it)
  • -
  • id 600544: Doxygen produced invalid Latex output for RCS tags.
  • -
  • id 600563: Fixed issue with include dependency tracking that could - cause macro expansion not to work properly.
  • -
  • id 600940: Fixed issue with VHDL call graph (thank to Martin Kreis - for the fix).
  • -
  • id 601138: Fixed problem parsing C++ function-try-blocks.
  • -
  • id 601222: #include inside a class could cause line numbers to be off.
  • -
  • id 601223: Fixed parsing problem skipping over /**/ comment.
  • -
  • id 601694: Fixed problem handling Javadoc style {@code ... } blocks.
  • -
  • id 601771: Special commands did not work in the title of - the @mainpage.
  • -
  • id 602818: Fixed problem parsing files that start with UTF-8 BOM.
  • -
  • id 603001: Fixed problem parsing friend function with explicit scope.
  • -
  • id 603238: Fixed perlmod generation issue.
  • -
  • id 604948: Project number was not centered anymore in the HTML output.
  • -
  • id 604503: Using %word in a page title incorrectly did show the %.
  • -
- - -

Doxygen Release 1.6.1

-

(release date 25-08-2009)

-

Bug fixes

-
    -
  • Fixed file handle leak when parsing include files. Also fixed - the logic that determines whether or not an include file need to be - parsed.
  • -
  • Search result pages were not using UTF-8 character encoding.
  • -
  • Search results pointing to external references were not linked correctly.
  • -
  • id 133418: Multiline second argument of \ref caused unexpected " warning.
  • -
  • id 592454: Feeding invalid XML could crash doxygen's DBus XML parser.
  • -
  • id 592485: Include patch to fix problem with building rpms.
  • -
  • id 592511, 592625: Doxywizard problem with GENERATE_TREEVIEW.
  • -
  • id 592650: SHOW_USED_FILES now works again.
  • -
  • id 592808: xrefitems (like @todo) did not appear in the list when - found in comments marked with @enum or @name.
  • -
-

Doxygen Release 1.6.0

-

(release date 20-08-2009)

-

Changes

-
    -
  • id 580924, 541234: Replaced the PHP based search engine by a - Javascript/DHTML based one. - As a result the search feature no longer requires a HTTP server - with PHP enabled to be usable. Searching is limited to symbols - though, but it is now possible to filter on symbol type.
  • -
  • id 519886: Make the HTML output XHTML 1.0 compliant.
  • -
  • id 579950: Objective-C categories are now merged with their base - class, unless there is no base class.
  • -
  • Member groups with the same header within the same scope are now - merged. This also works for Objective-C categories.
  • -
  • Changed the LaTeX style sheet such that more of the markup is - configurable. Please update your style sheet if you use a custom one.
  • -
  • id 584844: Treat \details inside a brief description as a new paragraph - command.
  • -
  • Split GENERATE_TREEVIEW into two separate options: - GENERATE_TREEVIEW and USE_INLINE_TREES.
  • -
  • Removed the dependencies on libpng and libz, doxygen now generates - gifs again for internal class diagrams (like it did 7 years ago ;-)
  • -
-

New features

-
    -
  • Added option SORT_MEMBERS_CTORS_1ST, which when enabled places the - constructors and destructors first in an otherwise sorted list.
  • -
  • id 581518: Applied patch by Tobias Hunger that adds support for - documenting DBus XML interface descriptions.
  • -
  • Included QtHelp patch by Karsten Heimrich which adds missing - reference and keyword for methods.
  • -
  • Included updates for the Korean and Polish translation.
  • -
-

Bug fixes

-
    -
  • id 131989: Fixed preprocessor handling for C# code.
  • -
  • id 133418: -- was not rendered correctly for LaTeX output
  • -
  • id 157485: Missing link in todo page.
  • -
  • id 318061: Two template functions that only differed in the number - of template arguments were seen as the same function.
  • -
  • id 443939: HIDE_UNDOC_CLASSES did not work properly.
  • -
  • id 509348: Fixed problem with syncing the information of - declaration and definition in the presence of an extra forward - declaration in the source code.
  • -
  • id 522193: For C# enum values were merged together if the same enum - name was used in different scopes.
  • -
  • id 523167: Included patch to handle PROGRAM statement in Fortran as - subroutines/functions.
  • -
  • id 554636: Remove spacing around brackets for Obj-C protocols.
  • -
  • id 557026: Included patch for fixing wrongly labeled items in docsets.
  • -
  • id 560512: Improved parser to better disambiguate - nested templates ending with >> from the bitshift right operator.
  • -
  • id 570238: Fixed matching problem for method in nested class, where - the outer class is a template.
  • -
  • id 581746: Segfault/realloc error when a very long path was used.
  • -
  • id 582469: documented #define with guard caused wrong documentation.
  • -
  • id 582276: Doxywizard could crash on exit in some cases.
  • -
  • id 582676: Regression: a struct ivar in ObjC class screws up method - identification.
  • -
  • id 583213: Included patch that avoids trailing spaces in the - generated Doxyfile template.
  • -
  • id 584192: Included VHDL patch by Martin Klein
  • -
  • id 585543: Fixed case where matching declaration and definition did - not work correctly.
  • -
  • id 585260: The "more..." link for files was broken, since the anchor - was not generated.
  • -
  • id 586925: Fixed parsing problem when an unpaired apostrophe - appeared in a Python comment.
  • -
  • id 588291: Included fix for doxywizard makefile.
  • -
  • id 588587: Added missing virtual destructor to CompAccept base class.
  • -
  • id 588968: Fixed segmentation fault for specific case in PHP code.
  • -
  • Fixed some issues building for Windows.
  • -
  • id 589514: Fixed problem handling strings like a"\b" within a comment.
  • -
  • id 589616: Fixed problem matching explicitly scoped parameter in a - template class.
  • -
  • id 590712: A namespaced with name "internal" (C++/CLI keyword) - could confuse doxygen's C++ parser.
  • -
  • id 591749: @optional/@required attributes for Objective-C were missing - from the XML output.
  • -
-

Doxygen Release 1.5 and earlier

-
-Go back to the main page. -

-

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/closed.png b/vnfs/VES5.0/doxygen-1.8.12/html/closed.png deleted file mode 100644 index e4e2b25a..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/closed.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/commands.html b/vnfs/VES5.0/doxygen-1.8.12/html/commands.html deleted file mode 100644 index 7545a2ed..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/commands.html +++ /dev/null @@ -1,1564 +0,0 @@ - - - - - - - -Doxygen: Special Commands - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Special Commands
-
-
-

-Introduction

-

All commands in the documentation start with a backslash (\) or an at-sign (@). If you prefer you can replace all commands starting with a backslash below by their counterparts that start with an at-sign.

-

Some commands have one or more arguments. Each argument has a certain range:

    -
  • -If <sharp> braces are used the argument is a single word.
  • -
  • -If (round) braces are used the argument extends until the end of the line on which the command was found.
  • -
  • -If {curly} braces are used the argument extends until the next paragraph. Paragraphs are delimited by a blank line or by a section indicator.
  • -
-

If in addition to the above argument specifiers [square] brackets are used the argument is optional.

-

Here is an alphabetically sorted list of all commands with references to their documentation:

- -
-

The following subsections provide a list of all commands that are recognized by doxygen. Unrecognized commands are treated as normal text.

-

--- Structural indicators ---

-

-

-\addtogroup <name> [(title)]

-

Defines a group just like \defgroup, but in contrast to that command using the same <name> more than once will not result in a warning, but rather one group with a merged documentation and the first title found in any of the commands.

-

The title is optional, so this command can also be used to add a number of entities to an existing group using @{ and @} like this:

-
  /*! \addtogroup mygrp
-   *  Additional documentation for group 'mygrp'
-   *  @{
-   */
-
-  /*!
-   *  A function
-   */
-  void func1()
-  {
-  }
-
-  /*! Another function */
-  void func2()
-  {
-  }
-
-  /*! @} */
-
See also
page Grouping, sections \defgroup, \ingroup, and \weakgroup.
-
-

-\callgraph

-

When this command is put in a comment block of a function or method and HAVE_DOT is set to YES, then doxygen will generate a call graph for that function (provided the implementation of the function or method calls other documented functions). The call graph will be generated regardless of the value of CALL_GRAPH.

Note
The completeness (and correctness) of the call graph depends on the doxygen code parser which is not perfect.
-
See also
section \callergraph, section \hidecallgraph, section \hidecallergraph and option CALL_GRAPH
-
-

-\hidecallgraph

-

When this command is put in a comment block of a function or method and then doxygen will not generate a call graph for that function. The call graph will not be generated regardless of the value of CALL_GRAPH.

Note
The completeness (and correctness) of the call graph depends on the doxygen code parser which is not perfect.
-
See also
section \callergraph, section \callgraph, section \hidecallergraph and option CALL_GRAPH
-
-

-\callergraph

-

When this command is put in a comment block of a function or method and HAVE_DOT is set to YES, then doxygen will generate a caller graph for that function (provided the implementation of the function or method calls other documented functions). The caller graph will be generated regardless of the value of CALLER_GRAPH.

Note
The completeness (and correctness) of the caller graph depends on the doxygen code parser which is not perfect.
-
See also
section \callgraph, section \hidecallgraph, section \hidecallergraph and option CALLER_GRAPH
-
-

-\hidecallergraph

-

When this command is put in a comment block of a function or method and then doxygen will not generate a caller graph for that function. The caller graph will not be generated regardless of the value of CALLER_GRAPH.

Note
The completeness (and correctness) of the caller graph depends on the doxygen code parser which is not perfect.
-
See also
section \callergraph, section \callgraph, section \hidecallgraph and option CALLER_GRAPH
-
-

-\category <name> [<header-file>] [<header-name>]

-

For Objective-C only: Indicates that a comment block contains documentation for a class category with name <name>. The arguments are equal to the \class command.

-
See also
section \class.
-
-

-\class <name> [<header-file>] [<header-name>]

-

Indicates that a comment block contains documentation for a class with name <name>. Optionally a header file and a header name can be specified. If the header-file is specified, a link to a verbatim copy of the header will be included in the HTML documentation. The <header-name> argument can be used to overwrite the name of the link that is used in the class documentation to something other than <header-file>. This can be useful if the include name is not located on the default include path (like <X11/X.h>). With the <header-name> argument you can also specify how the include statement should look like, by adding either quotes or sharp brackets around the name. Sharp brackets are used if just the name is given. Note that the last two arguments can also be specified using the \headerfile command.

-
Example:
/* A dummy class */
class Test
{
};
/*! \class Test class.h "inc/class.h"
* \brief This is a test class.
*
* Some details about the Test class.
*/
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
-

-\def <name>

-

Indicates that a comment block contains documentation for a #define macro.

-
Example:
/*! \file define.h
\brief testing defines
This is to test the documentation of defines.
*/
/*!
\def MAX(x,y)
Computes the maximum of \a x and \a y.
*/
/*!
Computes the absolute value of its argument \a x.
*/
#define ABS(x) (((x)>0)?(x):-(x))
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)>(y)?(y):(x))
/*!< Computes the minimum of \a x and \a y. */
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
-

-\defgroup <name> (group title)

-

Indicates that a comment block contains documentation for a group of classes, files or namespaces. This can be used to categorize classes, files or namespaces, and document those categories. You can also use groups as members of other groups, thus building a hierarchy of groups.

-

The <name> argument should be a single-word identifier.

-
See also
page Grouping, sections \ingroup, \addtogroup, and \weakgroup.
-
-

-\dir [<path fragment>]

-

Indicates that a comment block contains documentation for a directory. The "path fragment" argument should include the directory name and enough of the path to be unique with respect to the other directories in the project. The STRIP_FROM_PATH option determines what is stripped from the full path before it appears in the output.

-
-

-\enum <name>

-

Indicates that a comment block contains documentation for an enumeration, with name <name>. If the enum is a member of a class and the documentation block is located outside the class definition, the scope of the class should be specified as well. If a comment block is located directly in front of an enum declaration, the \enum comment may be omitted.

-
Note:
The type of an anonymous enum cannot be documented, but the values of an anonymous enum can.
-
Example:
class Enum_Test
{
public:
enum TEnum { Val1, Val2 };
/*! Another enum, with inline docs */
enum AnotherEnum
{
V1, /*!< value 1 */
V2 /*!< value 2 */
};
};
/*! \class Enum_Test
* The class description.
*/
/*! \enum Enum_Test::TEnum
* A description of the enum type.
*/
/*! \var Enum_Test::TEnum Enum_Test::Val1
* The description of the first enum value.
*/
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
-

-\example <file-name>

-

Indicates that a comment block contains documentation for a source code example. The name of the source file is <file-name>. The text of this file will be included in the documentation, just after the documentation contained in the comment block. All examples are placed in a list. The source code is scanned for documented members and classes. If any are found, the names are cross-referenced with the documentation. Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

-

If <file-name> itself is not unique for the set of example files specified by the EXAMPLE_PATH tag, you can include part of the absolute path to disambiguate it.

-

If more than one source file is needed for the example, the \include command can be used.

-
Example:
/** A Example_Test class.
* More details about this class.
*/
class Example_Test
{
public:
/** An example member function.
* More details about this function.
*/
void example();
};
void Example_Test::example() {}
/** \example example_test.cpp
* This is an example of how to use the Example_Test class.
* More details about this example.
*/
Where the example file example_test.cpp looks as follows:
void main()
{
Example_Test t;
t.example();
}
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
See also
section \include.
-
-

-\endinternal

-

This command ends a documentation fragment that was started with a \internal command. The text between \internal and \endinternal will only be visible if INTERNAL_DOCS is set to YES.

-
-

-\extends <name>

-

This command can be used to manually indicate an inheritance relation, when the programming language does not support this concept natively (e.g. C).

-

The file manual.c in the example directory shows how to use this command.

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

-
See also
section \implements and section \memberof
-
-

-\file [<name>]

-

Indicates that a comment block contains documentation for a source or header file with name <name>. The file name may include (part of) the path if the file-name alone is not unique. If the file name is omitted (i.e. the line after \file is left blank) then the documentation block that contains the \file command will belong to the file it is located in.

-
Important:
The documentation of global functions, variables, typedefs, and enums will only be included in the output if the file they are in is documented as well.
-
Example:
/** \file file.h
* A brief file description.
* A more elaborated file description.
*/
/**
* A global integer value.
* More details about this value.
*/
extern int globalValue;
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
Note
In the above example JAVADOC_AUTOBRIEF has been set to YES in the configuration file.
-
-

-\fn (function declaration)

-

Indicates that a comment block contains documentation for a function (either global or as a member of a class). This command is only needed if a comment block is not placed in front (or behind) the function declaration or definition.

-

If your comment block is in front of the function declaration or definition this command can (and to avoid redundancy should) be omitted.

-

A full function declaration including arguments should be specified after the \fn command on a single line, since the argument ends at the end of the line!

-

This command is equivalent to \var, \typedef, and \property.

-
Warning
Do not use this command if it is not absolutely needed, since it will lead to duplication of information and thus to errors.
-
Example:
class Fn_Test
{
public:
const char *member(char,int) throw(std::out_of_range);
};
const char *Fn_Test::member(char c,int n) throw(std::out_of_range) {}
/*! \class Fn_Test
* \brief Fn_Test class.
*
* Details about Fn_Test.
*/
/*! \fn const char *Fn_Test::member(char c,int n)
* \brief A member function.
* \param c a character.
* \param n an integer.
* \exception std::out_of_range parameter is out of range.
* \return a character pointer.
*/
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
See also
sections \var, \property, and \typedef.
-
-

-\headerfile <header-file> [<header-name>]

-

Intended to be used for class, struct, or union documentation, where the documentation is in front of the definition. The arguments of this command are the same as the second and third argument of \class. The <header-file> name refers to the file that should be included by the application to obtain the definition of the class, struct, or union. The <header-name> argument can be used to overwrite the name of the link that is used in the class documentation to something other than <header-file>. This can be useful if the include name is not located on the default include path (like <X11/X.h>).

-

With the <header-name> argument you can also specify how the include statement should look like, by adding either double quotes or sharp brackets around the name. By default sharp brackets are used if just the name is given.

-

If a pair of double quotes is given for either the <header-file> or <header-name> argument, the current file (in which the command was found) will be used but with quotes. So for a comment block with a \headerfile command inside a file test.h, the following three commands are equivalent:

  \headerfile test.h "test.h"
-  \headerfile test.h ""
-  \headerfile "" 

To get sharp brackets you do not need to specify anything, but if you want to be explicit you could use any of the following:

  \headerfile test.h <test.h>
-  \headerfile test.h <>
-  \headerfile <> 

To globally reverse the default include representation to local includes you can set FORCE_LOCAL_INCLUDES to YES.

-

To disable the include information altogether set SHOW_INCLUDE_FILES to NO.

-
-

-\hideinitializer

-

By default the value of a define and the initializer of a variable are displayed unless they are longer than 30 lines. By putting this command in a comment block of a define or variable, the initializer is always hidden. The maximum number of initialization lines can be changed by means of the configuration parameter MAX_INITIALIZER_LINES, the default value is 30.

-
See also
section \showinitializer.
-
-

-\idlexcept <name>

-

-

Indicates that a comment block contains documentation for a IDL exception with name <name>.

-
-

-\implements <name>

-

This command can be used to manually indicate an inheritance relation, when the programming language does not support this concept natively (e.g. C).

-

The file manual.c in the example directory shows how to use this command.

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

-
See also
section \extends and section \memberof
-
-

-\ingroup (<groupname> [<groupname> <groupname>])

-

If the \ingroup command is placed in a comment block of a class, file or namespace, then it will be added to the group or groups identified by <groupname>.

-
See also
page Grouping, sections \defgroup, \addtogroup, and \weakgroup
-
-

-\interface <name> [<header-file>] [<header-name>]

-

Indicates that a comment block contains documentation for an interface with name <name>. The arguments are equal to the arguments of the \class command.

-
See also
section \class.
-
-

-\internal

-

This command starts a documentation fragment that is meant for internal use only. The fragment naturally ends at the end of the comment block. You can also force the internal section to end earlier by using the \endinternal command.

-

If the \internal command is put inside a section (see for example \section) all subsections after the command are considered to be internal as well. Only a new section at the same level will end the fragment that is considered internal.

-

You can use INTERNAL_DOCS in the config file to show (YES) or hide (NO) the internal documentation.

-
See also
section \endinternal.
-
-

-\mainpage [(title)]

-

-

If the \mainpage command is placed in a comment block the block is used to customize the index page (in HTML) or the first chapter (in $\mbox{\LaTeX}$).

-

The title argument is optional and replaces the default title that doxygen normally generates. If you do not want any title you can specify notitle as the argument of \mainpage.

-

Here is an example:

/*! \mainpage My Personal Index Page
- *
- * \section intro_sec Introduction
- *
- * This is the introduction.
- *
- * \section install_sec Installation
- *
- * \subsection step1 Step 1: Opening the box
- *
- * etc...
- */
-

You can refer to the main page using: \ref index.

-
See also
section \section, section \subsection, and section \page.
-
-

-\memberof <name>

-

This command makes a function a member of a class in a similar way as \relates does, only with this command the function is represented as a real member of the class. This can be useful when the programming language does not support the concept of member functions natively (e.g. C).

-

It is also possible to use this command together with \public, \protected or \private.

-

The file manual.c in the example directory shows how to use this command.

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

-
See also
sections \extends, \implements, \public, \protected and \private.
-
-

-\name [(header)]

-

-

This command turns a comment block into a header definition of a member group. The comment block should be followed by a //@{ ... //@} block containing the members of the group.

-

See section Member Groups for an example.

-
-

-\namespace <name>

-

Indicates that a comment block contains documentation for a namespace with name <name>.

-
-

-\nosubgrouping

-

This command can be put in the documentation of a class. It can be used in combination with member grouping to avoid that doxygen puts a member group as a subgroup of a Public/Protected/Private/... section.

-
See also
sections \publicsection, \protectedsection and \privatesection.
-
-

-\overload [(function declaration)]

-

This command can be used to generate the following standard text for an overloaded member function:

-
-

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

-
-

If the documentation for the overloaded member function is not located in front of the function declaration or definition, the optional argument should be used to specify the correct function.

-

Any other documentation that is inside the documentation block will by appended after the generated message.

-
Note 1:
You are responsible that there is indeed an earlier documented member that is overloaded by this one. To prevent that document reorders the documentation you should set SORT_MEMBER_DOCS to NO in this case.
-
Note 2:
The \overload command does not work inside a one-line comment.
-
Example:
class Overload_Test
{
public:
void drawRect(int,int,int,int);
void drawRect(const Rect &r);
};
void Overload_Test::drawRect(int x,int y,int w,int h) {}
void Overload_Test::drawRect(const Rect &r) {}
/*! \class Overload_Test
* \brief A short description.
*
* More text.
*/
/*! \fn void Overload_Test::drawRect(int x,int y,int w,int h)
* This command draws a rectangle with a left upper corner at ( \a x , \a y ),
* width \a w and height \a h.
*/
/*!
* \overload void Overload_Test::drawRect(const Rect &r)
*/
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
-

-\package <name>

-

Indicates that a comment block contains documentation for a Java package with name <name>.

-
-

-\page <name> (title)

-

Indicates that a comment block contains a piece of documentation that is not directly related to one specific class, file or member. The HTML generator creates a page containing the documentation. The $\mbox{\LaTeX}$ generator starts a new section in the chapter 'Page documentation'.

-
Example:
/*! \page page1 A documentation page
\tableofcontents
Leading text.
\section sec An example section
This page contains the subsections \ref subsection1 and \ref subsection2.
For more info see page \ref page2.
\subsection subsection1 The first subsection
Text.
\subsection subsection2 The second subsection
More text.
*/
/*! \page page2 Another page
Even more info.
*/
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
Note:
The <name> argument consists of a combination of letters and number digits. If you wish to use upper case letters (e.g. MYPAGE1), or mixed case letters (e.g. MyPage1) in the <name> argument, you should set CASE_SENSE_NAMES to YES. However, this is advisable only if your file system is case sensitive. Otherwise (and for better portability) you should use all lower case letters (e.g. mypage1) for <name> in all references to the page.
-
See also
section \section, section \subsection, and section \ref.
-
-

-\private

-

Indicates that the member documented by the comment block is private, i.e., should only be accessed by other members in the same class.

-

Note that doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).

-

For starting a section of private members, in a way similar to the "private:" class marker in C++, use \privatesection.

-
See also
sections \memberof, \public, \protected and \privatesection.
-
-

-\privatesection

-

Starting a section of private members, in a way similar to the "private:" class marker in C++. Indicates that the member documented by the comment block is private, i.e., should only be accessed by other members in the same class.

-
See also
sections \memberof, \public, \protected and \private.
-
-

-\property (qualified property name)

-

Indicates that a comment block contains documentation for a property (either global or as a member of a class). This command is equivalent to \fn, \typedef, and \var.

-
See also
sections \fn, \typedef, and \var.
-
-

-\protected

-

Indicates that the member documented by the comment block is protected, i.e., should only be accessed by other members in the same or derived classes.

-

Note that doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).

-

For starting a section of protected members, in a way similar to the "protected:" class marker in C++, use \protectedsection.

-
See also
sections \memberof, \public, \private and \protectedsection.
-
-

-\protectedsection

-

Starting a section of protected members, in a way similar to the "protected:" class marker in C++. Indicates that the member documented by the comment block is protected, i.e., should only be accessed by other members in the same or derived classes.

-
See also
sections \memberof, \public, \private and \protected.
-
-

-\protocol <name> [<header-file>] [<header-name>]

-

Indicates that a comment block contains documentation for a protocol in Objective-C with name <name>. The arguments are equal to the \class command.

-
See also
section \class.
-
-

-\public

-

Indicates that the member documented by the comment block is public, i.e., can be accessed by any other class or function.

-

Note that doxygen automatically detects the protection level of members in object-oriented languages. This command is intended for use only when the language does not support the concept of protection level natively (e.g. C, PHP 4).

-

For starting a section of public members, in a way similar to the "public:" class marker in C++, use \publicsection.

-
See also
sections \memberof, \protected, \private and \publicsection.
-
-

-\publicsection

-

Starting a section of public members, in a way similar to the "public:" class marker in C++. Indicates that the member documented by the comment block is public, i.e., can be accessed by any other class or function.

-
See also
sections \memberof, \protected, \private and \public.
-
-

-\pure

-

Indicates that the member documented by the comment block is pure virtual, i.e., it is abstract and has no implementation associated with it.

-

This command is intended for use only when the language does not support the concept of pure virtual methods natively (e.g. C, PHP 4).

-
-

-\relates <name>

-

This command can be used in the documentation of a non-member function <name>. It puts the function inside the 'related function' section of the class documentation. This command is useful for documenting non-friend functions that are nevertheless strongly coupled to a certain class. It prevents the need of having to document a file, but only works for functions.

-
Example:
/*!
* A String class.
*/
class String
{
friend int strcmp(const String &,const String &);
};
/*!
* Compares two strings.
*/
int strcmp(const String &s1,const String &s2)
{
}
/*! \relates String
* A string debug function.
*/
void stringDebug()
{
}
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
-

-\related <name>

-

Equivalent to \relates

-
-

-\relatesalso <name>

-

This command can be used in the documentation of a non-member function <name>. It puts the function both inside the 'related function' section of the class documentation as well as leaving it at its normal file documentation location. This command is useful for documenting non-friend functions that are nevertheless strongly coupled to a certain class. It only works for functions.

-
-

-\relatedalso <name>

-

Equivalent to \relatesalso

-
-

-\showinitializer

-

By default the value of a define and the initializer of a variable are only displayed if they are less than 30 lines long. By putting this command in a comment block of a define or variable, the initializer is shown unconditionally. The maximum number of initialization lines can be changed by means of the configuration parameter MAX_INITIALIZER_LINES, the default value is 30.

-
See also
section \hideinitializer.
-
-

-\static

-

Indicates that the member documented by the comment block is static, i.e., it works on a class, instead of on an instance of the class.

-

This command is intended for use only when the language does not support the concept of static methods natively (e.g. C).

-
-

-\struct <name> [<header-file>] [<header-name>]

-

Indicates that a comment block contains documentation for a struct with name <name>. The arguments are equal to the arguments of the \class command.

-
See also
section \class.
-
-

-\typedef (typedef declaration)

-

Indicates that a comment block contains documentation for a typedef (either global or as a member of a class). This command is equivalent to \fn, \property, and \var.

-
See also
section \fn, \property, and \var.
-
-

-\union <name> [<header-file>] [<header-name>]

-

Indicates that a comment block contains documentation for a union with name <name>. The arguments are equal to the arguments of the \class command.

-
See also
section \class.
-
-

-\var (variable declaration)

-

Indicates that a comment block contains documentation for a variable or enum value (either global or as a member of a class). This command is equivalent to \fn, \property, and \typedef.

-
See also
section \fn, \property, and \typedef.
-
-

-\vhdlflow [(title for the flow chart)]

-

This is a VHDL specific command, which can be put in the documentation of a process to produce a flow chart of the logic in the process. Optionally a title for the flow chart can be given.

Note
Currently the flow chart will only appear in the HTML output.
-
-

-\weakgroup <name> [(title)]

-

Can be used exactly like \addtogroup, but has a lower priority when it comes to resolving conflicting grouping definitions.

-
See also
page Grouping and section \addtogroup.
-
-

--- Section indicators ---

-

-
-

-\attention { attention text }

-

Starts a paragraph where a message that needs attention may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \attention commands will be joined into a single paragraph. The \attention command ends when a blank line or some other sectioning command is encountered.

-
-

-\author { list of authors }

-

Starts a paragraph where one or more author names may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \author commands will be joined into a single paragraph. Each author description will start a new line. Alternatively, one \author command may mention several authors. The \author command ends when a blank line or some other sectioning command is encountered.

-
Example:
/*!
* \brief Pretty nice class.
* \details This class is used to demonstrate a number of section commands.
* \author John Doe
* \author Jan Doe
* \version 4.1a
* \date 1990-2011
* \pre First initialize the system.
* \bug Not all memory is freed when deleting an object of this class.
* \warning Improper use can crash your application
* \copyright GNU Public License.
*/
class SomeNiceClass {};
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
-

-\authors { list of authors }

-

Equivalent to \author.

-
-

-\brief { brief description }

-

Starts a paragraph that serves as a brief description. For classes and files the brief description will be used in lists and at the start of the documentation page. For class and file members, the brief description will be placed at the declaration of the member and prepended to the detailed description. A brief description may span several lines (although it is advised to keep it brief!). A brief description ends when a blank line or another sectioning command is encountered. If multiple \brief commands are present they will be joined. See section \author for an example.

-

Synonymous to \short.

-
-

-\bug { bug description }

-

Starts a paragraph where one or more bugs may be reported. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \bug commands will be joined into a single paragraph. Each bug description will start on a new line. Alternatively, one \bug command may mention several bugs. The \bug command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

-
-

-\cond [(section-label)]

-

Starts a conditional section that ends with a corresponding \endcond command, which is typically found in another comment block. The main purpose of this pair of commands is to (conditionally) exclude part of a file from processing (in older version of doxygen this could only be achieved using C preprocessor commands).

-

The section between \cond and \endcond can be included by adding its section label to the ENABLED_SECTIONS configuration option. If the section label is omitted, the section will be excluded from processing unconditionally. The section label can be a logical expression build of section labels, round brackets, && (AND), || (OR) and ! (NOT). If you use an expression you need to wrap it in round brackets, i.e \cond (!LABEL1 && LABEL2).

-

For conditional sections within a comment block one should use a \if ... \endif block.

-

Conditional sections can be nested. In this case a nested section will only be shown if it and its containing section are included.

-

Here is an example showing the commands in action:

-
/** An interface */
-class Intf
-{
-  public:
-    /** A method */
-    virtual void func() = 0;
-
-    /// @cond TEST
-
-    /** A method used for testing */
-    virtual void test() = 0;
-
-    /// @endcond
-};
-
-/// @cond DEV
-/*
- *  The implementation of the interface
- */
-class Implementation : public Intf
-{
-  public:
-    void func();
-
-    /// @cond TEST
-    void test();
-    /// @endcond
-
-    /// @cond
-    /** This method is obsolete and does
-     *  not show up in the documentation.
-     */
-    void obsolete();
-    /// @endcond
-};
-
-/// @endcond
-

The output will be different depending on whether or not ENABLED_SECTIONS contains TEST, or DEV

-
See also
sections \endcond and ENABLED_SECTIONS.
-
-

-\copyright { copyright description }

-

Starts a paragraph where the copyright of an entity can be described. This paragraph will be indented. The text of the paragraph has no special internal structure. See section \author for an example.

-
-

-\date { date description }

-

Starts a paragraph where one or more dates may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \date commands will be joined into a single paragraph. Each date description will start on a new line. Alternatively, one \date command may mention several dates. The \date command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

-
-

-\deprecated { description }

-

Starts a paragraph indicating that this documentation block belongs to a deprecated entity. Can be used to describe alternatives, expected life span, etc.

-
-

-\details { detailed description }

-

Just like \brief starts a brief description, \details starts the detailed description. You can also start a new paragraph (blank line) then the \details command is not needed.

-
-

-\else

-

Starts a conditional section if the previous conditional section was not enabled. The previous section should have been started with a \if, \ifnot, or \elseif command.

-
See also
\if, \ifnot, \elseif, \endif.
-
-

-\elseif (section-label)

-

Starts a conditional documentation section if the previous section was not enabled. A conditional section is disabled by default. To enable it you must put the section-label after the ENABLED_SECTIONS tag in the configuration file. The section label can be a logical expression build of section names, round brackets, && (AND), || (OR) and ! (NOT). Conditional blocks can be nested. A nested section is only enabled if all enclosing sections are enabled as well.

-
See also
sections \endif, \ifnot, \else, and \elseif.
-
-

-\endcond

-

Ends a conditional section that was started by \cond.

-
See also
section \cond.
-
-

-\endif

-

Ends a conditional section that was started by \if or \ifnot For each \if or \ifnot one and only one matching \endif must follow.

-
See also
sections \if and \ifnot.
-
-

-\exception <exception-object> { exception description }

-

Starts an exception description for an exception object with name <exception-object>. Followed by a description of the exception. The existence of the exception object is not checked. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \exception commands will be joined into a single paragraph. Each exception description will start on a new line. The \exception description ends when a blank line or some other sectioning command is encountered. See section \fn for an example.

-
-

-\if (section-label)

-

Starts a conditional documentation section. The section ends with a matching \endif command. A conditional section is disabled by default. To enable it you must put the section-label after the ENABLED_SECTIONS tag in the configuration file.

-

The section label can be a logical expression build of section names, round brackets, && (AND), || (OR) and ! (NOT). If you use an expression you need to wrap it in round brackets, i.e \cond (!LABEL1 && LABEL2).

-

Conditional blocks can be nested. A nested section is only enabled if all enclosing sections are enabled as well.

-
Example:
  /*! Unconditionally shown documentation.
-   *  \if Cond1
-   *    Only included if Cond1 is set.
-   *  \endif
-   *  \if Cond2
-   *    Only included if Cond2 is set.
-   *    \if Cond3
-   *      Only included if Cond2 and Cond3 are set.
-   *    \endif
-   *    More text.
-   *  \endif
-   *  Unconditional text.
-   */
-
-

You can also use conditional commands inside aliases. To document a class in two languages you could for instance use:

-
Example 2:
/*! \english
- *  This is English.
- *  \endenglish
- *  \dutch
- *  Dit is Nederlands.
- *  \enddutch
- */
-class Example
-{
-};
-
-

Where the following aliases are defined in the configuration file:

-
ALIASES  = "english=\if english" \
-           "endenglish=\endif" \
-           "dutch=\if dutch" \
-           "enddutch=\endif"
-

and ENABLED_SECTIONS can be used to enable either english or dutch.

-
See also
sections \endif, \ifnot, \else, \elseif, and ENABLED_SECTIONS.
-
-

-\ifnot (section-label)

-

Starts a conditional documentation section. The section ends with a matching \endif command. This conditional section is enabled by default. To disable it you must put the section-label after the ENABLED_SECTIONS tag in the configuration file. The section label can be a logical expression build of section names, round brackets, && (AND), || (OR) and ! (NOT).

-
See also
sections \endif, \if, \else, and \elseif, and ENABLED_SECTIONS.
-
-

-\invariant { description of invariant }

-

Starts a paragraph where the invariant of an entity can be described. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \invariant commands will be joined into a single paragraph. Each invariant description will start on a new line. Alternatively, one \invariant command may mention several invariants. The \invariant command ends when a blank line or some other sectioning command is encountered.

-
-

-\note { text }

-

Starts a paragraph where a note can be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \note commands will be joined into a single paragraph. Each note description will start on a new line. Alternatively, one \note command may mention several notes. The \note command ends when a blank line or some other sectioning command is encountered. See section \par for an example.

-
-

-\par [(paragraph title)] { paragraph }

-

If a paragraph title is given this command starts a paragraph with a user defined heading. The heading extends until the end of the line. The paragraph following the command will be indented.

-

If no paragraph title is given this command will start a new paragraph. This will also work inside other paragraph commands (like \param or \warning) without ending that command.

-

The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. The \par command ends when a blank line or some other sectioning command is encountered.

-
Example:
/*! \class Par_Test
* Normal text.
*
* \par User defined paragraph:
* Contents of the paragraph.
*
* \par
* New paragraph under the same heading.
*
* \note
* This note consists of two paragraphs.
* This is the first paragraph.
*
* \par
* And this is the second paragraph.
*
* More normal text.
*/
class Par_Test {};
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-
-

-\param [(dir)] <parameter-name> { parameter description }

-

Starts a parameter description for a function parameter with name <parameter-name>, followed by a description of the parameter. The existence of the parameter is checked and a warning is given if the documentation of this (or any other) parameter is missing or not present in the function declaration or definition.

-

The \param command has an optional attribute, (dir), specifying the direction of the parameter. Possible values are "[in]", "[in,out]", and "[out]", note the [square] brackets in this description. When a parameter is both input and output, [in,out] is used as attribute. Here is an example for the function memcpy:

/*!
* Copies bytes from a source memory area to a destination memory area,
* where both areas may not overlap.
* @param[out] dest The memory area to copy to.
* @param[in] src The memory area to copy from.
* @param[in] n The number of bytes to copy
*/
void memcpy(void *dest, const void *src, size_t n);

The parameter description is a paragraph with no special internal structure. All visual enhancement commands may be used inside the paragraph.

-

Multiple adjacent \param commands will be joined into a single paragraph. Each parameter description will start on a new line. The \param description ends when a blank line or some other sectioning command is encountered. See section \fn for an example.

-

Note that you can also document multiple parameters with a single \param command using a comma separated list. Here is an example:

-
/** Sets the position.
* @param x,y,z Coordinates of the position in 3D space.
*/
void setPosition(double x,double y,double z,double t)
{
}

Note that for PHP one can also specify the type (or types if you separate them with a pipe symbol) which are allowed for a parameter (as this is not part of the definition). The syntax is the same as for phpDocumentor, i.e.

@param  datatype1|datatype2 $paramname description
-

-

-\parblock

-

For commands that expect a single paragraph as argument (such as \par, \param and \warning), the \parblock command allows to start a description that covers multiple paragraphs, which then ends with \endparblock.

-

Example:

/** Example of a param command with a description consisting of two paragraphs
- *  \param p 
- *  \parblock
- *  First paragraph of the param description.
- *
- *  Second paragraph of the param description.
- *  \endparblock
- *  Rest of the comment block continues.
- */
-

Note that the \parblock command may also appear directly after \param's first argument.

-
-

-\endparblock

-

This ends a block of paragraphs started with \parblock.

-
-

-\tparam <template-parameter-name> { description }

-

Starts a template parameter for a class or function template parameter with name <template-parameter-name>, followed by a description of the template parameter.

-

Otherwise similar to \param.

-
-

-\post { description of the postcondition }

-

Starts a paragraph where the postcondition of an entity can be described. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \post commands will be joined into a single paragraph. Each postcondition will start on a new line. Alternatively, one \post command may mention several postconditions. The \post command ends when a blank line or some other sectioning command is encountered.

-
-

-\pre { description of the precondition }

-

Starts a paragraph where the precondition of an entity can be described. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \pre commands will be joined into a single paragraph. Each precondition will start on a new line. Alternatively, one \pre command may mention several preconditions. The \pre command ends when a blank line or some other sectioning command is encountered.

-
-

-\remark { remark text }

-

Starts a paragraph where one or more remarks may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \remark commands will be joined into a single paragraph. Each remark will start on a new line. Alternatively, one \remark command may mention several remarks. The \remark command ends when a blank line or some other sectioning command is encountered.

-
-

-\remarks { remark text }

-

Equivalent to \remark.

-
-

-\result { description of the result value }

-

Equivalent to \return.

-
-

-\return { description of the return value }

-

Starts a return value description for a function. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \return commands will be joined into a single paragraph. The \return description ends when a blank line or some other sectioning command is encountered. See section \fn for an example.

-
-

-\returns { description of the return value }

-

Equivalent to \return.

-
-

-\retval <return value> { description }

-

Starts a description for a function's return value with name <return value>, followed by a description of the return value. The text of the paragraph that forms the description has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \retval commands will be joined into a single paragraph. Each return value description will start on a new line. The \retval description ends when a blank line or some other sectioning command is encountered.

-
-

-\sa { references }

-

Starts a paragraph where one or more cross-references to classes, functions, methods, variables, files or URL may be specified. Two names joined by either :: or # are understood as referring to a class and one of its members. One of several overloaded methods or constructors may be selected by including a parenthesized list of argument types after the method name.

-

Synonymous to \see.

-
See also
section autolink for information on how to create links to objects.
-
-

-\see { references }

-

Equivalent to \sa. Introduced for compatibility with Javadoc.

-
-

-\short { short description }

-

Equivalent to \brief.

-
-

-\since { text }

-

This command can be used to specify since when (version or time) an entity is available. The paragraph that follows \since does not have any special internal structure. All visual enhancement commands may be used inside the paragraph. The \since description ends when a blank line or some other sectioning command is encountered.

-
-

-\test { paragraph describing a test case }

-

Starts a paragraph where a test case can be described. The description will also add the test case to a separate test list. The two instances of the description will be cross-referenced. Each test case in the test list will be preceded by a header that indicates the origin of the test case.

-
-

-\throw <exception-object> { exception description }

-

Synonymous \exception.

-
Note:
the command \throws is a synonym for this command.
-
See also
section \exception
-
-

-\throws <exception-object> { exception description }

-

Equivalent to \throw.

-
-

-\todo { paragraph describing what is to be done }

-

Starts a paragraph where a TODO item is described. The description will also add an item to a separate TODO list. The two instances of the description will be cross-referenced. Each item in the TODO list will be preceded by a header that indicates the origin of the item.

-
-

-\version { version number }

-

Starts a paragraph where one or more version strings may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \version commands will be joined into a single paragraph. Each version description will start on a new line. Alternatively, one \version command may mention several version strings. The \version command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

-
-

-\warning { warning message }

-

Starts a paragraph where one or more warning messages may be entered. The paragraph will be indented. The text of the paragraph has no special internal structure. All visual enhancement commands may be used inside the paragraph. Multiple adjacent \warning commands will be joined into a single paragraph. Each warning description will start on a new line. Alternatively, one \warning command may mention several warnings. The \warning command ends when a blank line or some other sectioning command is encountered. See section \author for an example.

-
-

-\xrefitem <key> "(heading)" "(list title)" { text }

-

This command is a generalization of commands such as \todo and \bug. It can be used to create user-defined text sections which are automatically cross-referenced between the place of occurrence and a related page, which will be generated. On the related page all sections of the same type will be collected.

-

The first argument <key> is an identifier uniquely representing the type of the section. The second argument is a quoted string representing the heading of the section under which text passed as the fourth argument is put. The third argument (list title) is used as the title for the related page containing all items with the same key. The keys "todo", "test", "bug" and "deprecated" are predefined.

-

To get an idea on how to use the \xrefitem command and what its effect is, consider the todo list, which (for English output) can be seen an alias for the command

\xrefitem todo "Todo" "Todo List" 

Since it is very tedious and error-prone to repeat the first three parameters of the command for each section, the command is meant to be used in combination with the ALIASES option in the configuration file. To define a new command \reminder, for instance, one should add the following line to the configuration file:

ALIASES += "reminder=\xrefitem reminders \"Reminder\" \"Reminders\"" 

Note the use of escaped quotes for the second and third argument of the \xrefitem command.

-

In case parameter "(heading)" is the empty string no heading is generated. This can be useful when used in combination with the \page command e.g.

/** @page my_errors My Errors
- *  @brief Errors page
- *
- *  Errors page contents.
- */
-
-/** \error ERROR 101: in case a file can not be opened.
-    Check about file system read/write access. */
-#define MY_ERR_CANNOT_OPEN_FILE                   101
-
-/** \error ERROR 102: in case a file can not be closed.
-    Check about file system read/write access. */
-#define MY_ERR_CANNOT_CLOSE_FILE                  102
-

with \error defined as

ALIASES += "error=\xrefitem my_errors \"\" \"\"" 

-

--- Commands to create links ---

-

-
-

-\addindex (text)

-

This command adds (text) to the $\mbox{\LaTeX}$ index.

-
-

-\anchor <word>

-

This command places an invisible, named anchor into the documentation to which you can refer with the \ref command.

-
Note
Anchors can currently only be put into a comment block that is marked as a page (using \page) or mainpage (\mainpage).
-
See also
section \ref.
-
-

-\cite <label>

-

Adds a bibliographic reference in the text and in the list of bibliographic references. The <label> must be a valid BibTeX label that can be found in one of the .bib files listed in CITE_BIB_FILES. For the $\mbox{\LaTeX}$ output the formatting of the reference in the text can be configured with LATEX_BIB_STYLE. For other output formats a fixed representation is used. Note that using this command requires the bibtex tool to be present in the search path.

-
-

-\endlink

-

This command ends a link that is started with the \link command.

-
See also
section \link.
-
-

-\link <link-object>

-

The links that are automatically generated by doxygen always have the name of the object they point to as link-text.

-

The \link command can be used to create a link to an object (a file, class, or member) with a user specified link-text. The link command should end with an \endlink command. All text between the \link and \endlink commands serves as text for a link to the <link-object> specified as the first argument of \link.

-
See also
Section autolink for more information on automatically generated links and valid link-objects.
-
-

-\ref <name> ["(text)"]

-

Creates a reference to a named section, subsection, page or anchor. For HTML documentation the reference command will generate a link to the section. For a section or subsection the title of the section will be used as the text of the link. For an anchor the optional text between quotes will be used or <name> if no text is specified. For $\mbox{\LaTeX}$ documentation the reference command will generate a section number for sections or the text followed by a page number if <name> refers to an anchor.

-
See also
Section \page for an example of the \ref command.
-
-

-\refitem <name>

-

Just like the \ref command, this command creates a reference to a named section, but this reference appears in a list that is started by \secreflist and ends with \endsecreflist. An example of such a list can be seen at the top of the page.

-
-

-\secreflist

-

Starts an index list of item, created with \refitem that each link to a named section.

-
-

-\endsecreflist

-

End an index list started with \secreflist.

-
-

-\subpage <name> ["(text)"]

-

This command can be used to create a hierarchy of pages. The same structure can be made using the \defgroup and \ingroup commands, but for pages the \subpage command is often more convenient. The main page (see \mainpage) is typically the root of hierarchy.

-

This command behaves similar as \ref in the sense that it creates a reference to a page labeled <name> with the optional link text as specified in the second argument.

-

It differs from the \ref command in that it only works for pages, and creates a parent-child relation between pages, where the child page (or sub page) is identified by label <name>.

-

See the \section and \subsection commands if you want to add structure without creating multiple pages.

-
Note
Each page can be the sub page of only one other page and no cyclic relations are allowed, i.e. the page hierarchy must have a tree structure.
-

Here is an example:

/*! \mainpage A simple manual
-
-Some general info.
-
-This manual is divided in the following sections:
-- \subpage intro
-- \subpage advanced "Advanced usage"
-*/
-
-//-----------------------------------------------------------
-
-/*! \page intro Introduction
-This page introduces the user to the topic.
-Now you can proceed to the \ref advanced "advanced section".
-*/
-
-//-----------------------------------------------------------
-
-/*! \page advanced Advanced Usage
-This page is for advanced users.
-Make sure you have first read \ref intro "the introduction".
-*/
-

-

-\tableofcontents

-

Creates a table of contents at the top of a page, listing all sections and subsections in the page.

-
Warning
This command only works inside related page documentation and not in other documentation blocks and only has effect in the HTML output!
-
-

-\section <section-name> (section title)

-

Creates a section with name <section-name>. The title of the section should be specified as the second argument of the \section command.

-
Warning
This command only works inside related page documentation and not in other documentation blocks!
-
See also
Section \page for an example of the \section command.
-
-

-\subsection <subsection-name> (subsection title)

-

Creates a subsection with name <subsection-name>. The title of the subsection should be specified as the second argument of the \subsection command.

-
Warning
This command only works inside a section of a related page documentation block and not in other documentation blocks!
-
See also
Section \page for an example of the \subsection command.
-
-

-\subsubsection <subsubsection-name> (subsubsection title)

-

Creates a subsubsection with name <subsubsection-name>. The title of the subsubsection should be specified as the second argument of the \subsubsection command.

-
Warning
This command only works inside a subsection of a related page documentation block and not in other documentation blocks!
-
See also
Section \page for an example of the \section command and \subsection command.
-
-

-\paragraph <paragraph-name> (paragraph title)

-

Creates a named paragraph with name <paragraph-name>. The title of the paragraph should be specified as the second argument of the \paragraph command.

-
Warning
This command only works inside a subsubsection of a related page documentation block and not in other documentation blocks!
-
-

--- Commands for displaying examples ---

-

-
-

-\dontinclude <file-name>

-

This command can be used to parse a source file without actually verbatim including it in the documentation (as the \include command does). This is useful if you want to divide the source file into smaller pieces and add documentation between the pieces. Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

-

The class and member declarations and definitions inside the code fragment are 'remembered' during the parsing of the comment block that contained the \dontinclude command.

-

For line by line descriptions of source files, one or more lines of the example can be displayed using the \line, \skip, \skipline, and \until commands. An internal pointer is used for these commands. The \dontinclude command sets the pointer to the first line of the example.

-
Example:
/*! A test class. */
class Include_Test
{
public:
/// a member function
void example();
};
/*! \page example
* \dontinclude include_test.cpp
* Our main function starts like this:
* \skip main
* \until {
* First we create an object \c t of the Include_Test class.
* \skipline Include_Test
* Then we call the example member function
* \line example
* After that our little test routine ends.
* \line }
*/
Where the example file example_test.cpp looks as follows:
void main()
{
Example_Test t;
t.example();
}
- Click here - for the corresponding HTML documentation that is generated by doxygen. -
-

Alternatively, the \snippet command can be used to include only a fragment of a source file. For this to work the fragment has to be marked.

-
See also
sections \line, \skip, \skipline, \until, and \include.
-
-

-\include <file-name>

-

This command can be used to include a source file as a block of code. The command takes the name of an include file as an argument. Source files or directories can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

-

If <file-name> itself is not unique for the set of example files specified by the EXAMPLE_PATH tag, you can include part of the absolute path to disambiguate it.

-

Using the \include command is equivalent to inserting the file into the documentation block and surrounding it with \code and \endcode commands.

-

The main purpose of the \include command is to avoid code duplication in case of example blocks that consist of multiple source and header files.

-

For a line by line description of a source files use the \dontinclude command in combination with the \line, \skip, \skipline, and \until commands.

-

Alternatively, the \snippet command can be used to include only a fragment of a source file. For this to work the fragment has to be marked.

-
Note
Doxygen's special commands do not work inside blocks of code. It is allowed to nest C-style comments inside a code block though.
-
See also
sections \example, \dontinclude, \verbatim and \includedoc.
-
-

-\includelineno <file-name>

-

This command works the same way as \include, but will add line numbers to the included file.

-
See also
sections \include and \snippetlineno.
-
-

-\includedoc <file-name>

-

This command works the same way as \include, but it will include the content of the file as if it were at the place where this command is called. The result is that the content is parsed by doxygen and placed in the documentation.

-
Note
Some commands like \cond and \if don't work with this command due to the moment of parsing.
-
-The included documentation should not have comment signs in it as the will appear in the documentation as well.
-
See also
section \include.
-
-

-\line ( pattern )

-

This command searches line by line through the example that was last included using \include or \dontinclude until it finds a non-blank line. If that line contains the specified pattern, it is written to the output.

-

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line following the non-blank line that was found (or to the end of the example if no such line could be found).

-

See section \dontinclude for an example.

-
-

-\skip ( pattern )

-

This command searches line by line through the example that was last included using \include or \dontinclude until it finds a line that contains the specified pattern.

-

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line that contains the specified pattern (or to the end of the example if the pattern could not be found).

-

See section \dontinclude for an example.

-
-

-\skipline ( pattern )

-

This command searches line by line through the example that was last included using \include or \dontinclude until it finds a line that contains the specified pattern. It then writes the line to the output.

-

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line following the line that is written (or to the end of the example if the pattern could not be found).

-
Note:
The command:
\skipline pattern
is equivalent to:
\skip pattern
-\line pattern
-

See section \dontinclude for an example.

-
-

-\snippet <file-name> ( block_id )

-

Where the \include command can be used to include a complete file as source code, this command can be used to quote only a fragment of a source file. In case this is used as <file-name> the current file is taken as file to take the snippet from.

-

For example, the putting the following command in the documentation, references a snippet in file example.cpp residing in a subdirectory which should be pointed to by EXAMPLE_PATH.

-
  \snippet snippets/example.cpp Adding a resource
-

The text following the file name is the unique identifier for the snippet. This is used to delimit the quoted code in the relevant snippet file as shown in the following example that corresponds to the above \snippet command:

-
QImage image(64, 64, QImage::Format_RGB32);
image.fill(qRgb(255, 160, 128));
//! [Adding a resource]
document->addResource(QTextDocument::ImageResource,
QUrl("mydata://image.png"), QVariant(image));
//! [Adding a resource]
...

Note that the lines containing the block markers will not be included, so the output will be:

-
document->addResource(QTextDocument::ImageResource,
QUrl("mydata://image.png"), QVariant(image));

Note also that the [block_id] markers should appear exactly twice in the source file.

-

see section \dontinclude for an alternative way to include fragments of a source file that does not require markers.

-
See also
section \snippetdoc and \snippetlineno.
-
-

-\snippetlineno <file-name> ( block_id )

-

This command works the same way as \snippet, but will add line numbers to the included snippet.

-
See also
sections \snippet and \includelineno.
-
-

-\snippetdoc <file-name> ( block_id )

-

This command works the same way as \snippet, but it will include the content of the file between the block-ids as if it were at the place where this command is called. The result is that the content is parsed by doxygen and placed in the documentation.

-
Note
Some commands like \cond and \if don't work with this command due to the moment of parsing.
-
-The included documentation should not have comment signs in it as the will appear in the documentation as well.
-
See also
section \snippet and \includedoc.
-
-

-\until ( pattern )

-

This command writes all lines of the example that was last included using \include or \dontinclude to the output, until it finds a line containing the specified pattern. The line containing the pattern will be written as well.

-

The internal pointer that is used to keep track of the current line in the example, is set to the start of the line following last written line (or to the end of the example if the pattern could not be found).

-

See section \dontinclude for an example.

-
-

-\verbinclude <file-name>

-

This command includes the file <file-name> verbatim in the documentation. The command is equivalent to pasting the file in the documentation and placing \verbatim and \endverbatim commands around it.

-

Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

-
-

-\htmlinclude <file-name>

-

This command includes the file <file-name> as is in the HTML documentation. The command is equivalent to pasting the file in the documentation and placing \htmlonly and \endhtmlonly commands around it.

-

Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

-
-

-\latexinclude <file-name>

-

This command includes the file <file-name> as is in the $\mbox{\LaTeX}$ documentation. The command is equivalent to pasting the file in the documentation and placing \latexonly and \endlatexonly commands around it.

-

Files or directories that doxygen should look for can be specified using the EXAMPLE_PATH tag of doxygen's configuration file.

-
-

--- Commands for visual enhancements ---

-

-

-\a <word>

-

Displays the argument <word> in italics. Use this command to emphasize words. Use this command to refer to member arguments in the running text.

-
Example:
  ... the \a x and \a y coordinates are used to ...
This will result in the following text:
-
- ... the x and y coordinates are used to ...
-

Equivalent to \e and \em. To emphasize multiple words use <em>multiple words</em>.

-
-

-\arg { item-description }

-

This command has one argument that continues until the first blank line or until another \arg is encountered. The command can be used to generate a simple, not nested list of arguments. Each argument should start with a \arg command.

-
Example:
Typing:
  \arg \c AlignLeft left alignment.
-  \arg \c AlignCenter center alignment.
-  \arg \c AlignRight right alignment
-
-  No other types of alignment are supported.
will result in the following text:
-
-
    -
  • -AlignLeft left alignment.
  • -
  • -AlignCenter center alignment.
  • -
  • -AlignRight right alignment
  • -
-
- No other types of alignment are supported.
-
Note:
For nested lists, HTML commands should be used.
-

Equivalent to \li

-
-

-\b <word>

-

Displays the argument <word> using a bold font. Equivalent to <b>word</b>. To put multiple words in bold use <b>multiple words</b>.

-
-

-\c <word>

-

Displays the argument <word> using a typewriter font. Use this to refer to a word of code. Equivalent to <tt>word</tt>.

-
Example:
Typing:
     ... This function returns \c void and not \c int ...
will result in the following text:
-
- ... This function returns void and not int ...
-

Equivalent to \p To have multiple words in typewriter font use <tt>multiple words</tt>.

-
-

-\code [ '{'<word>'}']

-

Starts a block of code. A code block is treated differently from ordinary text. It is interpreted as source code. The names of classes and members and other documented entities are automatically replaced by links to the documentation.

-

By default the language that is assumed for syntax highlighting is based on the location where the \code block was found. If this part of a Python file for instance, the syntax highlight will be done according to the Python syntax.

-

If it unclear from the context which language is meant (for instance the comment is in a .txt or .markdown file) then you can also explicitly indicate the language, by putting the file extension typically that doxygen associated with the language in curly brackets after the code block. Here is an example:

-
  \code{.py}
-  class Python:
-     pass
-  \endcode
-
-  \code{.cpp}
-  class Cpp {};
-  \endcode
-

If the contents of the code block are in a language that doxygen cannot parse, doxygen will just show the output as-is. You can make this explicit using .unparsed, or by giving some other extension that doxygen doesn't support, e.g.

-
  \code{.unparsed}
-  Show this as-is please
-  \endcode
-
-  \code{.sh}
-  echo "This is a shell script"
-  \endcode
-
See also
section \endcode and section \verbatim.
-
-

-\copydoc <link-object>

-

Copies a documentation block from the object specified by <link-object> and pastes it at the location of the command. This command can be useful to avoid cases where a documentation block would otherwise have to be duplicated or it can be used to extend the documentation of an inherited member.

-

The link object can point to a member (of a class, file or group), a class, a namespace, a group, a page, or a file (checked in that order). Note that if the object pointed to is a member (function, variable, typedef, etc), the compound (class, file, or group) containing it should also be documented for the copying to work.

-

To copy the documentation for a member of a class one can, for instance, put the following in the documentation:

-
  /*! @copydoc MyClass::myfunction()
-   *  More documentation.
-   */
-

if the member is overloaded, you should specify the argument types explicitly (without spaces!), like in the following:

-
  //! @copydoc MyClass::myfunction(type1,type2)
-

Qualified names are only needed if the context in which the documentation block is found requires them.

-

The \copydoc command can be used recursively, but cycles in the \copydoc relation will be broken and flagged as an error.

-

Note that \copydoc foo() is roughly equivalent to doing:

  \brief \copybrief foo()
-  \details \copydetails foo()
-

See \copybrief and \copydetails for copying only the brief or detailed part of the comment block.

-
-

-\copybrief <link-object>

-

Works in a similar way as \copydoc but will only copy the brief description, not the detailed documentation.

-
-

-\copydetails <link-object>

-

Works in a similar way as \copydoc but will only copy the detailed documentation, not the brief description.

-
-

-\docbookonly

-

Starts a block of text that will be verbatim included in the generated docbook documentation only. The block ends with a \enddocbookonly command.

-
See also
section \manonly, \latexonly, \rtfonly, \xmlonly, and \htmlonly.
-
-

-\dot ["caption"] [<sizeindication>=<size>]

-

Starts a text fragment which should contain a valid description of a dot graph. The text fragment ends with \enddot. Doxygen will pass the text on to dot and include the resulting image (and image map) into the output.

-

The first argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

-

The second argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

-

The nodes of a graph can be made clickable by using the URL attribute. By using the command \ref inside the URL value you can conveniently link to an item inside doxygen. Here is an example:

/*! class B */
class B {};
/*! class C */
class C {};
/*! \mainpage
* Class relations expressed via an inline dot graph:
* \dot
* digraph example {
* node [shape=record, fontname=Helvetica, fontsize=10];
* b [ label="class B" URL="\ref B"];
* c [ label="class C" URL="\ref C"];
* b -> c [ arrowhead="open", style="dashed" ];
* }
* \enddot
* Note that the classes in the above graph are clickable
* (in the HTML output).
*/

-

-\msc ["caption"] [<sizeindication>=<size>]

-

Starts a text fragment which should contain a valid description of a message sequence chart. See http://www.mcternan.me.uk/mscgen/ for examples. The text fragment ends with \endmsc.

-

The first argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

-

The second argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

-
Note
The text fragment should only include the part of the message sequence chart that is within the msc {...} block.
-
-You need to install the mscgen tool, if you want to use this command.
-

Here is an example of the use of the \msc command.

/** Sender class. Can be used to send a command to the server.
* The receiver will acknowledge the command by calling Ack().
* \msc
* Sender,Receiver;
* Sender->Receiver [label="Command()", URL="\ref Receiver::Command()"];
* Sender<-Receiver [label="Ack()", URL="\ref Ack()", ID="1"];
* \endmsc
*/
class Sender
{
public:
/** Acknowledgment from server */
void Ack(bool ok);
};
/** Receiver class. Can be used to receive and execute commands.
* After execution of a command, the receiver will send an acknowledgment
* \msc
* Receiver,Sender;
* Receiver<-Sender [label="Command()", URL="\ref Command()"];
* Receiver->Sender [label="Ack()", URL="\ref Sender::Ack()", ID="1"];
* \endmsc
*/
class Receiver
{
public:
/** Executable a command on the server */
void Command(int commandId);
};
See also
section \mscfile.
-
-

-\startuml [{file}] ["caption"] [<sizeindication>=<size>]

-

Starts a text fragment which should contain a valid description of a PlantUML diagram. See http://plantuml.sourceforge.net/ for examples. The text fragment ends with \enduml.

Note
You need to install Java and the PlantUML's jar file, if you want to use this command. The location of the jar file should be specified using PLANTUML_JAR_PATH.
-

The first argument is optional and is for compatibility with running PlantUML as a preprocessing step before running doxygen, you can also add the name of the image file after \startuml and inside curly brackets, i.e.

  @startuml{myimage.png} "Image Caption" width=5cm
-  Alice -> Bob : Hello
-  @enduml

When the name of the image is specified, doxygen will generate an image with that name. Without the name doxygen will choose a name automatically.

-

The second argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

-

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

-

Here is an example of the use of the \startuml command.

/** Sender class. Can be used to send a command to the server.
* The receiver will acknowledge the command by calling Ack().
* \startuml
* Sender->Receiver : Command()
* Sender<--Receiver : Ack()
* \enduml
*/
class Sender
{
public:
/** Acknowledgment from server */
void Ack(bool ok);
};
/** Receiver class. Can be used to receive and execute commands.
* After execution of a command, the receiver will send an acknowledgment
* \startuml
* Receiver<-Sender : Command()
* Receiver-->Sender : Ack()
* \enduml
*/
class Receiver
{
public:
/** Executable a command on the server */
void Command(int commandId);
};

-

-\dotfile <file> ["caption"] [<sizeindication>=<size>]

-

Inserts an image generated by dot from <file> into the documentation.

-

The first argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the DOTFILE_DIRS tag. If the dot file is found it will be used as an input file to the dot tool. The resulting image will be put into the correct output directory. If the dot file name contains spaces you'll have to put quotes ("...") around it.

-

The second argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

-

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

-
See also
section \dot.
-
-

-\mscfile <file> ["caption"] [<sizeindication>=<size>]

-

Inserts an image generated by mscgen from <file> into the documentation. See http://www.mcternan.me.uk/mscgen/ for examples.

-

The first argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the MSCFILE_DIRS tag. If the msc file is found it will be used as an input file to the mscgen tool. The resulting image will be put into the correct output directory. If the msc file name contains spaces you'll have to put quotes ("...") around it.

-

The second argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

-

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

-
See also
section \msc.
-
-

-\diafile <file> ["caption"] [<sizeindication>=<size>]

-

Inserts an image made in dia from <file> into the documentation.

-

The first argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the DIAFILE_DIRS tag. If the dia file is found it will be used as an input file dia. The resulting image will be put into the correct output directory. If the dia file name contains spaces you'll have to put quotes ("...") around it.

-

The second argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

-

The third argument is also optional and can be used to specify the width or height of the image. For a description of the possibilities see the paragraph Size indication with the \image command.

-
-

-\e <word>

-

Displays the argument <word> in italics. Use this command to emphasize words.

-
Example:
Typing:
  ... this is a \e really good example ...
will result in the following text:
-
- ... this is a really good example ...
-

Equivalent to \a and \em. To emphasize multiple words use <em>multiple words</em>.

-
-

-\em <word>

-

Displays the argument <word> in italics. Use this command to emphasize words.

-
Example:
Typing:
  ... this is a \em really good example ...
will result in the following text:
-
- ... this is a really good example ...
-

Equivalent to \a and \e. To emphasize multiple words use <em>multiple words</em>.

-
-

-\endcode

-

Ends a block of code.

See also
section \code
-
-

-\enddocbookonly

-

Ends a block of text that was started with a \docbookonly command.

-
See also
section \docbookonly.
-
-

-\enddot

-

Ends a block that was started with \dot.

-
-

-\endmsc

-

Ends a block that was started with \msc.

-
-

-\enduml

-

Ends a block that was started with \startuml.

-
-

-\endhtmlonly

-

Ends a block of text that was started with a \htmlonly command.

-
See also
section \htmlonly.
-
-

-\endlatexonly

-

Ends a block of text that was started with a \latexonly command.

-
See also
section \latexonly.
-
-

-\endmanonly

-

Ends a block of text that was started with a \manonly command.

-
See also
section \manonly.
-
-

-\endrtfonly

-

Ends a block of text that was started with a \rtfonly command.

-
See also
section \rtfonly.
-
-

-\endverbatim

-

Ends a block of text that was started with a \verbatim command.

-
See also
section \verbatim.
-
-

-\endxmlonly

-

Ends a block of text that was started with a \xmlonly command.

-
See also
section \xmlonly.
-
-

-\f$

-

-

Marks the start and end of an in-text formula.

See also
section formulas for an example.
-
-

-\f[

-

-

Marks the start of a long formula that is displayed centered on a separate line.

See also
section \f] and section formulas.
-
-

-\f]

-

-

Marks the end of a long formula that is displayed centered on a separate line.

See also
section \f[ and section formulas.
-
-

-\f{environment}{

-

-

Marks the start of a formula that is in a specific environment.

Note
The second { is optional and is only to help editors (such as Vim) to do proper syntax highlighting by making the number of opening and closing braces the same.
-
See also
section \f} and section formulas.
-
-

-\f}

-

-

Marks the end of a formula that is in a specific environment.

See also
section \f{ and section formulas.
-
-

-\htmlonly ["[block]"]

-

Starts a block of text that will be verbatim included in the generated HTML documentation only. The block ends with a \endhtmlonly command.

-

This command can be used to include HTML code that is too complex for doxygen (i.e. applets, java-scripts, and HTML tags that require specific attributes).

-

Normally the contents between \htmlonly and \endhtmlonly is inserted as-is. When you want to insert a HTML fragment that has block scope like a table or list which should appear outside <p>..</p>, this can lead to invalid HTML. You can use \htmlonly[block] to make doxygen end the current paragraph and restart it after \endhtmlonly.

-
Note
environment variables (like $(HOME) ) are resolved inside a HTML-only block.
-
See also
section \manonly, \latexonly, \rtfonly, \xmlonly, and \docbookonly.
-
-

-\image <format> <file> ["caption"] [<sizeindication>=<size>]

-

Inserts an image into the documentation. This command is format specific, so if you want to insert an image for more than one format you'll have to repeat this command for each format.

-

The first argument specifies the output format in which the image should be embedded. Currently, the following values are supported: html, latex, docbook and rtf.

-

The second argument specifies the file name of the image. doxygen will look for files in the paths (or files) that you specified after the IMAGE_PATH tag. If the image is found it will be copied to the correct output directory. If the image name contains spaces you'll have to put quotes ("...") around the name. You can also specify an absolute URL instead of a file name, but then doxygen does not copy the image nor check its existence.

-

The third argument is optional and can be used to specify the caption that is displayed below the image. This argument has to be specified on a single line and between quotes even if it does not contain any spaces. The quotes are stripped before the caption is displayed.

-

The fourth argument is also optional and can be used to specify the width or height of the image. This can be useful for $\mbox{\LaTeX}$ or docbook output (i.e. format=latex or format=docbook).

Size indication
The sizeindication can specify the width or height to be used (or a combination). The size specifier in $\mbox{\LaTeX}$ (for example 10cm or 4in or a symbolic width like \\textwidth).
-

Here is example of a comment block:

-
  /*! Here is a snapshot of my new application:
-   *  \image html application.jpg
-   *  \image latex application.eps "My application" width=10cm
-   */
-

And this is an example of how the relevant part of the configuration file may look:

-
  IMAGE_PATH     = my_image_dir
-
Warning
The image format for HTML is limited to what your browser supports. For $\mbox{\LaTeX}$, the image format must be Encapsulated PostScript (eps).
-
- Doxygen does not check if the image is in the correct format. So you have to make sure this is the case!
-
-

-\latexonly

-

Starts a block of text that will be verbatim included in the generated $\mbox{\LaTeX}$ documentation only. The block ends with a \endlatexonly command.

-

This command can be used to include $\mbox{\LaTeX}$ code that is too complex for doxygen (i.e. images, formulas, special characters). You can use the \htmlonly and \endhtmlonly pair to provide a proper HTML alternative.

-

Note: environment variables (like $(HOME) ) are resolved inside a $\mbox{\LaTeX}$-only block.

-
See also
sections \rtfonly, \xmlonly, \manonly, \htmlonly, and \docbookonly.
-
-

-\manonly

-

Starts a block of text that will be verbatim included in the generated MAN documentation only. The block ends with a \endmanonly command.

-

This command can be used to include groff code directly into MAN pages. You can use the \htmlonly and \endhtmlonly and \latexonly and \endlatexonly pairs to provide proper HTML and $\mbox{\LaTeX}$ alternatives.

-
See also
sections \htmlonly, \xmlonly, \rtfonly, \latexonly, and \docbookonly.
-
-

-\li { item-description }

-

This command has one argument that continues until the first blank line or until another \li is encountered. The command can be used to generate a simple, not nested list of arguments. Each argument should start with a \li command.

-
Example:
Typing:
  \li \c AlignLeft left alignment.
-  \li \c AlignCenter center alignment.
-  \li \c AlignRight right alignment
-
-  No other types of alignment are supported.
will result in the following text:
-
-
    -
  • -AlignLeft left alignment.
  • -
  • -AlignCenter center alignment.
  • -
  • -AlignRight right alignment
  • -
-
- No other types of alignment are supported.
-
Note:
For nested lists, HTML commands should be used.
-

Equivalent to \arg

-
-

-\n

-

Forces a new line. Equivalent to <br> and inspired by the printf function.

-
-

-\p <word>

-

Displays the parameter <word> using a typewriter font. You can use this command to refer to member function parameters in the running text.

-
Example:
  ... the \p x and \p y coordinates are used to ...
This will result in the following text:
-
- ... the x and y coordinates are used to ...
-

Equivalent to \c To have multiple words in typewriter font use <tt>multiple words</tt>.

-
-

-\rtfonly

-

Starts a block of text that will be verbatim included in the generated RTF documentation only. The block ends with a \endrtfonly command.

-

This command can be used to include RTF code that is too complex for doxygen.

-

Note: environment variables (like $(HOME) ) are resolved inside a RTF-only block.

-
See also
sections \manonly, \xmlonly, \latexonly, \htmlonly, and \docbookonly.
-
-

-\verbatim

-

Starts a block of text that will be verbatim included in the documentation. The block should end with a \endverbatim command. All commands are disabled in a verbatim block.

-
Warning
Make sure you include a \endverbatim command for each \verbatim command or the parser will get confused!
-
See also
sections \code, \endverbatim and \verbinclude.
-
-

-\xmlonly

-

Starts a block of text that will be verbatim included in the generated XML output only. The block ends with a \endxmlonly command.

-

This command can be used to include custom XML tags.

-
See also
sections \manonly, \rtfonly, \latexonly, \htmlonly, and \docbookonly.
-
-

-\\

-

This command writes a backslash character (\) to the output. The backslash has to be escaped in some cases because doxygen uses it to detect commands.

-
-

-\@

-

This command writes an at-sign (@) to the output. The at-sign has to be escaped in some cases because doxygen uses it to detect JavaDoc commands.

-
-

-\~[LanguageId]

-

This command enables/disables a language specific filter. This can be used to put documentation for different language into one comment block and use the OUTPUT_LANGUAGE tag to filter out only a specific language. Use \~language_id to enable output for a specific language only and \~ to enable output for all languages (this is also the default mode).

-

Example:

/*! \~english This is English \~dutch Dit is Nederlands \~german Dies ist
-    Deutsch. \~ output for all languages.
- */
-

-

-\&

-

This command writes the & character to the output. This character has to be escaped because it has a special meaning in HTML.

-
-

-\$

-

This command writes the $ character to the output. This character has to be escaped in some cases, because it is used to expand environment variables.

-
-

-\#

-

This command writes the # character to the output. This character has to be escaped in some cases, because it is used to refer to documented entities.

-
-

-\<

-

This command writes the < character to the output. This character has to be escaped because it has a special meaning in HTML.

-
-

-\>

-

This command writes the > character to the output. This character has to be escaped because it has a special meaning in HTML.

-
-

-\%

-

This command writes the % character to the output. This character has to be escaped in some cases, because it is used to prevent auto-linking to word that is also a documented class or struct.

-
-

-\"

-

This command writes the " character to the output. This character has to be escaped in some cases, because it is used in pairs to indicate an unformatted text fragment.

-
-

-\.

-

This command writes a dot (.) to the output. This can be useful to prevent ending a brief description when JAVADOC_AUTOBRIEF is enabled or to prevent starting a numbered list when the dot follows a number at the start of a line.

-
-

-\::

-

This command writes a double colon (::) to the output. This character sequence has to be escaped in some cases, because it is used to reference to documented entities.

-
-

-\|

-

This command writes a pipe symbol (|) to the output. This character has to be escaped in some cases, because it is used for Markdown tables.

-
-

-\--

-

This command writes two dashes (--) to the output. This allows writing two consecutive dashes to the output instead of one n-dash character (–).

-
-

-\---

-

This command writes three dashes (---) to the output. This allows writing three consecutive dashes to the output instead of one m-dash character (—).

-
-

--- Commands included for Qt compatibility ---

-

-

The following commands are supported to remain compatible to the Qt class browser generator. Do not use these commands in your own documentation.

    -
  • -\annotatedclasslist
  • -
  • -\classhierarchy
  • -
  • -\define
  • -
  • -\functionindex
  • -
  • -\header
  • -
  • -\headerfilelist
  • -
  • -\inherit
  • -
  • -\l
  • -
  • -\postheader
  • -
-
-

-

-Go to the next section or return to the - index. -

-

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/config.html b/vnfs/VES5.0/doxygen-1.8.12/html/config.html deleted file mode 100644 index 38cc0763..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/config.html +++ /dev/null @@ -1,1965 +0,0 @@ - - - - - - - -Doxygen: Configuration - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Configuration
-
-
- -

-Format

-

A configuration file is a free-form ASCII text file with a structure that is similar to that of a Makefile, with the default name Doxyfile. It is parsed by doxygen. The file may contain tabs and newlines for formatting purposes. The statements in the file are case-sensitive. Comments may be placed anywhere within the file (except within quotes). Comments beginning with two hash characters (##) are kept when updating the configuration file and are placed in front of the TAG they are in front of. Comments beginning with two hash characters (##) at the beginning of the configuration file are also kept and placed at the beginning of the file. Comments beginning with two hash characters (##) at the end of the configuration file are also kept and placed at the end of the file. Comments begin with the hash character (#) and ends at the end of the line.

-

The file essentially consists of a list of assignment statements. Each statement consists of a TAG_NAME written in capitals, followed by the equal sign (=) and one or more values. If the same tag is assigned more than once, the last assignment overwrites any earlier assignment. For tags that take a list as their argument, the += operator can be used instead of = to append new values to the list. Values are sequences of non-blanks. If the value should contain one or more blanks it must be surrounded by quotes ("..."). Multiple lines can be concatenated by inserting a backslash (\) as the last character of a line. Environment variables can be expanded using the pattern $(ENV_VARIABLE_NAME).

-

You can also include part of a configuration file from another configuration file using a @INCLUDE tag as follows:

@INCLUDE = config_file_name
-

The include file is searched in the current working directory. You can also specify a list of directories that should be searched before looking in the current working directory. Do this by putting a @INCLUDE_PATH tag with these paths before the @INCLUDE tag, e.g.:

@INCLUDE_PATH = my_config_dir
-

The configuration options can be divided into several categories. Below is an alphabetical index of the tags that are recognized followed by the descriptions of the tags grouped by category.

- -
-

-Project related configuration options

-

-
DOXYFILE_ENCODING
-

This tag specifies the encoding used for all characters in the config file that follow. The default is UTF-8 which is also the encoding used for all text before the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of possible encodings.

-

The default value is: UTF-8.

-

-
-
PROJECT_NAME
-

The PROJECT_NAME tag is a single word (or a sequence of words surrounded by double-quotes, unless you are using Doxywizard) that should identify the project for which the documentation is generated. This name is used in the title of most generated pages and in a few other places.

-

The default value is: My Project.

-

-
-
PROJECT_NUMBER
-

The PROJECT_NUMBER tag can be used to enter a project or revision number. This could be handy for archiving the generated documentation or if some version control system is used.

-

-
-
PROJECT_BRIEF
-

Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short.

-

-
-
PROJECT_LOGO
-

With the PROJECT_LOGO tag one can specify a logo or an icon that is included in the documentation. The maximum height of the logo should not exceed 55 pixels and the maximum width should not exceed 200 pixels. Doxygen will copy the logo to the output directory.

-

-
-
OUTPUT_DIRECTORY
-

The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path into which the generated documentation will be written. If a relative path is entered, it will be relative to the location where doxygen was started. If left blank the current directory will be used.

-

-
-
CREATE_SUBDIRS
-

If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-directories (in 2 levels) under the output directory of each output format and will distribute the generated files over these directories. Enabling this option can be useful when feeding doxygen a huge amount of source files, where putting all generated files in the same directory would otherwise causes performance problems for the file system.

-

The default value is: NO.

-

-
-
ALLOW_UNICODE_NAMES
-

If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII characters to appear in the names of generated files. If set to NO, non-ASCII characters will be escaped, for example _xE3_x81_x84 will be used for Unicode U+3044.

-

The default value is: NO.

-

-
-
OUTPUT_LANGUAGE
-

The OUTPUT_LANGUAGE tag is used to specify the language in which all documentation generated by doxygen is written. Doxygen will use this information to generate all constant output in the proper language.

-

Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian and Vietnamese.

-

The default value is: English.

-

-
-
BRIEF_MEMBER_DESC
-

If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member descriptions after the members that are listed in the file and class documentation (similar to Javadoc). Set to NO to disable this.

-

The default value is: YES.

-

-
-
REPEAT_BRIEF
-

If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief description of a member or function before the detailed description
-Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be completely suppressed.

-

The default value is: YES.

-

-
-
ABBREVIATE_BRIEF
-

This tag implements a quasi-intelligent brief description abbreviator that is used to form the text in various listings. Each string in this list, if found as the leading text of the brief description, will be stripped from the text and the result, after processing the whole list, is used as the annotated text. Otherwise, the brief description is used as-is. If left blank, the following values are used ($name is automatically replaced with the name of the entity): The $name class, The $name widget, The $name file, is, provides, specifies, contains, represents, a, an and the.

-

-
-
ALWAYS_DETAILED_SEC
-

If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then doxygen will generate a detailed section even if there is only a brief description.

-

The default value is: NO.

-

-
-
INLINE_INHERITED_MEMB
-

If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited members of a class in the documentation of that class as if those members were ordinary class members. Constructors, destructors and assignment operators of the base classes will not be shown.

-

The default value is: NO.

-

-
-
FULL_PATH_NAMES
-

If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path before files name in the file list and in the header files. If set to NO the shortest path that makes the file name unique will be used

-

The default value is: YES.

-

-
-
STRIP_FROM_PATH
-

The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. Stripping is only done if one of the specified strings matches the left-hand part of the path. The tag can be used to show relative paths in the file list. If left blank the directory from which doxygen is run is used as the path to strip.
-Note that you can specify absolute paths here, but also relative paths, which will be relative from the directory where doxygen is started.

-

This tag requires that the tag FULL_PATH_NAMES is set to YES.

-
-
STRIP_FROM_INC_PATH
-

The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the path mentioned in the documentation of a class, which tells the reader which header file to include in order to use a class. If left blank only the name of the header file containing the class definition is used. Otherwise one should specify the list of include paths that are normally passed to the compiler using the -I flag.

-

-
-
SHORT_NAMES
-

If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but less readable) file names. This can be useful is your file systems doesn't support long names like on DOS, Mac, or CD-ROM.

-

The default value is: NO.

-

-
-
JAVADOC_AUTOBRIEF
-

If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the first line (until the first dot) of a Javadoc-style comment as the brief description. If set to NO, the Javadoc-style will behave just like regular Qt-style comments (thus requiring an explicit @brief command for a brief description.)

-

The default value is: NO.

-

-
-
QT_AUTOBRIEF
-

If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first line (until the first dot) of a Qt-style comment as the brief description. If set to NO, the Qt-style will behave just like regular Qt-style comments (thus requiring an explicit \brief command for a brief description.)

-

The default value is: NO.

-

-
-
MULTILINE_CPP_IS_BRIEF
-

The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a multi-line C++ special comment block (i.e. a block of //! or /// comments) as a brief description. This used to be the default behavior. The new default is to treat a multi-line C++ comment block as a detailed description. Set this tag to YES if you prefer the old behavior instead.
-Note that setting this tag to YES also means that rational rose comments are not recognized any more.

-

The default value is: NO.

-

-
-
INHERIT_DOCS
-

If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the documentation from any documented member that it re-implements.

-

The default value is: YES.

-

-
-
SEPARATE_MEMBER_PAGES
-

If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new page for each member. If set to NO, the documentation of a member will be part of the file/class/namespace that contains it.

-

The default value is: NO.

-

-
-
TAB_SIZE
-

The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen uses this value to replace tabs by spaces in code fragments.

-

Minimum value: 1, maximum value: 16, default value: 4.

-

-
-
ALIASES
-

This tag can be used to specify a number of aliases that act as commands in the documentation. An alias has the form:

 name=value
-

For example adding

 "sideeffect=@par Side Effects:\n" 
-

will allow you to put the command \sideeffect (or @sideeffect) in the documentation, which will result in a user-defined paragraph with heading "Side Effects:". You can put \n's in the value part of an alias to insert newlines.

-

-
-
TCL_SUBST
-

This tag can be used to specify a number of word-keyword mappings (TCL only). A mapping has the form "name=value". For example adding "class=itcl::class" will allow you to use the command class in the itcl::class meaning.

-

-
-
OPTIMIZE_OUTPUT_FOR_C
-

Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources only. Doxygen will then generate output that is more tailored for C. For instance, some of the names that are used will be different. The list of all members will be omitted, etc.

-

The default value is: NO.

-

-
-
OPTIMIZE_OUTPUT_JAVA
-

Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or Python sources only. Doxygen will then generate output that is more tailored for that language. For instance, namespaces will be presented as packages, qualified scopes will look different, etc.

-

The default value is: NO.

-

-
-
OPTIMIZE_FOR_FORTRAN
-

Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran sources. Doxygen will then generate output that is tailored for Fortran.

-

The default value is: NO.

-

-
-
OPTIMIZE_OUTPUT_VHDL
-

Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL sources. Doxygen will then generate output that is tailored for VHDL.

-

The default value is: NO.

-

-
-
EXTENSION_MAPPING
-

Doxygen selects the parser to use depending on the extension of the files it parses. With this tag you can assign which parser to use for a given extension. Doxygen has a built-in mapping, but you can override or extend it using this tag. The format is ext=language, where ext is a file extension, and language is one of the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: Fortran. In the later case the parser tries to guess whether the code is fixed or free formatted code, this is the default for Fortran type files), VHDL.

-

For instance to make doxygen treat .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C.

-


-Note: For files without extension you can use no_extension as a placeholder.
-Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.

-

-
-
MARKDOWN_SUPPORT
-

If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments according to the Markdown format, which allows for more readable documentation. See http://daringfireball.net/projects/markdown/ for details. The output of markdown processing is further processed by doxygen, so you can mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in case of backward compatibilities issues.

-

The default value is: YES.

-

-
-
TOC_INCLUDE_HEADINGS
-

When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up to that level are automatically included in the table of contents, even if they do not have an id attribute.

Note
This feature currently applies only to Markdown headings.
-

Minimum value: 0, maximum value: 99, default value: 0.

-

This tag requires that the tag MARKDOWN_SUPPORT is set to YES.

-
-
AUTOLINK_SUPPORT
-

When enabled doxygen tries to link words that correspond to documented classes, or namespaces to their corresponding documentation. Such a link can be prevented in individual cases by putting a % sign in front of the word or globally by setting AUTOLINK_SUPPORT to NO.

-

The default value is: YES.

-

-
-
BUILTIN_STL_SUPPORT
-

If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to include (a tag file for) the STL sources as input, then you should set this tag to YES in order to let doxygen match functions declarations and definitions whose arguments contain STL classes (e.g. func(std::string); versus func(std::string) {}). This also make the inheritance and collaboration diagrams that involve STL classes more complete and accurate.

-

The default value is: NO.

-

-
-
CPP_CLI_SUPPORT
-

If you use Microsoft's C++/CLI language, you should set this option to YES to enable parsing support.

-

The default value is: NO.

-

-
-
SIP_SUPPORT
-

Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. Doxygen will parse them like normal C++ but will assume all classes use public instead of private inheritance when no explicit protection keyword is present.

-

The default value is: NO.

-

-
-
IDL_PROPERTY_SUPPORT
-

For Microsoft's IDL there are propget and propput attributes to indicate getter and setter methods for a property. Setting this option to YES will make doxygen to replace the get and set methods by a property in the documentation. This will only work if the methods are indeed getting or setting a simple type. If this is not the case, or you want to show the methods anyway, you should set this option to NO.

-

The default value is: YES.

-

-
-
DISTRIBUTE_GROUP_DOC
-

If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC tag is set to YES then doxygen will reuse the documentation of the first member in the group (if any) for the other members of the group. By default all members of a group must be documented explicitly.

-

The default value is: NO.

-

-
-
GROUP_NESTED_COMPOUNDS
-

If one adds a struct or class to a group and this option is enabled, then also any nested class or struct is added to the same group. By default this option is disabled and one has to add nested compounds explicitly via \ingroup.

-

The default value is: NO.

-

-
-
SUBGROUPING
-

Set the SUBGROUPING tag to YES to allow class member groups of the same type (for instance a group of public functions) to be put as a subgroup of that type (e.g. under the Public Functions section). Set it to NO to prevent subgrouping. Alternatively, this can be done per class using the \nosubgrouping command.

-

The default value is: YES.

-

-
-
INLINE_GROUPED_CLASSES
-

When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions are shown inside the group in which they are included (e.g. using \ingroup) instead of on a separate page (for HTML and Man pages) or section (for $\mbox{\LaTeX}$ and RTF).
-Note that this feature does not work in combination with SEPARATE_MEMBER_PAGES.

-

The default value is: NO.

-

-
-
INLINE_SIMPLE_STRUCTS
-

When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions with only public data fields or simple typedef fields will be shown inline in the documentation of the scope in which they are defined (i.e. file, namespace, or group documentation), provided this scope is documented. If set to NO, structs, classes, and unions are shown on a separate page (for HTML and Man pages) or section (for $\mbox{\LaTeX}$ and RTF).

-

The default value is: NO.

-

-
-
TYPEDEF_HIDES_STRUCT
-

When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or enum is documented as struct, union, or enum with the name of the typedef. So typedef struct TypeS {} TypeT, will appear in the documentation as a struct with name TypeT. When disabled the typedef will appear as a member of a file, namespace, or class. And the struct will be named TypeS. This can typically be useful for C code in case the coding convention dictates that all compound types are typedef'ed and only the typedef is referenced, never the tag name.

-

The default value is: NO.

-

-
-
LOOKUP_CACHE_SIZE
-

The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given their name and scope. Since this can be an expensive process and often the same symbol appears multiple times in the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small doxygen will become slower. If the cache is too large, memory is wasted. The cache size is given by this formula: $2^{(16+\mbox{LOOKUP\_CACHE\_SIZE})}$. The valid range is 0..9, the default is 0, corresponding to a cache size of $2^{16} = 65536$ symbols. At the end of a run doxygen will report the cache usage and suggest the optimal cache size from a speed point of view.

-

Minimum value: 0, maximum value: 9, default value: 0.

-

-
-
-

-Build related configuration options

-

-
EXTRACT_ALL
-

If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in documentation are documented, even if no documentation was available. Private class members and static file members will be hidden unless the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.

-
Note
This will also disable the warnings about undocumented members that are normally produced when WARNINGS is set to YES.
-

The default value is: NO.

-

-
-
EXTRACT_PRIVATE
-

If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will be included in the documentation.

-

The default value is: NO.

-

-
-
EXTRACT_PACKAGE
-

If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal scope will be included in the documentation.

-

The default value is: NO.

-

-
-
EXTRACT_STATIC
-

If the EXTRACT_STATIC tag is set to YES, all static members of a file will be included in the documentation.

-

The default value is: NO.

-

-
-
EXTRACT_LOCAL_CLASSES
-

If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined locally in source files will be included in the documentation. If set to NO, only classes defined in header files are included. Does not have any effect for Java sources.

-

The default value is: YES.

-

-
-
EXTRACT_LOCAL_METHODS
-

This flag is only useful for Objective-C code. If set to YES, local methods, which are defined in the implementation section but not in the interface are included in the documentation. If set to NO, only methods in the interface are included.

-

The default value is: NO.

-

-
-
EXTRACT_ANON_NSPACES
-

If this flag is set to YES, the members of anonymous namespaces will be extracted and appear in the documentation as a namespace called 'anonymous_namespace{file}', where file will be replaced with the base name of the file that contains the anonymous namespace. By default anonymous namespace are hidden.

-

The default value is: NO.

-

-
-
HIDE_UNDOC_MEMBERS
-

If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all undocumented members inside documented classes or files. If set to NO these members will be included in the various overviews, but no documentation section is generated. This option has no effect if EXTRACT_ALL is enabled.

-

The default value is: NO.

-

-
-
HIDE_UNDOC_CLASSES
-

If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all undocumented classes that are normally visible in the class hierarchy. If set to NO, these classes will be included in the various overviews. This option has no effect if EXTRACT_ALL is enabled.

-

The default value is: NO.

-

-
-
HIDE_FRIEND_COMPOUNDS
-

If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend (class|struct|union) declarations. If set to NO, these declarations will be included in the documentation.

-

The default value is: NO.

-

-
-
HIDE_IN_BODY_DOCS
-

If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any documentation blocks found inside the body of a function. If set to NO, these blocks will be appended to the function's detailed documentation block.

-

The default value is: NO.

-

-
-
INTERNAL_DOCS
-

The INTERNAL_DOCS tag determines if documentation that is typed after a \internal command is included. If the tag is set to NO then the documentation will be excluded. Set it to YES to include the internal documentation.

-

The default value is: NO.

-

-
-
CASE_SENSE_NAMES
-

If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file names in lower-case letters. If set to YES, upper-case letters are also allowed. This is useful if you have classes or files whose names only differ in case and if your file system supports case sensitive file names. Windows and Mac users are advised to set this option to NO.

-

The default value is: system dependent.

-

-
-
HIDE_SCOPE_NAMES
-

If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with their full class and namespace scopes in the documentation. If set to YES, the scope will be hidden.

-

The default value is: NO.

-

-
-
HIDE_COMPOUND_REFERENCE
-

If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will append additional text to a page's title, such as Class Reference. If set to YES the compound reference will be hidden.

-

The default value is: NO.

-

-
-
SHOW_INCLUDE_FILES
-

If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of the files that are included by a file in the documentation of that file.

-

The default value is: YES.

-

-
-
SHOW_GROUPED_MEMB_INC
-

If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each grouped member an include statement to the documentation, telling the reader which file to include in order to use the member.

-

The default value is: NO.

-

-
-
FORCE_LOCAL_INCLUDES
-

If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include files with double quotes in the documentation rather than with sharp brackets.

-

The default value is: NO.

-

-
-
INLINE_INFO
-

If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the documentation for inline members.

-

The default value is: YES.

-

-
-
SORT_MEMBER_DOCS
-

If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the (detailed) documentation of file and class members alphabetically by member name. If set to NO, the members will appear in declaration order.

-

The default value is: YES.

-

-
-
SORT_BRIEF_DOCS
-

If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief descriptions of file, namespace and class members alphabetically by member name. If set to NO, the members will appear in declaration order. Note that this will also influence the order of the classes in the class list.

-

The default value is: NO.

-

-
-
SORT_MEMBERS_CTORS_1ST
-

If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO the constructors will appear in the respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.

Note
If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief member documentation.
-
-If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting detailed member documentation.
-

The default value is: NO.

-

-
-
SORT_GROUP_NAMES
-

If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy of group names into alphabetical order. If set to NO the group names will appear in their defined order.

-

The default value is: NO.

-

-
-
SORT_BY_SCOPE_NAME
-

If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by fully-qualified names, including namespaces. If set to NO, the class list will be sorted only by class name, not including the namespace part.

Note
This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-
-This option applies only to the class list, not to the alphabetical list.
-

The default value is: NO.

-

-
-
STRICT_PROTO_MATCHING
-

If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still accept a match between prototype and implementation in such cases.

-

The default value is: NO.

-

-
-
GENERATE_TODOLIST
-

The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo list. This list is created by putting \todo commands in the documentation.

-

The default value is: YES.

-

-
-
GENERATE_TESTLIST
-

The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test list. This list is created by putting \test commands in the documentation.

-

The default value is: YES.

-

-
-
GENERATE_BUGLIST
-

The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug list. This list is created by putting \bug commands in the documentation.

-

The default value is: YES.

-

-
-
GENERATE_DEPRECATEDLIST
-

The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) the deprecated list. This list is created by putting \deprecated commands in the documentation.

-

The default value is: YES.

-

-
-
ENABLED_SECTIONS
-

The ENABLED_SECTIONS tag can be used to enable conditional documentation sections, marked by \if <section_label> ... \endif and \cond <section_label> ... \endcond blocks.

-

-
-
MAX_INITIALIZER_LINES
-

The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the initial value of a variable or macro / define can have for it to appear in the documentation. If the initializer consists of more lines than specified here it will be hidden. Use a value of 0 to hide initializers completely. The appearance of the value of individual variables and macros / defines can be controlled using \showinitializer or \hideinitializer command in the documentation regardless of this setting.

-

Minimum value: 0, maximum value: 10000, default value: 30.

-

-
-
SHOW_USED_FILES
-

Set the SHOW_USED_FILES tag to NO to disable the list of files generated at the bottom of the documentation of classes and structs. If set to YES, the list will mention the files that were used to generate the documentation.

-

The default value is: YES.

-

-
-
SHOW_FILES
-

Set the SHOW_FILES tag to NO to disable the generation of the Files page. This will remove the Files entry from the Quick Index and from the Folder Tree View (if specified).

-

The default value is: YES.

-

-
-
SHOW_NAMESPACES
-

Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces page. This will remove the Namespaces entry from the Quick Index and from the Folder Tree View (if specified).

-

The default value is: YES.

-

-
-
FILE_VERSION_FILTER
-

The FILE_VERSION_FILTER tag can be used to specify a program or script that doxygen should invoke to get the current version for each file (typically from the version control system). Doxygen will invoke the program by executing (via popen()) the command command input-file, where command is the value of the FILE_VERSION_FILTER tag, and input-file is the name of an input file provided by doxygen. Whatever the program writes to standard output is used as the file version.Example of using a shell script as a filter for Unix:

 FILE_VERSION_FILTER = "/bin/sh versionfilter.sh"
-


- Example shell script for CVS:

#!/bin/sh
-cvs status $1 | sed -n 's/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p'
-


- Example shell script for Subversion:

#!/bin/sh
-svn stat -v $1 | sed -n 's/^[ A-Z?\*|!]\{1,15\}/r/;s/ \{1,15\}/\/r/;s/ .*//p'
-


- Example filter for ClearCase:

FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
-

-
-
LAYOUT_FILE
-

The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by doxygen. The layout file controls the global structure of the generated output files in an output format independent way. To create the layout file that represents doxygen's defaults, run doxygen with the -l option. You can optionally specify a file name after the option, if omitted DoxygenLayout.xml will be used as the name of the layout file.
-Note that if you run doxygen from a directory containing a file called DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE tag is left empty.

-

-
-
CITE_BIB_FILES
-

The CITE_BIB_FILES tag can be used to specify one or more bib files containing the reference definitions. This must be a list of .bib files. The .bib extension is automatically appended if omitted. This requires the bibtex tool to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. For $\mbox{\LaTeX}$ the style of the bibliography can be controlled using LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the search path. See also \cite for info how to create references.

-

-
-
-

-Configuration options related to warning and progress messages

-

-
QUIET
-

The QUIET tag can be used to turn on/off the messages that are generated to standard output by doxygen. If QUIET is set to YES this implies that the messages are off.

-

The default value is: NO.

-

-
-
WARNINGS
-

The WARNINGS tag can be used to turn on/off the warning messages that are generated to standard error (stderr) by doxygen. If WARNINGS is set to YES this implies that the warnings are on.
- Tip: Turn warnings on while writing the documentation.

-

The default value is: YES.

-

-
-
WARN_IF_UNDOCUMENTED
-

If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag will automatically be disabled.

-

The default value is: YES.

-

-
-
WARN_IF_DOC_ERROR
-

If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for potential errors in the documentation, such as not documenting some parameters in a documented function, or documenting parameters that don't exist or using markup commands wrongly.

-

The default value is: YES.

-

-
-
WARN_NO_PARAMDOC
-

This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that are documented, but have no documentation for their parameters or return value. If set to NO, doxygen will only warn about wrong or incomplete parameter documentation, but not about the absence of documentation.

-

The default value is: NO.

-

-
-
WARN_AS_ERROR
-

If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when a warning is encountered.

-

The default value is: NO.

-

-
-
WARN_FORMAT
-

The WARN_FORMAT tag determines the format of the warning messages that doxygen can produce. The string should contain the $file, $line, and $text tags, which will be replaced by the file and line number from which the warning originated and the warning text. Optionally the format may contain $version, which will be replaced by the version of the file (if it could be obtained via FILE_VERSION_FILTER)

-

The default value is: $file:$line: $text.

-

-
-
WARN_LOGFILE
-

The WARN_LOGFILE tag can be used to specify a file to which warning and error messages should be written. If left blank the output is written to standard error (stderr).

-

-
-
-

-Configuration options related to the input files

-

-
INPUT
-

The INPUT tag is used to specify the files and/or directories that contain documented source files. You may enter file names like myfile.cpp or directories like /usr/src/myproject. Separate the files or directories with spaces. See also FILE_PATTERNS and EXTENSION_MAPPING

-
Note
If this tag is empty the current directory is searched.
-

-
-
INPUT_ENCODING
-

This tag can be used to specify the character encoding of the source files that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. See the libiconv documentation for the list of possible encodings.

-

The default value is: UTF-8.

-

-
-
FILE_PATTERNS
-

If the value of the INPUT tag contains directories, you can use the FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and *.h) to filter out the source-files in the directories.
- Note that for custom extensions or not directly supported extensions you also need to set EXTENSION_MAPPING for the extension otherwise the files are not read by doxygen.
- If left blank the following patterns are tested: *.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.

-

-
-
RECURSIVE
-

The RECURSIVE tag can be used to specify whether or not subdirectories should be searched for input files as well.

-

The default value is: NO.

-

-
-
EXCLUDE
-

The EXCLUDE tag can be used to specify files and/or directories that should be excluded from the INPUT source files. This way you can easily exclude a subdirectory from a directory tree whose root is specified with the INPUT tag.
-Note that relative paths are relative to the directory from which doxygen is run.

-

-
-
EXCLUDE_SYMLINKS
-

The EXCLUDE_SYMLINKS tag can be used to select whether or not files or directories that are symbolic links (a Unix file system feature) are excluded from the input.

-

The default value is: NO.

-

-
-
EXCLUDE_PATTERNS
-

If the value of the INPUT tag contains directories, you can use the EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude certain files from those directories.
-Note that the wildcards are matched against the file with absolute path, so to exclude all test directories for example use the pattern */test/*

-

-
-
EXCLUDE_SYMBOLS
-

The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names (namespaces, classes, functions, etc.) that should be excluded from the output. The symbol name can be a fully qualified name, a word, or if the wildcard * is used, a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
-Note that the wildcards are matched against the file with absolute path, so to exclude all test directories use the pattern */test/*

-

-
-
EXAMPLE_PATH
-

The EXAMPLE_PATH tag can be used to specify one or more files or directories that contain example code fragments that are included (see the \include command).

-

-
-
EXAMPLE_PATTERNS
-

If the value of the EXAMPLE_PATH tag contains directories, you can use the EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and *.h) to filter out the source-files in the directories. If left blank all files are included.

-

-
-
EXAMPLE_RECURSIVE
-

If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be searched for input files to be used with the \include or \dontinclude commands irrespective of the value of the RECURSIVE tag.

-

The default value is: NO.

-

-
-
IMAGE_PATH
-

The IMAGE_PATH tag can be used to specify one or more files or directories that contain images that are to be included in the documentation (see the \image command).

-

-
-
INPUT_FILTER
-

The INPUT_FILTER tag can be used to specify a program that doxygen should invoke to filter for each input file. Doxygen will invoke the filter program by executing (via popen()) the command:
- <filter> <input-file>
- where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the name of an input file. Doxygen will then use the output that the filter program writes to standard output. If FILTER_PATTERNS is specified, this tag will be ignored.
-Note that the filter must not add or remove lines; it is applied before the code is scanned, but not when the output code is generated. If lines are added or removed, the anchors will not be placed correctly.
-Note that for custom extensions or not directly supported extensions you also need to set EXTENSION_MAPPING for the extension otherwise the files are not properly processed by doxygen.
-

-

-
-
FILTER_PATTERNS
-

The FILTER_PATTERNS tag can be used to specify filters on a per file pattern basis. Doxygen will compare the file name with each pattern and apply the filter if there is a match. The filters are a list of the form: pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how filters are used. If the FILTER_PATTERNS tag is empty or if none of the patterns match the file name, INPUT_FILTER is applied.
-Note that for custom extensions or not directly supported extensions you also need to set EXTENSION_MAPPING for the extension otherwise the files are not properly processed by doxygen.
-

-

-
-
FILTER_SOURCE_FILES
-

If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using INPUT_FILTER) will also be used to filter the input files that are used for producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).

-

The default value is: NO.

-

-
-
FILTER_SOURCE_PATTERNS
-

The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file pattern. A pattern will override the setting for FILTER_PATTERN (if any) and it is also possible to disable source filtering for a specific pattern using *.ext= (so without naming a filter).

-

This tag requires that the tag FILTER_SOURCE_FILES is set to YES.

-
-
USE_MDFILE_AS_MAINPAGE
-

If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that is part of the input, its contents will be placed on the main page (index.html). This can be useful if you have a project on for instance GitHub and want to reuse the introduction page also for the doxygen output.

-

-
-
-

-Configuration options related to source browsing

-

-
SOURCE_BROWSER
-

If the SOURCE_BROWSER tag is set to YES then a list of source files will be generated. Documented entities will be cross-referenced with these sources.
-Note: To get rid of all source code in the generated output, make sure that also VERBATIM_HEADERS is set to NO.

-

The default value is: NO.

-

-
-
INLINE_SOURCES
-

Setting the INLINE_SOURCES tag to YES will include the body of functions, classes and enums directly into the documentation.

-

The default value is: NO.

-

-
-
STRIP_CODE_COMMENTS
-

Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any special comment blocks from generated source code fragments. Normal C, C++ and Fortran comments will always remain visible.

-

The default value is: YES.

-

-
-
REFERENCED_BY_RELATION
-

If the REFERENCED_BY_RELATION tag is set to YES then for each documented function all documented functions referencing it will be listed.

-

The default value is: NO.

-

-
-
REFERENCES_RELATION
-

If the REFERENCES_RELATION tag is set to YES then for each documented function all documented entities called/used by that function will be listed.

-

The default value is: NO.

-

-
-
REFERENCES_LINK_SOURCE
-

If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set to YES then the hyperlinks from functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will link to the documentation.

-

The default value is: YES.

-

-
-
SOURCE_TOOLTIPS
-

If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the source code will show a tooltip with additional information such as prototype, brief description and links to the definition and documentation. Since this will make the HTML file larger and loading of large files a bit slower, you can opt to disable this feature.

-

The default value is: YES.

-

This tag requires that the tag SOURCE_BROWSER is set to YES.

-
-
USE_HTAGS
-

If the USE_HTAGS tag is set to YES then the references to source code will point to the HTML generated by the htags(1) tool instead of doxygen built-in source browser. The htags tool is part of GNU's global source tagging system (see http://www.gnu.org/software/global/global.html). You will need version 4.8.6 or higher.
- To use it do the following:

    -
  1. Install the latest version of global
  2. -
  3. Enable SOURCE_BROWSER and USE_HTAGS in the config file
  4. -
  5. Make sure the INPUT points to the root of the source tree
  6. -
  7. Run doxygen as normal
    - Doxygen will invoke htags (and that will in turn invoke gtags), so these tools must be available from the command line (i.e. in the search path).
    - The result: instead of the source browser generated by doxygen, the links to source code will now point to the output of htags.
  8. -
-

The default value is: NO.

-

This tag requires that the tag SOURCE_BROWSER is set to YES.

-
-
VERBATIM_HEADERS
-

If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a verbatim copy of the header file for each class for which an include is specified. Set to NO to disable this.

See also
Section \class.
-

The default value is: YES.

-

-
-
CLANG_ASSISTED_PARSING
-

If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the clang parser for more accurate parsing at the cost of reduced performance. This can be particularly helpful with template rich C++ code for which doxygen's built-in parser lacks the necessary type information.

-
Note
The availability of this option depends on whether or not doxygen was generated with the -Duse-libclang=ON option for CMake.
-

The default value is: NO.

-

-
-
CLANG_OPTIONS
-

If clang assisted parsing is enabled you can provide the compiler with command line options that you would normally use when invoking the compiler. Note that the include paths will already be set by doxygen for the files and directories specified with INPUT and INCLUDE_PATH.

-

This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.

-
-
-

-Configuration options related to the alphabetical class index

-

-
ALPHABETICAL_INDEX
-

If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all compounds will be generated. Enable this if the project contains a lot of classes, structs, unions or interfaces.

-

The default value is: YES.

-

-
-
COLS_IN_ALPHA_INDEX
-

The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in which the alphabetical index list will be split.

-

Minimum value: 1, maximum value: 20, default value: 5.

-

This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

-
-
IGNORE_PREFIX
-

In case all classes in a project start with a common prefix, all classes will be put under the same header in the alphabetical index. The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) that should be ignored while generating the index headers.

-

This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

-
-
-

-Configuration options related to the HTML output

-

-
GENERATE_HTML
-

If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output

-

The default value is: YES.

-

-
-
HTML_OUTPUT
-

The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

-

The default directory is: html.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_FILE_EXTENSION
-

The HTML_FILE_EXTENSION tag can be used to specify the file extension for each generated HTML page (for example: .htm, .php, .asp).

-

The default value is: .html.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_HEADER
-

The HTML_HEADER tag can be used to specify a user-defined HTML header file for each generated HTML page. If the tag is left blank doxygen will generate a standard header.
- To get valid HTML the header file that includes any scripts and style sheets that doxygen needs, which is dependent on the configuration options used (e.g. the setting GENERATE_TREEVIEW). It is highly recommended to start with a default header using

doxygen -w html new_header.html new_footer.html new_stylesheet.css YourConfigFile
-

and then modify the file new_header.html.

-

See also section Doxygen usage for information on how to generate the default header that doxygen normally uses.

-
Note
The header is subject to change so you typically have to regenerate the default header when upgrading to a newer version of doxygen. The following markers have a special meaning inside the header and footer:
-
$title
-
will be replaced with the title of the page.
-
$datetime
-
will be replaced with current the date and time.
-
$date
-
will be replaced with the current date.
-
$year
-
will be replaces with the current year.
-
$doxygenversion
-
will be replaced with the version of doxygen
-
$projectname
-
will be replaced with the name of the project (see PROJECT_NAME)
-
$projectnumber
-
will be replaced with the project number (see PROJECT_NUMBER)
-
$projectbrief
-
will be replaced with the project brief description (see PROJECT_BRIEF)
-
$projectlogo
-
will be replaced with the project logo (see PROJECT_LOGO)
-
$treeview
-
will be replaced with links to the javascript and style sheets needed for the navigation tree (or an empty string when GENERATE_TREEVIEW is disabled).
-
$search
-
will be replaced with a links to the javascript and style sheets needed for the search engine (or an empty string when SEARCHENGINE is disabled).
-
$mathjax
-
will be replaced with a links to the javascript and style sheets needed for the MathJax feature (or an empty string when USE_MATHJAX is disabled).
-
$relpath^
-
If CREATE_SUBDIRS is enabled, the command $relpath^ can be used to produce a relative path to the root of the HTML output directory, e.g. use $relpath^doxygen.css, to refer to the standard style sheet.
-
-
-

To cope with differences in the layout of the header and footer that depend on configuration settings, the header can also contain special blocks that will be copied to the output or skipped depending on the configuration. Such blocks have the following form:

 <!--BEGIN BLOCKNAME-->
- Some context copied when condition BLOCKNAME holds
- <!--END BLOCKNAME-->
- <!--BEGIN !BLOCKNAME-->
- Some context copied when condition BLOCKNAME does not hold
- <!--END !BLOCKNAME-->
-

The following block names are supported:

-
DISABLE_INDEX
-
Content within this block is copied to the output when the DISABLE_INDEX option is enabled (so when the index is disabled).
-
GENERATE_TREEVIEW
-
Content within this block is copied to the output when the GENERATE_TREEVIEW option is enabled.
-
SEARCHENGINE
-
Content within this block is copied to the output when the SEARCHENGINE option is enabled.
-
PROJECT_NAME
-
Content within the block is copied to the output when the PROJECT_NAME option is not empty.
-
PROJECT_NUMBER
-
Content within the block is copied to the output when the PROJECT_NUMBER option is not empty.
-
PROJECT_BRIEF
-
Content within the block is copied to the output when the PROJECT_BRIEF option is not empty.
-
PROJECT_LOGO
-
Content within the block is copied to the output when the PROJECT_LOGO option is not empty.
-
TITLEAREA
-
Content within this block is copied to the output when a title is visible at the top of each page. This is the case if either PROJECT_NAME, PROJECT_BRIEF, PROJECT_LOGO is filled in or if both DISABLE_INDEX and SEARCHENGINE are enabled.
-
-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_FOOTER
-

The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each generated HTML page. If the tag is left blank doxygen will generate a standard footer.

-

See HTML_HEADER for more information on how to generate a default footer and what special commands can be used inside the footer.

-

See also section Doxygen usage for information on how to generate the default footer that doxygen normally uses.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_STYLESHEET
-

The HTML_STYLESHEET tag can be used to specify a user-defined cascading style sheet that is used by each HTML page. It can be used to fine-tune the look of the HTML output. If left blank doxygen will generate a default style sheet.

-

See also section Doxygen usage for information on how to generate the style sheet that doxygen normally uses.

-
Note
It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as it is more robust and this tag (HTML_STYLESHEET) will in the future become obsolete.
-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_EXTRA_STYLESHEET
-
The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined cascading style sheets that are included after the standard style sheets created by doxygen. Using this option one can overrule certain style aspects. This is preferred over using HTML_STYLESHEET since it does not replace the standard style sheet and is therefore more robust against future updates. Doxygen will copy the style sheet files to the output directory.
Note
The order of the extra style sheet files is of importance (e.g. the last style sheet in the list overrules the setting of the previous ones in the list). Here is an example style sheet that gives the contents area a fixed width:
body {
-        background-color: #CCC;
-        color: black;
-        margin: 0;
-}
-
-div.contents {
-        margin-bottom: 10px;
-        padding: 12px;
-        margin-left: auto;
-        margin-right: auto;
-        width: 960px;
-        background-color: white;
-        border-radius: 8px;
-}
-
-#titlearea {
-        background-color: white;
-}
-
-hr.footer {
-        display: none;
-}
-
-.footer {
-        background-color: #AAA;
-}
-
-This tag requires that the tag GENERATE_HTML is set to YES.
-
HTML_EXTRA_FILES
-

The HTML_EXTRA_FILES tag can be used to specify one or more extra images or other source files which should be copied to the HTML output directory. Note that these files will be copied to the base HTML output directory. Use the $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these files. In the HTML_STYLESHEET file, use the file name only. Also note that the files will be copied as-is; there are no commands or markers available.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_COLORSTYLE_HUE
-

The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen will adjust the colors in the style sheet and background images according to this color. Hue is specified as an angle on a colorwheel, see http://en.wikipedia.org/wiki/Hue for more information. For instance the value 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 purple, and 360 is red again.

-

Minimum value: 0, maximum value: 359, default value: 220.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_COLORSTYLE_SAT
-

The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors in the HTML output. For a value of 0 the output will use grayscales only. A value of 255 will produce the most vivid colors.

-

Minimum value: 0, maximum value: 255, default value: 100.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_COLORSTYLE_GAMMA
-

The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the luminance component of the colors in the HTML output. Values below 100 gradually make the output lighter, whereas values above 100 make the output darker. The value divided by 100 is the actual gamma applied, so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not change the gamma.

-

Minimum value: 40, maximum value: 240, default value: 80.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_TIMESTAMP
-

If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML page will contain the date and time when the page was generated. Setting this to YES can help to show when doxygen was last run and thus if the documentation is up to date.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_DYNAMIC_SECTIONS
-

If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML documentation will contain sections that can be hidden and shown after the page has loaded.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
HTML_INDEX_NUM_ENTRIES
-

With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries shown in the various tree structured indices initially; the user can expand and collapse entries dynamically later on. Doxygen will expand the tree to such a level that at most the specified number of entries are visible (unless a fully collapsed tree already exceeds this amount). So setting the number of entries 1 will produce a full collapsed tree by default. 0 is a special value representing an infinite number of entries and will result in a full expanded tree by default.

-

Minimum value: 0, maximum value: 9999, default value: 100.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
GENERATE_DOCSET
-

If the GENERATE_DOCSET tag is set to YES, additional index files will be generated that can be used as input for Apple's Xcode 3 integrated development environment, introduced with OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a Makefile in the HTML output directory. Running make will produce the docset in that directory and running make install will install the docset in ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
DOCSET_FEEDNAME
-

This tag determines the name of the docset feed. A documentation feed provides an umbrella under which multiple documentation sets from a single provider (such as a company or product suite) can be grouped.

-

The default value is: Doxygen generated docs.

-

This tag requires that the tag GENERATE_DOCSET is set to YES.

-
-
DOCSET_BUNDLE_ID
-

This tag specifies a string that should uniquely identify the documentation set bundle. This should be a reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen will append .docset to the name.

-

The default value is: org.doxygen.Project.

-

This tag requires that the tag GENERATE_DOCSET is set to YES.

-
-
DOCSET_PUBLISHER_ID
-

The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify the documentation publisher. This should be a reverse domain-name style string, e.g. com.mycompany.MyDocSet.documentation.

-

The default value is: org.doxygen.Publisher.

-

This tag requires that the tag GENERATE_DOCSET is set to YES.

-
-
DOCSET_PUBLISHER_NAME
-

The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.

-

The default value is: Publisher.

-

This tag requires that the tag GENERATE_DOCSET is set to YES.

-
-
GENERATE_HTMLHELP
-

If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three additional HTML index files: index.hhp, index.hhc, and index.hhk. The index.hhp is a project file that can be read by Microsoft's HTML Help Workshop on Windows.
- The HTML Help Workshop contains a compiler that can convert all HTML output generated by doxygen into a single compiled HTML file (.chm). Compiled HTML files are now used as the Windows 98 help format, and will replace the old Windows help format (.hlp) on all Windows platforms in the future. Compressed HTML files also contain an index, a table of contents, and you can search for words in the documentation. The HTML workshop also contains a viewer for compressed HTML files.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
CHM_FILE
-

The CHM_FILE tag can be used to specify the file name of the resulting .chm file. You can add a path in front of the file if the result should not be written to the html output directory.

-

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

-
-
HHC_LOCATION
-

The HHC_LOCATION tag can be used to specify the location (absolute path including file name) of the HTML help compiler (hhc.exe). If non-empty, doxygen will try to run the HTML help compiler on the generated index.hhp.

-

The file has to be specified with full path.

-

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

-
-
GENERATE_CHI
-

The GENERATE_CHI flag controls if a separate .chi index file is generated (YES) or that it should be included in the master .chm file (NO).

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

-
-
CHM_INDEX_ENCODING
-

The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) and project file content.

-

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

-
-
BINARY_TOC
-

The BINARY_TOC flag controls whether a binary table of contents is generated (YES) or a normal table of contents (NO) in the .chm file. Furthermore it enables the Previous and Next buttons.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

-
-
TOC_EXPAND
-

The TOC_EXPAND flag can be set to YES to add extra items for group members to the table of contents of the HTML help documentation and to the tree view.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTMLHELP is set to YES.

-
-
GENERATE_QHP
-

If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated HTML documentation.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
QCH_FILE
-

If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify the file name of the resulting .qch file. The path specified is relative to the HTML output folder.

-

This tag requires that the tag GENERATE_QHP is set to YES.

-
-
QHP_NAMESPACE
-

The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help Project output. For more information please see Qt Help Project / Namespace.

-

The default value is: org.doxygen.Project.

-

This tag requires that the tag GENERATE_QHP is set to YES.

-
-
QHP_VIRTUAL_FOLDER
-

The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt Help Project output. For more information please see Qt Help Project / Virtual Folders.

-

The default value is: doc.

-

This tag requires that the tag GENERATE_QHP is set to YES.

-
-
QHP_CUST_FILTER_NAME
-

If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom filter to add. For more information please see Qt Help Project / Custom Filters.

-

This tag requires that the tag GENERATE_QHP is set to YES.

-
-
QHP_CUST_FILTER_ATTRS
-

The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the custom filter to add. For more information please see Qt Help Project / Custom Filters.

-

This tag requires that the tag GENERATE_QHP is set to YES.

-
-
QHP_SECT_FILTER_ATTRS
-

The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's filter section matches. Qt Help Project / Filter Attributes.

-

This tag requires that the tag GENERATE_QHP is set to YES.

-
-
QHG_LOCATION
-

The QHG_LOCATION tag can be used to specify the location of Qt's qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the generated .qhp file.

-

This tag requires that the tag GENERATE_QHP is set to YES.

-
-
GENERATE_ECLIPSEHELP
-

If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be generated, together with the HTML files, they form an Eclipse help plugin.

-

To install this plugin and make it available under the help contents menu in Eclipse, the contents of the directory containing the HTML and XML files needs to be copied into the plugins directory of eclipse. The name of the directory within the plugins directory should be the same as the ECLIPSE_DOC_ID value.

-

After copying Eclipse needs to be restarted before the help appears.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
ECLIPSE_DOC_ID
-

A unique identifier for the Eclipse help plugin. When installing the plugin the directory name containing the HTML and XML files should also have this name. Each documentation set should have its own identifier.

-

The default value is: org.doxygen.Project.

-

This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.

-
-
DISABLE_INDEX
-

If you want full control over the layout of the generated HTML pages it might be necessary to disable the index and replace it with your own. The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top of each HTML page. A value of NO enables the index and the value YES disables it. Since the tabs in the index contain the same information as the navigation tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
GENERATE_TREEVIEW
-

The GENERATE_TREEVIEW tag is used to specify whether a tree-like index structure should be generated to display hierarchical information. If the tag value is set to YES, a side panel will be generated containing a tree-like index structure (just like the one that is generated for HTML Help). For this to work a browser that supports JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). Windows users are probably better off using the HTML help feature.

-

Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can further fine-tune the look of the index. As an example, the default style sheet generated by doxygen has an example that shows how to put an image at the root of the tree instead of the PROJECT_NAME.

-

Since the tree basically has the same information as the tab index, you could consider setting DISABLE_INDEX to YES when enabling this option.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
ENUM_VALUES_PER_LINE
-

The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that doxygen will group on one line in the generated HTML documentation.
-Note that a value of 0 will completely suppress the enum values from appearing in the overview section.

-

Minimum value: 0, maximum value: 20, default value: 4.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
TREEVIEW_WIDTH
-

If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used to set the initial width (in pixels) of the frame in which the tree is shown.

-

Minimum value: 0, maximum value: 1500, default value: 250.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
EXT_LINKS_IN_WINDOW
-

If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to external symbols imported via tag files in a separate window.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
FORMULA_FONTSIZE
-

Use this tag to change the font size of $\mbox{\LaTeX}$ formulas included as images in the HTML documentation. When you change the font size after a successful doxygen run you need to manually remove any form_*.png images from the HTML output directory to force them to be regenerated.

-

Minimum value: 8, maximum value: 50, default value: 10.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
FORMULA_TRANSPARENT
-

Use the FORMULA_TRANPARENT tag to determine whether or not the images generated for formulas are transparent PNGs. Transparent PNGs are not supported properly for IE 6.0, but are supported on all modern browsers.
-Note that when changing this option you need to delete any form_*.png files in the HTML output directory before the changes have effect.

-

The default value is: YES.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
USE_MATHJAX
-

Enable the USE_MATHJAX option to render $\mbox{\LaTeX}$ formulas using MathJax (see http://www.mathjax.org) which uses client side Javascript for the rendering instead of using pre-rendered bitmaps. Use this if you do not have $\mbox{\LaTeX}$ installed or if you want to formulas look prettier in the HTML output. When enabled you may also need to install MathJax separately and configure the path to it using the MATHJAX_RELPATH option.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
MATHJAX_FORMAT
-

When MathJax is enabled you can set the default output format to be used for the MathJax output. See the MathJax site for more details.

-

Possible values are: HTML-CSS (which is slower, but has the best compatibility), NativeMML (i.e. MathML) and SVG.

-

The default value is: HTML-CSS.

-

This tag requires that the tag USE_MATHJAX is set to YES.

-
-
MATHJAX_RELPATH
-

When MathJax is enabled you need to specify the location relative to the HTML output directory using the MATHJAX_RELPATH option. The destination directory should contain the MathJax.js script. For instance, if the mathjax directory is located at the same level as the HTML output directory, then MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax Content Delivery Network so you can quickly see the result without installing MathJax. However, it is strongly recommended to install a local copy of MathJax from http://www.mathjax.org before deployment.

-

The default value is: http://cdn.mathjax.org/mathjax/latest.

-

This tag requires that the tag USE_MATHJAX is set to YES.

-
-
MATHJAX_EXTENSIONS
-

The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax extension names that should be enabled during MathJax rendering. For example

MATHJAX_EXTENSIONS     = TeX/AMSmath TeX/AMSsymbols
-

This tag requires that the tag USE_MATHJAX is set to YES.

-
-
MATHJAX_CODEFILE
-

The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces of code that will be used on startup of the MathJax code. See the MathJax site for more details. As an example to disable the "Math Renderer" menu item in the "Math - Settings" menu of MathJax:

MATHJAX_CODEFILE = disableRenderer.js
-

with in the file disableRenderer.js:

  MathJax.Hub.Config({
-   menuSettings: {
-    showRenderer: false,
-   } 
-  });
-

This tag requires that the tag USE_MATHJAX is set to YES.

-
-
SEARCHENGINE
-

When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should typically be disabled. For large projects the javascript based search engine can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.

-

It is possible to search using the keyboard; to jump to the search box use <access key> + S (what the <access key> is depends on the OS and browser, but it is typically <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down key> to jump into the search results window, the results can be navigated using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel the search. The filter options can be selected when the cursor is inside the search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> to select a filter and <Enter> or <escape> to activate or cancel the filter option.

-

The default value is: YES.

-

This tag requires that the tag GENERATE_HTML is set to YES.

-
-
SERVER_BASED_SEARCH
-

When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a web server instead of a web client using Javascript.

-

There are two flavors of web server based searching depending on the EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for searching and an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing and searching needs to be provided by external tools. See the section External Indexing and Searching for details.

-

The default value is: NO.

-

This tag requires that the tag SEARCHENGINE is set to YES.

-
-
EXTERNAL_SEARCH
-

When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP script for searching. Instead the search results are written to an XML file which needs to be processed by an external indexer. Doxygen will invoke an external search engine pointed to by the SEARCHENGINE_URL option to obtain the search results.
-Doxygen ships with an example indexer (doxyindexer) and search engine (doxysearch.cgi) which are based on the open source search engine library Xapian.
-See the section External Indexing and Searching for details.

-

The default value is: NO.

-

This tag requires that the tag SEARCHENGINE is set to YES.

-
-
SEARCHENGINE_URL
-

The SEARCHENGINE_URL should point to a search engine hosted by a web server which will return the search results when EXTERNAL_SEARCH is enabled.
-Doxygen ships with an example indexer (doxyindexer) and search engine (doxysearch.cgi) which are based on the open source search engine library Xapian. See the section External Indexing and Searching for details.

-

This tag requires that the tag SEARCHENGINE is set to YES.

-
-
SEARCHDATA_FILE
-

When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed search data is written to a file for indexing by an external tool. With the SEARCHDATA_FILE tag the name of this file can be specified.

-

The default file is: searchdata.xml.

-

This tag requires that the tag SEARCHENGINE is set to YES.

-
-
EXTERNAL_SEARCH_ID
-

When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple projects and redirect the results back to the right project.

-

This tag requires that the tag SEARCHENGINE is set to YES.

-
-
EXTRA_SEARCH_MAPPINGS
-

The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen projects other than the one defined by this configuration file, but that are all added to the same external search index. Each project needs to have a unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of to a relative location where the documentation can be found.

-

The format is:

EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... 
-

This tag requires that the tag SEARCHENGINE is set to YES.

-
-
-

-Configuration options related to the LaTeX output

-

-
GENERATE_LATEX
-

If the GENERATE_LATEX tag is set to YES, doxygen will generate $\mbox{\LaTeX}$ output.

-

The default value is: YES.

-

-
-
LATEX_OUTPUT
-

The LATEX_OUTPUT tag is used to specify where the $\mbox{\LaTeX}$ docs will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

-

The default directory is: latex.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_CMD_NAME
-

The LATEX_CMD_NAME tag can be used to specify the $\mbox{\LaTeX}$ command name to be invoked.
-Note that when enabling USE_PDFLATEX this option is only used for generating bitmaps for formulas in the HTML output, but not in the Makefile that is written to the output directory.

-

The default file is: latex.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
MAKEINDEX_CMD_NAME
-

The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate index for $\mbox{\LaTeX}$.

-

The default file is: makeindex.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
COMPACT_LATEX
-

If the COMPACT_LATEX tag is set to YES, doxygen generates more compact $\mbox{\LaTeX}$ documents. This may be useful for small projects and may help to save some trees in general.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
PAPER_TYPE
-

The PAPER_TYPE tag can be used to set the paper type that is used by the printer.

-

Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x 14 inches) and executive (7.25 x 10.5 inches).

-

The default value is: a4.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
EXTRA_PACKAGES
-

The EXTRA_PACKAGES tag can be used to specify one or more $\mbox{\LaTeX}$ package names that should be included in the $\mbox{\LaTeX}$ output. The package can be specified just by its name or with the correct syntax as to be used with the $\mbox{\LaTeX}$ \usepackage command.

-

To get the times font for instance you can specify :

  EXTRA_PACKAGES=times
-or 
-  EXTRA_PACKAGES={times}
-

To use the option intlimits with the amsmath package you can specify:

   EXTRA_PACKAGES=[intlimits]{amsmath}
-

If left blank no extra packages will be included.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_HEADER
-

The LATEX_HEADER tag can be used to specify a personal $\mbox{\LaTeX}$ header for the generated $\mbox{\LaTeX}$ document. The header should contain everything until the first chapter.

-

If it is left blank doxygen will generate a standard header. See section Doxygen usage for information on how to let doxygen write the default header to a separate file.

-


-Note: Only use a user-defined header if you know what you are doing!

-

The following commands have a special meaning inside the header: $title, $datetime, $date, $doxygenversion, $projectname, $projectnumber, $projectbrief, $projectlogo. Doxygen will replace $title with the empty string, for the replacement values of the other commands the user is referred to HTML_HEADER.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_FOOTER
-

The LATEX_FOOTER tag can be used to specify a personal $\mbox{\LaTeX}$ footer for the generated $\mbox{\LaTeX}$ document. The footer should contain everything after the last chapter. If it is left blank doxygen will generate a standard footer. See LATEX_HEADER for more information on how to generate a default footer and what special commands can be used inside the footer.

-


-Note: Only use a user-defined footer if you know what you are doing!

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_EXTRA_STYLESHEET
-
The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined $\mbox{\LaTeX}$ style sheets that are included after the standard style sheets created by doxygen. Using this option one can overrule certain style aspects. Doxygen will copy the style sheet files to the output directory.
Note
The order of the extra style sheet files is of importance (e.g. the last style sheet in the list overrules the setting of the previous ones in the list).
-This tag requires that the tag GENERATE_LATEX is set to YES.
-
LATEX_EXTRA_FILES
-

The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or other source files which should be copied to the LATEX_OUTPUT output directory. Note that the files will be copied as-is; there are no commands or markers available.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
PDF_HYPERLINKS
-

If the PDF_HYPERLINKS tag is set to YES, the $\mbox{\LaTeX}$ that is generated is prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will contain links (just like the HTML output) instead of page references. This makes the output suitable for online browsing using a PDF viewer.

-

The default value is: YES.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
USE_PDFLATEX
-

If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate the PDF file directly from the $\mbox{\LaTeX}$ files. Set this option to YES, to get a higher quality PDF documentation.

-

The default value is: YES.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_BATCHMODE
-

If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode command to the generated $\mbox{\LaTeX}$ files. This will instruct $\mbox{\LaTeX}$ to keep running if errors occur, instead of asking the user for help. This option is also used when generating formulas in HTML.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_HIDE_INDICES
-

If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the index chapters (such as File Index, Compound Index, etc.) in the output.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_SOURCE_CODE
-

If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source code with syntax highlighting in the $\mbox{\LaTeX}$ output.
-Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_BIB_STYLE
-

The LATEX_BIB_STYLE tag can be used to specify the style to use for the bibliography, e.g. plainnat, or ieeetr. See http://en.wikipedia.org/wiki/BibTeX and \cite for more info.

-

The default value is: plain.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
LATEX_TIMESTAMP
-

If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated page will contain the date and time when the page was generated. Setting this to NO can help when comparing the output of multiple runs.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_LATEX is set to YES.

-
-
-

-Configuration options related to the RTF output

-

-
GENERATE_RTF
-

If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The RTF output is optimized for Word 97 and may not look too pretty with other RTF readers/editors.

-

The default value is: NO.

-

-
-
RTF_OUTPUT
-

The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

-

The default directory is: rtf.

-

This tag requires that the tag GENERATE_RTF is set to YES.

-
-
COMPACT_RTF
-

If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF documents. This may be useful for small projects and may help to save some trees in general.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_RTF is set to YES.

-
-
RTF_HYPERLINKS
-

If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will contain hyperlink fields. The RTF file will contain links (just like the HTML output) instead of page references. This makes the output suitable for online browsing using Word or some other Word compatible readers that support those fields.

-


-Note: WordPad (write) and others do not support links.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_RTF is set to YES.

-
-
RTF_STYLESHEET_FILE
-

Load stylesheet definitions from file. Syntax is similar to doxygen's config file, i.e. a series of assignments. You only have to provide replacements, missing definitions are set to their default value.
- See also section Doxygen usage for information on how to generate the default style sheet that doxygen normally uses.

-

This tag requires that the tag GENERATE_RTF is set to YES.

-
-
RTF_EXTENSIONS_FILE
-

Set optional variables used in the generation of an RTF document. Syntax is similar to doxygen's config file. A template extensions file can be generated using doxygen -e rtf extensionFile.

-

This tag requires that the tag GENERATE_RTF is set to YES.

-
-
RTF_SOURCE_CODE
-

If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code with syntax highlighting in the RTF output.
-Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_RTF is set to YES.

-
-
-

-Configuration options related to the man page output

-

-
GENERATE_MAN
-

If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for classes and files.

-

The default value is: NO.

-

-
-
MAN_OUTPUT
-

The MAN_OUTPUT tag is used to specify where the man pages will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it. A directory man3 will be created inside the directory specified by MAN_OUTPUT.

-

The default directory is: man.

-

This tag requires that the tag GENERATE_MAN is set to YES.

-
-
MAN_EXTENSION
-

The MAN_EXTENSION tag determines the extension that is added to the generated man pages. In case the manual section does not start with a number, the number 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is optional.

-

The default value is: .3.

-

This tag requires that the tag GENERATE_MAN is set to YES.

-
-
MAN_SUBDIR
-

The MAN_SUBDIR tag determines the name of the directory created within MAN_OUTPUT in which the man pages are placed. If defaults to man followed by MAN_EXTENSION with the initial . removed.

-

This tag requires that the tag GENERATE_MAN is set to YES.

-
-
MAN_LINKS
-

If the MAN_LINKS tag is set to YES and doxygen generates man output, then it will generate one additional man file for each entity documented in the real man page(s). These additional files only source the real man page, but without them the man command would be unable to find the correct page.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_MAN is set to YES.

-
-
-

-Configuration options related to the XML output

-

-
GENERATE_XML
-

If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that captures the structure of the code including all documentation.

-

The default value is: NO.

-

-
-
XML_OUTPUT
-

The XML_OUTPUT tag is used to specify where the XML pages will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

-

The default directory is: xml.

-

This tag requires that the tag GENERATE_XML is set to YES.

-
-
XML_PROGRAMLISTING
-

If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program listings (including syntax highlighting and cross-referencing information) to the XML output. Note that enabling this will significantly increase the size of the XML output.

-

The default value is: YES.

-

This tag requires that the tag GENERATE_XML is set to YES.

-
-
-

-Configuration options related to the DOCBOOK output

-

-
GENERATE_DOCBOOK
-

If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files that can be used to generate PDF.

-

The default value is: NO.

-

-
-
DOCBOOK_OUTPUT
-

The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put in front of it.

-

The default directory is: docbook.

-

This tag requires that the tag GENERATE_DOCBOOK is set to YES.

-
-
DOCBOOK_PROGRAMLISTING
-

If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the program listings (including syntax highlighting and cross-referencing information) to the DOCBOOK output. Note that enabling this will significantly increase the size of the DOCBOOK output.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_DOCBOOK is set to YES.

-
-
-

-Configuration options for the AutoGen Definitions output

-

-
GENERATE_AUTOGEN_DEF
-

If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an AutoGen Definitions (see http://autogen.sf.net) file that captures the structure of the code including all documentation. Note that this feature is still experimental and incomplete at the moment.

-

The default value is: NO.

-

-
-
-

-Configuration options related to the Perl module output

-

-
GENERATE_PERLMOD
-

If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module file that captures the structure of the code including all documentation.
-Note that this feature is still experimental and incomplete at the moment.

-

The default value is: NO.

-

-
-
PERLMOD_LATEX
-

If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary Makefile rules, Perl scripts and $\mbox{\LaTeX}$ code to be able to generate PDF and DVI output from the Perl module output.

-

The default value is: NO.

-

This tag requires that the tag GENERATE_PERLMOD is set to YES.

-
-
PERLMOD_PRETTY
-

If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely formatted so it can be parsed by a human reader. This is useful if you want to understand what is going on. On the other hand, if this tag is set to NO, the size of the Perl module output will be much smaller and Perl will parse it just the same.

-

The default value is: YES.

-

This tag requires that the tag GENERATE_PERLMOD is set to YES.

-
-
PERLMOD_MAKEVAR_PREFIX
-

The names of the make variables in the generated doxyrules.make file are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful so different doxyrules.make files included by the same Makefile don't overwrite each other's variables.

-

This tag requires that the tag GENERATE_PERLMOD is set to YES.

-
-
-

-Configuration options related to the preprocessor

-

-
ENABLE_PREPROCESSING
-

If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all C-preprocessor directives found in the sources and include files.

-

The default value is: YES.

-

-
-
MACRO_EXPANSION
-

If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names in the source code. If set to NO, only conditional compilation will be performed. Macro expansion can be done in a controlled way by setting EXPAND_ONLY_PREDEF to YES.

-

The default value is: NO.

-

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

-
-
EXPAND_ONLY_PREDEF
-

If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then the macro expansion is limited to the macros specified with the PREDEFINED and EXPAND_AS_DEFINED tags.

-

The default value is: NO.

-

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

-
-
SEARCH_INCLUDES
-

If the SEARCH_INCLUDES tag is set to YES, the include files in the INCLUDE_PATH will be searched if a #include is found.

-

The default value is: YES.

-

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

-
-
INCLUDE_PATH
-

The INCLUDE_PATH tag can be used to specify one or more directories that contain include files that are not input files but should be processed by the preprocessor.

-

This tag requires that the tag SEARCH_INCLUDES is set to YES.

-
-
INCLUDE_FILE_PATTERNS
-

You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard patterns (like *.h and *.hpp) to filter out the header-files in the directories. If left blank, the patterns specified with FILE_PATTERNS will be used.

-

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

-
-
PREDEFINED
-

The PREDEFINED tag can be used to specify one or more macro names that are defined before the preprocessor is started (similar to the -D option of e.g. gcc). The argument of the tag is a list of macros of the form: name or name=definition (no spaces). If the definition and the "=" are omitted, "=1" is assumed. To prevent a macro definition from being undefined via #undef or recursively expanded use the := operator instead of the = operator.

-

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

-
-
EXPAND_AS_DEFINED
-

If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this tag can be used to specify a list of macro names that should be expanded. The macro definition that is found in the sources will be used. Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code.

-

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

-
-
SKIP_FUNCTION_MACROS
-

If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will remove all references to function-like macros that are alone on a line, have an all uppercase name, and do not end with a semicolon. Such function macros are typically used for boiler-plate code, and will confuse the parser if not removed.

-

The default value is: YES.

-

This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

-
-
-

-Configuration options related to external references

-

-
TAGFILES
-

The TAGFILES tag can be used to specify one or more tag files.

-

For each tag file the location of the external documentation should be added. The format of a tag file without this location is as follows:

  TAGFILES = file1 file2 ... 
-

Adding location for the tag files is done as follows:

  TAGFILES = file1=loc1 "file2 = loc2" ... 
-

where loc1 and loc2 can be relative or absolute paths or URLs. See the section Linking to external documentation for more information about the use of tag files.

-
Note
Each tag file must have a unique name (where the name does NOT include the path). If a tag file is not located in the directory in which doxygen is run, you must also specify the path to the tagfile here.
-

-
-
GENERATE_TAGFILE
-

When a file name is specified after GENERATE_TAGFILE, doxygen will create a tag file that is based on the input files it reads. See section Linking to external documentation for more information about the usage of tag files.

-

-
-
ALLEXTERNALS
-

If the ALLEXTERNALS tag is set to YES, all external class will be listed in the class index. If set to NO, only the inherited external classes will be listed.

-

The default value is: NO.

-

-
-
EXTERNAL_GROUPS
-

If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed in the modules index. If set to NO, only the current project's groups will be listed.

-

The default value is: YES.

-

-
-
EXTERNAL_PAGES
-

If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in the related pages index. If set to NO, only the current project's pages will be listed.

-

The default value is: YES.

-

-
-
PERL_PATH
-

The PERL_PATH should be the absolute path and name of the perl script interpreter (i.e. the result of 'which perl').

-

The default file (with absolute path) is: /usr/bin/perl.

-

-
-
-

-Configuration options related to the dot tool

-

-
CLASS_DIAGRAMS
-

If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram (in HTML and $\mbox{\LaTeX}$) for classes with base or super classes. Setting the tag to NO turns the diagrams off. Note that this option also works with HAVE_DOT disabled, but it is recommended to install and use dot, since it yields more powerful graphs.

-

The default value is: YES.

-

-
-
MSCGEN_PATH
-

You can define message sequence charts within doxygen comments using the \msc command. Doxygen will then run the mscgen tool) to produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to specify the directory where the mscgen tool resides. If left empty the tool is assumed to be found in the default search path.

-

-
-
DIA_PATH
-

You can include diagrams made with dia in doxygen documentation. Doxygen will then run dia to produce the diagram and insert it in the documentation. The DIA_PATH tag allows you to specify the directory where the dia binary resides. If left empty dia is assumed to be found in the default search path.

-

-
-
HIDE_UNDOC_RELATIONS
-

If set to YES the inheritance and collaboration graphs will hide inheritance and usage relations if the target is undocumented or is not a class.

-

The default value is: YES.

-

-
-
HAVE_DOT
-

If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is available from the path. This tool is part of Graphviz, a graph visualization toolkit from AT&T and Lucent Bell Labs. The other options in this section have no effect if this option is set to NO

-

The default value is: NO.

-

-
-
DOT_NUM_THREADS
-

The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed to run in parallel. When set to 0 doxygen will base this on the number of processors available in the system. You can set it explicitly to a value larger than 0 to get control over the balance between CPU load and processing speed.

-

Minimum value: 0, maximum value: 32, default value: 0.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_FONTNAME
-

When you want a differently looking font in the dot files that doxygen generates you can specify the font name using DOT_FONTNAME. You need to make sure dot is able to find the font, which can be done by putting it in a standard location or by setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory containing the font.

-

The default value is: Helvetica.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_FONTSIZE
-

The DOT_FONTSIZE tag can be used to set the size (in points) of the font of dot graphs.

-

Minimum value: 4, maximum value: 24, default value: 10.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_FONTPATH
-

By default doxygen will tell dot to use the default font as specified with DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set the path where dot can find it using this tag.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
CLASS_GRAPH
-

If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for each documented class showing the direct and indirect inheritance relations. Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
COLLABORATION_GRAPH
-

If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a graph for each documented class showing the direct and indirect implementation dependencies (inheritance, containment, and class references variables) of the class with other documented classes.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
GROUP_GRAPHS
-

If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for groups, showing the direct groups dependencies.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
UML_LOOK
-

If the UML_LOOK tag is set to YES, doxygen will generate inheritance and collaboration diagrams in a style similar to the OMG's Unified Modeling Language.

-

The default value is: NO.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
UML_LIMIT_NUM_FIELDS
-

If the UML_LOOK tag is enabled, the fields and methods are shown inside the class node. If there are many fields or methods and many nodes the graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the number of items for each type to make the size more manageable. Set this to 0 for no limit. Note that the threshold may be exceeded by 50% before the limit is enforced. So when you set the threshold to 10, up to 15 fields may appear, but if the number exceeds 15, the total amount of fields shown is limited to 10.

-

Minimum value: 0, maximum value: 100, default value: 10.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
TEMPLATE_RELATIONS
-

If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and collaboration graphs will show the relations between templates and their instances.

-

The default value is: NO.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
INCLUDE_GRAPH
-

If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to YES then doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
INCLUDED_BY_GRAPH
-

If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to YES then doxygen will generate a graph for each documented file showing the direct and indirect include dependencies of the file with other documented files.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
CALL_GRAPH
-

If the CALL_GRAPH tag is set to YES then doxygen will generate a call dependency graph for every global function or class method.
-Note that enabling this option will significantly increase the time of a run. So in most cases it will be better to enable call graphs for selected functions only using the \callgraph command. Disabling a call graph can be accomplished by means of the command \hidecallgraph.

-

The default value is: NO.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
CALLER_GRAPH
-

If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller dependency graph for every global function or class method.
-Note that enabling this option will significantly increase the time of a run. So in most cases it will be better to enable caller graphs for selected functions only using the \callergraph command. Disabling a caller graph can be accomplished by means of the command \hidecallergraph.

-

The default value is: NO.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
GRAPHICAL_HIERARCHY
-

If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical hierarchy of all classes instead of a textual one.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DIRECTORY_GRAPH
-

If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the dependencies a directory has on other directories in a graphical way. The dependency relations are determined by the #include relations between the files in the directories.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_IMAGE_FORMAT
-

The DOT_IMAGE_FORMAT tag can be used to set the image format of the images generated by dot. For an explanation of the image formats see the section output formats in the documentation of the dot tool (Graphviz).

Note
If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files visible in IE 9+ (other browsers do not have this requirement).
-

Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and png:gdiplus:gdiplus.

-

The default value is: png.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
INTERACTIVE_SVG
-

If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to enable generation of interactive SVG images that allow zooming and panning.
-Note that this requires a modern browser other than Internet Explorer. Tested and working are Firefox, Chrome, Safari, and Opera.

Note
For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files visible. Older versions of IE do not have SVG support.
-

The default value is: NO.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_PATH
-

The DOT_PATH tag can be used to specify the path where the dot tool can be found. If left blank, it is assumed the dot tool can be found in the path.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOTFILE_DIRS
-

The DOTFILE_DIRS tag can be used to specify one or more directories that contain dot files that are included in the documentation (see the \dotfile command).

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
MSCFILE_DIRS
-

The MSCFILE_DIRS tag can be used to specify one or more directories that contain msc files that are included in the documentation (see the \mscfile command).

-

-
-
DIAFILE_DIRS
-

The DIAFILE_DIRS tag can be used to specify one or more directories that contain dia files that are included in the documentation (see the \diafile command).

-

-
-
PLANTUML_JAR_PATH
-

When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the path where java can find the plantuml.jar file. If left blank, it is assumed PlantUML is not used or called during a preprocessing step. Doxygen will generate a warning when it encounters a \startuml command in this case and will not generate output for the diagram.

-

-
-
PLANTUML_INCLUDE_PATH
-

When using plantuml, the specified paths are searched for files specified by the !include statement in a plantuml block.

-

-
-
DOT_GRAPH_MAX_NODES
-

The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes that will be shown in the graph. If the number of nodes in a graph becomes larger than this value, doxygen will truncate the graph, which is visualized by representing a node as a red box. Note that doxygen if the number of direct children of the root node in a graph is already larger than DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.

-

Minimum value: 0, maximum value: 10000, default value: 50.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
MAX_DOT_GRAPH_DEPTH
-

The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs generated by dot. A depth value of 3 means that only nodes reachable from the root by following a path via at most 3 edges will be shown. Nodes that lay further from the root node will be omitted. Note that setting this option to 1 or 2 may greatly reduce the computation time needed for large code bases. Also note that the size of a graph can be further restricted by DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.

-

Minimum value: 0, maximum value: 1000, default value: 0.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_TRANSPARENT
-

Set the DOT_TRANSPARENT tag to YES to generate images with a transparent background. This is disabled by default, because dot on Windows does not seem to support this out of the box.
- Warning: Depending on the platform used, enabling this option may lead to badly anti-aliased labels on the edges of a graph (i.e. they become hard to read).

-

The default value is: NO.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_MULTI_TARGETS
-

Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output files in one run (i.e. multiple -o and -T options on the command line). This makes dot run faster, but since only newer versions of dot (>1.8.10) support this, this feature is disabled by default.

-

The default value is: NO.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
GENERATE_LEGEND
-

If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page explaining the meaning of the various boxes and arrows in the dot generated graphs.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
DOT_CLEANUP
-

If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot files that are used to generate the various graphs.

-

The default value is: YES.

-

This tag requires that the tag HAVE_DOT is set to YES.

-
-
-

-Examples

-

Suppose you have a simple project consisting of two files: a source file example.cc and a header file example.h. Then a minimal configuration file is as simple as:

INPUT            = example.cc example.h
-

Assuming the example makes use of Qt classes and perl is located in /usr/bin, a more realistic configuration file would be:

PROJECT_NAME     = Example
-INPUT            = example.cc example.h
-WARNINGS         = YES
-TAGFILES         = qt.tag
-PERL_PATH        = /usr/local/bin/perl
-SEARCHENGINE     = NO
-

To generate the documentation for the QdbtTabular package I have used the following configuration file:

PROJECT_NAME     = QdbtTabular
-OUTPUT_DIRECTORY = html
-WARNINGS         = YES
-INPUT            = examples/examples.doc src
-FILE_PATTERNS    = *.cc *.h
-INCLUDE_PATH     = examples
-TAGFILES         = qt.tag
-PERL_PATH        = /usr/bin/perl
-SEARCHENGINE     = YES
-

To regenerate the Qt-1.44 documentation from the sources, you could use the following config file:

PROJECT_NAME         = Qt
-OUTPUT_DIRECTORY     = qt_docs
-HIDE_UNDOC_MEMBERS   = YES
-HIDE_UNDOC_CLASSES   = YES
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION      = YES
-EXPAND_ONLY_PREDEF   = YES
-SEARCH_INCLUDES      = YES
-FULL_PATH_NAMES      = YES
-STRIP_FROM_PATH      = $(QTDIR)/
-PREDEFINED           = USE_TEMPLATECLASS Q_EXPORT= \
-                       QArrayT:=QArray \
-                       QListT:=QList \
-                       QDictT:=QDict \
-                       QQueueT:=QQueue \
-                       QVectorT:=QVector \
-                       QPtrDictT:=QPtrDict \
-                       QIntDictT:=QIntDict \
-                       QStackT:=QStack \
-                       QDictIteratorT:=QDictIterator \
-                       QListIteratorT:=QListIterator \
-                       QCacheT:=QCache \
-                       QCacheIteratorT:=QCacheIterator \
-                       QIntCacheT:=QIntCache \
-                       QIntCacheIteratorT:=QIntCacheIterator \
-                       QIntDictIteratorT:=QIntDictIterator \
-                       QPtrDictIteratorT:=QPtrDictIterator
-INPUT                = $(QTDIR)/doc \
-                       $(QTDIR)/src/widgets \
-                       $(QTDIR)/src/kernel \
-                       $(QTDIR)/src/dialogs \
-                       $(QTDIR)/src/tools
-FILE_PATTERNS        = *.cpp *.h q*.doc
-INCLUDE_PATH         = $(QTDIR)/include 
-RECURSIVE            = YES
-

For the Qt-2.1 sources I recommend to use the following settings:

PROJECT_NAME          = Qt
-PROJECT_NUMBER        = 2.1
-HIDE_UNDOC_MEMBERS    = YES
-HIDE_UNDOC_CLASSES    = YES
-SOURCE_BROWSER        = YES
-INPUT                 = $(QTDIR)/src
-FILE_PATTERNS         = *.cpp *.h q*.doc
-RECURSIVE             = YES
-EXCLUDE_PATTERNS      = *codec.cpp moc_* */compat/* */3rdparty/*
-ALPHABETICAL_INDEX    = YES
-COLS_IN_ALPHA_INDEX   = 3
-IGNORE_PREFIX         = Q
-ENABLE_PREPROCESSING  = YES
-MACRO_EXPANSION       = YES
-INCLUDE_PATH          = $(QTDIR)/include
-PREDEFINED            = Q_PROPERTY(x)= \
-                        Q_OVERRIDE(x)= \
-                        Q_EXPORT= \
-                        Q_ENUMS(x)= \
-                        "QT_STATIC_CONST=static const " \
-                        _WS_X11_ \
-                        INCLUDE_MENUITEM_DEF
-EXPAND_ONLY_PREDEF    = YES
-EXPAND_AS_DEFINED     = Q_OBJECT_FAKE Q_OBJECT ACTIVATE_SIGNAL_WITH_PARAM \
-                        Q_VARIANT_AS
-

Here doxygen's preprocessor is used to substitute some macro names that are normally substituted by the C preprocessor, but without doing full macro expansion.

-

-Go to the next section or return to the - index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/custcmd.html b/vnfs/VES5.0/doxygen-1.8.12/html/custcmd.html deleted file mode 100644 index c47b4729..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/custcmd.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -Doxygen: Custom Commands - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Custom Commands
-
-
- -

Doxygen provides a large number of special commands, XML commands, and HTML commands. that can be used to enhance or structure the documentation inside a comment block. If you for some reason have a need to define new commands you can do so by means of an alias definition.

-

The definition of an alias should be specified in the configuration file using the ALIASES configuration tag.

-

-Simple aliases

-

The simplest form of an alias is a simple substitution of the form

 name=value
-

For example defining the following alias:

 ALIASES += sideeffect="\par Side Effects:\n" 
-

will allow you to put the command \sideeffect (or @sideeffect) in the documentation, which will result in a user-defined paragraph with heading Side Effects:.

-

Note that you can put \n's in the value part of an alias to insert newlines.

-

Also note that you can redefine existing special commands if you wish.

-

Some commands, such as \xrefitem are designed to be used in combination with aliases.

-

-Aliases with arguments

-

Aliases can also have one or more arguments. In the alias definition you then need to specify the number of arguments between curly braces. In the value part of the definition you can place \x markers, where 'x' represents the argument number starting with 1.

-

Here is an example of an alias definition with a single argument:

ALIASES += l{1}="\ref \1"
-

Inside a comment block you can use it as follows

/** See \l{SomeClass} for more information. */
-

which would be the same as writing

/** See \ref SomeClass for more information. */
-

Note that you can overload an alias by a version with multiple arguments, for instance:

ALIASES += l{1}="\ref \1"
-ALIASES += l{2}="\ref \1 \"\2\""
-

Note that the quotes inside the alias definition have to be escaped with a backslash.

-

With these alias definitions, we can write

/** See \l{SomeClass,Some Text} for more information. */
-

inside the comment block and it will expand to

/** See \ref SomeClass "Some Text" for more information. */
-

where the command with a single argument would still work as shown before.

-

Aliases can also be expressed in terms of other aliases, e.g. a new command \reminder can be expressed as a \xrefitem via an intermediate \xreflist command as follows:

ALIASES += xreflist{3}="\xrefitem \1 \"\2\" \"\3\" "
-ALIASES += reminder="\xreflist{reminders,Reminder,Reminders}"
-

Note that if for aliases with more than one argument a comma is used as a separator, if you want to put a comma inside the command, you will need to escape it with a backslash, i.e.

\l{SomeClass,Some text\, with an escaped comma} 
-

given the alias definition of \l in the example above.

-

-Nesting custom command

-

You can use commands as arguments of aliases, including commands defined using aliases.

-

As an example consider the following alias definitions

-
ALIASES += Bold{1}="<b>\1</b>"
-ALIASES += Emph{1}="<em>\1</em>"
-

Inside a comment block you can now use:

/** This is a \Bold{bold \Emph{and} Emphasized} text fragment. */
-

which will expand to

/** This is a <b>bold <em>and</em> Emphasized</b> text fragment. */
-

-
-Go to the next section or return to the - index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/customize.html b/vnfs/VES5.0/doxygen-1.8.12/html/customize.html deleted file mode 100644 index bc09084a..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/customize.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - -Doxygen: Customizing the output - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Customizing the output
-
-
- -

Doxygen provides various levels of customization. The section Minor Tweaks discusses what to do if you want to do minor tweaking to the look and feel of the output. The section Layout show how to reorder and hide certain information on a page. The section XML output show how to generate whatever output you want based on the XML output produced by doxygen.

-

-Minor Tweaks

-

The next subsections describe some aspects that can be tweaked with little effort.

-

-Overall Color

-

To change the overall color of the HTML output doxygen provides three options

-

to change the hue, saturation, and gamma correction of the colors respectively.

-

For your convenience the GUI frontend Doxywizard has a control that allows you to see the effect of changing the values of these options on the output in real time.

-

-Navigation

-

By default doxygen shows navigation tabs on top of every HTML page, corresponding with the following settings:

- -

you can switch to an interactive navigation tree as sidebar using

- -

or even have both forms of navigation:

- -

if you already use an external index (i.e. have one of the following options enabled GENERATE_HTMLHELP, GENERATE_ECLIPSEHELP, GENERATE_QHP, or GENERATE_DOCSET) then you can also disable all indices, like so:

- -

-Dynamic Content

-

To make the HTML output more interactive, doxygen provides a number of options that are disabled by default:

    -
  • enabling HTML_DYNAMIC_SECTIONS will make doxygen hide certain content (like graphs) in the HTML by default, and let the reader expand these sections on request.
  • -
  • enabling HAVE_DOT along with INTERACTIVE_SVG while setting DOT_IMAGE_FORMAT to svg, will make doxygen produce SVG images that will allow the user to zoom and pan (this only happens when the size of the images exceeds a certain size).
  • -
-

-Header, Footer, and Stylesheet changes

-

To tweak things like fonts or colors, margins, or other look & feel aspects of the HTML output in detail, you can create a different cascading style sheet. You can also let doxygen use a custom header and footer for each HTML page it generates, for instance to make the output conform to the style used on the rest of your web site.

-

To do this first run doxygen as follows:

doxygen -w html header.html footer.html customdoxygen.css 
-

This will create 3 files:

    -
  • header.html is a HTML fragment which doxygen normally uses to start a HTML page. Note that the fragment ends with a body tag and that is contains a couple of commands of the form $word. These will be replaced by doxygen on the fly.
  • -
  • footer.html is a HTML fragment which doxygen normally uses to end a HTML page. Also here special commands can be used. This file contain the link to www.doxygen.org and the body and html end tags.
  • -
  • customdoxygen.css is the default cascading style sheet used by doxygen. It is recommended only to look into this file and overrule some settings you like by putting them in a separate stylesheets and referencing those extra files via HTML_EXTRA_STYLESHEET.
  • -
-

You should edit these files and then reference them from the config file.

-
Note
it is not longer recommended to use HTML_STYLESHEET, as it make it difficult to upgrade to a newer version of doxygen. Use HTML_EXTRA_STYLESHEET instead.
-

See the documentation of the HTML_HEADER tag for more information about the possible meta commands you can use inside your custom header.

-
Note
You should not put the style sheet in the HTML output directory. Treat it as a source file. Doxygen will copy it for you.
-
-If you use images or other external content in a custom header you need to make sure these end up in the HTML output directory yourself, for instance by writing a script that runs doxygen can then copies the images to the output.
-
Warning
The structure of headers and footers may change after upgrading to a newer version of doxygen, so if you are using a custom header or footer, it might not produce valid output anymore after upgrading.
-

-Changing the layout of pages

-

In some cases you may want to change the way the output is structured. A different style sheet or custom headers and footers do not help in such case.

-

The solution doxygen provides is a layout file, which you can modify and doxygen will use to control what information is presented, in which order, and to some extent also how information is presented. The layout file is an XML file.

-

The default layout can be generated by doxygen using the following command:

doxygen -l 
-

optionally the name of the layout file can be specified, if omitted DoxygenLayout.xml will be used.

-

The next step is to mention the layout file in the config file

LAYOUT_FILE = DoxygenLayout.xml
-

To change the layout all you need to do is edit the layout file.

-

The toplevel structure of the file looks as follows:

<doxygenlayout version="1.0">
-  <navindex>
-    ...
-  </navindex>
-  <class>
-    ...
-  </class>
-  <namespace>
-    ...
-  </namespace>
-  <file>
-    ...
-  </file>
-  <group>
-    ...
-  </group>
-  <directory>
-    ...
-  </directory>
-</doxygenlayout>
-

The root element of the XML file is doxygenlayout, it has an attribute named version, which will be used in the future to cope with changes that are not backward compatible.

-

The first section, identified by the navindex element, represents the layout of the navigation tabs displayed at the top of each HTML page. At the same time it also controls the items in the navigation tree in case GENERATE_TREEVIEW is enabled. Each tab is represented by a tab element in the XML file.

-

You can hide tabs by setting the visible attribute to no. You can also override the default title of a tab by specifying it as the value of the title attribute. If the title field is the empty string (the default) then doxygen will fill in an appropriate language specific title.

-

You can reorder the tabs by moving the tab elements in the XML file within the navindex element and even change the tree structure. Do not change the value of the type attribute however. Only a fixed set of types are supported, each representing a link to a specific index.

-

You can also add custom tabs using a type with name "user". Here is an example that shows how to add a tab with title "Google" pointing to www.google.com:

-
  <navindex>
-    ...
-    <tab type="user" url="http://www.google.com" title="Google"/>
-    ...
-  </navindex>
-

The url field can also be a relative URL. If the URL starts with @ref the link will point to a documented entities, such as a class, a function, a group, or a related page. Suppose we have defined a page using @page with label mypage, then a tab with label "My Page" to this page would look as follows:

-
  <navindex>
-    ...
-    <tab type="user" url="@ref mypage" title="My Page"/>
-    ...
-  </navindex>
-

You can also group tabs together in a custom group using a tab with type "usergroup". The following example puts the above tabs in a user defined group with title "My Group":

-
  <navindex>
-    ...
-    <tab type="usergroup" title="My Group">
-      <tab type="user" url="http://www.google.com" title="Google"/>
-      <tab type="user" url="@ref mypage" title="My Page"/>
-    </tab>
-    ...
-  </navindex>
-

Groups can be nested to form a hierarchy.

-

By default a usergroup entry in the navigation tree is a link to a landing page with the contents of the group. You can link to a different page using the url attribute just like you can for the <tab> element and prevent any link using url="[none]", i.e.

-
   <tab type="usergroup" title="Group without link" url="[none]">
-   ...
-   </tab>
-

The elements after navindex represent the layout of the different pages generated by doxygen:

    -
  • The class element represents the layout of all pages generated for documented classes, structs, unions, and interfaces.
  • -
  • The namespace element represents the layout of all pages generated for documented namespaces (and also Java packages).
  • -
  • The file element represents the layout of all pages generated for documented files.
  • -
  • The group element represents the layout of all pages generated for documented groups (or modules).
  • -
  • The directory element represents the layout of all pages generated for documented directories.
  • -
-

Each XML element within one of the above page elements represents a certain piece of information. Some pieces can appear in each type of page, others are specific for a certain type of page. Doxygen will list the pieces in the order in which they appear in the XML file.

-

The following generic elements are possible for each page:

-
briefdescription
-
Represents the brief description on a page.
-
detaileddescription
-
Represents the detailed description on a page.
-
authorsection
-
Represents the author section of a page (only used for man pages).
-
memberdecl
-
Represents the quick overview of members on a page (member declarations). This elements has child elements per type of member list. The possible child elements are not listed in detail in the document, but the name of the element should be a good indication of the type of members that the element represents.
-
memberdef
-
Represents the detailed member list on a page (member definition). Like the memberdecl element, also this element has a number of possible child elements.
-
-

The class page has the following specific elements:

-
includes
-
Represents the include file needed to obtain the definition for this class.
-
inheritancegraph
-
Represents the inheritance relations for a class. Note that the CLASS_DIAGRAM option determines if the inheritance relation is a list of base and derived classes or a graph.
-
collaborationgraph
-
Represents the collaboration graph for a class.
-
allmemberslink
-
Represents the link to the list of all members for a class.
-
usedfiles
-
Represents the list of files from which documentation for the class was extracted.
-
-

The file page has the following specific elements:

-
includes
-
Represents the list of #include statements contained in this file.
-
includegraph
-
Represents the include dependency graph for the file.
-
includedbygraph
-
Represents the included by dependency graph for the file.
-
sourcelink
-
Represents the link to the source code of this file.
-
-

The group page has a specific groupgraph element which represents the graph showing the dependencies between groups.

-

Similarly, the directory page has a specific directorygraph element which represents the graph showing the dependencies between the directories based on the #include relations of the files inside the directories.

-

Some elements have a visible attribute which can be used to hide the fragment from the generated output, by setting the attribute's value to "no". You can also use the value of a configuration option to determine the visibility, by using its name prefixed with a dollar sign, e.g.

  ...
-  <includes visible="$SHOW_INCLUDE_FILES"/>
-  ...
-

This was mainly added for backward compatibility. Note that the visible attribute is just a hint for doxygen. If no relevant information is available for a certain piece it is omitted even if it is set to yes (i.e. no empty sections are generated).

-

Some elements have a title attribute. This attribute can be used to customize the title doxygen will use as a header for the piece.

-
Warning
at the moment you should not remove elements from the layout file as a way to hide information. Doing so can cause broken links in the generated output!
-

-Using the XML output

-

If the above two methods still do not provide enough flexibility, you can also use the XML output produced by doxygen as a basis to generate the output you like. To do this set GENERATE_XML to YES.

-

The XML output consists of an index file named index.xml which lists all items extracted by doxygen with references to the other XML files for details. The structure of the index is described by a schema file index.xsd. All other XML files are described by the schema file named compound.xsd. If you prefer one big XML file you can combine the index and the other files using the XSLT file combine.xslt.

-

You can use any XML parser to parse the file or use the one that can be found in the addon/doxmlparser directory of doxygen source distribution. Look at addon/doxmlparser/include/doxmlintf.h for the interface of the parser and in addon/doxmlparser/example for examples.

-

The advantage of using the doxmlparser is that it will only read the index file into memory and then only those XML files that you implicitly load via navigating through the index. As a result this works even for very large projects where reading all XML files as one big DOM tree would not fit into memory.

-

See the Breathe project for an example that uses doxygen XML output from Python to bridge it with the Sphinx document generator.

-

-Go to the next section or return to the - index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/diagrams.html b/vnfs/VES5.0/doxygen-1.8.12/html/diagrams.html deleted file mode 100644 index be780e45..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/diagrams.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -Doxygen: Graphs and diagrams - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Graphs and diagrams
-
-
-

Doxygen has built-in support to generate inheritance diagrams for C++ classes.

-

Doxygen can use the "dot" tool from graphviz to generate more advanced diagrams and graphs. Graphviz is an open-source, cross-platform graph drawing toolkit and can be found at http://www.graphviz.org/

-

If you have the "dot" tool in the path, you can set HAVE_DOT to YES in the configuration file to let doxygen use it.

-

Doxygen uses the "dot" tool to generate the following graphs:

    -
  • -A graphical representation of the class hierarchy will be drawn, along with the textual one. Currently this feature is supported for HTML only.
    - Warning: When you have a very large class hierarchy where many classes derive from a common base class, the resulting image may become too big to handle for some browsers.
  • -
  • -An inheritance graph will be generated for each documented class showing the direct and indirect inheritance relations. This disables the generation of the built-in class inheritance diagrams.
  • -
  • -An include dependency graph is generated for each documented file that includes at least one other file. This feature is currently supported for HTML and RTF only.
  • -
  • -An inverse include dependency graph is also generated showing for a (header) file, which other files include it.
  • -
  • -A graph is drawn for each documented class and struct that shows:
      -
    • -the inheritance relations with base classes.
    • -
    • -the usage relations with other structs and classes (e.g. class A has a member variable m_a of type class B, then A has an arrow to B with m_a as label).
    • -
    -
  • -
  • -if CALL_GRAPH is set to YES, a graphical call graph is drawn for each function showing the functions that the function directly or indirectly calls (see also section \callgraph and section \hidecallgraph).
  • -
  • -if CALLER_GRAPH is set to YES, a graphical caller graph is drawn for each function showing the functions that the function is directly or indirectly called by (see also section \callergraph and section \hidecallergraph).
  • -
-

Using a layout file you can determine which of the graphs are actually shown.

-

The options DOT_GRAPH_MAX_NODES and MAX_DOT_GRAPH_DEPTH can be used to limit the size of the various graphs.

-

The elements in the class diagrams in HTML and RTF have the following meaning:

    -
  • -A yellow box indicates a class. A box can have a little marker in the lower right corner to indicate that the class contains base classes that are hidden. For the class diagrams the maximum tree width is currently 8 elements. If a tree is wider some nodes will be hidden. If the box is filled with a dashed pattern the inheritance relation is virtual.
  • -
  • -A white box indicates that the documentation of the class is currently shown.
  • -
  • -A gray box indicates an undocumented class.
  • -
  • -A solid dark blue arrow indicates public inheritance.
  • -
  • -A dashed dark green arrow indicates protected inheritance.
  • -
  • -A dotted dark green arrow indicates private inheritance.
  • -
-

The elements in the class diagram in $\mbox{\LaTeX}$ have the following meaning:

    -
  • -A white box indicates a class. A marker in the lower right corner of the box indicates that the class has base classes that are hidden. If the box has a dashed border this indicates virtual inheritance.
  • -
  • -A solid arrow indicates public inheritance.
  • -
  • -A dashed arrow indicates protected inheritance.
  • -
  • -A dotted arrow indicates private inheritance.
  • -
-

The elements in the graphs generated by the dot tool have the following meaning:

    -
  • -A white box indicates a class or struct or file.
  • -
  • -A box with a red border indicates a node that has more arrows than are shown! In other words: the graph is truncated with respect to this node. The reason why a graph is sometimes truncated is to prevent images from becoming too large. For the graphs generated with dot doxygen tries to limit the width of the resulting image to 1024 pixels.
  • -
  • -A black box indicates that the class' documentation is currently shown.
  • -
  • -A dark blue arrow indicates an include relation (for the include dependency graph) or public inheritance (for the other graphs).
  • -
  • -A dark green arrow indicates protected inheritance.
  • -
  • -A dark red arrow indicates private inheritance.
  • -
  • -A purple dashed arrow indicated a "usage" relation, the edge of the arrow is labeled with the variable(s) responsible for the relation. Class A uses class B, if class A has a member variable m of type C, where B is a subtype of C (e.g. C could be B, B*, T<B>*).
  • -
-

Here are a couple of header files that together show the various diagrams that doxygen can generate:

-

diagrams_a.h

#ifndef _DIAGRAMS_A_H
#define _DIAGRAMS_A_H
class A { public: A *m_self; };
#endif

diagrams_b.h

#ifndef _DIAGRAMS_B_H
#define _DIAGRAMS_B_H
class A;
class B { public: A *m_a; };
#endif

diagrams_c.h

#ifndef _DIAGRAMS_C_H
#define _DIAGRAMS_C_H
#include "diagrams_c.h"
class D;
class C : public A { public: D *m_d; };
#endif

diagrams_d.h

#ifndef _DIAGRAM_D_H
#define _DIAGRAM_D_H
#include "diagrams_a.h"
#include "diagrams_b.h"
class C;
class D : virtual protected A, private B { public: C m_c; };
#endif

diagrams_e.h

#ifndef _DIAGRAM_E_H
#define _DIAGRAM_E_H
#include "diagrams_d.h"
class E : public D {};
#endif

-

-Click here -for the corresponding HTML documentation that is generated by doxygen
-(EXTRACT_ALL = YES is used here). -

-

-Go to the next section or return to the -index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doc.png b/vnfs/VES5.0/doxygen-1.8.12/html/doc.png deleted file mode 100644 index 7f92e54f..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doc.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/docblocks.html b/vnfs/VES5.0/doxygen-1.8.12/html/docblocks.html deleted file mode 100644 index 8867a078..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/docblocks.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - -Doxygen: Documenting the code - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Documenting the code
-
-
- -

This chapter covers two topics:

    -
  1. How to put comments in your code such that doxygen incorporates them in the documentation it generates. This is further detailed in the next section.
  2. -
  3. Ways to structure the contents of a comment block such that the output looks good, as explained in section Anatomy of a comment block.
  4. -
-

-Special comment blocks

-

A special comment block is a C or C++ style comment block with some additional markings, so doxygen knows it is a piece of structured text that needs to end up in the generated documentation. The next section presents the various styles supported by doxygen.

-

For Python, VHDL, Fortran, and Tcl code there are different commenting conventions, which can be found in sections Comment blocks in Python, Comment blocks in VHDL, Comment blocks in Fortran, and Comment blocks in Tcl respectively.

-

-Comment blocks for C-like languages (C/C++/C#/Objective-C/PHP/Java)

-

For each entity in the code there are two (or in some cases three) types of descriptions, which together form the documentation for that entity; a brief description and detailed description, both are optional. For methods and functions there is also a third type of description, the so called in body description, which consists of the concatenation of all comment blocks found within the body of the method or function.

-

Having more than one brief or detailed description is allowed (but not recommended, as the order in which the descriptions will appear is not specified).

-

As the name suggest, a brief description is a short one-liner, whereas the detailed description provides longer, more detailed documentation. An "in body" description can also act as a detailed description or can describe a collection of implementation details. For the HTML output brief descriptions are also used to provide tooltips at places where an item is referenced.

-

There are several ways to mark a comment block as a detailed description:

    -
  1. -

    You can use the JavaDoc style, which consist of a C-style comment block starting with two *'s, like this:

    -
    /**
    - * ... text ...
    - */
    -

    -
  2. -
  3. -

    or you can use the Qt style and add an exclamation mark (!) after the opening of a C-style comment block, as shown in this example:

    -
    /*!
    - * ... text ...
    - */
    -

    In both cases the intermediate *'s are optional, so

    -
    /*!
    - ... text ...
    -*/
    -

    is also valid.

    -

    -
  4. -
  5. -

    A third alternative is to use a block of at least two C++ comment lines, where each line starts with an additional slash or an exclamation mark. Here are examples of the two cases:

    -
    ///
    -/// ... text ...
    -///
    -

    or

    -
    //!
    -//!... text ...
    -//!
    -

    Note that a blank line ends a documentation block in this case.

    -

    -
  6. -
  7. -

    -

    Some people like to make their comment blocks more visible in the documentation. For this purpose you can use the following:

    -
    /********************************************//**
    - *  ... text
    - ***********************************************/
    -

    (note the 2 slashes to end the normal comment block and start a special comment block).

    -

    or

    -
    /////////////////////////////////////////////////
    -/// ... text ...
    -/////////////////////////////////////////////////
    -

    -
  8. -
-

For the brief description there are also several possibilities:

    -
  1. -

    One could use the \brief command with one of the above comment blocks. This command ends at the end of a paragraph, so the detailed description follows after an empty line.

    -

    Here is an example:

    -
    /*! \brief Brief description.
    - *         Brief description continued.
    - *
    - *  Detailed description starts here.
    - */
    -

    -
  2. -
  3. -

    If JAVADOC_AUTOBRIEF is set to YES in the configuration file, then using JavaDoc style comment blocks will automatically start a brief description which ends at the first dot followed by a space or new line. Here is an example:

    -
    /** Brief description which ends at this dot. Details follow
    - *  here.
    - */
    -

    The option has the same effect for multi-line special C++ comments:

    /// Brief description which ends at this dot. Details follow
    -/// here.
    -

    -
  4. -
  5. -

    A third option is to use a special C++ style comment which does not span more than one line. Here are two examples:

    /// Brief description.
    -/** Detailed description. */
    -

    or

    -
    //! Brief description.
    -
    -//! Detailed description 
    -//! starts here.
    -

    Note the blank line in the last example, which is required to separate the brief description from the block containing the detailed description. The JAVADOC_AUTOBRIEF should also be set to NO for this case.

    -

    -
  6. -
-

As you can see doxygen is quite flexible. If you have multiple detailed descriptions, like in the following example:

-
//! Brief description, which is
-//! really a detailed description since it spans multiple lines.
-/*! Another detailed description!
- */
-

They will be joined. Note that this is also the case if the descriptions are at different places in the code! In this case the order will depend on the order in which doxygen parses the code.

-

Unlike most other documentation systems, doxygen also allows you to put the documentation of members (including global functions) in front of the definition. This way the documentation can be placed in the source file instead of the header file. This keeps the header file compact, and allows the implementer of the members more direct access to the documentation. As a compromise the brief description could be placed before the declaration and the detailed description before the member definition.

-

-Putting documentation after members

-

If you want to document the members of a file, struct, union, class, or enum, it is sometimes desired to place the documentation block after the member instead of before. For this purpose you have to put an additional < marker in the comment block. Note that this also works for the parameters of a function.

-

Here are some examples:

int var; /*!< Detailed description after the member */
-

This block can be used to put a Qt style detailed documentation block after a member. Other ways to do the same are:

int var; /**< Detailed description after the member */
-

or

int var; //!< Detailed description after the member
-         //!< 
-

or

int var; ///< Detailed description after the member
-         ///< 
-

Most often one only wants to put a brief description after a member. This is done as follows:

int var; //!< Brief description after the member
-

or

int var; ///< Brief description after the member
-

For functions one can use the @param command to document the parameters and then use [in], [out], [in,out] to document the direction. For inline documentation this is also possible by starting with the direction attribute, e.g.

void foo(int v /**< [in] docs for input parameter v. */);
-

Note that these blocks have the same structure and meaning as the special comment blocks in the previous section only the < indicates that the member is located in front of the block instead of after the block.

-

Here is an example of the use of these comment blocks:

/*! A test class */
class Afterdoc_Test
{
public:
/** An enum type.
* The documentation block cannot be put after the enum!
*/
enum EnumType
{
int EVal1, /**< enum value 1 */
int EVal2 /**< enum value 2 */
};
void member(); //!< a member function.
protected:
int value; /*!< an integer value */
};

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -
Warning
These blocks can only be used to document members and parameters. They cannot be used to document files, classes, unions, structs, groups, namespaces and enums themselves. Furthermore, the structural commands mentioned in the next section (like \class) are not allowed inside these comment blocks.
-

-Examples

-

Here is an example of a documented piece of C++ code using the Qt style:

//! A test class.
/*!
A more elaborate class description.
*/
class QTstyle_Test
{
public:
//! An enum.
/*! More detailed enum description. */
enum TEnum {
TVal1, /*!< Enum value TVal1. */
TVal2, /*!< Enum value TVal2. */
TVal3 /*!< Enum value TVal3. */
}
//! Enum pointer.
/*! Details. */
*enumPtr,
//! Enum variable.
/*! Details. */
enumVar;
//! A constructor.
/*!
A more elaborate description of the constructor.
*/
QTstyle_Test();
//! A destructor.
/*!
A more elaborate description of the destructor.
*/
~QTstyle_Test();
//! A normal member taking two arguments and returning an integer value.
/*!
\param a an integer argument.
\param s a constant character pointer.
\return The test results
\sa QTstyle_Test(), ~QTstyle_Test(), testMeToo() and publicVar()
*/
int testMe(int a,const char *s);
//! A pure virtual member.
/*!
\sa testMe()
\param c1 the first argument.
\param c2 the second argument.
*/
virtual void testMeToo(char c1,char c2) = 0;
//! A public variable.
/*!
Details.
*/
int publicVar;
//! A function variable.
/*!
Details.
*/
int (*handler)(int a,int b);
};

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

The brief descriptions are included in the member overview of a class, namespace or file and are printed using a small italic font (this description can be hidden by setting BRIEF_MEMBER_DESC to NO in the config file). By default the brief descriptions become the first sentence of the detailed descriptions (but this can be changed by setting the REPEAT_BRIEF tag to NO). Both the brief and the detailed descriptions are optional for the Qt style.

-

By default a JavaDoc style documentation block behaves the same way as a Qt style documentation block. This is not according the JavaDoc specification however, where the first sentence of the documentation block is automatically treated as a brief description. To enable this behavior you should set JAVADOC_AUTOBRIEF to YES in the configuration file. If you enable this option and want to put a dot in the middle of a sentence without ending it, you should put a backslash and a space after it. Here is an example:

  /** Brief description (e.g.\ using only a few words). Details follow. */
-

Here is the same piece of code as shown above, this time documented using the JavaDoc style and JAVADOC_AUTOBRIEF set to YES:

/**
* A test class. A more elaborate class description.
*/
class Javadoc_Test
{
public:
/**
* An enum.
* More detailed enum description.
*/
enum TEnum {
TVal1, /**< enum value TVal1. */
TVal2, /**< enum value TVal2. */
TVal3 /**< enum value TVal3. */
}
*enumPtr, /**< enum pointer. Details. */
enumVar; /**< enum variable. Details. */
/**
* A constructor.
* A more elaborate description of the constructor.
*/
Javadoc_Test();
/**
* A destructor.
* A more elaborate description of the destructor.
*/
~Javadoc_Test();
/**
* a normal member taking two arguments and returning an integer value.
* @param a an integer argument.
* @param s a constant character pointer.
* @see Javadoc_Test()
* @see ~Javadoc_Test()
* @see testMeToo()
* @see publicVar()
* @return The test results
*/
int testMe(int a,const char *s);
/**
* A pure virtual member.
* @see testMe()
* @param c1 the first argument.
* @param c2 the second argument.
*/
virtual void testMeToo(char c1,char c2) = 0;
/**
* a public variable.
* Details.
*/
int publicVar;
/**
* a function variable.
* Details.
*/
int (*handler)(int a,int b);
};

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

Similarly, if one wishes the first sentence of a Qt style documentation block to automatically be treated as a brief description, one may set QT_AUTOBRIEF to YES in the configuration file.

-

-Documentation at other places

-

In the examples in the previous section the comment blocks were always located in front of the declaration or definition of a file, class or namespace or in front or after one of its members. Although this is often comfortable, there may sometimes be reasons to put the documentation somewhere else. For documenting a file this is even required since there is no such thing as "in front of a file".

-

Doxygen allows you to put your documentation blocks practically anywhere (the exception is inside the body of a function or inside a normal C style comment block).

-

The price you pay for not putting the documentation block directly before (or after) an item is the need to put a structural command inside the documentation block, which leads to some duplication of information. So in practice you should avoid the use of structural commands unless other requirements force you to do so.

-

Structural commands (like all other commands) start with a backslash (\), or an at-sign (@) if you prefer JavaDoc style, followed by a command name and one or more parameters. For instance, if you want to document the class Test in the example above, you could have also put the following documentation block somewhere in the input that is read by doxygen:

/*! \class Test
-    \brief A test class.
-
-    A more detailed class description.
-*/
-

Here the special command \class is used to indicate that the comment block contains documentation for the class Test. Other structural commands are:

    -
  • -\struct to document a C-struct.
  • -
  • -\union to document a union.
  • -
  • -\enum to document an enumeration type.
  • -
  • -\fn to document a function.
  • -
  • -\var to document a variable or typedef or enum value.
  • -
  • -\def to document a #define.
  • -
  • -\typedef to document a type definition.
  • -
  • -\file to document a file.
  • -
  • -\namespace to document a namespace.
  • -
  • -\package to document a Java package.
  • -
  • -\interface to document an IDL interface.
  • -
-

See section Special Commands for detailed information about these and many other commands.

-

To document a member of a C++ class, you must also document the class itself. The same holds for namespaces. To document a global C function, typedef, enum or preprocessor definition you must first document the file that contains it (usually this will be a header file, because that file contains the information that is exported to other source files).

-
Attention
Let's repeat that, because it is often overlooked: to document global objects (functions, typedefs, enum, macros, etc), you must document the file in which they are defined. In other words, there must at least be a
/*! \file */ 
or a
/** @file */ 
line in this file.
-

Here is an example of a C header named structcmd.h that is documented using structural commands:

/*! \file structcmd.h
\brief A Documented file.
Details.
*/
/*! \def MAX(a,b)
\brief A macro that returns the maximum of \a a and \a b.
Details.
*/
/*! \var typedef unsigned int UINT32
\brief A type definition for a .
Details.
*/
/*! \var int errno
\brief Contains the last error code.
\warning Not thread safe!
*/
/*! \fn int open(const char *pathname,int flags)
\brief Opens a file descriptor.
\param pathname The name of the descriptor.
\param flags Opening flags.
*/
/*! \fn int close(int fd)
\brief Closes the file descriptor \a fd.
\param fd The descriptor to close.
*/
/*! \fn size_t write(int fd,const char *buf, size_t count)
\brief Writes \a count bytes from \a buf to the filedescriptor \a fd.
\param fd The descriptor to write to.
\param buf The data buffer to write.
\param count The number of bytes to write.
*/
/*! \fn int read(int fd,char *buf,size_t count)
\brief Read bytes from a file descriptor.
\param fd The descriptor to read from.
\param buf The buffer to read into.
\param count The number of bytes to read.
*/
#define MAX(a,b) (((a)>(b))?(a):(b))
typedef unsigned int UINT32;
int errno;
int open(const char *,int);
int close(int);
size_t write(int,const char *, size_t);
int read(int,char *,size_t);

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

Because each comment block in the example above contains a structural command, all the comment blocks could be moved to another location or input file (the source file for instance), without affecting the generated documentation. The disadvantage of this approach is that prototypes are duplicated, so all changes have to be made twice! Because of this you should first consider if this is really needed, and avoid structural commands if possible. I often receive examples that contain \fn command in comment blocks which are place in front of a function. This is clearly a case where the \fn command is redundant and will only lead to problems.

-

When you place a comment block in a file with one of the following extensions .dox, .txt, or .doc then doxygen will hide this file from the file list.

-

If you have a file that doxygen cannot parse but still would like to document it, you can show it as-is using \verbinclude, e.g.

-
/*! \file myscript.sh
- *  Look at this nice script:
- *  \verbinclude myscript.sh
- */
-

Make sure that the script is explicitly listed in the INPUT or that FILE_PATTERNS includes the .sh extension and the the script can be found in the path set via EXAMPLE_PATH.

-

-Comment blocks in Python

-

For Python there is a standard way of documenting the code using so called documentation strings. Such strings are stored in doc and can be retrieved at runtime. Doxygen will extract such comments and assume they have to be represented in a preformatted way.

-
"""@package docstring
Documentation for this module.
More details.
"""
def func():
"""Documentation for a function.
More details.
"""
pass
class PyClass:
"""Documentation for a class.
More details.
"""
def __init__(self):
"""The constructor."""
self._memVar = 0;
def PyMethod(self):
"""Documentation for a method."""
pass

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

Note that in this case none of doxygen's special commands are supported.

-

There is also another way to document Python code using comments that start with "##". These type of comment blocks are more in line with the way documentation blocks work for the other languages supported by doxygen and this also allows the use of special commands.

-

Here is the same example again but now using doxygen style comments:

-
## @package pyexample
# Documentation for this module.
#
# More details.
## Documentation for a function.
#
# More details.
def func():
pass
## Documentation for a class.
#
# More details.
class PyClass:
## The constructor.
def __init__(self):
self._memVar = 0;
## Documentation for a method.
# @param self The object pointer.
def PyMethod(self):
pass
## A class variable.
classVar = 0;
## @var _memVar
# a member variable

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

Since python looks more like Java than like C or C++, you should set OPTIMIZE_OUTPUT_JAVA to YES in the config file.

-

-Comment blocks in VHDL

-

For VHDL a comment normally start with "--". Doxygen will extract comments starting with "--!". There are only two types of comment blocks in VHDL; a one line "--!" comment representing a brief description, and a multi-line "--!" comment (where the "--!" prefix is repeated for each line) representing a detailed description.

-

Comments are always located in front of the item that is being documented with one exception: for ports the comment can also be after the item and is then treated as a brief description for the port.

-

Here is an example VHDL file with doxygen comments:

-
-------------------------------------------------------
--! @file
--! @brief 2:1 Mux using with-select
-------------------------------------------------------
--! Use standard library
library ieee;
--! Use logic elements
use ieee.std_logic_1164.all;
--! Mux entity brief description
--! Detailed description of this
--! mux design element.
entity mux_using_with is
port (
din_0 : in std_logic; --! Mux first input
din_1 : in std_logic; --! Mux Second input
sel : in std_logic; --! Select input
mux_out : out std_logic --! Mux output
);
end entity;
--! @brief Architecture definition of the MUX
--! @details More details about this mux element.
architecture behavior of mux_using_with is
begin
with (sel) select
mux_out <= din_0 when '0',
din_1 when others;
end architecture;

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

To get proper looking output you need to set OPTIMIZE_OUTPUT_VHDL to YES in the config file. This will also affect a number of other settings. When they were not already set correctly doxygen will produce a warning telling which settings where overruled.

-

-Comment blocks in Fortran

-

When using doxygen for Fortran code you should set OPTIMIZE_FOR_FORTRAN to YES.

-

The parser tries to guess if the source code is fixed format Fortran or free format Fortran code. This may not always be correct. If not one should use EXTENSION_MAPPING to correct this. By setting EXTENSION_MAPPING = f=FortranFixed f90=FortranFree files with extension f are interpreted as fixed format Fortran code and files with extension f90 are interpreted as free format Fortran code.

-

For Fortran "!>" or "!<" starts a comment and "!!" or "!>" can be used to continue an one line comment into a multi-line comment.

-

Here is an example of a documented Fortran subroutine:

!> Build the restriction matrix for the aggregation
!! method.
!! @param aggr information about the aggregates
!! @todo Handle special case
subroutine intrestbuild(A,aggr,Restrict,A_ghost)
implicit none
Type(spmtx), intent(in) :: a !< our fine level matrix
Type(aggrs), intent(in) :: aggr
Type(spmtx), intent(out) :: restrict !< Our restriction matrix
!...
end subroutine

As an alternative you can also use comments in fixed format code:

-
C> Function comment
C> another line of comment
function a(i)
C> input parameter
integer i
end function A

-Comment blocks in Tcl

-

Doxygen documentation can be included in normal Tcl comments.

-

To start a new documentation block start a line with ## (two hashes). All following comment lines and continuation lines will be added to this block. The block ends with a line not starting with a # (hash sign).

-

A brief documentation can be added with ;#< (semicolon, hash and lower then sign). The brief documentation also ends at a line not starting with a # (hash sign).

-

Inside doxygen comment blocks all normal doxygen markings are supported. The only exceptions are described in the following two paragraphs.

-

If a doxygen comment block ends with a line containing only #\code or #@code all code until a line only containing #\endcode or #@endcode is added to the generated documentation as code block.

-

If a doxygen comment block ends with a line containing only #\verbatim or #@verbatim all code until a line only containing #\endverbatim or #@endverbatim is added verbatim to the generated documentation.

-

To detect namespaces, classes, functions and variables the following Tcl commands are recognized. Documentation blocks can be put on the lines before the command.

-
    -
  • -namespace eval .. Namespace
  • -
  • -proc .. Function
  • -
  • -variable .. Variable
  • -
  • -common .. Common variable
  • -
  • -itcl::class .. Class
  • -
  • -itcl::body .. Class method body definition
  • -
  • -oo::class create .. Class
  • -
  • -oo::define .. OO Class definition
  • -
  • -method .. Class method definitions
  • -
  • -constructor .. Class constructor
  • -
  • -destructor .. Class destructor
  • -
  • -public .. Set protection level
  • -
  • -protected .. Set protection level
  • -
  • -private .. Set protection level
  • -
-

Following is an example using doxygen style comments:

-
## \file tclexample.tcl
# File documentation.
#\verbatim
# Startup code:\
exec tclsh "$0" "$@"
#\endverbatim
## Documented namespace \c ns .
# The code is inserted here:
#\code
namespace eval ns {
## Documented proc \c ns_proc .
# param[in] arg some argument
proc ns_proc {arg} {}
## Documented var \c ns_var .
# Some documentation.
variable ns_var
## Documented itcl class \c itcl_class .
itcl::class itcl_class {
## Create object.
constructor {args} {eval $args}
## Destroy object.
destructor {exit}
## Documented itcl method \c itcl_method_x .
# param[in] arg Argument
private method itcl_method_x {arg}{}
## Documented itcl method \c itcl_method_y .
# param[in] arg Argument
protected method itcl_method_y {arg} {}
## Documented itcl method \c itcl_method_z .
# param[in] arg Argument
public method itcl_method_z {arg} {}
## Documented common itcl var \c itcl_Var .
common itcl_Var
## \protectedsection
variable itcl_var1;#< Documented itcl var \c itcl_var1 .
variable itcl_var2}
## Documented oo class \c oo_class .
oo::class create oo_class {
## Create object.
# Configure with args
constructor {args} {eval $args}
## Destroy object.
# Exit.
destructor {exit}
## Documented oo var \c oo_var .
# Defined inside class
variable oo_var
## \private Documented oo method \c oo_method_x .
# param[in] arg Argument
method oo_method_x {arg} {}
## \protected Documented oo method \c oo_method_y .
# param[in] arg Argument
method oo_method_y {arg} {}
## \public Documented oo method \c oo_method_z .
# param[in] arg Argument
method oo_method_z {arg} {}
}
}
#\endcode
itcl::body ::ns::itcl_class::itcl_method_x {argx} {
puts "$argx OK"
}
oo::define ns::oo_class {
## \public Outside defined variable \c oo_var_out .
# Inside oo_class
variable oo_var_out
}
## Documented global proc \c glob_proc .
# param[in] arg Argument
proc glob_proc {arg} {puts $arg}
variable glob_var;#< Documented global var \c glob_var\
with newline
#< and continued line
# end of file

-

- Click here - for the corresponding HTML documentation that is generated by doxygen. -

-Anatomy of a comment block

-

The previous section focused on how to make the comments in your code known to doxygen, it explained the difference between a brief and a detailed description, and the use of structural commands.

-

In this section we look at the contents of the comment block itself.

-

Doxygen supports various styles of formatting your comments.

-

The simplest form is to use plain text. This will appear as-is in the output and is ideal for a short description.

-

For longer descriptions you often will find the need for some more structure, like a block of verbatim text, a list, or a simple table. For this doxygen supports the Markdown syntax, including parts of the Markdown Extra extension.

-

Markdown is designed to be very easy to read and write. It's formatting is inspired by plain text mail. Markdown works great for simple, generic formatting, like an introduction page for your project. Doxygen also supports reading of markdown files directly. For more details see chapter Markdown support.

-

For programming language specific formatting doxygen has two forms of additional markup on top of Markdown formatting.

-
    -
  1. Javadoc like markup. See Special Commands for a complete overview of all commands supported by doxygen.
  2. -
  3. XML markup as specified in the C# standard. See XML Commands for the XML commands supported by doxygen.
  4. -
-

If this is still not enough doxygen also supports a subset of the HTML markup language.

-

-Go to the next section or return to the - index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxygen.png deleted file mode 100644 index da7e8aa7..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_logo.gif b/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_logo.gif deleted file mode 100644 index 6b455971..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_logo.gif and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_logo_low.gif b/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_logo_low.gif deleted file mode 100644 index 02e3c9ac..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_logo_low.gif and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_manual.css b/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_manual.css deleted file mode 100644 index e7271b2f..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_manual.css +++ /dev/null @@ -1,1505 +0,0 @@ -/* The standard CSS for doxygen 1.8.12 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #A9A9A9; - color: #585858; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #F1F1F1; - border: 1px solid #BDBDBD; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #646464; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #747474; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #B8B8B8; - color: #ffffff; - border: 1px double #A8A8A8; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0px; - margin: 4px 8px 4px 2px; - background-color: #FCFCFC; - border: 1px solid #D5D5D5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: #CCCCCC; - color: black; - margin: 0; -} - -div.contents { - margin-bottom: 10px; - padding: 12px; - margin-left: auto; - margin-right: auto; - width: 800px; - background-color: white; - -moz-border-radius-bottomleft: 8px; - -moz-border-radius-bottomright: 8px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 5px; - /* webkit specific markup */ - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.15); -} - -td.indexkey { - background-color: #F1F1F1; - font-weight: bold; - border: 1px solid #D5D5D5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #F1F1F1; - border: 1px solid #D5D5D5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #F2F2F2; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F9F9F9; - border-left: 2px solid #B8B8B8; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #BDBDBD; -} - -th.dirtab { - background: #F1F1F1; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #7A7A7A; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #FAFAFA; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #747474; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #747474; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #F1F1F1; - border: 1px solid #BDBDBD; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: bold; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #C0C0C0; - border-left: 1px solid #C0C0C0; - border-right: 1px solid #C0C0C0; - padding: 6px 0px 6px 0px; - color: #3D3D3D; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #EAEAEA; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #C0C0C0; - border-left: 1px solid #C0C0C0; - border-right: 1px solid #C0C0C0; - padding: 6px 10px 2px 10px; - background-color: #FCFCFC; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #9A9A9A; - border-top:1px solid #848484; - border-left:1px solid #848484; - border-right:1px solid #D5D5D5; - border-bottom:1px solid #D5D5D5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #B8B8B8; - border-bottom: 1px solid #B8B8B8; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F9F9F9; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #646464; -} - -.arrow { - color: #B8B8B8; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #9A9A9A; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #464646; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #4A4A4A; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #5B5B5B; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #C0C0C0; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #C0C0C0; - border-bottom: 1px solid #C0C0C0; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #C0C0C0; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #EAEAEA; - font-size: 90%; - color: #3D3D3D; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #C0C0C0; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#ABABAB; - border:solid 1px #D3D3D3; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#595959; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #434343; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#929292; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#595959; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #FAFAFA; - margin: 0px; - border-bottom: 1px solid #D5D5D5; - margin-left: auto; - margin-right: auto; - width: 800px; - padding-left: 12px; - padding-right: 12px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 5px; - /* webkit specific markup */ - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.15); - -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #848484; - visibility: hidden; - height: 0px; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #AFAFAF; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#545454; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F7F7F7; - border: 1px solid #E3E3E3; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #747474; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_usage.html b/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_usage.html deleted file mode 100644 index f8ffc32d..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/doxygen_usage.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -Doxygen: Doxygen usage - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Doxygen usage
-
-
-

Doxygen is a command line based utility. Calling doxygen with the --help option at the command line will give you a brief description of the usage of the program.

-

All options consist of a leading character -, followed by one character and one or more arguments depending on the option.

-

To generate a manual for your project you typically need to follow these steps:

    -
  1. -You document your source code with special documentation blocks (see section Special comment blocks).
  2. -
  3. -You generate a configuration file (see section Configuration) by calling doxygen with the -g option:
    doxygen -g <config_file>
    -
  4. -
  5. -You edit the configuration file so it matches your project. In the configuration file you can specify the input files and a lot of optional information.
  6. -
  7. -You let doxygen generate the documentation, based on the settings in the configuration file:
    doxygen <config_file>
    -
  8. -
-

If you have a configuration file generated with an older version of doxygen, you can upgrade it to the current version by running doxygen with the -u option.

doxygen -u <config_file>
-

All configuration settings in the original configuration file will be copied to the new configuration file. Any new options will have their default value. Note that comments that you may have added in the original configuration file will be lost.

-

-Fine-tuning the output

-

If you want to fine-tune the way the output looks, doxygen allows you generate default style sheet, header, and footer files that you can edit afterwards:

    -
  • -

    For HTML output, you can generate the default header file (see HTML_HEADER), the default footer (see HTML_FOOTER), and the default style sheet (see HTML_STYLESHEET), using the following command:

    doxygen -w html header.html footer.html stylesheet.css <config_file>
    -

    The config_file is optional. When omitted doxygen will search for a file named Doxyfile and process that. When this is also not found it will used the default settings.

    -

    -
  • -
  • -For $\mbox{\LaTeX}$ output, you can generate the first and last part of refman.tex (see LATEX_HEADER and LATEX_FOOTER) and the style sheet included by that header (normally doxygen.sty), using the following command:
    doxygen -w latex header.tex footer.tex doxygen.sty <config_file>
    -
    If you need non-default options (for instance to use extra $\mbox{\LaTeX}$ packages) you need to make a config file with those options set correctly and then specify that config file after the generated files (make a backup of the configuration file first so you don't loose it in case you forget to specify one of the output files).
  • -
  • -For RTF output, you can generate the default style sheet file (see RTF_STYLESHEET_FILE) using:
    doxygen -w rtf rtfstyle.cfg
    -
  • -
-
Warning
When using a custom header you are responsible for the proper inclusion of any scripts and style sheets that doxygen needs, which is dependent on the configuration options and may changes when upgrading to a new doxygen release.
-
Note
    -
  • -If you do not want documentation for each item inside the configuration file then you can use the optional -s option. This can use be used in combination with the -u option, to add or strip the documentation from an existing configuration file. Please use the -s option if you send me a configuration file as part of a bug report!
  • -
  • -To make doxygen read/write to standard input/output instead of from/to a file, use - for the file name.
  • -
-
-

-Go to the next section or return to the - index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_expert.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_expert.png deleted file mode 100644 index 93fd4ee7..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_expert.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_main.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_main.png deleted file mode 100644 index e57c144e..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_main.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_menu.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_menu.png deleted file mode 100644 index 37adc460..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_menu.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page1.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page1.png deleted file mode 100644 index ee3181d7..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page1.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page2.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page2.png deleted file mode 100644 index dc9b5a8d..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page2.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page3.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page3.png deleted file mode 100644 index f75e63f3..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page3.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page4.png b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page4.png deleted file mode 100644 index e4f43616..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_page4.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_usage.html b/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_usage.html deleted file mode 100644 index 9c444f89..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/doxywizard_usage.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -Doxygen: Doxywizard usage - - - - - - - - - - - -
-
- - - - - - -
-
Doxygen -
-
-
- - -
-
- -
-
-
- -
-
-
-
Doxywizard usage
-
-
-

Doxywizard is a GUI front-end for configuring and running doxygen.

-

Note it is possible to start the doxywizard with as argument the configuration file to be used.

-

When you start doxywizard it will display the main window (the actual look depends on the OS used).

-
-doxywizard_main.png -
-Main window
-

The windows shows the steps to take to configure and run doxygen. The first step is to choose one of the ways to configure doxygen.

-
Wizard
-
Click this button to quickly configure the most important settings and leave the rest of the options to their defaults.
-
Expert
-
Click this button to gain access to the full range of configuration options.
-
Load
-
Click this button to load an existing configuration file from disk.
-
-

Note that you can select multiple buttons in a row, for instance to first configure doxygen using the Wizard and then fine tune the settings via the Expert.

-

After doxygen is configured you need to save the configuration as a file to disk. This second step allows doxygen to use the configuration and has the additional advantage that the configuration can be reused to run doxygen with the same settings at a later point in time.

-

Since some configuration options may use relative paths, the next step is to select a directory from which to run doxygen. This is typically the root of the source tree and will most of the time already be filled in correctly.

-

Once the configuration file is saved and the working directory is set, you can run doxygen based on the selected settings. Do this by pressing the "Start" button. Once doxygen runs you can cancel it by clicking the same button again. The output produced by doxygen is captured and shown in a log window. Once doxygen finishes, the log can be saved as a text file.

-

The Wizard Dialog

-

If you select the Wizard button in step 1, then a dialog with a number of tabs will appear.

-
-doxywizard_page1.png -
-Wizard dialog: Project settings
-

The fields in the project tab speak for themselves. Once doxygen has finished the Destination directory is where to look for the results. Doxygen will put each output format in a separate sub-directory.

-
-doxywizard_page2.png -
-Wizard dialog: Mode of operating
-

The mode tab allows you to select how doxygen will look at your sources. The default is to only look for things that have been documented.

-

You can also select how doxygen should present the results. The latter does not affect the way doxygen parses your source code.

-
-doxywizard_page3.png -
-Wizard dialog: Output to produce
-

You can select one or more of the output formats that doxygen should produce. For HTML and $\mbox{\LaTeX}$ there are additional options.

-
-doxywizard_page4.png -
-Wizard dialog: Diagrams to generate
-

Doxygen can produce a number of diagrams. Using the diagrams tab you can select which ones to generate. For most diagrams the dot tool of the GraphViz package is needed (if you use the binary packages for MacOSX this tool is already included).

-

Expert dialog

-

The Expert dialog has a number of tab fields, one for each section in the configuration file. Each tab-field contains a number of lines, one for each configuration option in that section.

-

The kind of input widget depends on the type of the configuration option.

    -
  • -For each boolean option (those options that are answered with YES or NO in the configuration file) there is a check-box.
  • -
  • -For items taking one of a fixed set of values (like OUTPUT_LANGUAGE) a combo box is used.
  • -
  • -For items taking an integer value from a range, a spinbox is used.
  • -
  • -For free form string-type options there is a one line edit field
  • -
  • -For options taking a lists of strings, a one line edit field is available, with a `+' button to add this string to the list and a `-' button to remove the selected string from the list. There is also a `*' button that, when pressed, replaces the selected item in the list with the string entered in the edit field.
  • -
  • -For file and folder entries, there are special buttons that start a file selection dialog.
  • -
-
-doxywizard_expert.png -
-Some options from the Expert dialog
-

The get additional information about the meaning of an option, click on the "Help" button at the bottom right of the dialog and then on the item. A tooltip with additional information will appear.

-

Menu options

-

The GUI front-end has a menu with a couple of useful items

-
-doxywizard_menu.png -
-File menu
-
-
Open...
-
This is the same as the "Load" button in the main window and allows to open a configuration file from disk.
-
Save as..
-
This is the same as the "Save" button in the main window and can be used to save the current configuration settings to disk.
-
Recent configurations
-
Allow to quickly load a recently saved configuration.
-
Set as default...
-
Stores the current configuration settings as the default to use next time the GUI is started. You will be asked to confirm the action.
-
Reset...
-
Restores the factory defaults as the default settings to use. You will be asked to confirm the action.
-
-

-Go to the next section or return to the - index. -

-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/dynsections.js b/vnfs/VES5.0/doxygen-1.8.12/html/dynsections.js deleted file mode 100644 index 85e18369..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/dynsections.js +++ /dev/null @@ -1,97 +0,0 @@ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -AfterDocs: afterdoc.h Source File - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
-
afterdoc.h
-
-
-
1 /*! A test class */
2 
4 {
5  public:
6  /** An enum type.
7  * The documentation block cannot be put after the enum!
8  */
9  enum EnumType
10  {
11  int EVal1, /**< enum value 1 */
12  int EVal2 /**< enum value 2 */
13  };
14  void member(); //!< a member function.
15 
16  protected:
17  int value; /*!< an integer value */
18 };
void member()
a member function.
-
enum value 1
Definition: afterdoc.h:11
-
EnumType
An enum type.
Definition: afterdoc.h:9
-
int value
Definition: afterdoc.h:17
-
Definition: afterdoc.h:3
-
enum value 2
Definition: afterdoc.h:12
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/annotated.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/annotated.html deleted file mode 100644 index 25b09df3..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/annotated.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - -AfterDocs: Class List - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
- - -
 CAfterdoc_Test
-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/bc_s.png b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/bc_s.png deleted file mode 100644 index 224b29aa..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/bc_s.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/bdwn.png b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/bdwn.png deleted file mode 100644 index 940a0b95..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/bdwn.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/class_afterdoc___test-members.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/class_afterdoc___test-members.html deleted file mode 100644 index 0dff9ec5..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/class_afterdoc___test-members.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - -AfterDocs: Member List - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
-
Afterdoc_Test Member List
-
-
- -

This is the complete list of members for Afterdoc_Test, including all inherited members.

- - - - - - -
EnumType enum nameAfterdoc_Test
EVal1 enum valueAfterdoc_Test
EVal2 enum valueAfterdoc_Test
member()Afterdoc_Test
valueAfterdoc_Testprotected
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/class_afterdoc___test.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/class_afterdoc___test.html deleted file mode 100644 index 97c3e51a..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/class_afterdoc___test.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -AfterDocs: Afterdoc_Test Class Reference - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
- -
-
Afterdoc_Test Class Reference
-
-
- -

#include <afterdoc.h>

- - - - - -

-Public Types

enum  EnumType { EVal1, -EVal2 - }
 An enum type. More...
 
- - - - -

-Public Member Functions

-void member ()
 a member function.
 
- - - -

-Protected Attributes

int value
 
-

Detailed Description

-

A test class

-

Member Enumeration Documentation

- -

§ EnumType

- -
-
- - - - -
enum Afterdoc_Test::EnumType
-
- -

An enum type.

-

The documentation block cannot be put after the enum!

- - - -
Enumerator
EVal1 

enum value 1

-
EVal2 

enum value 2

-
- -
-
-

Member Data Documentation

- -

§ value

- -
-
- - - - - -
- - - - -
int Afterdoc_Test::value
-
-protected
-
-

an integer value

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/classes.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/classes.html deleted file mode 100644 index bcfdd2b1..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/classes.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - -AfterDocs: Class Index - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
-
Class Index
-
-
- - - - - - -
  a  
-
Afterdoc_Test   
- -
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/closed.png b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/closed.png deleted file mode 100644 index 98cc2c90..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/closed.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doc.png b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doc.png deleted file mode 100644 index 17edabff..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doc.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doxygen.css b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doxygen.css deleted file mode 100644 index a2cf15fa..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doxygen.css +++ /dev/null @@ -1,1508 +0,0 @@ -/* The standard CSS for doxygen 1.8.12 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doxygen.png b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doxygen.png deleted file mode 100644 index 3ff17d80..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/doxygen.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/dynsections.js b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/dynsections.js deleted file mode 100644 index 85e18369..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/dynsections.js +++ /dev/null @@ -1,97 +0,0 @@ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -AfterDocs: File List - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
- - -
 afterdoc.h
-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/folderclosed.png b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/folderclosed.png deleted file mode 100644 index bb8ab35e..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/folderclosed.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/folderopen.png b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/folderopen.png deleted file mode 100644 index d6c7f676..00000000 Binary files a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/folderopen.png and /dev/null differ diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions.html deleted file mode 100644 index 54c47c80..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - -AfterDocs: Class Members - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
Here is a list of all documented class members with links to the class documentation for each member:
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_enum.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_enum.html deleted file mode 100644 index 97e85984..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_enum.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - -AfterDocs: Class Members - Enumerations - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_eval.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_eval.html deleted file mode 100644 index 2ffe07f2..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_eval.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - -AfterDocs: Class Members - Enumerator - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_func.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_func.html deleted file mode 100644 index c0ea49cd..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_func.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - -AfterDocs: Class Members - Functions - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_vars.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_vars.html deleted file mode 100644 index c83968f0..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/functions_vars.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - -AfterDocs: Class Members - Variables - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/index.html b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/index.html deleted file mode 100644 index ad0de95a..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/index.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - -AfterDocs: Main Page - - - - - - -
-
- - - - - - -
-
AfterDocs -
-
-
- - - - - - -
-
-
-
AfterDocs Documentation
-
-
-
- - - - diff --git a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/jquery.js b/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/jquery.js deleted file mode 100644 index f5343eda..00000000 --- a/vnfs/VES5.0/doxygen-1.8.12/html/examples/afterdoc/html/jquery.js +++ /dev/null @@ -1,87 +0,0 @@ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('