diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..40f0dd1 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +package-lock = false +save = false diff --git a/.travis.yml b/.travis.yml index db4305c..1ac8ca3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,10 @@ python: - "2.7" before_install: + - curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + - echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-4.0 main" | sudo tee -a /etc/apt/sources.list - sudo apt-get update -qq - - sudo apt-get install -y libclang1-3.4 + - sudo apt-get install -y libclang1-4.0 install: - (cd cldoc-static && npm install) diff --git a/DEVELOP.md b/DEVELOP.md index 2aca21e..d90b6d3 100644 --- a/DEVELOP.md +++ b/DEVELOP.md @@ -13,7 +13,6 @@ do not have `make` available, then use: ``` npm install - gem install --user-install -b gems -n gems/.bin --no-ri --no-rdoc sass ``` ## Generating the frontend @@ -22,7 +21,7 @@ have been modified. To generate the frontend, use `make generate` to run `setup. the correct paths to the installed dependencies. Again, if you do not have `make` available, use: ``` - python setup.py generate --coffee=node_modules/.bin/coffee --inline=scripts/inline --sass=gems/.bin/sass + python setup.py generate --coffee=node_modules/.bin/coffee --inline=scripts/inline --sass=node_modules/.bin/node-sass ``` ## Developing without installing @@ -38,4 +37,4 @@ called `dev` is provided to run coffee and sass, without running `inline`. # Run local cldoc scripts/cldoc-dev [command] [OPTIONS] [FILES...] -``` \ No newline at end of file +``` diff --git a/Makefile b/Makefile index 7b7741b..7c558e4 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ PYTHON = python SETUP = $(PYTHON) setup.py COFFEE = node_modules/.bin/coffee INLINE_SOURCE = node_modules/inline-source -SASS = gems/.bin/sass +SASS = node_modules/.bin/node-sass UNAME = $(shell uname) ifeq ($(UNAME),Darwin) diff --git a/README.md b/README.md index f098bef..6ab0dc9 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,10 @@ non-intrusive and robust approach. For more information, please visit http://jessevdk.github.com/cldoc. +# Requirements + +cldoc requires clang 3.9 or later to be installed on the system. + # Get started now! To get started using cldoc, please have a look at [Getting started](http://jessevdk.github.com/cldoc/gettingstarted.html) to install cldoc. Then explore how diff --git a/RELEASE.md b/RELEASE.md index 736c896..6408e53 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -18,10 +18,11 @@ python setup.py sdist upload ## Release static site generator to npm ```bash +cd cldoc-static npm publish ``` ## Push to remote ```bash git push --tags master:master -``` \ No newline at end of file +``` diff --git a/cldoc-static/lib/cldoc-static.js b/cldoc-static/lib/cldoc-static.js index 80abff4..8952fe1 100644 --- a/cldoc-static/lib/cldoc-static.js +++ b/cldoc-static/lib/cldoc-static.js @@ -31,13 +31,15 @@ function run(htmldir, outdir) { var xmldoc = (new xmldom.DOMParser()).parseFromString(x); - var doc = jsdom.jsdom(indexhtml, { - features: { - FetchExternalResources: ['script'], - ProcessExternalResources: ["script"], - }, + var virtualConsole = new jsdom.VirtualConsole(); + + var dom = new jsdom.JSDOM(indexhtml, { + runScripts: "dangerously", + virtualConsole: virtualConsole }); + var doc = dom.window.document; + if (doc.errors) { for (var e = 0; e < doc.errors.length; e++) { console.error(doc.errors[e].message); @@ -47,7 +49,7 @@ function run(htmldir, outdir) { process.exit(1); } - var window = doc.defaultView; + var window = dom.window; var $ = window.jQuery; var cldoc = window.cldoc; @@ -117,9 +119,12 @@ function run(htmldir, outdir) { $('head').append(link); // Write resulting html to .html - fs.writeFileSync(path.join(outdir, name + '.html'), html(jsdom.serializeDocument(doc), { - max_preserve_newlines: 1 - })); + var serialized = html(dom.serialize(), { + max_preserve_newlines: 1, + end_with_newline: true + }); + + fs.writeFileSync(path.join(outdir, name + '.html'), serialized); } // Write css to styles/cldoc.css @@ -134,4 +139,4 @@ function run(htmldir, outdir) { module.exports = { run: run -}; \ No newline at end of file +}; diff --git a/cldoc-static/package.json b/cldoc-static/package.json index abe5f5f..cc486ab 100644 --- a/cldoc-static/package.json +++ b/cldoc-static/package.json @@ -24,8 +24,8 @@ }, "homepage": "https://github.com/jessevdk/cldoc#readme", "dependencies": { - "js-beautify": "^1.5.10", - "jsdom": "^3.1.2", - "xmldom": "^0.1.19" + "js-beautify": "^1.7.5", + "jsdom": "^11.7.0", + "xmldom": "^0.1.27" } } diff --git a/cldoc/clang/cindex-updates.patch b/cldoc/clang/cindex-updates.patch index 0fccabb..b68147b 100644 --- a/cldoc/clang/cindex-updates.patch +++ b/cldoc/clang/cindex-updates.patch @@ -1,5 +1,5 @@ diff --git a/cldoc/clang/cindex.py b/cldoc/clang/cindex.py -index b53661a..114d483 100644 +index b53661a..e58a2dd 100644 --- a/cldoc/clang/cindex.py +++ b/cldoc/clang/cindex.py @@ -1,3 +1,15 @@ @@ -41,7 +41,7 @@ index b53661a..114d483 100644 @property def disable_option(self): """The command-line option that disables this diagnostic.""" -@@ -1479,12 +1498,6 @@ class Cursor(Structure): +@@ -1479,17 +1498,6 @@ class Cursor(Structure): """ return conf.lib.clang_CXXMethod_isVirtual(self) @@ -51,10 +51,49 @@ index b53661a..114d483 100644 - """ - return conf.lib.clang_CXXRecord_isAbstract(self) - - def is_scoped_enum(self): - """Returns True if the cursor refers to a scoped enum declaration. +- def is_scoped_enum(self): +- """Returns True if the cursor refers to a scoped enum declaration. +- """ +- return conf.lib.clang_EnumDecl_isScoped(self) +- + def get_definition(self): + """ + If the cursor is a reference to a declaration or a declaration of +@@ -1565,14 +1573,6 @@ class Cursor(Structure): + + return LinkageKind.from_id(self._linkage) + +- @property +- def tls_kind(self): +- """Return the thread-local storage (TLS) kind of this cursor.""" +- if not hasattr(self, '_tls_kind'): +- self._tls_kind = conf.lib.clang_getCursorTLSKind(self) +- +- return TLSKind.from_id(self._tls_kind) +- + @property + def extent(self): """ -@@ -1729,6 +1742,9 @@ class Cursor(Structure): +@@ -1648,18 +1648,6 @@ class Cursor(Structure): + + return self._result_type + +- @property +- def exception_specification_kind(self): +- ''' +- Retrieve the exception specification kind, which is one of the values +- from the ExceptionSpecificationKind enumeration. +- ''' +- if not hasattr(self, '_exception_specification_kind'): +- exc_kind = conf.lib.clang_getCursorExceptionSpecificationType(self) +- self._exception_specification_kind = ExceptionSpecificationKind.from_id(exc_kind) +- +- return self._exception_specification_kind +- + @property + def underlying_typedef_type(self): + """Return the underlying type of a typedef declaration. +@@ -1729,6 +1717,9 @@ class Cursor(Structure): return self._hash @@ -64,7 +103,7 @@ index b53661a..114d483 100644 @property def semantic_parent(self): """Return the semantic parent for this cursor.""" -@@ -1860,6 +1876,20 @@ class Cursor(Structure): +@@ -1860,6 +1851,20 @@ class Cursor(Structure): """ return conf.lib.clang_getFieldDeclBitWidth(self) @@ -85,7 +124,34 @@ index b53661a..114d483 100644 @staticmethod def from_result(res, fn, args): assert isinstance(res, Cursor) -@@ -3407,10 +3437,6 @@ functionList = [ +@@ -2161,6 +2166,13 @@ class Type(Structure): + """Return the kind of this type.""" + return TypeKind.from_id(self._kind_id) + ++ def get_num_template_arguments(self): ++ return conf.lib.clang_Type_getNumTemplateArguments(self) ++ ++ def get_template_argument_type(self, num): ++ """Returns the CXType for the indicated template argument.""" ++ return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) ++ + def argument_types(self): + """Retrieve a container for the non-variadic arguments for this type. + +@@ -2290,12 +2302,6 @@ class Type(Structure): + + return conf.lib.clang_isFunctionTypeVariadic(self) + +- def get_address_space(self): +- return conf.lib.clang_getAddressSpace(self) +- +- def get_typedef_name(self): +- return conf.lib.clang_getTypedefName(self) +- + def is_pod(self): + """Determine whether this Type represents plain old data (POD).""" + return conf.lib.clang_isPODType(self) +@@ -3407,14 +3413,6 @@ functionList = [ [Cursor], bool), @@ -93,10 +159,14 @@ index b53661a..114d483 100644 - [Cursor], - bool), - - ("clang_EnumDecl_isScoped", - [Cursor], - bool), -@@ -3432,6 +3458,15 @@ functionList = [ +- ("clang_EnumDecl_isScoped", +- [Cursor], +- bool), +- + ("clang_defaultDiagnosticDisplayOptions", + [], + c_uint), +@@ -3432,6 +3430,15 @@ functionList = [ ("clang_disposeDiagnostic", [Diagnostic]), @@ -112,7 +182,35 @@ index b53661a..114d483 100644 ("clang_disposeIndex", [Index]), -@@ -4144,7 +4179,7 @@ class Config: +@@ -3820,11 +3827,6 @@ functionList = [ + Type, + Type.from_result), + +- ("clang_getTypedefName", +- [Type], +- _CXString, +- _CXString.from_result), +- + ("clang_getTypeKindSpelling", + [c_uint], + _CXString, +@@ -3978,6 +3980,15 @@ functionList = [ + [Cursor], + c_longlong), + ++ ("clang_Type_getNumTemplateArguments", ++ [Type], ++ c_int), ++ ++ ("clang_Type_getTemplateArgumentAsType", ++ [Type, c_uint], ++ Type, ++ Type.from_result), ++ + ("clang_Type_getAlignOf", + [Type], + c_longlong), +@@ -4144,7 +4155,7 @@ class Config: return True def register_enumerations(): diff --git a/cldoc/clang/cindex.py b/cldoc/clang/cindex.py index 114d483..e58a2dd 100644 --- a/cldoc/clang/cindex.py +++ b/cldoc/clang/cindex.py @@ -1498,11 +1498,6 @@ def is_virtual_method(self): """ return conf.lib.clang_CXXMethod_isVirtual(self) - def is_scoped_enum(self): - """Returns True if the cursor refers to a scoped enum declaration. - """ - return conf.lib.clang_EnumDecl_isScoped(self) - def get_definition(self): """ If the cursor is a reference to a declaration or a declaration of @@ -1578,14 +1573,6 @@ def linkage(self): return LinkageKind.from_id(self._linkage) - @property - def tls_kind(self): - """Return the thread-local storage (TLS) kind of this cursor.""" - if not hasattr(self, '_tls_kind'): - self._tls_kind = conf.lib.clang_getCursorTLSKind(self) - - return TLSKind.from_id(self._tls_kind) - @property def extent(self): """ @@ -1661,18 +1648,6 @@ def result_type(self): return self._result_type - @property - def exception_specification_kind(self): - ''' - Retrieve the exception specification kind, which is one of the values - from the ExceptionSpecificationKind enumeration. - ''' - if not hasattr(self, '_exception_specification_kind'): - exc_kind = conf.lib.clang_getCursorExceptionSpecificationType(self) - self._exception_specification_kind = ExceptionSpecificationKind.from_id(exc_kind) - - return self._exception_specification_kind - @property def underlying_typedef_type(self): """Return the underlying type of a typedef declaration. @@ -2191,6 +2166,13 @@ def kind(self): """Return the kind of this type.""" return TypeKind.from_id(self._kind_id) + def get_num_template_arguments(self): + return conf.lib.clang_Type_getNumTemplateArguments(self) + + def get_template_argument_type(self, num): + """Returns the CXType for the indicated template argument.""" + return conf.lib.clang_Type_getTemplateArgumentAsType(self, num) + def argument_types(self): """Retrieve a container for the non-variadic arguments for this type. @@ -2320,12 +2302,6 @@ def is_function_variadic(self): return conf.lib.clang_isFunctionTypeVariadic(self) - def get_address_space(self): - return conf.lib.clang_getAddressSpace(self) - - def get_typedef_name(self): - return conf.lib.clang_getTypedefName(self) - def is_pod(self): """Determine whether this Type represents plain old data (POD).""" return conf.lib.clang_isPODType(self) @@ -3437,10 +3413,6 @@ def cursor(self): [Cursor], bool), - ("clang_EnumDecl_isScoped", - [Cursor], - bool), - ("clang_defaultDiagnosticDisplayOptions", [], c_uint), @@ -3855,11 +3827,6 @@ def cursor(self): Type, Type.from_result), - ("clang_getTypedefName", - [Type], - _CXString, - _CXString.from_result), - ("clang_getTypeKindSpelling", [c_uint], _CXString, @@ -4013,6 +3980,15 @@ def cursor(self): [Cursor], c_longlong), + ("clang_Type_getNumTemplateArguments", + [Type], + c_int), + + ("clang_Type_getTemplateArgumentAsType", + [Type, c_uint], + Type, + Type.from_result), + ("clang_Type_getAlignOf", [Type], c_longlong), diff --git a/cldoc/data/index.html b/cldoc/data/index.html index 932e04c..208dc68 100644 --- a/cldoc/data/index.html +++ b/cldoc/data/index.html @@ -1,20 +1,20 @@ - + Documentation - + - - - - - + + + + + @@ -26,6 +26,3 @@ - - - diff --git a/cldoc/data/javascript/cldoc.js b/cldoc/data/javascript/cldoc.js index 6c4b321..186cfcb 100644 --- a/cldoc/data/javascript/cldoc.js +++ b/cldoc/data/javascript/cldoc.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.9.3 +// Generated by CoffeeScript 1.12.7 var escapeDiv, escapeElement, href, ref1, slice = [].slice, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -1068,7 +1068,7 @@ cldoc.Type = (function(superClass) { extend(Type, superClass); function Type(node1) { - var a, arg, args, builtincls, e, i, j, len, name, result, subtype; + var a, arg, args, builtincls, e, i, j, len, len1, name, o, result, subtype; this.node = node1; Type.__super__.constructor.call(this, this.node); this.qualifier = this.node.attr('qualifier'); @@ -1107,6 +1107,32 @@ cldoc.Type = (function(superClass) { this.append_plain_part(')'); this.typeparts.push(''); this.typeparts_text.push(''); + } else if (this.node.attr('class') === 'template') { + this.typeparts.push(''); + this.typeparts_text.push(''); + if (this.ref) { + a = cldoc.Page.make_link(this.ref, this.name); + name = '' + a + ''; + } else { + name = '' + e(this.name) + ''; + } + this.typeparts.push(name); + this.typeparts_text.push(this.name); + this.typeparts.push(''); + this.typeparts_text.push(''); + this.append_plain_part('<'); + args = this.node.children('template-arguments').first().children('type'); + this.args = []; + for (i = o = 0, len1 = args.length; o < len1; i = ++o) { + arg = args[i]; + if (i !== 0) { + this.append_plain_part(', '); + } + this.args.push(this.append_type($(arg))); + } + this.append_plain_part('>'); + this.typeparts.push(''); + this.typeparts_text.push(''); } else { if (this.name) { if (this.node.attr('builtin')) { diff --git a/cldoc/data/styles/cldoc.css b/cldoc/data/styles/cldoc.css index 2bf7503..b2a11f1 100644 --- a/cldoc/data/styles/cldoc.css +++ b/cldoc/data/styles/cldoc.css @@ -1,2 +1 @@ -.hljs-keyword{color:#CB4B16}.hljs-comment{color:#93A1A1}.hljs-string{color:#DC322F}.hljs-number{color:#859900}.hljs-preprocessor{color:#6C71C4}.hljs-stl_container{color:#268BD2}#cldoc::-webkit-scrollbar,#cldoc #cldoc_sidebar_items::-webkit-scrollbar{width:6px;height:6px}#cldoc::-webkit-scrollbar-track,#cldoc #cldoc_sidebar_items::-webkit-scrollbar-track{background-color:#d4d4d4;margin:2px;border-radius:5px}#cldoc::-webkit-scrollbar-thumb,#cldoc #cldoc_sidebar_items::-webkit-scrollbar-thumb{background-color:#a2a2a2;margin:2px;border-radius:5px}#cldoc.hide_scrollbar,#cldoc #cldoc_sidebar_items.hide_scrollbar{overflow-y:hidden}#cldoc.hide_scrollbar::-webkit-scrollbar-track,#cldoc.hide_scrollbar::-webkit-scrollbar-thumb,#cldoc #cldoc_sidebar_items.hide_scrollbar::-webkit-scrollbar-track,#cldoc #cldoc_sidebar_items.hide_scrollbar::-webkit-scrollbar-thumb{background-color:#eee}#cldoc{font-family:"ubuntu","lucida grande"}#cldoc .selected{background-color:#ffffab}#cldoc .builtin{color:#B58900}#cldoc .keyword{color:#CB4B16;font-weight:bold}#cldoc .preprocessor{color:#6C71C4}#cldoc .comment{color:#93A1A1}#cldoc .identifier{color:#268BD2}#cldoc h1,#cldoc h2,#cldoc h3,#cldoc h4,#cldoc h5,#cldoc h6{color:#333;padding-bottom:3px}#cldoc h1,#cldoc h2{border-bottom:1px solid #b3b3b3}#cldoc h3,#cldoc h4,#cldoc h5,#cldoc h6{margin-bottom:0px}#cldoc h1{border:0;margin-top:0px;text-shadow:1px 1px #ccc}#cldoc h1 span.keyword{padding-right:20px}#cldoc h2{margin-top:60px}#cldoc a{cursor:hand;text-decoration:underline;color:#0876c8}#cldoc div.brief p:first-child,#cldoc div.doc p:first-child{padding-top:0px;margin-top:0px}#cldoc div.brief p:last-child,#cldoc div.doc p:last-child{padding-bottom:0px;margin-bottom:0px}#cldoc #cldoc_sidebar_bg{overflow:none;width:260px;background-color:#eee;position:fixed;top:0;bottom:0;left:0}#cldoc #cldoc_sidebar{width:260px;background-color:#eee;border-right:1px solid #d4d4d4;position:fixed;top:0;left:0;bottom:0}#cldoc #cldoc_sidebar.search #cldoc_sidebar_items{display:none}#cldoc #cldoc_sidebar_items{position:fixed;top:0;left:0;bottom:2.5em;width:250px;padding:5px;overflow:auto;overflow-y:scroll}#cldoc #cldoc_sidebar_items div.back .arrow{padding-right:5px}#cldoc #cldoc_sidebar_items div.back div.name{padding-bottom:5px}#cldoc #cldoc_sidebar_items div.back div.name span.keyword{padding-right:5px;font-weight:normal}#cldoc #cldoc_sidebar_items div.back a{display:block;margin-left:10px}#cldoc #cldoc_sidebar_items .subtitle{font-size:1.1em;text-align:center;margin-top:15px;text-shadow:1px 1px #eee;color:#333}#cldoc #cldoc_sidebar_items #cldoc_sidebar_pagenav{margin-top:15px}#cldoc #cldoc_sidebar_items #cldoc_sidebar_pagenav:empty{margin-top:0px}#cldoc #cldoc_sidebar_items ol,#cldoc #cldoc_sidebar_items ul{margin:0;padding:0;padding-left:10px;font-size:0.9em;margin-top:5px}#cldoc #cldoc_sidebar_items ul{list-style:none}#cldoc #cldoc_sidebar_items *{text-overflow:ellipsis}#cldoc #cldoc_sidebar_items li{padding-bottom:2px;padding-top:2px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#cldoc #cldoc_sidebar_items span.counter{padding:2px 4px 2px 4px;margin-left:5px;font-size:0.6em;vertical-align:super;background-color:#4298d8;color:#fff;display:none;border-radius:10px;min-width:10px;text-align:center}#cldoc #cldoc_sidebar_items span.virtual,#cldoc #cldoc_sidebar_items span.protected,#cldoc #cldoc_sidebar_items span.static{font-size:0.6em;min-width:1.6em;display:inline-block;vertical-align:super;text-align:center;background-color:#CB4B16;color:#fff;margin-left:5px;padding-bottom:2px}#cldoc #cldoc_sidebar_items .brief{text-shadow:none;font-size:0.9em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding:2px;margin:0px;margin-bottom:3px;color:#999}#cldoc #cldoc_sidebar_items span.bullet{font-weight:bold;padding-right:5px}#cldoc #cldoc_sidebar_items span.bullet.complete{color:#859900}#cldoc #cldoc_sidebar_items span.bullet.incomplete{color:#DC322F}#cldoc #cldoc_sidebar_items a{text-decoration:none}#cldoc #cldoc_search{position:fixed;bottom:0.5em;width:233px;left:8px;height:1.2em;padding:2px 5px 2px 5px;border:1px solid #aaa;background-color:#fafafa}#cldoc #cldoc_search.focus{border:1px solid #268BD2}#cldoc #cldoc_search input{padding:0;margin:0;top:3px;right:18px;left:20px;position:absolute;border:0;background-color:transparent}#cldoc #cldoc_search input:focus{outline-style:none}#cldoc #cldoc_search div.icon,#cldoc #cldoc_search div.close{width:16px;height:16px;position:absolute;top:3px;z-index:2;cursor:pointer}#cldoc #cldoc_search div.icon.focus,#cldoc #cldoc_search div.close.focus{background-position:100% 0%}#cldoc #cldoc_search div.icon{left:2px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAfdEVYdFRpdGxlAEdub21lIFN5bWJvbGljIEljb24gVGhlbWWOpCmrAAACQ0lEQVRIicWVsWrbUBSGvyPJEl4CGQrJAxSbpo7pkikdSjZnviH4MZoW2sEQ8NBAUzL2DTLkzvYWOiSZGiitS7HoAzRQQocOxrJ9bwdJjmLJdTKUns2//u/+554jZLHW8j/Ly/44Pj5e9n2/Za19ClSAUETOoihqN5vNX4sOWz/oLQ9dWghTHstZMKH95VWtkJd0AlrrTeAEWC3w/QB2lFLn88Ir7z5vYp35vJidcK+e4x2Ib54J7xpjNoIgWDLGbADdRD9JfIU3z4R3EWdDjL+EODe8dU7WD3o53gNIxr4KdJVS25nnH4FtrXUHaPi+3wKezx4ydGml4eGLWo6vHPY6QCPx3eIdgGTnGGP2i26Y6qkvV/HOQZxCfqqnvtkGiF8YyuVyv4jP6JXCgESXiVfIZ/QcnzYQAgwGg2rRARk9nNNACGDdcSGf0XO8AyAiZwCOUzzCVE99+QRi3RavcKqnvkx5AFEUtUul0i7Q0Fp3jDH75XK5PxgMqkl4I7ZF74vODya0hx67QKNy2Osgzr5MvL51x9UkvIElcpnk+Dt9B0RkaK0NgB6wpZT6OetZ8B0YAgGWnhmPt76/fjLl03cApdT5aDRaE5Ej4BL4DVyKyJG1tg70gRpwqrV+MJsQ7tXPgzFrWG7xWI7EJLxQczzv9OGbT1Ne7vpfoLVeAT4A1b9NYl49fvttZSSTmM9MwllIJqWUugKecTMJfVcW4OvLR1cl68a8UHNLnobMCu7ZxAVwfR/2dhP2wmKv4R4r+Ff1B4jqDQnTeInlAAAAAElFTkSuQmCC")}#cldoc #cldoc_search div.close{right:2px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAfdEVYdFRpdGxlAEdub21lIFN5bWJvbGljIEljb24gVGhlbWWOpCmrAAABmUlEQVRIie2UPWobQRSAvzczqwO4sQtXISZBSMTpXLjQ4gvEhgEdJIbkBAEnEHIKFYuVHMBiGxcqDCGJcBLcyJ3AB7DR7uxLMza2d2Oliho/GBjezDfvG+ZHVJVlhllq9UcBwN1PZFmmwDGw572/iLkV4BDoee/loQWfffihIMdVUeydvX15AdD5eLoyD+FQoPf7dfcOXxMAToBtYJRl2U5ZluqcOwJeAN/+YVMnoNvGudHGu687plUp2jqSv/A1AWvtbgghB7rAyDlH7E9DCK8WVa8q3TVGcoSucW5EBQhdhKkp6rw0PcPhcLgeJZ7G1HkIodfv96eLBAA2Dr6vGyO3eD03ZdX7+WazxjdeQhGZA1e3UpfW2qumuU2hhrne4eXS2lYjXxMYDAarZVnmQAf4FdtzIM+ybG1R8SefJqsWyeUeX0jIO+9Pa3xNwDn3BWhHMI3tWuLzIoFkrjd8ojZN1N7wBaHGNx3BFjAGUu/9zHs/ixLjOPZwCFso40RtOtlvzyb77VmiNkUZI3W+8RL+z1j6T/go8Adu/5qNAFTJVAAAAABJRU5ErkJggg==")}#cldoc #cldoc_content{margin-left:280px;padding:10px;padding-left:20px}#cldoc #cldoc_content div.fulldoc div.brief{margin:0px;margin-bottom:10px;padding:0px}#cldoc #cldoc_content div.fulldoc div.doc{margin:0px;padding:0px}#cldoc #cldoc_content div.doc table td,#cldoc #cldoc_content div.doc table th{padding:0px 5px 0px 5px}#cldoc #cldoc_content div.brief,#cldoc #cldoc_content div.doc,#cldoc #cldoc_content div.fulldoc{margin-left:10px;color:#666;padding:5px;margin-top:2px;margin-bottom:15px;font-size:0.9em;background-color:#eee}#cldoc #cldoc_content span.type .keyword{font-weight:normal}#cldoc #cldoc_content span.constant{color:#a0a}#cldoc #cldoc_content div.structures div.item,#cldoc #cldoc_content div.classes div.item{margin-bottom:30px}#cldoc #cldoc_content table.typedefs{border-collapse:collapse}#cldoc #cldoc_content table.typedefs td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.typedefs td:last-child{padding-right:0px}#cldoc #cldoc_content table.typedefs td:empty{padding-right:0px}#cldoc #cldoc_content table.typedefs tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.search_results{border-collapse:collapse}#cldoc #cldoc_content table.search_results td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.search_results td:last-child{padding-right:0px}#cldoc #cldoc_content table.search_results td:empty{padding-right:0px}#cldoc #cldoc_content table.search_results tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.search_results span.search_result{background-color:#ffffab}#cldoc #cldoc_content div.enumerations table{border-collapse:collapse;margin-left:30px;margin-bottom:40px}#cldoc #cldoc_content div.enumerations table td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content div.enumerations table td:last-child{padding-right:0px}#cldoc #cldoc_content div.enumerations table td:empty{padding-right:0px}#cldoc #cldoc_content div.enumerations table tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.enumerations table td.identifier{font-weight:normal}#cldoc #cldoc_content div.enumerations table tr:last-child td{padding-bottom:5px}#cldoc #cldoc_content div.enumerations table div.brief,#cldoc #cldoc_content div.enumerations table div.doc,#cldoc #cldoc_content div.enumerations table div.fulldoc{background:transparent;margin:0px;padding:0px}#cldoc #cldoc_content div.enumerations table tr:nth-child(even){background-color:#f9f9f9}#cldoc #cldoc_content div.enumerations table tr.selected{background-color:#ffffab}#cldoc #cldoc_content ul.gobject_property_mode{list-style-type:none;margin:0;padding:0}#cldoc #cldoc_content ul.gobject_property_mode li{float:left}#cldoc #cldoc_content ul.gobject_property_mode li:after{content:", "}#cldoc #cldoc_content ul.gobject_property_mode li:last-child:after{content:""}#cldoc #cldoc_content table.category,#cldoc #cldoc_content table.namespace,#cldoc #cldoc_content table.fields,#cldoc #cldoc_content table.variables,#cldoc #cldoc_content table.arguments,#cldoc #cldoc_content table.bases,#cldoc #cldoc_content table.implements,#cldoc #cldoc_content table.subclasses,#cldoc #cldoc_content table.implemented_by,#cldoc #cldoc_content table.template_parameters,#cldoc #cldoc_content table.function-template-parameters,#cldoc #cldoc_content table.structures,#cldoc #cldoc_content table.gobject_classes,#cldoc #cldoc_content table.classes,#cldoc #cldoc_content table.gobject_boxed_structures,#cldoc #cldoc_content table.gobject_properties,#cldoc #cldoc_content table.gobject_interfaces{border-collapse:collapse;margin-left:30px;margin-bottom:40px}#cldoc #cldoc_content table.category td,#cldoc #cldoc_content table.namespace td,#cldoc #cldoc_content table.fields td,#cldoc #cldoc_content table.variables td,#cldoc #cldoc_content table.arguments td,#cldoc #cldoc_content table.bases td,#cldoc #cldoc_content table.implements td,#cldoc #cldoc_content table.subclasses td,#cldoc #cldoc_content table.implemented_by td,#cldoc #cldoc_content table.template_parameters td,#cldoc #cldoc_content table.function-template-parameters td,#cldoc #cldoc_content table.structures td,#cldoc #cldoc_content table.gobject_classes td,#cldoc #cldoc_content table.classes td,#cldoc #cldoc_content table.gobject_boxed_structures td,#cldoc #cldoc_content table.gobject_properties td,#cldoc #cldoc_content table.gobject_interfaces td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.category td:last-child,#cldoc #cldoc_content table.namespace td:last-child,#cldoc #cldoc_content table.fields td:last-child,#cldoc #cldoc_content table.variables td:last-child,#cldoc #cldoc_content table.arguments td:last-child,#cldoc #cldoc_content table.bases td:last-child,#cldoc #cldoc_content table.implements td:last-child,#cldoc #cldoc_content table.subclasses td:last-child,#cldoc #cldoc_content table.implemented_by td:last-child,#cldoc #cldoc_content table.template_parameters td:last-child,#cldoc #cldoc_content table.function-template-parameters td:last-child,#cldoc #cldoc_content table.structures td:last-child,#cldoc #cldoc_content table.gobject_classes td:last-child,#cldoc #cldoc_content table.classes td:last-child,#cldoc #cldoc_content table.gobject_boxed_structures td:last-child,#cldoc #cldoc_content table.gobject_properties td:last-child,#cldoc #cldoc_content table.gobject_interfaces td:last-child{padding-right:0px}#cldoc #cldoc_content table.category td:empty,#cldoc #cldoc_content table.namespace td:empty,#cldoc #cldoc_content table.fields td:empty,#cldoc #cldoc_content table.variables td:empty,#cldoc #cldoc_content table.arguments td:empty,#cldoc #cldoc_content table.bases td:empty,#cldoc #cldoc_content table.implements td:empty,#cldoc #cldoc_content table.subclasses td:empty,#cldoc #cldoc_content table.implemented_by td:empty,#cldoc #cldoc_content table.template_parameters td:empty,#cldoc #cldoc_content table.function-template-parameters td:empty,#cldoc #cldoc_content table.structures td:empty,#cldoc #cldoc_content table.gobject_classes td:empty,#cldoc #cldoc_content table.classes td:empty,#cldoc #cldoc_content table.gobject_boxed_structures td:empty,#cldoc #cldoc_content table.gobject_properties td:empty,#cldoc #cldoc_content table.gobject_interfaces td:empty{padding-right:0px}#cldoc #cldoc_content table.category tr:last-child td,#cldoc #cldoc_content table.namespace tr:last-child td,#cldoc #cldoc_content table.fields tr:last-child td,#cldoc #cldoc_content table.variables tr:last-child td,#cldoc #cldoc_content table.arguments tr:last-child td,#cldoc #cldoc_content table.bases tr:last-child td,#cldoc #cldoc_content table.implements tr:last-child td,#cldoc #cldoc_content table.subclasses tr:last-child td,#cldoc #cldoc_content table.implemented_by tr:last-child td,#cldoc #cldoc_content table.template_parameters tr:last-child td,#cldoc #cldoc_content table.function-template-parameters tr:last-child td,#cldoc #cldoc_content table.structures tr:last-child td,#cldoc #cldoc_content table.gobject_classes tr:last-child td,#cldoc #cldoc_content table.classes tr:last-child td,#cldoc #cldoc_content table.gobject_boxed_structures tr:last-child td,#cldoc #cldoc_content table.gobject_properties tr:last-child td,#cldoc #cldoc_content table.gobject_interfaces tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.category td.identifier,#cldoc #cldoc_content table.namespace td.identifier,#cldoc #cldoc_content table.fields td.identifier,#cldoc #cldoc_content table.variables td.identifier,#cldoc #cldoc_content table.arguments td.identifier,#cldoc #cldoc_content table.bases td.identifier,#cldoc #cldoc_content table.implements td.identifier,#cldoc #cldoc_content table.subclasses td.identifier,#cldoc #cldoc_content table.implemented_by td.identifier,#cldoc #cldoc_content table.template_parameters td.identifier,#cldoc #cldoc_content table.function-template-parameters td.identifier,#cldoc #cldoc_content table.structures td.identifier,#cldoc #cldoc_content table.gobject_classes td.identifier,#cldoc #cldoc_content table.classes td.identifier,#cldoc #cldoc_content table.gobject_boxed_structures td.identifier,#cldoc #cldoc_content table.gobject_properties td.identifier,#cldoc #cldoc_content table.gobject_interfaces td.identifier{font-weight:normal}#cldoc #cldoc_content table.category tr:last-child td,#cldoc #cldoc_content table.namespace tr:last-child td,#cldoc #cldoc_content table.fields tr:last-child td,#cldoc #cldoc_content table.variables tr:last-child td,#cldoc #cldoc_content table.arguments tr:last-child td,#cldoc #cldoc_content table.bases tr:last-child td,#cldoc #cldoc_content table.implements tr:last-child td,#cldoc #cldoc_content table.subclasses tr:last-child td,#cldoc #cldoc_content table.implemented_by tr:last-child td,#cldoc #cldoc_content table.template_parameters tr:last-child td,#cldoc #cldoc_content table.function-template-parameters tr:last-child td,#cldoc #cldoc_content table.structures tr:last-child td,#cldoc #cldoc_content table.gobject_classes tr:last-child td,#cldoc #cldoc_content table.classes tr:last-child td,#cldoc #cldoc_content table.gobject_boxed_structures tr:last-child td,#cldoc #cldoc_content table.gobject_properties tr:last-child td,#cldoc #cldoc_content table.gobject_interfaces tr:last-child td{padding-bottom:5px}#cldoc #cldoc_content table.category div.brief,#cldoc #cldoc_content table.category div.doc,#cldoc #cldoc_content table.category div.fulldoc,#cldoc #cldoc_content table.namespace div.brief,#cldoc #cldoc_content table.namespace div.doc,#cldoc #cldoc_content table.namespace div.fulldoc,#cldoc #cldoc_content table.fields div.brief,#cldoc #cldoc_content table.fields div.doc,#cldoc #cldoc_content table.fields div.fulldoc,#cldoc #cldoc_content table.variables div.brief,#cldoc #cldoc_content table.variables div.doc,#cldoc #cldoc_content table.variables div.fulldoc,#cldoc #cldoc_content table.arguments div.brief,#cldoc #cldoc_content table.arguments div.doc,#cldoc #cldoc_content table.arguments div.fulldoc,#cldoc #cldoc_content table.bases div.brief,#cldoc #cldoc_content table.bases div.doc,#cldoc #cldoc_content table.bases div.fulldoc,#cldoc #cldoc_content table.implements div.brief,#cldoc #cldoc_content table.implements div.doc,#cldoc #cldoc_content table.implements div.fulldoc,#cldoc #cldoc_content table.subclasses div.brief,#cldoc #cldoc_content table.subclasses div.doc,#cldoc #cldoc_content table.subclasses div.fulldoc,#cldoc #cldoc_content table.implemented_by div.brief,#cldoc #cldoc_content table.implemented_by div.doc,#cldoc #cldoc_content table.implemented_by div.fulldoc,#cldoc #cldoc_content table.template_parameters div.brief,#cldoc #cldoc_content table.template_parameters div.doc,#cldoc #cldoc_content table.template_parameters div.fulldoc,#cldoc #cldoc_content table.function-template-parameters div.brief,#cldoc #cldoc_content table.function-template-parameters div.doc,#cldoc #cldoc_content table.function-template-parameters div.fulldoc,#cldoc #cldoc_content table.structures div.brief,#cldoc #cldoc_content table.structures div.doc,#cldoc #cldoc_content table.structures div.fulldoc,#cldoc #cldoc_content table.gobject_classes div.brief,#cldoc #cldoc_content table.gobject_classes div.doc,#cldoc #cldoc_content table.gobject_classes div.fulldoc,#cldoc #cldoc_content table.classes div.brief,#cldoc #cldoc_content table.classes div.doc,#cldoc #cldoc_content table.classes div.fulldoc,#cldoc #cldoc_content table.gobject_boxed_structures div.brief,#cldoc #cldoc_content table.gobject_boxed_structures div.doc,#cldoc #cldoc_content table.gobject_boxed_structures div.fulldoc,#cldoc #cldoc_content table.gobject_properties div.brief,#cldoc #cldoc_content table.gobject_properties div.doc,#cldoc #cldoc_content table.gobject_properties div.fulldoc,#cldoc #cldoc_content table.gobject_interfaces div.brief,#cldoc #cldoc_content table.gobject_interfaces div.doc,#cldoc #cldoc_content table.gobject_interfaces div.fulldoc{background:transparent;margin:0px;padding:0px}#cldoc #cldoc_content table.category tr:nth-child(even),#cldoc #cldoc_content table.namespace tr:nth-child(even),#cldoc #cldoc_content table.fields tr:nth-child(even),#cldoc #cldoc_content table.variables tr:nth-child(even),#cldoc #cldoc_content table.arguments tr:nth-child(even),#cldoc #cldoc_content table.bases tr:nth-child(even),#cldoc #cldoc_content table.implements tr:nth-child(even),#cldoc #cldoc_content table.subclasses tr:nth-child(even),#cldoc #cldoc_content table.implemented_by tr:nth-child(even),#cldoc #cldoc_content table.template_parameters tr:nth-child(even),#cldoc #cldoc_content table.function-template-parameters tr:nth-child(even),#cldoc #cldoc_content table.structures tr:nth-child(even),#cldoc #cldoc_content table.gobject_classes tr:nth-child(even),#cldoc #cldoc_content table.classes tr:nth-child(even),#cldoc #cldoc_content table.gobject_boxed_structures tr:nth-child(even),#cldoc #cldoc_content table.gobject_properties tr:nth-child(even),#cldoc #cldoc_content table.gobject_interfaces tr:nth-child(even){background-color:#f9f9f9}#cldoc #cldoc_content table.category tr.selected,#cldoc #cldoc_content table.namespace tr.selected,#cldoc #cldoc_content table.fields tr.selected,#cldoc #cldoc_content table.variables tr.selected,#cldoc #cldoc_content table.arguments tr.selected,#cldoc #cldoc_content table.bases tr.selected,#cldoc #cldoc_content table.implements tr.selected,#cldoc #cldoc_content table.subclasses tr.selected,#cldoc #cldoc_content table.implemented_by tr.selected,#cldoc #cldoc_content table.template_parameters tr.selected,#cldoc #cldoc_content table.function-template-parameters tr.selected,#cldoc #cldoc_content table.structures tr.selected,#cldoc #cldoc_content table.gobject_classes tr.selected,#cldoc #cldoc_content table.classes tr.selected,#cldoc #cldoc_content table.gobject_boxed_structures tr.selected,#cldoc #cldoc_content table.gobject_properties tr.selected,#cldoc #cldoc_content table.gobject_interfaces tr.selected{background-color:#ffffab}#cldoc #cldoc_content table.category .keyword,#cldoc #cldoc_content table.namespace .keyword,#cldoc #cldoc_content table.fields .keyword,#cldoc #cldoc_content table.variables .keyword,#cldoc #cldoc_content table.arguments .keyword,#cldoc #cldoc_content table.bases .keyword,#cldoc #cldoc_content table.implements .keyword,#cldoc #cldoc_content table.subclasses .keyword,#cldoc #cldoc_content table.implemented_by .keyword,#cldoc #cldoc_content table.template_parameters .keyword,#cldoc #cldoc_content table.function-template-parameters .keyword,#cldoc #cldoc_content table.structures .keyword,#cldoc #cldoc_content table.gobject_classes .keyword,#cldoc #cldoc_content table.classes .keyword,#cldoc #cldoc_content table.gobject_boxed_structures .keyword,#cldoc #cldoc_content table.gobject_properties .keyword,#cldoc #cldoc_content table.gobject_interfaces .keyword{font-weight:normal}#cldoc #cldoc_content table.category tr.union td,#cldoc #cldoc_content table.namespace tr.union td,#cldoc #cldoc_content table.fields tr.union td,#cldoc #cldoc_content table.variables tr.union td,#cldoc #cldoc_content table.arguments tr.union td,#cldoc #cldoc_content table.bases tr.union td,#cldoc #cldoc_content table.implements tr.union td,#cldoc #cldoc_content table.subclasses tr.union td,#cldoc #cldoc_content table.implemented_by tr.union td,#cldoc #cldoc_content table.template_parameters tr.union td,#cldoc #cldoc_content table.function-template-parameters tr.union td,#cldoc #cldoc_content table.structures tr.union td,#cldoc #cldoc_content table.gobject_classes tr.union td,#cldoc #cldoc_content table.classes tr.union td,#cldoc #cldoc_content table.gobject_boxed_structures tr.union td,#cldoc #cldoc_content table.gobject_properties tr.union td,#cldoc #cldoc_content table.gobject_interfaces tr.union td{padding-top:15px}#cldoc #cldoc_content table.category tr.full>td,#cldoc #cldoc_content table.namespace tr.full>td,#cldoc #cldoc_content table.fields tr.full>td,#cldoc #cldoc_content table.variables tr.full>td,#cldoc #cldoc_content table.arguments tr.full>td,#cldoc #cldoc_content table.bases tr.full>td,#cldoc #cldoc_content table.implements tr.full>td,#cldoc #cldoc_content table.subclasses tr.full>td,#cldoc #cldoc_content table.implemented_by tr.full>td,#cldoc #cldoc_content table.template_parameters tr.full>td,#cldoc #cldoc_content table.function-template-parameters tr.full>td,#cldoc #cldoc_content table.structures tr.full>td,#cldoc #cldoc_content table.gobject_classes tr.full>td,#cldoc #cldoc_content table.classes tr.full>td,#cldoc #cldoc_content table.gobject_boxed_structures tr.full>td,#cldoc #cldoc_content table.gobject_properties tr.full>td,#cldoc #cldoc_content table.gobject_interfaces tr.full>td{padding-top:15px}#cldoc #cldoc_content table.union td{padding-top:0px;padding-bottom:0px;font-size:0.9em}#cldoc #cldoc_content table.category,#cldoc #cldoc_content table.namespace{margin-bottom:10px}#cldoc #cldoc_content div.structures table,#cldoc #cldoc_content div.classes table{border-left:1px solid #999}#cldoc #cldoc_content div.structures table td,#cldoc #cldoc_content div.classes table td{padding-left:10px}#cldoc #cldoc_content div.enumerations table td.value{text-align:right}#cldoc #cldoc_content div.function{margin-bottom:50px}#cldoc #cldoc_content div.function div.declaration{background-color:#f7fafc;border:1px solid #bed3e9;padding:5px}#cldoc #cldoc_content div.function div.declaration.selected{background-color:#ffffab;border:1px solid #dede00}#cldoc #cldoc_content div.function table.declaration{border-collapse:collapse}#cldoc #cldoc_content div.function table.declaration td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content div.function table.declaration td:last-child{padding-right:0px}#cldoc #cldoc_content div.function table.declaration td:empty{padding-right:0px}#cldoc #cldoc_content div.function table.declaration tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.function table.declaration td{padding:0px;padding-right:5px}#cldoc #cldoc_content div.function table.declaration td.identifier{padding-right:30px}#cldoc #cldoc_content div.function table.declaration td.close_paren{padding:0px}#cldoc #cldoc_content div.function table.declaration td.open_paren{padding-right:1px}#cldoc #cldoc_content div.function table.declaration td.argument_name{text-align:left;padding-right:1px}#cldoc #cldoc_content div.function table.declaration td.argument_type{padding-right:2px}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type{display:block}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.name{float:left;margin-right:10px}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-arguments>span.sub-type>span.name:last-child{margin-right:0}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.plain,#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-qualified,#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.sub-type{float:left}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.qualifier{float:right}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-qualified span.qualifier,#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-qualified span.plain{float:none}#cldoc #cldoc_content div.function div.overrides{margin-top:10px;font-size:0.8em}#cldoc #cldoc_content div.function div.overrides span.title{color:#CB4B16;padding-right:10px}#cldoc #cldoc_content div.function div.overrides a{color:#4ca2df}#cldoc #cldoc_content div.function table.arguments,#cldoc #cldoc_content div.function table.function-template-parameters{margin-bottom:10px}#cldoc #cldoc_content div.function table.arguments td,#cldoc #cldoc_content div.function table.function-template-parameters td{font-size:0.9em}#cldoc #cldoc_content div.function table.arguments div.doc,#cldoc #cldoc_content div.function table.arguments div.brief,#cldoc #cldoc_content div.function table.arguments div.fulldoc,#cldoc #cldoc_content div.function table.function-template-parameters div.doc,#cldoc #cldoc_content div.function table.function-template-parameters div.brief,#cldoc #cldoc_content div.function table.function-template-parameters div.fulldoc{font-size:1em}#cldoc #cldoc_content div.function table.arguments div.doc,#cldoc #cldoc_content div.function table.function-template-parameters div.doc{display:inline-block}#cldoc #cldoc_content div.function table.arguments tr.return,#cldoc #cldoc_content div.function table.function-template-parameters tr.return{background:transparent}#cldoc #cldoc_content div.function table.arguments tr.return td,#cldoc #cldoc_content div.function table.function-template-parameters tr.return td{padding-top:15px}#cldoc #cldoc_content div.function table.arguments span.annotation,#cldoc #cldoc_content div.function table.function-template-parameters span.annotation{padding-left:10px;font-size:0.9em;color:#93A1A1}#cldoc #cldoc_content div.function div.doc,#cldoc #cldoc_content div.function div.fulldoc,#cldoc #cldoc_content div.function div.brief{background:transparent;margin-bottom:0px}#cldoc #cldoc_content div.function div.return_type{padding-bottom:5px}#cldoc #cldoc_content div.function ul.specifiers{list-style-type:none;margin:0;padding:0;float:left;padding-top:0.05em}#cldoc #cldoc_content div.function ul.specifiers li{display:inline;padding-right:5px;color:#CB4B16;font-size:0.9em}#cldoc #cldoc_content div.function ul.specifiers li:last-child{padding-right:10px}#cldoc #cldoc_content table.undocumented{border-collapse:collapse;font-size:0.8em}#cldoc #cldoc_content table.undocumented td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.undocumented td:last-child{padding-right:0px}#cldoc #cldoc_content table.undocumented td:empty{padding-right:0px}#cldoc #cldoc_content table.undocumented tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.arguments table.function{border-collapse:collapse;font-size:0.8em}#cldoc #cldoc_content div.arguments table.function td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content div.arguments table.function td:last-child{padding-right:0px}#cldoc #cldoc_content div.arguments table.function td:empty{padding-right:0px}#cldoc #cldoc_content div.arguments table.function tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.arguments table.function tr.last td{padding-bottom:40px}#cldoc #cldoc_content div.arguments table.function tr.undocumented td,#cldoc #cldoc_content div.arguments table.function tr.misspelled td{font-size:0.9em;color:#4d4d4d}#cldoc #cldoc_content div.arguments table.function span.undocumented,#cldoc #cldoc_content div.arguments table.function span.misspelled{padding-left:5px}#cldoc #cldoc_content div.arguments table.function span.undocumented:first-of-type,#cldoc #cldoc_content div.arguments table.function span.misspelled:first-of-type{padding-left:0px}#cldoc #cldoc_content table.references{border-collapse:collapse;font-size:0.8em}#cldoc #cldoc_content table.references td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.references td:last-child{padding-right:0px}#cldoc #cldoc_content table.references td:empty{padding-right:0px}#cldoc #cldoc_content table.references tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.references tr.last td{padding-bottom:40px}#cldoc #cldoc_content table.references tr.missing td{font-size:0.9em;color:#4d4d4d}#cldoc #cldoc_content a.know_more{padding-left:15px;font-size:0.9em}#cldoc #cldoc_content div.description div.brief,#cldoc #cldoc_content div.description div.doc,#cldoc #cldoc_content div.description div.fulldoc{background:transparent;margin:0px;padding:0px}#cldoc #cldoc_content img[alt*=centered]{display:block;margin:0 auto} -/*# sourceMappingURL=cldoc.css.map */ +.hljs-keyword{color:#CB4B16}.hljs-comment{color:#93A1A1}.hljs-string{color:#DC322F}.hljs-number{color:#859900}.hljs-preprocessor{color:#6C71C4}.hljs-stl_container{color:#268BD2}#cldoc::-webkit-scrollbar,#cldoc #cldoc_sidebar_items::-webkit-scrollbar{width:6px;height:6px}#cldoc::-webkit-scrollbar-track,#cldoc #cldoc_sidebar_items::-webkit-scrollbar-track{background-color:#d5d5d5;margin:2px;border-radius:5px}#cldoc::-webkit-scrollbar-thumb,#cldoc #cldoc_sidebar_items::-webkit-scrollbar-thumb{background-color:#a2a2a2;margin:2px;border-radius:5px}#cldoc.hide_scrollbar,#cldoc #cldoc_sidebar_items.hide_scrollbar{overflow-y:hidden}#cldoc.hide_scrollbar::-webkit-scrollbar-track,#cldoc.hide_scrollbar::-webkit-scrollbar-thumb,#cldoc #cldoc_sidebar_items.hide_scrollbar::-webkit-scrollbar-track,#cldoc #cldoc_sidebar_items.hide_scrollbar::-webkit-scrollbar-thumb{background-color:#eee}#cldoc{font-family:"ubuntu","lucida grande"}#cldoc .selected{background-color:#ffffab}#cldoc .builtin{color:#B58900}#cldoc .keyword{color:#CB4B16;font-weight:bold}#cldoc .preprocessor{color:#6C71C4}#cldoc .comment{color:#93A1A1}#cldoc .identifier{color:#268BD2}#cldoc h1,#cldoc h2,#cldoc h3,#cldoc h4,#cldoc h5,#cldoc h6{color:#333;padding-bottom:3px}#cldoc h1,#cldoc h2{border-bottom:1px solid #b3b3b3}#cldoc h3,#cldoc h4,#cldoc h5,#cldoc h6{margin-bottom:0px}#cldoc h1{border:0;margin-top:0px;text-shadow:1px 1px #ccc}#cldoc h1 span.keyword{padding-right:20px}#cldoc h2{margin-top:60px}#cldoc a{cursor:hand;text-decoration:underline;color:#0876c8}#cldoc div.brief p:first-child,#cldoc div.doc p:first-child{padding-top:0px;margin-top:0px}#cldoc div.brief p:last-child,#cldoc div.doc p:last-child{padding-bottom:0px;margin-bottom:0px}#cldoc #cldoc_sidebar_bg{overflow:none;width:260px;background-color:#eee;position:fixed;top:0;bottom:0;left:0}#cldoc #cldoc_sidebar{width:260px;background-color:#eee;border-right:1px solid #d5d5d5;position:fixed;top:0;left:0;bottom:0}#cldoc #cldoc_sidebar.search #cldoc_sidebar_items{display:none}#cldoc #cldoc_sidebar_items{position:fixed;top:0;left:0;bottom:2.5em;width:250px;padding:5px;overflow:auto;overflow-y:scroll}#cldoc #cldoc_sidebar_items div.back .arrow{padding-right:5px}#cldoc #cldoc_sidebar_items div.back div.name{padding-bottom:5px}#cldoc #cldoc_sidebar_items div.back div.name span.keyword{padding-right:5px;font-weight:normal}#cldoc #cldoc_sidebar_items div.back a{display:block;margin-left:10px}#cldoc #cldoc_sidebar_items .subtitle{font-size:1.1em;text-align:center;margin-top:15px;text-shadow:1px 1px #eee;color:#333}#cldoc #cldoc_sidebar_items #cldoc_sidebar_pagenav{margin-top:15px}#cldoc #cldoc_sidebar_items #cldoc_sidebar_pagenav:empty{margin-top:0px}#cldoc #cldoc_sidebar_items ol,#cldoc #cldoc_sidebar_items ul{margin:0;padding:0;padding-left:10px;font-size:0.9em;margin-top:5px}#cldoc #cldoc_sidebar_items ul{list-style:none}#cldoc #cldoc_sidebar_items *{text-overflow:ellipsis}#cldoc #cldoc_sidebar_items li{padding-bottom:2px;padding-top:2px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}#cldoc #cldoc_sidebar_items span.counter{padding:2px 4px 2px 4px;margin-left:5px;font-size:0.6em;vertical-align:super;background-color:#4298d8;color:#fff;display:none;border-radius:10px;min-width:10px;text-align:center}#cldoc #cldoc_sidebar_items span.virtual,#cldoc #cldoc_sidebar_items span.protected,#cldoc #cldoc_sidebar_items span.static{font-size:0.6em;min-width:1.6em;display:inline-block;vertical-align:super;text-align:center;background-color:#CB4B16;color:#fff;margin-left:5px;padding-bottom:2px}#cldoc #cldoc_sidebar_items .brief{text-shadow:none;font-size:0.9em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding:2px;margin:0px;margin-bottom:3px;color:#999}#cldoc #cldoc_sidebar_items span.bullet{font-weight:bold;padding-right:5px}#cldoc #cldoc_sidebar_items span.bullet.complete{color:#859900}#cldoc #cldoc_sidebar_items span.bullet.incomplete{color:#DC322F}#cldoc #cldoc_sidebar_items a{text-decoration:none}#cldoc #cldoc_search{position:fixed;bottom:0.5em;width:233px;left:8px;height:1.2em;padding:2px 5px 2px 5px;border:1px solid #aaa;background-color:#fafafa}#cldoc #cldoc_search.focus{border:1px solid #268BD2}#cldoc #cldoc_search input{padding:0;margin:0;top:3px;right:18px;left:20px;position:absolute;border:0;background-color:transparent}#cldoc #cldoc_search input:focus{outline-style:none}#cldoc #cldoc_search div.icon,#cldoc #cldoc_search div.close{width:16px;height:16px;position:absolute;top:3px;z-index:2;cursor:pointer}#cldoc #cldoc_search div.icon.focus,#cldoc #cldoc_search div.close.focus{background-position:100% 0%}#cldoc #cldoc_search div.icon{left:2px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAfdEVYdFRpdGxlAEdub21lIFN5bWJvbGljIEljb24gVGhlbWWOpCmrAAACQ0lEQVRIicWVsWrbUBSGvyPJEl4CGQrJAxSbpo7pkikdSjZnviH4MZoW2sEQ8NBAUzL2DTLkzvYWOiSZGiitS7HoAzRQQocOxrJ9bwdJjmLJdTKUns2//u/+554jZLHW8j/Ly/44Pj5e9n2/Za19ClSAUETOoihqN5vNX4sOWz/oLQ9dWghTHstZMKH95VWtkJd0AlrrTeAEWC3w/QB2lFLn88Ir7z5vYp35vJidcK+e4x2Ib54J7xpjNoIgWDLGbADdRD9JfIU3z4R3EWdDjL+EODe8dU7WD3o53gNIxr4KdJVS25nnH4FtrXUHaPi+3wKezx4ydGml4eGLWo6vHPY6QCPx3eIdgGTnGGP2i26Y6qkvV/HOQZxCfqqnvtkGiF8YyuVyv4jP6JXCgESXiVfIZ/QcnzYQAgwGg2rRARk9nNNACGDdcSGf0XO8AyAiZwCOUzzCVE99+QRi3RavcKqnvkx5AFEUtUul0i7Q0Fp3jDH75XK5PxgMqkl4I7ZF74vODya0hx67QKNy2Osgzr5MvL51x9UkvIElcpnk+Dt9B0RkaK0NgB6wpZT6OetZ8B0YAgGWnhmPt76/fjLl03cApdT5aDRaE5Ej4BL4DVyKyJG1tg70gRpwqrV+MJsQ7tXPgzFrWG7xWI7EJLxQczzv9OGbT1Ne7vpfoLVeAT4A1b9NYl49fvttZSSTmM9MwllIJqWUugKecTMJfVcW4OvLR1cl68a8UHNLnobMCu7ZxAVwfR/2dhP2wmKv4R4r+Ff1B4jqDQnTeInlAAAAAElFTkSuQmCC")}#cldoc #cldoc_search div.close{right:2px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAfdEVYdFRpdGxlAEdub21lIFN5bWJvbGljIEljb24gVGhlbWWOpCmrAAABmUlEQVRIie2UPWobQRSAvzczqwO4sQtXISZBSMTpXLjQ4gvEhgEdJIbkBAEnEHIKFYuVHMBiGxcqDCGJcBLcyJ3AB7DR7uxLMza2d2Oliho/GBjezDfvG+ZHVJVlhllq9UcBwN1PZFmmwDGw572/iLkV4BDoee/loQWfffihIMdVUeydvX15AdD5eLoyD+FQoPf7dfcOXxMAToBtYJRl2U5ZluqcOwJeAN/+YVMnoNvGudHGu687plUp2jqSv/A1AWvtbgghB7rAyDlH7E9DCK8WVa8q3TVGcoSucW5EBQhdhKkp6rw0PcPhcLgeJZ7G1HkIodfv96eLBAA2Dr6vGyO3eD03ZdX7+WazxjdeQhGZA1e3UpfW2qumuU2hhrne4eXS2lYjXxMYDAarZVnmQAf4FdtzIM+ybG1R8SefJqsWyeUeX0jIO+9Pa3xNwDn3BWhHMI3tWuLzIoFkrjd8ojZN1N7wBaHGNx3BFjAGUu/9zHs/ixLjOPZwCFso40RtOtlvzyb77VmiNkUZI3W+8RL+z1j6T/go8Adu/5qNAFTJVAAAAABJRU5ErkJggg==")}#cldoc #cldoc_content{margin-left:280px;padding:10px;padding-left:20px}#cldoc #cldoc_content div.fulldoc div.brief{margin:0px;margin-bottom:10px;padding:0px}#cldoc #cldoc_content div.fulldoc div.doc{margin:0px;padding:0px}#cldoc #cldoc_content div.doc table td,#cldoc #cldoc_content div.doc table th{padding:0px 5px 0px 5px}#cldoc #cldoc_content div.brief,#cldoc #cldoc_content div.doc,#cldoc #cldoc_content div.fulldoc{margin-left:10px;color:#666;padding:5px;margin-top:2px;margin-bottom:15px;font-size:0.9em;background-color:#eee}#cldoc #cldoc_content span.type .keyword{font-weight:normal}#cldoc #cldoc_content span.constant{color:#a0a}#cldoc #cldoc_content div.structures div.item,#cldoc #cldoc_content div.classes div.item{margin-bottom:30px}#cldoc #cldoc_content table.typedefs{border-collapse:collapse}#cldoc #cldoc_content table.typedefs td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.typedefs td:last-child{padding-right:0px}#cldoc #cldoc_content table.typedefs td:empty{padding-right:0px}#cldoc #cldoc_content table.typedefs tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.search_results{border-collapse:collapse}#cldoc #cldoc_content table.search_results td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.search_results td:last-child{padding-right:0px}#cldoc #cldoc_content table.search_results td:empty{padding-right:0px}#cldoc #cldoc_content table.search_results tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.search_results span.search_result{background-color:#ffffab}#cldoc #cldoc_content div.enumerations table{border-collapse:collapse;margin-left:30px;margin-bottom:40px}#cldoc #cldoc_content div.enumerations table td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content div.enumerations table td:last-child{padding-right:0px}#cldoc #cldoc_content div.enumerations table td:empty{padding-right:0px}#cldoc #cldoc_content div.enumerations table tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.enumerations table td.identifier{font-weight:normal}#cldoc #cldoc_content div.enumerations table tr:last-child td{padding-bottom:5px}#cldoc #cldoc_content div.enumerations table div.brief,#cldoc #cldoc_content div.enumerations table div.doc,#cldoc #cldoc_content div.enumerations table div.fulldoc{background:transparent;margin:0px;padding:0px}#cldoc #cldoc_content div.enumerations table tr:nth-child(even){background-color:#f9f9f9}#cldoc #cldoc_content div.enumerations table tr.selected{background-color:#ffffab}#cldoc #cldoc_content ul.gobject_property_mode{list-style-type:none;margin:0;padding:0}#cldoc #cldoc_content ul.gobject_property_mode li{float:left}#cldoc #cldoc_content ul.gobject_property_mode li:after{content:", "}#cldoc #cldoc_content ul.gobject_property_mode li:last-child:after{content:""}#cldoc #cldoc_content table.category,#cldoc #cldoc_content table.namespace,#cldoc #cldoc_content table.fields,#cldoc #cldoc_content table.variables,#cldoc #cldoc_content table.arguments,#cldoc #cldoc_content table.bases,#cldoc #cldoc_content table.implements,#cldoc #cldoc_content table.subclasses,#cldoc #cldoc_content table.implemented_by,#cldoc #cldoc_content table.template_parameters,#cldoc #cldoc_content table.function-template-parameters,#cldoc #cldoc_content table.structures,#cldoc #cldoc_content table.gobject_classes,#cldoc #cldoc_content table.classes,#cldoc #cldoc_content table.gobject_boxed_structures,#cldoc #cldoc_content table.gobject_properties,#cldoc #cldoc_content table.gobject_interfaces{border-collapse:collapse;margin-left:30px;margin-bottom:40px}#cldoc #cldoc_content table.category td,#cldoc #cldoc_content table.namespace td,#cldoc #cldoc_content table.fields td,#cldoc #cldoc_content table.variables td,#cldoc #cldoc_content table.arguments td,#cldoc #cldoc_content table.bases td,#cldoc #cldoc_content table.implements td,#cldoc #cldoc_content table.subclasses td,#cldoc #cldoc_content table.implemented_by td,#cldoc #cldoc_content table.template_parameters td,#cldoc #cldoc_content table.function-template-parameters td,#cldoc #cldoc_content table.structures td,#cldoc #cldoc_content table.gobject_classes td,#cldoc #cldoc_content table.classes td,#cldoc #cldoc_content table.gobject_boxed_structures td,#cldoc #cldoc_content table.gobject_properties td,#cldoc #cldoc_content table.gobject_interfaces td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.category td:last-child,#cldoc #cldoc_content table.namespace td:last-child,#cldoc #cldoc_content table.fields td:last-child,#cldoc #cldoc_content table.variables td:last-child,#cldoc #cldoc_content table.arguments td:last-child,#cldoc #cldoc_content table.bases td:last-child,#cldoc #cldoc_content table.implements td:last-child,#cldoc #cldoc_content table.subclasses td:last-child,#cldoc #cldoc_content table.implemented_by td:last-child,#cldoc #cldoc_content table.template_parameters td:last-child,#cldoc #cldoc_content table.function-template-parameters td:last-child,#cldoc #cldoc_content table.structures td:last-child,#cldoc #cldoc_content table.gobject_classes td:last-child,#cldoc #cldoc_content table.classes td:last-child,#cldoc #cldoc_content table.gobject_boxed_structures td:last-child,#cldoc #cldoc_content table.gobject_properties td:last-child,#cldoc #cldoc_content table.gobject_interfaces td:last-child{padding-right:0px}#cldoc #cldoc_content table.category td:empty,#cldoc #cldoc_content table.namespace td:empty,#cldoc #cldoc_content table.fields td:empty,#cldoc #cldoc_content table.variables td:empty,#cldoc #cldoc_content table.arguments td:empty,#cldoc #cldoc_content table.bases td:empty,#cldoc #cldoc_content table.implements td:empty,#cldoc #cldoc_content table.subclasses td:empty,#cldoc #cldoc_content table.implemented_by td:empty,#cldoc #cldoc_content table.template_parameters td:empty,#cldoc #cldoc_content table.function-template-parameters td:empty,#cldoc #cldoc_content table.structures td:empty,#cldoc #cldoc_content table.gobject_classes td:empty,#cldoc #cldoc_content table.classes td:empty,#cldoc #cldoc_content table.gobject_boxed_structures td:empty,#cldoc #cldoc_content table.gobject_properties td:empty,#cldoc #cldoc_content table.gobject_interfaces td:empty{padding-right:0px}#cldoc #cldoc_content table.category tr:last-child td,#cldoc #cldoc_content table.namespace tr:last-child td,#cldoc #cldoc_content table.fields tr:last-child td,#cldoc #cldoc_content table.variables tr:last-child td,#cldoc #cldoc_content table.arguments tr:last-child td,#cldoc #cldoc_content table.bases tr:last-child td,#cldoc #cldoc_content table.implements tr:last-child td,#cldoc #cldoc_content table.subclasses tr:last-child td,#cldoc #cldoc_content table.implemented_by tr:last-child td,#cldoc #cldoc_content table.template_parameters tr:last-child td,#cldoc #cldoc_content table.function-template-parameters tr:last-child td,#cldoc #cldoc_content table.structures tr:last-child td,#cldoc #cldoc_content table.gobject_classes tr:last-child td,#cldoc #cldoc_content table.classes tr:last-child td,#cldoc #cldoc_content table.gobject_boxed_structures tr:last-child td,#cldoc #cldoc_content table.gobject_properties tr:last-child td,#cldoc #cldoc_content table.gobject_interfaces tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.category td.identifier,#cldoc #cldoc_content table.namespace td.identifier,#cldoc #cldoc_content table.fields td.identifier,#cldoc #cldoc_content table.variables td.identifier,#cldoc #cldoc_content table.arguments td.identifier,#cldoc #cldoc_content table.bases td.identifier,#cldoc #cldoc_content table.implements td.identifier,#cldoc #cldoc_content table.subclasses td.identifier,#cldoc #cldoc_content table.implemented_by td.identifier,#cldoc #cldoc_content table.template_parameters td.identifier,#cldoc #cldoc_content table.function-template-parameters td.identifier,#cldoc #cldoc_content table.structures td.identifier,#cldoc #cldoc_content table.gobject_classes td.identifier,#cldoc #cldoc_content table.classes td.identifier,#cldoc #cldoc_content table.gobject_boxed_structures td.identifier,#cldoc #cldoc_content table.gobject_properties td.identifier,#cldoc #cldoc_content table.gobject_interfaces td.identifier{font-weight:normal}#cldoc #cldoc_content table.category tr:last-child td,#cldoc #cldoc_content table.namespace tr:last-child td,#cldoc #cldoc_content table.fields tr:last-child td,#cldoc #cldoc_content table.variables tr:last-child td,#cldoc #cldoc_content table.arguments tr:last-child td,#cldoc #cldoc_content table.bases tr:last-child td,#cldoc #cldoc_content table.implements tr:last-child td,#cldoc #cldoc_content table.subclasses tr:last-child td,#cldoc #cldoc_content table.implemented_by tr:last-child td,#cldoc #cldoc_content table.template_parameters tr:last-child td,#cldoc #cldoc_content table.function-template-parameters tr:last-child td,#cldoc #cldoc_content table.structures tr:last-child td,#cldoc #cldoc_content table.gobject_classes tr:last-child td,#cldoc #cldoc_content table.classes tr:last-child td,#cldoc #cldoc_content table.gobject_boxed_structures tr:last-child td,#cldoc #cldoc_content table.gobject_properties tr:last-child td,#cldoc #cldoc_content table.gobject_interfaces tr:last-child td{padding-bottom:5px}#cldoc #cldoc_content table.category div.brief,#cldoc #cldoc_content table.category div.doc,#cldoc #cldoc_content table.category div.fulldoc,#cldoc #cldoc_content table.namespace div.brief,#cldoc #cldoc_content table.namespace div.doc,#cldoc #cldoc_content table.namespace div.fulldoc,#cldoc #cldoc_content table.fields div.brief,#cldoc #cldoc_content table.fields div.doc,#cldoc #cldoc_content table.fields div.fulldoc,#cldoc #cldoc_content table.variables div.brief,#cldoc #cldoc_content table.variables div.doc,#cldoc #cldoc_content table.variables div.fulldoc,#cldoc #cldoc_content table.arguments div.brief,#cldoc #cldoc_content table.arguments div.doc,#cldoc #cldoc_content table.arguments div.fulldoc,#cldoc #cldoc_content table.bases div.brief,#cldoc #cldoc_content table.bases div.doc,#cldoc #cldoc_content table.bases div.fulldoc,#cldoc #cldoc_content table.implements div.brief,#cldoc #cldoc_content table.implements div.doc,#cldoc #cldoc_content table.implements div.fulldoc,#cldoc #cldoc_content table.subclasses div.brief,#cldoc #cldoc_content table.subclasses div.doc,#cldoc #cldoc_content table.subclasses div.fulldoc,#cldoc #cldoc_content table.implemented_by div.brief,#cldoc #cldoc_content table.implemented_by div.doc,#cldoc #cldoc_content table.implemented_by div.fulldoc,#cldoc #cldoc_content table.template_parameters div.brief,#cldoc #cldoc_content table.template_parameters div.doc,#cldoc #cldoc_content table.template_parameters div.fulldoc,#cldoc #cldoc_content table.function-template-parameters div.brief,#cldoc #cldoc_content table.function-template-parameters div.doc,#cldoc #cldoc_content table.function-template-parameters div.fulldoc,#cldoc #cldoc_content table.structures div.brief,#cldoc #cldoc_content table.structures div.doc,#cldoc #cldoc_content table.structures div.fulldoc,#cldoc #cldoc_content table.gobject_classes div.brief,#cldoc #cldoc_content table.gobject_classes div.doc,#cldoc #cldoc_content table.gobject_classes div.fulldoc,#cldoc #cldoc_content table.classes div.brief,#cldoc #cldoc_content table.classes div.doc,#cldoc #cldoc_content table.classes div.fulldoc,#cldoc #cldoc_content table.gobject_boxed_structures div.brief,#cldoc #cldoc_content table.gobject_boxed_structures div.doc,#cldoc #cldoc_content table.gobject_boxed_structures div.fulldoc,#cldoc #cldoc_content table.gobject_properties div.brief,#cldoc #cldoc_content table.gobject_properties div.doc,#cldoc #cldoc_content table.gobject_properties div.fulldoc,#cldoc #cldoc_content table.gobject_interfaces div.brief,#cldoc #cldoc_content table.gobject_interfaces div.doc,#cldoc #cldoc_content table.gobject_interfaces div.fulldoc{background:transparent;margin:0px;padding:0px}#cldoc #cldoc_content table.category tr:nth-child(even),#cldoc #cldoc_content table.namespace tr:nth-child(even),#cldoc #cldoc_content table.fields tr:nth-child(even),#cldoc #cldoc_content table.variables tr:nth-child(even),#cldoc #cldoc_content table.arguments tr:nth-child(even),#cldoc #cldoc_content table.bases tr:nth-child(even),#cldoc #cldoc_content table.implements tr:nth-child(even),#cldoc #cldoc_content table.subclasses tr:nth-child(even),#cldoc #cldoc_content table.implemented_by tr:nth-child(even),#cldoc #cldoc_content table.template_parameters tr:nth-child(even),#cldoc #cldoc_content table.function-template-parameters tr:nth-child(even),#cldoc #cldoc_content table.structures tr:nth-child(even),#cldoc #cldoc_content table.gobject_classes tr:nth-child(even),#cldoc #cldoc_content table.classes tr:nth-child(even),#cldoc #cldoc_content table.gobject_boxed_structures tr:nth-child(even),#cldoc #cldoc_content table.gobject_properties tr:nth-child(even),#cldoc #cldoc_content table.gobject_interfaces tr:nth-child(even){background-color:#f9f9f9}#cldoc #cldoc_content table.category tr.selected,#cldoc #cldoc_content table.namespace tr.selected,#cldoc #cldoc_content table.fields tr.selected,#cldoc #cldoc_content table.variables tr.selected,#cldoc #cldoc_content table.arguments tr.selected,#cldoc #cldoc_content table.bases tr.selected,#cldoc #cldoc_content table.implements tr.selected,#cldoc #cldoc_content table.subclasses tr.selected,#cldoc #cldoc_content table.implemented_by tr.selected,#cldoc #cldoc_content table.template_parameters tr.selected,#cldoc #cldoc_content table.function-template-parameters tr.selected,#cldoc #cldoc_content table.structures tr.selected,#cldoc #cldoc_content table.gobject_classes tr.selected,#cldoc #cldoc_content table.classes tr.selected,#cldoc #cldoc_content table.gobject_boxed_structures tr.selected,#cldoc #cldoc_content table.gobject_properties tr.selected,#cldoc #cldoc_content table.gobject_interfaces tr.selected{background-color:#ffffab}#cldoc #cldoc_content table.category .keyword,#cldoc #cldoc_content table.namespace .keyword,#cldoc #cldoc_content table.fields .keyword,#cldoc #cldoc_content table.variables .keyword,#cldoc #cldoc_content table.arguments .keyword,#cldoc #cldoc_content table.bases .keyword,#cldoc #cldoc_content table.implements .keyword,#cldoc #cldoc_content table.subclasses .keyword,#cldoc #cldoc_content table.implemented_by .keyword,#cldoc #cldoc_content table.template_parameters .keyword,#cldoc #cldoc_content table.function-template-parameters .keyword,#cldoc #cldoc_content table.structures .keyword,#cldoc #cldoc_content table.gobject_classes .keyword,#cldoc #cldoc_content table.classes .keyword,#cldoc #cldoc_content table.gobject_boxed_structures .keyword,#cldoc #cldoc_content table.gobject_properties .keyword,#cldoc #cldoc_content table.gobject_interfaces .keyword{font-weight:normal}#cldoc #cldoc_content table.category tr.union td,#cldoc #cldoc_content table.namespace tr.union td,#cldoc #cldoc_content table.fields tr.union td,#cldoc #cldoc_content table.variables tr.union td,#cldoc #cldoc_content table.arguments tr.union td,#cldoc #cldoc_content table.bases tr.union td,#cldoc #cldoc_content table.implements tr.union td,#cldoc #cldoc_content table.subclasses tr.union td,#cldoc #cldoc_content table.implemented_by tr.union td,#cldoc #cldoc_content table.template_parameters tr.union td,#cldoc #cldoc_content table.function-template-parameters tr.union td,#cldoc #cldoc_content table.structures tr.union td,#cldoc #cldoc_content table.gobject_classes tr.union td,#cldoc #cldoc_content table.classes tr.union td,#cldoc #cldoc_content table.gobject_boxed_structures tr.union td,#cldoc #cldoc_content table.gobject_properties tr.union td,#cldoc #cldoc_content table.gobject_interfaces tr.union td{padding-top:15px}#cldoc #cldoc_content table.category tr.full>td,#cldoc #cldoc_content table.namespace tr.full>td,#cldoc #cldoc_content table.fields tr.full>td,#cldoc #cldoc_content table.variables tr.full>td,#cldoc #cldoc_content table.arguments tr.full>td,#cldoc #cldoc_content table.bases tr.full>td,#cldoc #cldoc_content table.implements tr.full>td,#cldoc #cldoc_content table.subclasses tr.full>td,#cldoc #cldoc_content table.implemented_by tr.full>td,#cldoc #cldoc_content table.template_parameters tr.full>td,#cldoc #cldoc_content table.function-template-parameters tr.full>td,#cldoc #cldoc_content table.structures tr.full>td,#cldoc #cldoc_content table.gobject_classes tr.full>td,#cldoc #cldoc_content table.classes tr.full>td,#cldoc #cldoc_content table.gobject_boxed_structures tr.full>td,#cldoc #cldoc_content table.gobject_properties tr.full>td,#cldoc #cldoc_content table.gobject_interfaces tr.full>td{padding-top:15px}#cldoc #cldoc_content table.union td{padding-top:0px;padding-bottom:0px;font-size:0.9em}#cldoc #cldoc_content table.category,#cldoc #cldoc_content table.namespace{margin-bottom:10px}#cldoc #cldoc_content div.structures table,#cldoc #cldoc_content div.classes table{border-left:1px solid #999}#cldoc #cldoc_content div.structures table td,#cldoc #cldoc_content div.classes table td{padding-left:10px}#cldoc #cldoc_content div.enumerations table td.value{text-align:right}#cldoc #cldoc_content div.function{margin-bottom:50px}#cldoc #cldoc_content div.function div.declaration{background-color:#f7fafc;border:1px solid #bed3e9;padding:5px}#cldoc #cldoc_content div.function div.declaration.selected{background-color:#ffffab;border:1px solid #dede00}#cldoc #cldoc_content div.function table.declaration{border-collapse:collapse}#cldoc #cldoc_content div.function table.declaration td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content div.function table.declaration td:last-child{padding-right:0px}#cldoc #cldoc_content div.function table.declaration td:empty{padding-right:0px}#cldoc #cldoc_content div.function table.declaration tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.function table.declaration td{padding:0px;padding-right:5px}#cldoc #cldoc_content div.function table.declaration td.identifier{padding-right:30px}#cldoc #cldoc_content div.function table.declaration td.close_paren{padding:0px}#cldoc #cldoc_content div.function table.declaration td.open_paren{padding-right:1px}#cldoc #cldoc_content div.function table.declaration td.argument_name{text-align:left;padding-right:1px}#cldoc #cldoc_content div.function table.declaration td.argument_type{padding-right:2px}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type{display:block}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.name{float:left;margin-right:10px}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-arguments>span.sub-type>span.name:last-child{margin-right:0}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.plain,#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-qualified,#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.sub-type{float:left}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.qualifier{float:right}#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-qualified span.qualifier,#cldoc #cldoc_content div.function table.declaration td.argument_type span.type span.function-qualified span.plain{float:none}#cldoc #cldoc_content div.function div.overrides{margin-top:10px;font-size:0.8em}#cldoc #cldoc_content div.function div.overrides span.title{color:#CB4B16;padding-right:10px}#cldoc #cldoc_content div.function div.overrides a{color:#4ca2df}#cldoc #cldoc_content div.function table.arguments,#cldoc #cldoc_content div.function table.function-template-parameters{margin-bottom:10px}#cldoc #cldoc_content div.function table.arguments td,#cldoc #cldoc_content div.function table.function-template-parameters td{font-size:0.9em}#cldoc #cldoc_content div.function table.arguments div.doc,#cldoc #cldoc_content div.function table.arguments div.brief,#cldoc #cldoc_content div.function table.arguments div.fulldoc,#cldoc #cldoc_content div.function table.function-template-parameters div.doc,#cldoc #cldoc_content div.function table.function-template-parameters div.brief,#cldoc #cldoc_content div.function table.function-template-parameters div.fulldoc{font-size:1em}#cldoc #cldoc_content div.function table.arguments div.doc,#cldoc #cldoc_content div.function table.function-template-parameters div.doc{display:inline-block}#cldoc #cldoc_content div.function table.arguments tr.return,#cldoc #cldoc_content div.function table.function-template-parameters tr.return{background:transparent}#cldoc #cldoc_content div.function table.arguments tr.return td,#cldoc #cldoc_content div.function table.function-template-parameters tr.return td{padding-top:15px}#cldoc #cldoc_content div.function table.arguments span.annotation,#cldoc #cldoc_content div.function table.function-template-parameters span.annotation{padding-left:10px;font-size:0.9em;color:#93A1A1}#cldoc #cldoc_content div.function div.doc,#cldoc #cldoc_content div.function div.fulldoc,#cldoc #cldoc_content div.function div.brief{background:transparent;margin-bottom:0px}#cldoc #cldoc_content div.function div.return_type{padding-bottom:5px}#cldoc #cldoc_content div.function ul.specifiers{list-style-type:none;margin:0;padding:0;float:left;padding-top:0.05em}#cldoc #cldoc_content div.function ul.specifiers li{display:inline;padding-right:5px;color:#CB4B16;font-size:0.9em}#cldoc #cldoc_content div.function ul.specifiers li:last-child{padding-right:10px}#cldoc #cldoc_content table.undocumented{border-collapse:collapse;font-size:0.8em}#cldoc #cldoc_content table.undocumented td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.undocumented td:last-child{padding-right:0px}#cldoc #cldoc_content table.undocumented td:empty{padding-right:0px}#cldoc #cldoc_content table.undocumented tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.arguments table.function{border-collapse:collapse;font-size:0.8em}#cldoc #cldoc_content div.arguments table.function td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content div.arguments table.function td:last-child{padding-right:0px}#cldoc #cldoc_content div.arguments table.function td:empty{padding-right:0px}#cldoc #cldoc_content div.arguments table.function tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content div.arguments table.function tr.last td{padding-bottom:40px}#cldoc #cldoc_content div.arguments table.function tr.undocumented td,#cldoc #cldoc_content div.arguments table.function tr.misspelled td{font-size:0.9em;color:#4d4d4d}#cldoc #cldoc_content div.arguments table.function span.undocumented,#cldoc #cldoc_content div.arguments table.function span.misspelled{padding-left:5px}#cldoc #cldoc_content div.arguments table.function span.undocumented:first-of-type,#cldoc #cldoc_content div.arguments table.function span.misspelled:first-of-type{padding-left:0px}#cldoc #cldoc_content table.references{border-collapse:collapse;font-size:0.8em}#cldoc #cldoc_content table.references td{padding-right:30px;padding-bottom:5px;padding-top:5px;vertical-align:top}#cldoc #cldoc_content table.references td:last-child{padding-right:0px}#cldoc #cldoc_content table.references td:empty{padding-right:0px}#cldoc #cldoc_content table.references tr:last-child td{padding-bottom:0px}#cldoc #cldoc_content table.references tr.last td{padding-bottom:40px}#cldoc #cldoc_content table.references tr.missing td{font-size:0.9em;color:#4d4d4d}#cldoc #cldoc_content a.know_more{padding-left:15px;font-size:0.9em}#cldoc #cldoc_content div.description div.brief,#cldoc #cldoc_content div.description div.doc,#cldoc #cldoc_content div.description div.fulldoc{background:transparent;margin:0px;padding:0px}#cldoc #cldoc_content img[alt*=centered]{display:block;margin:0 auto} diff --git a/cldoc/generators/xml.py b/cldoc/generators/xml.py index 56f3e5b..14febca 100644 --- a/cldoc/generators/xml.py +++ b/cldoc/generators/xml.py @@ -184,17 +184,10 @@ def add_ref_node_id(self, node, elem): elem.set('ref', r) def add_ref_id(self, cursor, elem): - if not cursor: - return - - if cursor in self.tree.cursor_to_node: - node = self.tree.cursor_to_node[cursor] - elif cursor.get_usr() in self.tree.usr_to_node: - node = self.tree.usr_to_node[cursor.get_usr()] - else: - return + node = self.tree.lookup_node_from_cursor(cursor) - self.add_ref_node_id(node, elem) + if not node is None: + self.add_ref_node_id(node, elem) def type_to_xml(self, tp, parent=None): elem = ElementTree.Element('type') @@ -215,6 +208,16 @@ def type_to_xml(self, tp, parent=None): for arg in tp.function_arguments: args.append(self.type_to_xml(arg, parent)) + elif tp.is_template: + elem.set('name', tp.typename_for(parent)) + elem.set('class', 'template') + + args = ElementTree.Element('template-arguments') + + for template_argument in tp.template_arguments: + args.append(self.type_to_xml(template_argument, parent)) + + elem.append(args) else: elem.set('name', tp.typename_for(parent)) diff --git a/cldoc/includepaths.py b/cldoc/includepaths.py index 4f3c2ae..1c9a278 100644 --- a/cldoc/includepaths.py +++ b/cldoc/includepaths.py @@ -14,11 +14,15 @@ from . import utf8 +versionned_clang = 'clang++' +if "CLDOC_CLANG_VERSION" in os.environ: + versionned_clang = 'clang++-' + os.environ["CLDOC_CLANG_VERSION"] + def flags(f): devnull = open(os.devnull) try: - p = subprocess.Popen(['clang++', '-E', '-xc++'] + f + ['-v', '-'], + p = subprocess.Popen([versionned_clang, '-E', '-xc++'] + f + ['-v', '-'], stdin=devnull, stdout=subprocess.PIPE, stderr=subprocess.PIPE) diff --git a/cldoc/nodes/ctype.py b/cldoc/nodes/ctype.py index 4d99344..1f04175 100644 --- a/cldoc/nodes/ctype.py +++ b/cldoc/nodes/ctype.py @@ -56,6 +56,7 @@ def __init__(self, tp, cursor=None): self._builtin = False self._cursor = cursor self._kind = tp.kind + self._is_template = False self.extract(tp) @@ -71,6 +72,14 @@ def function_arguments(self): def function_result(self): return self._result + @property + def is_template(self): + return self._is_template + + @property + def template_arguments(self): + return self._template_arguments + @property def is_constant_array(self): return self._kind == cindex.TypeKind.CONSTANTARRAY @@ -104,9 +113,24 @@ def element_type(self): def constant_array_size(self): return self._array_size + def _declaration_full_name(self, decl): + cursor_template = decl.specialized_cursor_template + + if cursor_template is None or not self._is_template: + return decl.displayname + else: + return cursor_template.spelling + + def _full_typename(self, decl): parent = decl.semantic_parent - meid = decl.displayname + + if decl.kind == cindex.CursorKind.NAMESPACE and decl.displayname == '__1' and parent and parent.displayname == 'std': + # Skip over special inline namespace. Ideally we can skip over inline namespaces + # in general, but I can't find a way to determine whether a namespace is inline + return self._full_typename(parent) + + meid = self._declaration_full_name(decl) if not parent or parent.kind == cindex.CursorKind.TRANSLATION_UNIT: return meid @@ -121,7 +145,36 @@ def _full_typename(self, decl): else: return meid + def _extract_constant_array_type(self, tp): + if tp.kind != cindex.TypeKind.CONSTANTARRAY: + return + + self._element_type = Type(tp.get_array_element_type()) + self._array_size = tp.get_array_size() + + def _extract_template_argument_types(self, tp): + # Ignore typedefs, we don't want to get any template arguments + if tp.get_declaration().kind == cindex.CursorKind.TYPEDEF_DECL: + return + + num_template_arguments = tp.get_num_template_arguments() + + if num_template_arguments <= 0: + return + + self._is_template = True + self._template_arguments = [] + + for i in range(0, num_template_arguments): + template_argument_type = tp.get_template_argument_type(i) + self._template_arguments.append(Type(template_argument_type)) + + def _extract_subtypes(self, tp): + self._extract_constant_array_type(tp) + self._extract_template_argument_types(tp) + def extract(self, tp): + if tp.is_const_qualified(): self._qualifier.append('const') @@ -131,13 +184,10 @@ def extract(self, tp): if tp.kind in Type.kindmap: self.extract(tp.get_pointee()) self._qualifier.append(Type.kindmap[tp.kind]) - return - elif tp.kind == cindex.TypeKind.CONSTANTARRAY: - self._element_type = Type(tp.get_array_element_type()) - self._array_size = tp.get_array_size() self._decl = tp.get_declaration() + self._extract_subtypes(tp) if self._decl and self._decl.displayname: self._typename = self._full_typename(self._decl) diff --git a/cldoc/nodes/enum.py b/cldoc/nodes/enum.py index 6f60502..153dbd7 100644 --- a/cldoc/nodes/enum.py +++ b/cldoc/nodes/enum.py @@ -27,9 +27,9 @@ def __init__(self, cursor, comment): if hasattr(self.cursor, 'get_tokens'): try: tokens = self.cursor.get_tokens() - tokens.next() + next(tokens) - tt = tokens.next() + tt = next(tokens) if tt.kind == cindex.TokenKind.KEYWORD and tt.spelling == 'class': self.isclass = True diff --git a/cldoc/nodes/typedef.py b/cldoc/nodes/typedef.py index 54120f5..866ec65 100644 --- a/cldoc/nodes/typedef.py +++ b/cldoc/nodes/typedef.py @@ -24,10 +24,11 @@ def __init__(self, cursor, comment): children = [child for child in cursor.get_children()] if len(children) == 1 and children[0].kind == cindex.CursorKind.TYPE_REF: - tcursor = children[0] - self.type = Type(tcursor.type, tcursor) + typecursor = children[0] else: self.process_children = True - self.type = Type(self.cursor.type.get_canonical(), cursor=self.cursor) + typecursor = cursor + + self.type = Type(cursor.underlying_typedef_type, typecursor) # vi:ts=4:et diff --git a/cldoc/tree.py b/cldoc/tree.py index 6b1acd6..a22b447 100644 --- a/cldoc/tree.py +++ b/cldoc/tree.py @@ -15,6 +15,7 @@ from .clang import cindex import tempfile import functools +import os from .defdict import Defdict @@ -55,6 +56,9 @@ else: versions = [None, '7.0', '6.0', '5.0', '4.0', '3.9', '3.8', '3.7', '3.6', '3.5', '3.4', '3.3', '3.2'] + if "CLDOC_CLANG_VERSION" in os.environ: + versions = [None , os.environ["CLDOC_CLANG_VERSION"] ] + for v in versions: name = 'clang' @@ -116,6 +120,40 @@ def __init__(self, files, flags): self.qid_to_node[None] = self.root self.usr_to_node[None] = self.root + def _lookup_node_from_cursor_despecialized(self, cursor): + template = cursor.specialized_cursor_template + + if template is None: + parent = self.lookup_node_from_cursor(cursor.semantic_parent) + else: + return self.lookup_node_from_cursor(template) + + if parent is None: + return None + + for child in parent.children: + if child.name == cursor.spelling: + return child + + return None + + def lookup_node_from_cursor(self, cursor): + if cursor is None: + return None + + # Try lookup by direct cursor reference + node = self.cursor_to_node[cursor] + + if not node is None: + return node + + node = self.usr_to_node[cursor.get_usr()] + + if not node is None: + return node + + return self._lookup_node_from_cursor_despecialized(cursor) + def filter_source(self, path): return path.endswith('.c') or path.endswith('.cpp') or path.endswith('.h') or path.endswith('.cc') or path.endswith('.hh') or path.endswith('.hpp') @@ -178,7 +216,7 @@ def process(self): fatal = False for d in tu.diagnostics: - sys.stderr.write(d.format) + sys.stderr.write(d.format()) sys.stderr.write("\n") if d.severity == cindex.Diagnostic.Fatal or \ diff --git a/html/coffee/type.coffee b/html/coffee/type.coffee index 25072f9..499807b 100644 --- a/html/coffee/type.coffee +++ b/html/coffee/type.coffee @@ -46,6 +46,38 @@ class cldoc.Type extends cldoc.Node @append_plain_part(')') + @typeparts.push('') + @typeparts_text.push('') + else if @node.attr('class') == 'template' + @typeparts.push('') + @typeparts_text.push('') + + if @ref + a = cldoc.Page.make_link(@ref, @name) + + name = '' + a + '' + else + name = '' + e(@name) + '' + + @typeparts.push(name) + @typeparts_text.push(@name) + + @typeparts.push('') + @typeparts_text.push('') + + @append_plain_part('<') + + args = @node.children('template-arguments').first().children('type') + @args = [] + + for arg, i in args + if i != 0 + @append_plain_part(', ') + + @args.push(@append_type($(arg))) + + @append_plain_part('>') + @typeparts.push('') @typeparts_text.push('') else diff --git a/html/index.html b/html/index.html index 26037de..24d1025 100644 --- a/html/index.html +++ b/html/index.html @@ -1,4 +1,4 @@ - + Documentation @@ -23,6 +23,3 @@ - - - diff --git a/package.json b/package.json index 68f4806..bad11ad 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "repository": "https://github.com/jessevdk/cldoc", "dependencies": { "coffee-script": "^1.9.2", - "inline-source": "^4.0.1" + "inline-source": "^4.0.1", + "node-sass": "^4.8.3" } } diff --git a/setup.py b/setup.py index 664fd39..05924c9 100644 --- a/setup.py +++ b/setup.py @@ -101,7 +101,7 @@ def run_sass(self): except: pass - args = [self.sass, '--scss', '--line-numbers', '--no-cache', '--style', 'compressed'] + args = [self.sass, '--output-style', 'compressed'] files = ['html/sass/cldoc.scss', 'html/styles/cldoc.css'] subprocess.call(args + files) diff --git a/tests/input/templatereference.hh b/tests/input/templatereference.hh new file mode 100644 index 0000000..654e17d --- /dev/null +++ b/tests/input/templatereference.hh @@ -0,0 +1,14 @@ +#include +#include + +/** + * Foo method. + */ +std::list foo(); + +template +struct WithInner { + typedef T Type; +}; + +typedef std::list::Type> WithInnerIntType; diff --git a/tests/output/abstract-A.html.static b/tests/output/abstract-A.html.static index 5454073..edd31a3 100644 --- a/tests/output/abstract-A.html.static +++ b/tests/output/abstract-A.html.static @@ -26,7 +26,8 @@
-

ClassA

+

ClassA +

Member Functions

@@ -76,4 +77,3 @@ - \ No newline at end of file diff --git a/tests/output/abstract-index.html.static b/tests/output/abstract-index.html.static index 32f5328..06b8545 100644 --- a/tests/output/abstract-index.html.static +++ b/tests/output/abstract-index.html.static @@ -33,4 +33,3 @@ - \ No newline at end of file diff --git a/tests/output/base-A.html.static b/tests/output/base-A.html.static index 5d9c74f..d691b1d 100644 --- a/tests/output/base-A.html.static +++ b/tests/output/base-A.html.static @@ -30,7 +30,8 @@
-

ClassA

+

ClassA +

The class A.

@@ -80,4 +81,3 @@ - \ No newline at end of file diff --git a/tests/output/base-Base.html.static b/tests/output/base-Base.html.static index a449a5f..68ebc68 100644 --- a/tests/output/base-Base.html.static +++ b/tests/output/base-Base.html.static @@ -30,7 +30,8 @@
-

ClassBase

+

ClassBase +

Subclasses

@@ -73,4 +74,3 @@ - \ No newline at end of file diff --git a/tests/output/base-index.html.static b/tests/output/base-index.html.static index 2258e69..6cf453b 100644 --- a/tests/output/base-index.html.static +++ b/tests/output/base-index.html.static @@ -38,4 +38,3 @@ - \ No newline at end of file diff --git a/tests/output/class-A.html.static b/tests/output/class-A.html.static index ee8b1e6..bab6dae 100644 --- a/tests/output/class-A.html.static +++ b/tests/output/class-A.html.static @@ -18,7 +18,8 @@
-

ClassA

+

ClassA +

The class A.

@@ -30,4 +31,3 @@ - \ No newline at end of file diff --git a/tests/output/class-index.html.static b/tests/output/class-index.html.static index 32f5328..06b8545 100644 --- a/tests/output/class-index.html.static +++ b/tests/output/class-index.html.static @@ -33,4 +33,3 @@ - \ No newline at end of file diff --git a/tests/output/constructor-A.html.static b/tests/output/constructor-A.html.static index e2597eb..4f0d42f 100644 --- a/tests/output/constructor-A.html.static +++ b/tests/output/constructor-A.html.static @@ -26,7 +26,8 @@
-

ClassA

+

ClassA +

Constructors

@@ -53,4 +54,3 @@ - \ No newline at end of file diff --git a/tests/output/constructor-index.html.static b/tests/output/constructor-index.html.static index 32f5328..06b8545 100644 --- a/tests/output/constructor-index.html.static +++ b/tests/output/constructor-index.html.static @@ -33,4 +33,3 @@ - \ No newline at end of file diff --git a/tests/output/cstruct-A.html.static b/tests/output/cstruct-A.html.static index 6351fa2..8b159bb 100644 --- a/tests/output/cstruct-A.html.static +++ b/tests/output/cstruct-A.html.static @@ -30,7 +30,8 @@
-

StructA

+

StructA +

Fields

@@ -166,4 +167,3 @@ - \ No newline at end of file diff --git a/tests/output/cstruct-index.html.static b/tests/output/cstruct-index.html.static index 1caebe3..71901ff 100644 --- a/tests/output/cstruct-index.html.static +++ b/tests/output/cstruct-index.html.static @@ -33,4 +33,3 @@ - \ No newline at end of file diff --git a/tests/output/destructor-A.html.static b/tests/output/destructor-A.html.static index 4131e23..11b9602 100644 --- a/tests/output/destructor-A.html.static +++ b/tests/output/destructor-A.html.static @@ -26,7 +26,8 @@
-

ClassA

+

ClassA +

Destructors

@@ -53,4 +54,3 @@ - \ No newline at end of file diff --git a/tests/output/destructor-index.html.static b/tests/output/destructor-index.html.static index 32f5328..06b8545 100644 --- a/tests/output/destructor-index.html.static +++ b/tests/output/destructor-index.html.static @@ -33,4 +33,3 @@ - \ No newline at end of file diff --git a/tests/output/enum-index.html.static b/tests/output/enum-index.html.static index be10ef4..dea81b9 100644 --- a/tests/output/enum-index.html.static +++ b/tests/output/enum-index.html.static @@ -57,4 +57,3 @@ - \ No newline at end of file diff --git a/tests/output/functionpointer-index.html.static b/tests/output/functionpointer-index.html.static index fcb3aa0..3f14aaf 100644 --- a/tests/output/functionpointer-index.html.static +++ b/tests/output/functionpointer-index.html.static @@ -33,7 +33,7 @@
@@ -58,4 +58,3 @@ - \ No newline at end of file diff --git a/tests/output/interface-A.html.static b/tests/output/interface-A.html.static index d89cf87..1493193 100644 --- a/tests/output/interface-A.html.static +++ b/tests/output/interface-A.html.static @@ -30,7 +30,8 @@
-

ClassA

+

ClassA +

The class A.

@@ -79,4 +80,3 @@ - \ No newline at end of file diff --git a/tests/output/interface-Impl.html.static b/tests/output/interface-Impl.html.static index ed51f21..ebf5482 100644 --- a/tests/output/interface-Impl.html.static +++ b/tests/output/interface-Impl.html.static @@ -30,7 +30,8 @@
-

ClassImpl

+

ClassImpl +

The Impl class.

@@ -80,4 +81,3 @@ - \ No newline at end of file diff --git a/tests/output/interface-index.html.static b/tests/output/interface-index.html.static index 184b663..00b62c8 100644 --- a/tests/output/interface-index.html.static +++ b/tests/output/interface-index.html.static @@ -38,4 +38,3 @@ - \ No newline at end of file diff --git a/tests/output/method-A.html.static b/tests/output/method-A.html.static index 98f9dda..e811323 100644 --- a/tests/output/method-A.html.static +++ b/tests/output/method-A.html.static @@ -26,7 +26,8 @@
-

ClassA

+

ClassA +

Member Functions

@@ -72,4 +73,3 @@ - \ No newline at end of file diff --git a/tests/output/method-index.html.static b/tests/output/method-index.html.static index 32f5328..06b8545 100644 --- a/tests/output/method-index.html.static +++ b/tests/output/method-index.html.static @@ -33,4 +33,3 @@ - \ No newline at end of file diff --git a/tests/output/multins-foo.A.html.static b/tests/output/multins-foo.A.html.static index bcd2003..e1c6023 100644 --- a/tests/output/multins-foo.A.html.static +++ b/tests/output/multins-foo.A.html.static @@ -18,9 +18,10 @@
-

Classfoo::A

+

Classfoo::A +

+
- \ No newline at end of file diff --git a/tests/output/multins-foo.B.html.static b/tests/output/multins-foo.B.html.static index 1a5c19b..7d9fe5b 100644 --- a/tests/output/multins-foo.B.html.static +++ b/tests/output/multins-foo.B.html.static @@ -18,9 +18,10 @@
-

Classfoo::B

+

Classfoo::B +

+ - \ No newline at end of file diff --git a/tests/output/multins-foo.html.static b/tests/output/multins-foo.html.static index 65d8c72..38c678f 100644 --- a/tests/output/multins-foo.html.static +++ b/tests/output/multins-foo.html.static @@ -23,7 +23,8 @@
-

Namespacefoo

+

Namespacefoo +

Classes

int ( *)(int , int) + class="plain">, int)
@@ -42,4 +43,3 @@ - \ No newline at end of file diff --git a/tests/output/multins-index.html.static b/tests/output/multins-index.html.static index 30aab55..41b848d 100644 --- a/tests/output/multins-index.html.static +++ b/tests/output/multins-index.html.static @@ -41,4 +41,3 @@ - \ No newline at end of file diff --git a/tests/output/namespace-A.B.html.static b/tests/output/namespace-A.B.html.static index 49a281b..0c52822 100644 --- a/tests/output/namespace-A.B.html.static +++ b/tests/output/namespace-A.B.html.static @@ -18,7 +18,8 @@
-

ClassA::B

+

ClassA::B +

Class B in namespace A.

@@ -29,4 +30,3 @@ - \ No newline at end of file diff --git a/tests/output/namespace-A.html.static b/tests/output/namespace-A.html.static index 24f4101..a8bbf3f 100644 --- a/tests/output/namespace-A.html.static +++ b/tests/output/namespace-A.html.static @@ -42,7 +42,8 @@
-

NamespaceA

+

NamespaceA +

Longer description of namespace A.

@@ -118,4 +119,3 @@ - \ No newline at end of file diff --git a/tests/output/namespace-index.html.static b/tests/output/namespace-index.html.static index 5f84c06..597f848 100644 --- a/tests/output/namespace-index.html.static +++ b/tests/output/namespace-index.html.static @@ -48,4 +48,3 @@ - \ No newline at end of file diff --git a/tests/output/operator-N.A.html.static b/tests/output/operator-N.A.html.static index 2e24465..3d3f543 100644 --- a/tests/output/operator-N.A.html.static +++ b/tests/output/operator-N.A.html.static @@ -26,7 +26,8 @@
-

StructN::A

+

StructN::A +

Member Functions

@@ -111,4 +112,3 @@ - \ No newline at end of file diff --git a/tests/output/operator-N.html.static b/tests/output/operator-N.html.static index c5f38a3..0b71e4e 100644 --- a/tests/output/operator-N.html.static +++ b/tests/output/operator-N.html.static @@ -22,7 +22,8 @@
-

NamespaceN

+

NamespaceN +

Structures

@@ -37,4 +38,3 @@ - \ No newline at end of file diff --git a/tests/output/operator-index.html.static b/tests/output/operator-index.html.static index c7db11f..0a0e82f 100644 --- a/tests/output/operator-index.html.static +++ b/tests/output/operator-index.html.static @@ -37,4 +37,3 @@ - \ No newline at end of file diff --git a/tests/output/struct-A.html.static b/tests/output/struct-A.html.static index f92d15f..d3a7e4f 100644 --- a/tests/output/struct-A.html.static +++ b/tests/output/struct-A.html.static @@ -18,7 +18,8 @@
-

StructA

+

StructA +

A longer description of A.

@@ -29,4 +30,3 @@ - \ No newline at end of file diff --git a/tests/output/struct-index.html.static b/tests/output/struct-index.html.static index 717a17a..4f8db77 100644 --- a/tests/output/struct-index.html.static +++ b/tests/output/struct-index.html.static @@ -41,4 +41,3 @@ - \ No newline at end of file diff --git a/tests/output/template-A.html.static b/tests/output/template-A.html.static index 0ae8b8a..2e968dd 100644 --- a/tests/output/template-A.html.static +++ b/tests/output/template-A.html.static @@ -34,7 +34,8 @@
-

ClassA<T>

+

ClassA<T> +

A longer description of A.

@@ -110,4 +111,3 @@ - \ No newline at end of file diff --git a/tests/output/template-index.html.static b/tests/output/template-index.html.static index 6a6d59d..88c390c 100644 --- a/tests/output/template-index.html.static +++ b/tests/output/template-index.html.static @@ -41,4 +41,3 @@ - \ No newline at end of file diff --git a/tests/output/templatereference-index.html.static b/tests/output/templatereference-index.html.static new file mode 100644 index 0000000..600810e --- /dev/null +++ b/tests/output/templatereference-index.html.static @@ -0,0 +1,98 @@ + + + + + Documentation + + + + + + +
+
+
+
Typedefs
+ +
Structures
+ +
Functions
+
    +
  • foo +
    +

    *

    +
    +
  • +
+
+
+
+

Typedefs

+
+ + + + + + + + + + +
WithInnerIntTypetypestd::list<WithInner<int>::Type + > + + + +
+

Structures

+ + + + + + + +
WithInner<T>
+

Functions

+
+
+
+
std::list<std::string> + + +
+ + + + + + + + + +
foo()
+
+
+

Foo method.

+
+ + + + + + + +
return
+
+
+
+ + + + diff --git a/tests/output/templatereference-index.xml b/tests/output/templatereference-index.xml new file mode 100644 index 0000000..150ee9c --- /dev/null +++ b/tests/output/templatereference-index.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + * + Foo method. + + + + + + + + + + diff --git a/tests/output/union-index.html.static b/tests/output/union-index.html.static index 55c5349..ed58c74 100644 --- a/tests/output/union-index.html.static +++ b/tests/output/union-index.html.static @@ -48,4 +48,3 @@ - \ No newline at end of file diff --git a/tests/output/unionanonstruct-index.html.static b/tests/output/unionanonstruct-index.html.static index 4d9ecad..b095eb5 100644 --- a/tests/output/unionanonstruct-index.html.static +++ b/tests/output/unionanonstruct-index.html.static @@ -113,4 +113,3 @@ - \ No newline at end of file diff --git a/tests/output/utf8-A.html.static b/tests/output/utf8-A.html.static index 4d20e41..680443d 100644 --- a/tests/output/utf8-A.html.static +++ b/tests/output/utf8-A.html.static @@ -18,7 +18,8 @@
-

ClassA

+

ClassA +

Copyright ©

@@ -29,4 +30,3 @@ - \ No newline at end of file diff --git a/tests/output/utf8-index.html.static b/tests/output/utf8-index.html.static index a68c658..09f2630 100644 --- a/tests/output/utf8-index.html.static +++ b/tests/output/utf8-index.html.static @@ -41,4 +41,3 @@ - \ No newline at end of file diff --git a/tests/output/virtual-A.html.static b/tests/output/virtual-A.html.static index 6cd7860..dd3e2f8 100644 --- a/tests/output/virtual-A.html.static +++ b/tests/output/virtual-A.html.static @@ -26,7 +26,8 @@
-

ClassA

+

ClassA +

Member Functions

@@ -75,4 +76,3 @@ - \ No newline at end of file diff --git a/tests/output/virtual-index.html.static b/tests/output/virtual-index.html.static index 32f5328..06b8545 100644 --- a/tests/output/virtual-index.html.static +++ b/tests/output/virtual-index.html.static @@ -33,4 +33,3 @@ - \ No newline at end of file