Răsfoiți Sursa

Updated docs.

Branimir Karadžić 10 ani în urmă
părinte
comite
ae8fa69fd9

+ 0 - 380
_sources/bgfx.txt

@@ -1,380 +0,0 @@
-bgfx - API Reference
-====================
-
-bgfx is Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style
-rendering library.
-
-https://github.com/bkaradzic/bgfx
-
-General
--------
-
-Initialization and Shutdown
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. doxygenfunction:: bgfx::init
-
-.. doxygendefine:: BGFX_PCI_ID_NONE
-.. doxygendefine:: BGFX_PCI_ID_SOFTWARE_RASTERIZER
-.. doxygendefine:: BGFX_PCI_ID_AMD
-.. doxygendefine:: BGFX_PCI_ID_INTEL
-.. doxygendefine:: BGFX_PCI_ID_NVIDIA
-
-.. doxygenstruct:: bgfx::CallbackI
-    :members:
-
-.. doxygenfunction:: bgfx::shutdown
-
-Updating
-~~~~~~~~
-
-Reset
-*****
-
-.. doxygenfunction:: bgfx::reset
-
-.. doxygendefine:: BGFX_RESET_NONE
-.. doxygendefine:: BGFX_RESET_FULLSCREEN
-.. doxygendefine:: BGFX_RESET_MSAA_X2
-.. doxygendefine:: BGFX_RESET_MSAA_X4
-.. doxygendefine:: BGFX_RESET_MSAA_X8
-.. doxygendefine:: BGFX_RESET_MSAA_X16
-.. doxygendefine:: BGFX_RESET_VSYNC
-.. doxygendefine:: BGFX_RESET_MAXANISOTROPY
-.. doxygendefine:: BGFX_RESET_CAPTURE
-.. doxygendefine:: BGFX_RESET_HMD
-.. doxygendefine:: BGFX_RESET_HMD_DEBUG
-.. doxygendefine:: BGFX_RESET_HMD_RECENTER
-.. doxygendefine:: BGFX_RESET_FLUSH_AFTER_RENDER
-.. doxygendefine:: BGFX_RESET_FLIP_AFTER_RENDER
-.. doxygendefine:: BGFX_RESET_SRGB_BACKBUFFER
-
-Frame
-*****
-
-.. doxygenfunction:: bgfx::frame
-
-Debug
-~~~~~
-
-Debug Features
-**************
-
-.. doxygenfunction:: bgfx::setDebug
-
-Debug Flags
-***********
-
-.. doxygendefine:: BGFX_DEBUG_NONE
-.. doxygendefine:: BGFX_DEBUG_WIREFRAME
-.. doxygendefine:: BGFX_DEBUG_IFH
-.. doxygendefine:: BGFX_DEBUG_STATS
-.. doxygendefine:: BGFX_DEBUG_TEXT
-
-Debug Text Display
-******************
-
-.. doxygenfunction:: bgfx::dbgTextClear
-.. doxygenfunction:: bgfx::dbgTextPrintf
-
-Querying information
-~~~~~~~~~~~~~~~~~~~~
-
-Renderer
-********
-
-.. doxygenfunction:: bgfx::getRendererType
-
-.. doxygenstruct:: bgfx::RendererType
-    :members:
-
-Capabilities
-************
-
-.. doxygenfunction:: bgfx::getCaps
-
-.. doxygenstruct:: bgfx::Caps
-    :members:
-
-.. doxygendefine:: BGFX_CAPS_TEXTURE_COMPARE_LEQUAL
-.. doxygendefine:: BGFX_CAPS_TEXTURE_COMPARE_ALL
-.. doxygendefine:: BGFX_CAPS_TEXTURE_3D
-.. doxygendefine:: BGFX_CAPS_VERTEX_ATTRIB_HALF
-.. doxygendefine:: BGFX_CAPS_INSTANCING
-.. doxygendefine:: BGFX_CAPS_RENDERER_MULTITHREADED
-.. doxygendefine:: BGFX_CAPS_FRAGMENT_DEPTH
-.. doxygendefine:: BGFX_CAPS_BLEND_INDEPENDENT
-.. doxygendefine:: BGFX_CAPS_COMPUTE
-.. doxygendefine:: BGFX_CAPS_FRAGMENT_ORDERING
-.. doxygendefine:: BGFX_CAPS_SWAP_CHAIN
-.. doxygendefine:: BGFX_CAPS_HMD
-.. doxygendefine:: BGFX_CAPS_INDEX32
-.. doxygendefine:: BGFX_CAPS_DRAW_INDIRECT
-
-Statistics
-**********
-
-.. doxygenfunction:: bgfx::getStats
-
-.. doxygenstruct:: bgfx::Stats
-    :members:
-
-Head Mounted Display
-********************
-
-.. doxygenfunction:: bgfx::getHMD
-
-.. doxygenstruct:: bgfx::HMD
-    :members:
-
-.. doxygendefine:: BGFX_HMD_NONE
-.. doxygendefine:: BGFX_HMD_DEVICE_RESOLUTION
-.. doxygendefine:: BGFX_HMD_RENDERING
-
-Platform specific
-~~~~~~~~~~~~~~~~~
-
-These are platform specific APIs. It is only necessary to use these APIs in conjunction with
-creating windows.
-
-.. doxygenfunction:: bgfx::renderFrame
-
-.. doxygenstruct:: bgfx::RenderFrame
-    :members:
-
-.. doxygenfunction:: bgfx::setPlatformData
-
-.. doxygenstruct:: bgfx::PlatformData
-    :members:
-
-Miscellaneous
-~~~~~~~~~~~~~
-
-.. doxygenfunction:: bgfx::discard
-.. doxygenfunction:: bgfx::touch
-.. doxygenfunction:: bgfx::setClearColor(uint8_t, uint32_t)
-.. doxygenfunction:: bgfx::setClearColor(uint8_t, const float)
-.. doxygenfunction:: bgfx::setClearColor(uint8_t, float, float, float, float)
-.. doxygenfunction:: bgfx::saveScreenShot
-
-Views
------
-
-.. doxygenfunction:: bgfx::setViewName
-.. doxygenfunction:: bgfx::setViewRect
-.. doxygenfunction:: bgfx::setViewScissor
-.. doxygenfunction:: bgfx::setViewClear(uint8_t, uint16_t, uint32_t, float, uint8_t)
-.. doxygenfunction:: bgfx::setViewClear(uint8_t, uint16_t, float, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)
-.. doxygenfunction:: bgfx::setViewSeq
-.. doxygenfunction:: bgfx::setViewTransform
-.. doxygenfunction:: bgfx::setViewRemap
-
-
-.. doxygenfunction:: bgfx::setViewFrameBuffer
-
-Draw
-----
-
-Draw state is not preserved between two draw calls. All state is cleared after calling
-`bgfx::submit`.
-
-State
-~~~~~
-
-Debug
-*****
-
-.. doxygenfunction:: bgfx::setMarker
-
-State
-*****
-
-.. doxygenfunction:: bgfx::setState
-
-State Flags
-***********
-
-.. doxygendefine:: BGFX_STATE_RGB_WRITE
-.. doxygendefine:: BGFX_STATE_ALPHA_WRITE
-.. doxygendefine:: BGFX_STATE_DEPTH_WRITE
-
-.. doxygendefine:: BGFX_STATE_DEFAULT
-
-Stencil
-*******
-
-.. doxygenfunction:: bgfx::setStencil
-
-Stencil Flags
-*************
-
-.. doxygendefine:: BGFX_STENCIL_TEST_LESS
-
-Scissor
-*******
-
-When scissor rectangle is changing per draw call inside the same view use `bgfx::setScissor`,
-otherwise prefer `bgfx::setViewScissor`.
-
-.. doxygenfunction:: bgfx::setScissor(uint16_t, uint16_t, uint16_t, uint16_t)
-.. doxygenfunction:: bgfx::setScissor(uint16_t)
-
-Transform
-*********
-
-.. doxygenfunction:: bgfx::allocTransform
-.. doxygenfunction:: bgfx::setTransform(const void *, uint16_t)
-.. doxygenfunction:: bgfx::setTransform(uint32_t, uint16_t)
-
-Buffers
-~~~~~~~
-
-.. doxygenfunction:: bgfx::setIndexBuffer(IndexBufferHandle, uint32_t, uint32_t)
-.. doxygenfunction:: bgfx::setIndexBuffer(DynamicIndexBufferHandle, uint32_t, uint32_t)
-.. doxygenfunction:: bgfx::setIndexBuffer(const TransientIndexBuffer *, uint32_t, uint32_t)
-.. doxygenfunction:: bgfx::setIndexBuffer(const TransientIndexBuffer *)
-
-.. doxygenfunction:: bgfx::setVertexBuffer(VertexBufferHandle)
-.. doxygenfunction:: bgfx::setVertexBuffer(VertexBufferHandle, uint32_t, uint32_t)
-.. doxygenfunction:: bgfx::setVertexBuffer(DynamicVertexBufferHandle, uint32_t)
-.. doxygenfunction:: bgfx::setVertexBuffer(const TransientVertexBuffer *)
-.. doxygenfunction:: bgfx::setVertexBuffer(const TransientVertexBuffer *, uint32_t, uint32_t)
-
-.. doxygenfunction:: bgfx::setInstanceDataBuffer(const InstanceDataBuffer *, uint32_t)
-.. doxygenfunction:: bgfx::setInstanceDataBuffer(VertexBufferHandle, uint32_t, uint32_t)
-.. doxygenfunction:: bgfx::setInstanceDataBuffer(DynamicVertexBufferHandle, uint32_t, uint32_t)
-
-Textures
-~~~~~~~~
-
-.. doxygenfunction:: bgfx::setTexture(uint8_t, UniformHandle, TextureHandle, uint32_t)
-.. doxygenfunction:: bgfx::setTexture(uint8_t, UniformHandle, FrameBufferHandle, uint8_t, uint32_t)
-
-Submit
-~~~~~~
-
-.. doxygenfunction:: bgfx::submit(uint8_t, ProgramHandle, int32_t)
-.. doxygenfunction:: bgfx::submit(uint8_t, ProgramHandle, IndirectBufferHandle, uint16_t, uint16_t, int32_t)
-
-Compute
--------
-
-Compute state is not preserved between two compute dispatches. All state is cleared after calling
-`bgfx::dispatch`.
-
-Buffers
-~~~~~~~
-
-.. doxygenfunction:: bgfx::setBuffer(uint8_t, IndexBufferHandle, Access::Enum)
-.. doxygenfunction:: bgfx::setBuffer(uint8_t, VertexBufferHandle, Access::Enum)
-.. doxygenfunction:: bgfx::setBuffer(uint8_t, DynamicIndexBufferHandle, Access::Enum)
-.. doxygenfunction:: bgfx::setBuffer(uint8_t, DynamicVertexBufferHandle, Access::Enum)
-.. doxygenfunction:: bgfx::setBuffer(uint8_t, IndirectBufferHandle, Access::Enum)
-
-Images
-~~~~~~
-
-.. doxygenfunction:: bgfx::setImage(uint8_t, UniformHandle, TextureHandle, uint8_t, Access::Enum, TextureFormat::Enum)
-.. doxygenfunction:: bgfx::setImage(uint8_t, UniformHandle, FrameBufferHandle, uint8_t, Access::Enum, TextureFormat::Enum)
-
-Dispatch
-~~~~~~~~
-
-.. doxygenfunction:: bgfx::dispatch(uint8_t, ProgramHandle, uint16_t, uint16_t, uint16_t, uint8_t)
-.. doxygenfunction:: bgfx::dispatch(uint8_t, ProgramHandle, IndirectBufferHandle, uint16_t, uint16_t, uint8_t)
-
-Resources
----------
-
-.. doxygenfunction:: bgfx::alloc
-.. doxygenfunction:: bgfx::copy
-.. doxygenfunction:: bgfx::makeRef
-
-.. doxygenstruct:: bgfx::Memory
-    :members:
-
-Shaders and Programs
-~~~~~~~~~~~~~~~~~~~~
-
-.. doxygenfunction:: bgfx::createShader
-.. doxygenfunction:: bgfx::getShaderUniforms
-.. doxygenfunction:: bgfx::destroyShader
-.. doxygenfunction:: bgfx::createProgram(ShaderHandle, ShaderHandle, bool)
-.. doxygenfunction:: bgfx::createProgram(ShaderHandle, bool)
-.. doxygenfunction:: bgfx::destroyProgram
-
-Uniforms
-~~~~~~~~
-
-.. doxygenfunction:: bgfx::createUniform
-.. doxygenfunction:: bgfx::destroyUniform
-
-.. doxygenstruct:: bgfx::UniformType
-    :members:
-
-Vertex Buffers
-~~~~~~~~~~~~~~
-
-.. doxygenfunction:: bgfx::createVertexBuffer
-.. doxygenfunction:: bgfx::destroyVertexBuffer
-
-.. doxygenstruct:: bgfx::VertexDecl
-    :members:
-
-.. doxygenstruct:: bgfx::Attrib
-    :members:
-
-.. doxygenfunction:: bgfx::createDynamicVertexBuffer(uint32_t, const VertexDecl&, uint16_t)
-.. doxygenfunction:: bgfx::createDynamicVertexBuffer(const Memory *, const VertexDecl&, uint16_t)
-.. doxygenfunction:: bgfx::updateDynamicVertexBuffer(DynamicVertexBufferHandle, uint32_t, const Memory *)
-.. doxygenfunction:: bgfx::destroyDynamicVertexBuffer(DynamicVertexBufferHandle)
-
-.. doxygenfunction:: bgfx::checkAvailTransientVertexBuffer
-.. doxygenfunction:: bgfx::allocTransientVertexBuffer
-
-Index Buffers
-~~~~~~~~~~~~~
-
-.. doxygenfunction:: bgfx::createIndexBuffer
-.. doxygenfunction:: bgfx::destroyIndexBuffer
-.. doxygenfunction:: bgfx::createDynamicIndexBuffer(uint32_t, uint16_t)
-.. doxygenfunction:: bgfx::createDynamicIndexBuffer(const Memory *, uint16_t)
-.. doxygenfunction:: bgfx::updateDynamicIndexBuffer(DynamicIndexBufferHandle, uint32_t, const Memory *)
-.. doxygenfunction:: bgfx::destroyDynamicIndexBuffer(DynamicIndexBufferHandle)
-
-.. doxygenfunction:: bgfx::checkAvailTransientIndexBuffer
-.. doxygenfunction:: bgfx::allocTransientIndexBuffer
-
-Textures
-~~~~~~~~
-
-.. doxygenfunction:: bgfx::calcTextureSize
-.. doxygenfunction:: bgfx::createTexture
-.. doxygenfunction:: bgfx::createTexture2D(uint16_t, uint16_t, uint8_t, TextureFormat::Enum, uint32_t, const Memory *)
-.. doxygenfunction:: bgfx::createTexture2D(BackbufferRatio::Enum, uint8_t, TextureFormat::Enum, uint32_t)
-.. doxygenfunction:: bgfx::updateTexture2D
-.. doxygenfunction:: bgfx::createTexture3D
-.. doxygenfunction:: bgfx::updateTexture3D
-.. doxygenfunction:: bgfx::createTextureCube
-.. doxygenfunction:: bgfx::updateTextureCube
-.. doxygenfunction:: bgfx::destroyTexture
-
-Frame Buffers
-~~~~~~~~~~~~~
-
-.. doxygenfunction:: createFrameBuffer(BackbufferRatio::Enum, TextureFormat::Enum, uint32_t)
-.. doxygenfunction:: createFrameBuffer(uint8_t, TextureHandle *, bool)
-.. doxygenfunction:: createFrameBuffer(void *, uint16_t, uint16_t, TextureFormat::Enum)
-.. doxygenfunction:: destroyFrameBuffer
-
-Instance Buffer
-~~~~~~~~~~~~~~~
-
-.. doxygenfunction:: bgfx::checkAvailInstanceDataBuffer
-.. doxygenfunction:: bgfx::allocInstanceDataBuffer
-
-Indirect Buffer
-~~~~~~~~~~~~~~~
-
-.. doxygenfunction:: bgfx::createIndirectBuffer
-.. doxygenfunction:: bgfx::destroyIndirectBuffer

+ 0 - 16
_sources/index.txt

@@ -1,16 +0,0 @@
-bgfx - Documentation
-====================
-
-bgfx is Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style
-rendering library.
-
-https://github.com/bkaradzic/bgfx
-
-Contents:
-
-.. toctree::
-   :maxdepth: 3
-
-   bgfx
-
-.. _GitHub:   https://github.com/bkaradzic/bgfx

+ 6 - 68
_static/basic.css

@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -197,10 +197,7 @@ h3:hover > a.headerlink,
 h4:hover > a.headerlink,
 h5:hover > a.headerlink,
 h6:hover > a.headerlink,
-dt:hover > a.headerlink,
-caption:hover > a.headerlink,
-p.caption:hover > a.headerlink,
-div.code-block-caption:hover > a.headerlink {
+dt:hover > a.headerlink {
     visibility: visible;
 }
 
@@ -317,13 +314,6 @@ table.docutils {
     border-collapse: collapse;
 }
 
-table caption span.caption-number {
-    font-style: italic;
-}
-
-table caption span.caption-text {
-}
-
 table.docutils td, table.docutils th {
     padding: 1px 8px 1px 5px;
     border-top: 0;
@@ -354,25 +344,6 @@ table.citation td {
     border-bottom: none;
 }
 
-/* -- figures --------------------------------------------------------------- */
-
-div.figure {
-    margin: 0.5em;
-    padding: 0.5em;
-}
-
-div.figure p.caption {
-    padding: 0.3em;
-}
-
-div.figure p.caption span.caption-number {
-    font-style: italic;
-}
-
-div.figure p.caption span.caption-text {
-}
-
-
 /* -- other body styles ----------------------------------------------------- */
 
 ol.arabic {
@@ -435,10 +406,6 @@ dl.glossary dt {
     font-size: 1.3em;
 }
 
-.sig-paren {
-    font-size: larger;
-}
-
 .versionmodified {
     font-style: italic;
 }
@@ -504,51 +471,22 @@ table.highlighttable td {
     padding: 0 0.5em 0 0.5em;
 }
 
-div.code-block-caption {
-    padding: 2px 5px;
-    font-size: small;
-}
-
-div.code-block-caption code {
-    background-color: transparent;
-}
-
-div.code-block-caption + div > div.highlight > pre {
-    margin-top: 0;
-}
-
-div.code-block-caption span.caption-number {
-    padding: 0.1em 0.3em;
-    font-style: italic;
-}
-
-div.code-block-caption span.caption-text {
-}
-
-div.literal-block-wrapper {
-    padding: 1em 1em 0;
-}
-
-div.literal-block-wrapper div.highlight {
-    margin: 0;
-}
-
-code.descname {
+tt.descname {
     background-color: transparent;
     font-weight: bold;
     font-size: 1.2em;
 }
 
-code.descclassname {
+tt.descclassname {
     background-color: transparent;
 }
 
-code.xref, a code {
+tt.xref, a tt {
     background-color: transparent;
     font-weight: bold;
 }
 
-h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
     background-color: transparent;
 }
 

+ 2 - 27
_static/doctools.js

@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -91,30 +91,6 @@ jQuery.fn.highlightText = function(text, className) {
   });
 };
 
-/*
- * backward compatibility for jQuery.browser
- * This will be supported until firefox bug is fixed.
- */
-if (!jQuery.browser) {
-  jQuery.uaMatch = function(ua) {
-    ua = ua.toLowerCase();
-
-    var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
-      /(webkit)[ \/]([\w.]+)/.exec(ua) ||
-      /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
-      /(msie) ([\w.]+)/.exec(ua) ||
-      ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
-      [];
-
-    return {
-      browser: match[ 1 ] || "",
-      version: match[ 2 ] || "0"
-    };
-  };
-  jQuery.browser = {};
-  jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
-}
-
 /**
  * Small JavaScript module for the documentation.
  */
@@ -176,10 +152,9 @@ var Documentation = {
 
   /**
    * workaround a firefox stupidity
-   * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
    */
   fixFirefoxAnchorBug : function() {
-    if (document.location.hash)
+    if (document.location.hash && $.browser.mozilla)
       window.setTimeout(function() {
         document.location.href += '';
       }, 10);

BIN
_static/down-pressed.png


BIN
_static/down.png


BIN
_static/file.png


Fișier diff suprimat deoarece este prea mare
+ 0 - 1
_static/jquery.js


BIN
_static/minus.png


BIN
_static/plus.png


+ 0 - 1
_static/pygments.css

@@ -40,7 +40,6 @@
 .highlight .nv { color: #bb60d5 } /* Name.Variable */
 .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
 .highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #208050 } /* Literal.Number.Bin */
 .highlight .mf { color: #208050 } /* Literal.Number.Float */
 .highlight .mh { color: #208050 } /* Literal.Number.Hex */
 .highlight .mi { color: #208050 } /* Literal.Number.Integer */

+ 2 - 2
_static/searchtools.js

@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilties for the full-text search.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -439,7 +439,7 @@ var Search = {
                   dataType: "text",
                   complete: function(jqxhr, textstatus) {
                     var data = jqxhr.responseText;
-                    if (data !== '' && data !== undefined) {
+                    if (data !== '') {
                       listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
                     }
                     Search.output.append(listItem);

+ 1226 - 31
_static/underscore.js

@@ -1,31 +1,1226 @@
-// Underscore.js 1.3.1
-// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
-c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
-h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
-b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
-null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
-function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
-e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
-function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
-return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
-c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
-b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
-return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
-d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
-var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
-c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
-a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
-b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
-1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
-b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
-b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
-function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
-u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
-function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
-true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
+//     Underscore.js 1.4.4
+//     http://underscorejs.org
+//     (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
+//     Underscore may be freely distributed under the MIT license.
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `global` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var push             = ArrayProto.push,
+      slice            = ArrayProto.slice,
+      concat           = ArrayProto.concat,
+      toString         = ObjProto.toString,
+      hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) {
+    if (obj instanceof _) return obj;
+    if (!(this instanceof _)) return new _(obj);
+    this._wrapped = obj;
+  };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root._ = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.4.4';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, l = obj.length; i < l; i++) {
+        if (iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      for (var key in obj) {
+        if (_.has(obj, key)) {
+          if (iterator.call(context, obj[key], key, obj) === breaker) return;
+        }
+      }
+    }
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results[results.length] = iterator.call(context, value, index, list);
+    });
+    return results;
+  };
+
+  var reduceError = 'Reduce of empty array with no initial value';
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var length = obj.length;
+    if (length !== +length) {
+      var keys = _.keys(obj);
+      length = keys.length;
+    }
+    each(obj, function(value, index, list) {
+      index = keys ? keys[--length] : --length;
+      if (!initial) {
+        memo = obj[index];
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, obj[index], index, list);
+      }
+    });
+    if (!initial) throw new TypeError(reduceError);
+    return memo;
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, iterator, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+    each(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, iterator, context) {
+    return _.filter(obj, function(value, index, list) {
+      return !iterator.call(context, value, index, list);
+    }, context);
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, iterator, context) {
+    iterator || (iterator = _.identity);
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, iterator, context) {
+    iterator || (iterator = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = iterator.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if the array or object contains a given value (using `===`).
+  // Aliased as `include`.
+  _.contains = _.include = function(obj, target) {
+    if (obj == null) return false;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    return any(obj, function(value) {
+      return value === target;
+    });
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    var isFunc = _.isFunction(method);
+    return _.map(obj, function(value) {
+      return (isFunc ? method : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, function(value){ return value[key]; });
+  };
+
+  // Convenience version of a common use case of `filter`: selecting only objects
+  // containing specific `key:value` pairs.
+  _.where = function(obj, attrs, first) {
+    if (_.isEmpty(attrs)) return first ? null : [];
+    return _[first ? 'find' : 'filter'](obj, function(value) {
+      for (var key in attrs) {
+        if (attrs[key] !== value[key]) return false;
+      }
+      return true;
+    });
+  };
+
+  // Convenience version of a common use case of `find`: getting the first object
+  // containing specific `key:value` pairs.
+  _.findWhere = function(obj, attrs) {
+    return _.where(obj, attrs, true);
+  };
+
+  // Return the maximum element or (element-based computation).
+  // Can't optimize arrays of integers longer than 65,535 elements.
+  // See: https://bugs.webkit.org/show_bug.cgi?id=80797
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.max.apply(Math, obj);
+    }
+    if (!iterator && _.isEmpty(obj)) return -Infinity;
+    var result = {computed : -Infinity, value: -Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed >= result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
+      return Math.min.apply(Math, obj);
+    }
+    if (!iterator && _.isEmpty(obj)) return Infinity;
+    var result = {computed : Infinity, value: Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed < result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Shuffle an array.
+  _.shuffle = function(obj) {
+    var rand;
+    var index = 0;
+    var shuffled = [];
+    each(obj, function(value) {
+      rand = _.random(index++);
+      shuffled[index - 1] = shuffled[rand];
+      shuffled[rand] = value;
+    });
+    return shuffled;
+  };
+
+  // An internal function to generate lookup iterators.
+  var lookupIterator = function(value) {
+    return _.isFunction(value) ? value : function(obj){ return obj[value]; };
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, value, context) {
+    var iterator = lookupIterator(value);
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value : value,
+        index : index,
+        criteria : iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria;
+      var b = right.criteria;
+      if (a !== b) {
+        if (a > b || a === void 0) return 1;
+        if (a < b || b === void 0) return -1;
+      }
+      return left.index < right.index ? -1 : 1;
+    }), 'value');
+  };
+
+  // An internal function used for aggregate "group by" operations.
+  var group = function(obj, value, context, behavior) {
+    var result = {};
+    var iterator = lookupIterator(value || _.identity);
+    each(obj, function(value, index) {
+      var key = iterator.call(context, value, index, obj);
+      behavior(result, key, value);
+    });
+    return result;
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = function(obj, value, context) {
+    return group(obj, value, context, function(result, key, value) {
+      (_.has(result, key) ? result[key] : (result[key] = [])).push(value);
+    });
+  };
+
+  // Counts instances of an object that group by a certain criterion. Pass
+  // either a string attribute to count by, or a function that returns the
+  // criterion.
+  _.countBy = function(obj, value, context) {
+    return group(obj, value, context, function(result, key) {
+      if (!_.has(result, key)) result[key] = 0;
+      result[key]++;
+    });
+  };
+
+  // Use a comparator function to figure out the smallest index at which
+  // an object should be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator, context) {
+    iterator = iterator == null ? _.identity : lookupIterator(iterator);
+    var value = iterator.call(context, obj);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >>> 1;
+      iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely convert anything iterable into a real, live array.
+  _.toArray = function(obj) {
+    if (!obj) return [];
+    if (_.isArray(obj)) return slice.call(obj);
+    if (obj.length === +obj.length) return _.map(obj, _.identity);
+    return _.values(obj);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    if (obj == null) return 0;
+    return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head` and `take`. The **guard** check
+  // allows it to work with `_.map`.
+  _.first = _.head = _.take = function(array, n, guard) {
+    if (array == null) return void 0;
+    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+  };
+
+  // Returns everything but the last entry of the array. Especially useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if (array == null) return void 0;
+    if ((n != null) && !guard) {
+      return slice.call(array, Math.max(array.length - n, 0));
+    } else {
+      return array[array.length - 1];
+    }
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
+  // Especially useful on the arguments object. Passing an **n** will return
+  // the rest N values in the array. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = _.drop = function(array, n, guard) {
+    return slice.call(array, (n == null) || guard ? 1 : n);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, _.identity);
+  };
+
+  // Internal implementation of a recursive `flatten` function.
+  var flatten = function(input, shallow, output) {
+    each(input, function(value) {
+      if (_.isArray(value)) {
+        shallow ? push.apply(output, value) : flatten(value, shallow, output);
+      } else {
+        output.push(value);
+      }
+    });
+    return output;
+  };
+
+  // Return a completely flattened version of an array.
+  _.flatten = function(array, shallow) {
+    return flatten(array, shallow, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator, context) {
+    if (_.isFunction(isSorted)) {
+      context = iterator;
+      iterator = isSorted;
+      isSorted = false;
+    }
+    var initial = iterator ? _.map(array, iterator, context) : array;
+    var results = [];
+    var seen = [];
+    each(initial, function(value, index) {
+      if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
+        seen.push(value);
+        results.push(array[index]);
+      }
+    });
+    return results;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(concat.apply(ArrayProto, arguments));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays.
+  _.intersection = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.indexOf(other, item) >= 0;
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
+    return _.filter(array, function(value){ return !_.contains(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var args = slice.call(arguments);
+    var length = _.max(_.pluck(args, 'length'));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) {
+      results[i] = _.pluck(args, "" + i);
+    }
+    return results;
+  };
+
+  // Converts lists into objects. Pass either a single array of `[key, value]`
+  // pairs, or two parallel arrays of the same length -- one of keys, and one of
+  // the corresponding values.
+  _.object = function(list, values) {
+    if (list == null) return {};
+    var result = {};
+    for (var i = 0, l = list.length; i < l; i++) {
+      if (values) {
+        result[list[i]] = values[i];
+      } else {
+        result[list[i][0]] = list[i][1];
+      }
+    }
+    return result;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i = 0, l = array.length;
+    if (isSorted) {
+      if (typeof isSorted == 'number') {
+        i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted);
+      } else {
+        i = _.sortedIndex(array, item);
+        return array[i] === item ? i : -1;
+      }
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
+    for (; i < l; i++) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item, from) {
+    if (array == null) return -1;
+    var hasIndex = from != null;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
+      return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
+    }
+    var i = (hasIndex ? from : array.length);
+    while (i--) if (array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var len = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(len);
+
+    while(idx < len) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
+  // available.
+  _.bind = function(func, context) {
+    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    var args = slice.call(arguments, 2);
+    return function() {
+      return func.apply(context, args.concat(slice.call(arguments)));
+    };
+  };
+
+  // Partially apply a function by creating a version that has had some of its
+  // arguments pre-filled, without changing its dynamic `this` context.
+  _.partial = function(func) {
+    var args = slice.call(arguments, 1);
+    return function() {
+      return func.apply(this, args.concat(slice.call(arguments)));
+    };
+  };
+
+  // Bind all of an object's methods to that object. Useful for ensuring that
+  // all callbacks defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length === 0) funcs = _.functions(obj);
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(null, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time.
+  _.throttle = function(func, wait) {
+    var context, args, timeout, result;
+    var previous = 0;
+    var later = function() {
+      previous = new Date;
+      timeout = null;
+      result = func.apply(context, args);
+    };
+    return function() {
+      var now = new Date;
+      var remaining = wait - (now - previous);
+      context = this;
+      args = arguments;
+      if (remaining <= 0) {
+        clearTimeout(timeout);
+        timeout = null;
+        previous = now;
+        result = func.apply(context, args);
+      } else if (!timeout) {
+        timeout = setTimeout(later, remaining);
+      }
+      return result;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds. If `immediate` is passed, trigger the function on the
+  // leading edge, instead of the trailing.
+  _.debounce = function(func, wait, immediate) {
+    var timeout, result;
+    return function() {
+      var context = this, args = arguments;
+      var later = function() {
+        timeout = null;
+        if (!immediate) result = func.apply(context, args);
+      };
+      var callNow = immediate && !timeout;
+      clearTimeout(timeout);
+      timeout = setTimeout(later, wait);
+      if (callNow) result = func.apply(context, args);
+      return result;
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      memo = func.apply(this, arguments);
+      func = null;
+      return memo;
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return function() {
+      var args = [func];
+      push.apply(args, arguments);
+      return wrapper.apply(this, args);
+    };
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    if (times <= 0) return func();
+    return function() {
+      if (--times < 1) {
+        return func.apply(this, arguments);
+      }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = nativeKeys || function(obj) {
+    if (obj !== Object(obj)) throw new TypeError('Invalid object');
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    var values = [];
+    for (var key in obj) if (_.has(obj, key)) values.push(obj[key]);
+    return values;
+  };
+
+  // Convert an object into a list of `[key, value]` pairs.
+  _.pairs = function(obj) {
+    var pairs = [];
+    for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]);
+    return pairs;
+  };
+
+  // Invert the keys and values of an object. The values must be serializable.
+  _.invert = function(obj) {
+    var result = {};
+    for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key;
+    return result;
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Return a copy of the object only containing the whitelisted properties.
+  _.pick = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    each(keys, function(key) {
+      if (key in obj) copy[key] = obj[key];
+    });
+    return copy;
+  };
+
+   // Return a copy of the object without the blacklisted properties.
+  _.omit = function(obj) {
+    var copy = {};
+    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
+    for (var key in obj) {
+      if (!_.contains(keys, key)) copy[key] = obj[key];
+    }
+    return copy;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      if (source) {
+        for (var prop in source) {
+          if (obj[prop] == null) obj[prop] = source[prop];
+        }
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function for `isEqual`.
+  var eq = function(a, b, aStack, bStack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a instanceof _) a = a._wrapped;
+    if (b instanceof _) b = b._wrapped;
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = aStack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (aStack[length] == a) return bStack[length] == b;
+    }
+    // Add the first object to the stack of traversed objects.
+    aStack.push(a);
+    bStack.push(b);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          if (!(result = eq(a[size], b[size], aStack, bStack))) break;
+        }
+      }
+    } else {
+      // Objects with different constructors are not equivalent, but `Object`s
+      // from different frames are.
+      var aCtor = a.constructor, bCtor = b.constructor;
+      if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
+                               _.isFunction(bCtor) && (bCtor instanceof bCtor))) {
+        return false;
+      }
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    aStack.pop();
+    bStack.pop();
+    return result;
+  };
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, [], []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (obj == null) return true;
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType === 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
+  each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
+    _['is' + name] = function(obj) {
+      return toString.call(obj) == '[object ' + name + ']';
+    };
+  });
+
+  // Define a fallback version of the method in browsers (ahem, IE), where
+  // there isn't any inspectable "Arguments" type.
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Optimize `isFunction` if appropriate.
+  if (typeof (/./) !== 'function') {
+    _.isFunction = function(obj) {
+      return typeof obj === 'function';
+    };
+  }
+
+  // Is a given object a finite number?
+  _.isFinite = function(obj) {
+    return isFinite(obj) && !isNaN(parseFloat(obj));
+  };
+
+  // Is the given value `NaN`? (NaN is the only number which does not equal itself).
+  _.isNaN = function(obj) {
+    return _.isNumber(obj) && obj != +obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Shortcut function for checking if an object has a given property directly
+  // on itself (in other words, not on a prototype).
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  // Run a function **n** times.
+  _.times = function(n, iterator, context) {
+    var accum = Array(n);
+    for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
+    return accum;
+  };
+
+  // Return a random integer between min and max (inclusive).
+  _.random = function(min, max) {
+    if (max == null) {
+      max = min;
+      min = 0;
+    }
+    return min + Math.floor(Math.random() * (max - min + 1));
+  };
+
+  // List of HTML entities for escaping.
+  var entityMap = {
+    escape: {
+      '&': '&amp;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '"': '&quot;',
+      "'": '&#x27;',
+      '/': '&#x2F;'
+    }
+  };
+  entityMap.unescape = _.invert(entityMap.escape);
+
+  // Regexes containing the keys and values listed immediately above.
+  var entityRegexes = {
+    escape:   new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
+    unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
+  };
+
+  // Functions for escaping and unescaping strings to/from HTML interpolation.
+  _.each(['escape', 'unescape'], function(method) {
+    _[method] = function(string) {
+      if (string == null) return '';
+      return ('' + string).replace(entityRegexes[method], function(match) {
+        return entityMap[method][match];
+      });
+    };
+  });
+
+  // If the value of the named property is a function then invoke it;
+  // otherwise, return it.
+  _.result = function(object, property) {
+    if (object == null) return null;
+    var value = object[property];
+    return _.isFunction(value) ? value.call(object) : value;
+  };
+
+  // Add your own custom functions to the Underscore object.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name){
+      var func = _[name] = obj[name];
+      _.prototype[name] = function() {
+        var args = [this._wrapped];
+        push.apply(args, arguments);
+        return result.call(this, func.apply(_, args));
+      };
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = ++idCounter + '';
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /(.)^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    "'":      "'",
+    '\\':     '\\',
+    '\r':     'r',
+    '\n':     'n',
+    '\t':     't',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(text, data, settings) {
+    var render;
+    settings = _.defaults({}, settings, _.templateSettings);
+
+    // Combine delimiters into one regular expression via alternation.
+    var matcher = new RegExp([
+      (settings.escape || noMatch).source,
+      (settings.interpolate || noMatch).source,
+      (settings.evaluate || noMatch).source
+    ].join('|') + '|$', 'g');
+
+    // Compile the template source, escaping string literals appropriately.
+    var index = 0;
+    var source = "__p+='";
+    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+      source += text.slice(index, offset)
+        .replace(escaper, function(match) { return '\\' + escapes[match]; });
+
+      if (escape) {
+        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+      }
+      if (interpolate) {
+        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+      }
+      if (evaluate) {
+        source += "';\n" + evaluate + "\n__p+='";
+      }
+      index = offset + match.length;
+      return match;
+    });
+    source += "';\n";
+
+    // If a variable is not specified, place data values in local scope.
+    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+    source = "var __t,__p='',__j=Array.prototype.join," +
+      "print=function(){__p+=__j.call(arguments,'');};\n" +
+      source + "return __p;\n";
+
+    try {
+      render = new Function(settings.variable || 'obj', '_', source);
+    } catch (e) {
+      e.source = source;
+      throw e;
+    }
+
+    if (data) return render(data, _);
+    var template = function(data) {
+      return render.call(this, data, _);
+    };
+
+    // Provide the compiled function source as a convenience for precompilation.
+    template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
+
+    return template;
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // OOP
+  // ---------------
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj) {
+    return this._chain ? _(obj).chain() : obj;
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      var obj = this._wrapped;
+      method.apply(obj, arguments);
+      if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
+      return result.call(this, obj);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      return result.call(this, method.apply(this._wrapped, arguments));
+    };
+  });
+
+  _.extend(_.prototype, {
+
+    // Start chaining a wrapped Underscore object.
+    chain: function() {
+      this._chain = true;
+      return this;
+    },
+
+    // Extracts the result from a wrapped and chained object.
+    value: function() {
+      return this._wrapped;
+    }
+
+  });
+
+}).call(this);

BIN
_static/up-pressed.png


BIN
_static/up.png


+ 15 - 15
_static/websupport.js

@@ -4,7 +4,7 @@
  *
  * sphinx.websupport utilties for all documentation.
  *
- * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -50,51 +50,51 @@
   }
 
   function initEvents() {
-    $(document).on("click", 'a.comment-close', function(event) {
+    $('a.comment-close').live("click", function(event) {
       event.preventDefault();
       hide($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.vote', function(event) {
+    $('a.vote').live("click", function(event) {
       event.preventDefault();
       handleVote($(this));
     });
-    $(document).on("click", 'a.reply', function(event) {
+    $('a.reply').live("click", function(event) {
       event.preventDefault();
       openReply($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.close-reply', function(event) {
+    $('a.close-reply').live("click", function(event) {
       event.preventDefault();
       closeReply($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.sort-option', function(event) {
+    $('a.sort-option').live("click", function(event) {
       event.preventDefault();
       handleReSort($(this));
     });
-    $(document).on("click", 'a.show-proposal', function(event) {
+    $('a.show-proposal').live("click", function(event) {
       event.preventDefault();
       showProposal($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.hide-proposal', function(event) {
+    $('a.hide-proposal').live("click", function(event) {
       event.preventDefault();
       hideProposal($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.show-propose-change', function(event) {
+    $('a.show-propose-change').live("click", function(event) {
       event.preventDefault();
       showProposeChange($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.hide-propose-change', function(event) {
+    $('a.hide-propose-change').live("click", function(event) {
       event.preventDefault();
       hideProposeChange($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.accept-comment', function(event) {
+    $('a.accept-comment').live("click", function(event) {
       event.preventDefault();
       acceptComment($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.delete-comment', function(event) {
+    $('a.delete-comment').live("click", function(event) {
       event.preventDefault();
       deleteComment($(this).attr('id').substring(2));
     });
-    $(document).on("click", 'a.comment-markup', function(event) {
+    $('a.comment-markup').live("click", function(event) {
       event.preventDefault();
       toggleCommentMarkupBox($(this).attr('id').substring(2));
     });
@@ -700,8 +700,8 @@
         (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
       <div class="comment-markup-box" id="mb<%id%>">\
         reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
-        <code>``code``</code>, \
-        code blocks: <code>::</code> and an indented block after blank line</div>\
+        <tt>``code``</tt>, \
+        code blocks: <tt>::</tt> and an indented block after blank line</div>\
       <form method="post" id="cf<%id%>" class="comment-form" action="">\
         <textarea name="comment" cols="80"></textarea>\
         <p class="propose-button">\

Fișier diff suprimat deoarece este prea mare
+ 237 - 235
bgfx.html


+ 167 - 167
genindex.html

@@ -178,669 +178,669 @@
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%" valign="top"><dl>
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5allocE8uint32_t">bgfx::alloc (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::alloc__uint32_t">bgfx::alloc (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx23allocInstanceDataBufferE8uint32_t8uint16_t">bgfx::allocInstanceDataBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::allocInstanceDataBuffer__uint32_t.uint16_t">bgfx::allocInstanceDataBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx14allocTransformEP9Transform8uint16_t">bgfx::allocTransform (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::allocTransform__TransformP.uint16_t">bgfx::allocTransform (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx25allocTransientIndexBufferEP20TransientIndexBuffer8uint32_t">bgfx::allocTransientIndexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::allocTransientIndexBuffer__TransientIndexBufferP.uint32_t">bgfx::allocTransientIndexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx26allocTransientVertexBufferEP21TransientVertexBuffer8uint32_tRK10VertexDecl">bgfx::allocTransientVertexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::allocTransientVertexBuffer__TransientVertexBufferP.uint32_t.VertexDeclCR">bgfx::allocTransientVertexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6AttribE">bgfx::Attrib (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib">bgfx::Attrib (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9BitangentE">bgfx::Attrib::Bitangent (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Bitangent">bgfx::Attrib::Bitangent (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib6Color0E">bgfx::Attrib::Color0 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Color0">bgfx::Attrib::Color0 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib6Color1E">bgfx::Attrib::Color1 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Color1">bgfx::Attrib::Color1 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib5CountE">bgfx::Attrib::Count (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Count">bgfx::Attrib::Count (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib4EnumE">bgfx::Attrib::Enum (C++ type)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Enum">bgfx::Attrib::Enum (C++ type)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib7IndicesE">bgfx::Attrib::Indices (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Indices">bgfx::Attrib::Indices (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib6NormalE">bgfx::Attrib::Normal (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Normal">bgfx::Attrib::Normal (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib8PositionE">bgfx::Attrib::Position (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Position">bgfx::Attrib::Position (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib7TangentE">bgfx::Attrib::Tangent (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Tangent">bgfx::Attrib::Tangent (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord0E">bgfx::Attrib::TexCoord0 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord0">bgfx::Attrib::TexCoord0 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord1E">bgfx::Attrib::TexCoord1 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord1">bgfx::Attrib::TexCoord1 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord2E">bgfx::Attrib::TexCoord2 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord2">bgfx::Attrib::TexCoord2 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord3E">bgfx::Attrib::TexCoord3 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord3">bgfx::Attrib::TexCoord3 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord4E">bgfx::Attrib::TexCoord4 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord4">bgfx::Attrib::TexCoord4 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord5E">bgfx::Attrib::TexCoord5 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord5">bgfx::Attrib::TexCoord5 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord6E">bgfx::Attrib::TexCoord6 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord6">bgfx::Attrib::TexCoord6 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib9TexCoord7E">bgfx::Attrib::TexCoord7 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::TexCoord7">bgfx::Attrib::TexCoord7 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6Attrib6WeightE">bgfx::Attrib::Weight (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Attrib::Weight">bgfx::Attrib::Weight (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15calcTextureSizeER11TextureInfo8uint16_t8uint16_t8uint16_tb7uint8_tN13TextureFormat4EnumE">bgfx::calcTextureSize (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::calcTextureSize__TextureInfoR.uint16_t.uint16_t.uint16_t.b.uint8_t.TextureFormat::Enum">bgfx::calcTextureSize (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackIE">bgfx::CallbackI (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI">bgfx::CallbackI (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI9cacheReadE8uint64_tPv8uint32_t">bgfx::CallbackI::cacheRead (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::cacheRead__uint64_t.voidP.uint32_t">bgfx::CallbackI::cacheRead (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI13cacheReadSizeE8uint64_t">bgfx::CallbackI::cacheReadSize (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::cacheReadSize__uint64_t">bgfx::CallbackI::cacheReadSize (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI10cacheWriteE8uint64_tPKv8uint32_t">bgfx::CallbackI::cacheWrite (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::cacheWrite__uint64_t.voidCP.uint32_t">bgfx::CallbackI::cacheWrite (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI12captureBeginE8uint32_t8uint32_t8uint32_tN13TextureFormat4EnumEb">bgfx::CallbackI::captureBegin (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::captureBegin__uint32_t.uint32_t.uint32_t.TextureFormat::Enum.b">bgfx::CallbackI::captureBegin (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI10captureEndEv">bgfx::CallbackI::captureEnd (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::captureEnd">bgfx::CallbackI::captureEnd (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI12captureFrameEPKv8uint32_t">bgfx::CallbackI::captureFrame (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::captureFrame__voidCP.uint32_t">bgfx::CallbackI::captureFrame (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI5fatalEN5Fatal4EnumEPKc">bgfx::CallbackI::fatal (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::fatal__Fatal::Enum.cCP">bgfx::CallbackI::fatal (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI10screenShotEPKc8uint32_t8uint32_t8uint32_tPKv8uint32_tb">bgfx::CallbackI::screenShot (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::screenShot__cCP.uint32_t.uint32_t.uint32_t.voidCP.uint32_t.b">bgfx::CallbackI::screenShot (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9CallbackI10traceVargsEPKc8uint16_tPKc7va_list">bgfx::CallbackI::traceVargs (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::CallbackI::traceVargs__cCP.uint16_t.cCP.va_list">bgfx::CallbackI::traceVargs (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4CapsE">bgfx::Caps (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Caps">bgfx::Caps (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps8deviceIdE">bgfx::Caps::deviceId (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::deviceId__uint16_t">bgfx::Caps::deviceId (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps7formatsE">bgfx::Caps::formats (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::formats__uint8_tA">bgfx::Caps::formats (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps3GPUE">bgfx::Caps::GPU (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::GPU">bgfx::Caps::GPU (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps3gpuE">bgfx::Caps::gpu (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::gpu__GPUA">bgfx::Caps::gpu (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps12maxDrawCallsE">bgfx::Caps::maxDrawCalls (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::maxDrawCalls__uint32_t">bgfx::Caps::maxDrawCalls (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps16maxFBAttachmentsE">bgfx::Caps::maxFBAttachments (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::maxFBAttachments__uint8_t">bgfx::Caps::maxFBAttachments (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps14maxTextureSizeE">bgfx::Caps::maxTextureSize (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::maxTextureSize__uint16_t">bgfx::Caps::maxTextureSize (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps8maxViewsE">bgfx::Caps::maxViews (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::maxViews__uint16_t">bgfx::Caps::maxViews (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps7numGPUsE">bgfx::Caps::numGPUs (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::numGPUs__uint8_t">bgfx::Caps::numGPUs (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps12rendererTypeE">bgfx::Caps::rendererType (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::rendererType__RendererType::Enum">bgfx::Caps::rendererType (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps9supportedE">bgfx::Caps::supported (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::supported__uint64_t">bgfx::Caps::supported (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4Caps8vendorIdE">bgfx::Caps::vendorId (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Caps::vendorId__uint16_t">bgfx::Caps::vendorId (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx28checkAvailInstanceDataBufferE8uint32_t8uint16_t">bgfx::checkAvailInstanceDataBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::checkAvailInstanceDataBuffer__uint32_t.uint16_t">bgfx::checkAvailInstanceDataBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx30checkAvailTransientIndexBufferE8uint32_t">bgfx::checkAvailTransientIndexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::checkAvailTransientIndexBuffer__uint32_t">bgfx::checkAvailTransientIndexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx31checkAvailTransientVertexBufferE8uint32_tRK10VertexDecl">bgfx::checkAvailTransientVertexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::checkAvailTransientVertexBuffer__uint32_t.VertexDeclCR">bgfx::checkAvailTransientVertexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4copyEPKv8uint32_t">bgfx::copy (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::copy__voidCP.uint32_t">bgfx::copy (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx24createDynamicIndexBufferE8uint32_t8uint16_t">bgfx::createDynamicIndexBuffer (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx24createDynamicIndexBufferEPK6Memory8uint16_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::createDynamicIndexBuffer__uint32_t.uint16_t">bgfx::createDynamicIndexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx25createDynamicVertexBufferE8uint32_tRK10VertexDecl8uint16_t">bgfx::createDynamicVertexBuffer (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx25createDynamicVertexBufferEPK6MemoryRK10VertexDecl8uint16_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::createDynamicVertexBuffer__uint32_t.VertexDeclCR.uint16_t">bgfx::createDynamicVertexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx17createFrameBufferE7uint8_tP13TextureHandleb">bgfx::createFrameBuffer (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx17createFrameBufferEN15BackbufferRatio4EnumEN13TextureFormat4EnumE8uint32_t">[1]</a>, <a href="bgfx.html#_CPPv2N4bgfx17createFrameBufferEPv8uint16_t8uint16_tN13TextureFormat4EnumE">[2]</a>
+  <dt><a href="bgfx.html#bgfx::createFrameBuffer__BackbufferRatio::Enum.TextureFormat::Enum.uint32_t">bgfx::createFrameBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx17createIndexBufferEPK6Memory8uint16_t">bgfx::createIndexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createIndexBuffer__MemoryCP.uint16_t">bgfx::createIndexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx20createIndirectBufferE8uint32_t">bgfx::createIndirectBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createIndirectBuffer__uint32_t">bgfx::createIndirectBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx13createProgramE12ShaderHandle12ShaderHandleb">bgfx::createProgram (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx13createProgramE12ShaderHandleb">[1]</a>
+  <dt><a href="bgfx.html#bgfx::createProgram__ShaderHandle.ShaderHandle.b">bgfx::createProgram (C++ function)</a>, <a href="bgfx.html#bgfx::createProgram__ShaderHandle.b">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12createShaderEPK6Memory">bgfx::createShader (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createShader__MemoryCP">bgfx::createShader (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx13createTextureEPK6Memory8uint32_t7uint8_tP11TextureInfo">bgfx::createTexture (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createTexture__MemoryCP.uint32_t.uint8_t.TextureInfoP">bgfx::createTexture (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15createTexture2DE8uint16_t8uint16_t7uint8_tN13TextureFormat4EnumE8uint32_tPK6Memory">bgfx::createTexture2D (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx15createTexture2DEN15BackbufferRatio4EnumE7uint8_tN13TextureFormat4EnumE8uint32_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::createTexture2D__BackbufferRatio::Enum.uint8_t.TextureFormat::Enum.uint32_t">bgfx::createTexture2D (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15createTexture3DE8uint16_t8uint16_t8uint16_t7uint8_tN13TextureFormat4EnumE8uint32_tPK6Memory">bgfx::createTexture3D (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createTexture3D__uint16_t.uint16_t.uint16_t.uint8_t.TextureFormat::Enum.uint32_t.MemoryCP">bgfx::createTexture3D (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx17createTextureCubeE8uint16_t7uint8_tN13TextureFormat4EnumE8uint32_tPK6Memory">bgfx::createTextureCube (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createTextureCube__uint16_t.uint8_t.TextureFormat::Enum.uint32_t.MemoryCP">bgfx::createTextureCube (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx13createUniformEPKcN11UniformType4EnumE8uint16_t">bgfx::createUniform (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createUniform__cCP.UniformType::Enum.uint16_t">bgfx::createUniform (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx18createVertexBufferEPK6MemoryRK10VertexDecl8uint16_t">bgfx::createVertexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::createVertexBuffer__MemoryCP.VertexDeclCR.uint16_t">bgfx::createVertexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12dbgTextClearE7uint8_tb">bgfx::dbgTextClear (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::dbgTextClear__uint8_t.b">bgfx::dbgTextClear (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx13dbgTextPrintfE8uint16_t8uint16_t7uint8_tPKcz">bgfx::dbgTextPrintf (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::dbgTextPrintf__uint16_t.uint16_t.uint8_t.cCP.X">bgfx::dbgTextPrintf (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx25destroyDynamicIndexBufferE24DynamicIndexBufferHandle">bgfx::destroyDynamicIndexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyDynamicIndexBuffer__DynamicIndexBufferHandle">bgfx::destroyDynamicIndexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx26destroyDynamicVertexBufferE25DynamicVertexBufferHandle">bgfx::destroyDynamicVertexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyDynamicVertexBuffer__DynamicVertexBufferHandle">bgfx::destroyDynamicVertexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx18destroyFrameBufferE17FrameBufferHandle">bgfx::destroyFrameBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyFrameBuffer__FrameBufferHandle">bgfx::destroyFrameBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx18destroyIndexBufferE17IndexBufferHandle">bgfx::destroyIndexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyIndexBuffer__IndexBufferHandle">bgfx::destroyIndexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx21destroyIndirectBufferE20IndirectBufferHandle">bgfx::destroyIndirectBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyIndirectBuffer__IndirectBufferHandle">bgfx::destroyIndirectBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx14destroyProgramE13ProgramHandle">bgfx::destroyProgram (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyProgram__ProgramHandle">bgfx::destroyProgram (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx13destroyShaderE12ShaderHandle">bgfx::destroyShader (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyShader__ShaderHandle">bgfx::destroyShader (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx14destroyTextureE13TextureHandle">bgfx::destroyTexture (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyTexture__TextureHandle">bgfx::destroyTexture (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx14destroyUniformE13UniformHandle">bgfx::destroyUniform (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyUniform__UniformHandle">bgfx::destroyUniform (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx19destroyVertexBufferE18VertexBufferHandle">bgfx::destroyVertexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::destroyVertexBuffer__VertexBufferHandle">bgfx::destroyVertexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx7discardEv">bgfx::discard (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::discard">bgfx::discard (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx8dispatchE7uint8_t13ProgramHandle20IndirectBufferHandle8uint16_t8uint16_t7uint8_t">bgfx::dispatch (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx8dispatchE7uint8_t13ProgramHandle8uint16_t8uint16_t8uint16_t7uint8_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::dispatch__uint8_t.ProgramHandle.uint16_t.uint16_t.uint16_t.uint8_t">bgfx::dispatch (C++ function)</a>, <a href="bgfx.html#bgfx::dispatch__uint8_t.ProgramHandle.IndirectBufferHandle.uint16_t.uint16_t.uint8_t">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5frameEv">bgfx::frame (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::frame">bgfx::frame (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx7getCapsEv">bgfx::getCaps (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::getCaps">bgfx::getCaps (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6getHMDEv">bgfx::getHMD (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::getHMD">bgfx::getHMD (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15getRendererTypeEv">bgfx::getRendererType (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::getRendererType">bgfx::getRendererType (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx17getShaderUniformsE12ShaderHandleP13UniformHandle8uint16_t">bgfx::getShaderUniforms (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::getShaderUniforms__ShaderHandle.UniformHandleP.uint16_t">bgfx::getShaderUniforms (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx8getStatsEv">bgfx::getStats (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::getStats">bgfx::getStats (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMDE">bgfx::HMD (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::HMD">bgfx::HMD (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD12deviceHeightE">bgfx::HMD::deviceHeight (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::deviceHeight__uint32_t">bgfx::HMD::deviceHeight (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD11deviceWidthE">bgfx::HMD::deviceWidth (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::deviceWidth__uint32_t">bgfx::HMD::deviceWidth (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD3EyeE">bgfx::HMD::Eye (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::Eye">bgfx::HMD::Eye (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD3Eye3fovE">bgfx::HMD::Eye::fov (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::Eye::fov__floatA">bgfx::HMD::Eye::fov (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD3Eye8rotationE">bgfx::HMD::Eye::rotation (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::Eye::rotation__floatA">bgfx::HMD::Eye::rotation (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD3Eye11translationE">bgfx::HMD::Eye::translation (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::Eye::translation__floatA">bgfx::HMD::Eye::translation (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD3Eye10viewOffsetE">bgfx::HMD::Eye::viewOffset (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::Eye::viewOffset__floatA">bgfx::HMD::Eye::viewOffset (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD5flagsE">bgfx::HMD::flags (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::flags__uint8_t">bgfx::HMD::flags (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD6heightE">bgfx::HMD::height (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::height__uint16_t">bgfx::HMD::height (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx3HMD5widthE">bgfx::HMD::width (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::HMD::width__uint16_t">bgfx::HMD::width (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx4initEN12RendererType4EnumE8uint16_t8uint16_tP9CallbackIPN2bx12ReallocatorIE">bgfx::init (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::init__RendererType::Enum.uint16_t.uint16_t.CallbackIP.bx::ReallocatorIP">bgfx::init (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx7makeRefEPKv8uint32_t9ReleaseFnPv">bgfx::makeRef (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::makeRef__voidCP.uint32_t.ReleaseFn.voidP">bgfx::makeRef (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6MemoryE">bgfx::Memory (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Memory">bgfx::Memory (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12PlatformDataE">bgfx::PlatformData (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::PlatformData">bgfx::PlatformData (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12PlatformData10backBufferE">bgfx::PlatformData::backBuffer (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::PlatformData::backBuffer__voidP">bgfx::PlatformData::backBuffer (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12PlatformData12backBufferDSE">bgfx::PlatformData::backBufferDS (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::PlatformData::backBufferDS__voidP">bgfx::PlatformData::backBufferDS (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12PlatformData7contextE">bgfx::PlatformData::context (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::PlatformData::context__voidP">bgfx::PlatformData::context (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12PlatformData3ndtE">bgfx::PlatformData::ndt (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::PlatformData::ndt__voidP">bgfx::PlatformData::ndt (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12PlatformData3nwhE">bgfx::PlatformData::nwh (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::PlatformData::nwh__voidP">bgfx::PlatformData::nwh (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererTypeE">bgfx::RendererType (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType">bgfx::RendererType (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType5CountE">bgfx::RendererType::Count (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Count">bgfx::RendererType::Count (C++ class)</a>
   </dt>
 
   </dl></td>
   <td style="width: 33%" valign="top"><dl>
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType10Direct3D11E">bgfx::RendererType::Direct3D11 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Direct3D11">bgfx::RendererType::Direct3D11 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType10Direct3D12E">bgfx::RendererType::Direct3D12 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Direct3D12">bgfx::RendererType::Direct3D12 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType9Direct3D9E">bgfx::RendererType::Direct3D9 (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Direct3D9">bgfx::RendererType::Direct3D9 (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType4EnumE">bgfx::RendererType::Enum (C++ type)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Enum">bgfx::RendererType::Enum (C++ type)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType5MetalE">bgfx::RendererType::Metal (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Metal">bgfx::RendererType::Metal (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType4NullE">bgfx::RendererType::Null (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Null">bgfx::RendererType::Null (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType6OpenGLE">bgfx::RendererType::OpenGL (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::OpenGL">bgfx::RendererType::OpenGL (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType8OpenGLESE">bgfx::RendererType::OpenGLES (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::OpenGLES">bgfx::RendererType::OpenGLES (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12RendererType6VulkanE">bgfx::RendererType::Vulkan (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RendererType::Vulkan">bgfx::RendererType::Vulkan (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx11RenderFrameE">bgfx::RenderFrame (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::RenderFrame">bgfx::RenderFrame (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx11renderFrameEv">bgfx::renderFrame (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::renderFrame">bgfx::renderFrame (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5resetE8uint32_t8uint32_t8uint32_t">bgfx::reset (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::reset__uint32_t.uint32_t.uint32_t">bgfx::reset (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx14saveScreenShotEPKc">bgfx::saveScreenShot (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::saveScreenShot__cCP">bgfx::saveScreenShot (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9setBufferE7uint8_t17IndexBufferHandleN6Access4EnumE">bgfx::setBuffer (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx9setBufferE7uint8_t18VertexBufferHandleN6Access4EnumE">[1]</a>, <a href="bgfx.html#_CPPv2N4bgfx9setBufferE7uint8_t20IndirectBufferHandleN6Access4EnumE">[2]</a>, <a href="bgfx.html#_CPPv2N4bgfx9setBufferE7uint8_t24DynamicIndexBufferHandleN6Access4EnumE">[3]</a>, <a href="bgfx.html#_CPPv2N4bgfx9setBufferE7uint8_t25DynamicVertexBufferHandleN6Access4EnumE">[4]</a>
+  <dt><a href="bgfx.html#bgfx::setBuffer__uint8_t.IndexBufferHandle.Access::Enum">bgfx::setBuffer (C++ function)</a>, <a href="bgfx.html#bgfx::setBuffer__uint8_t.VertexBufferHandle.Access::Enum">[1]</a>, <a href="bgfx.html#bgfx::setBuffer__uint8_t.DynamicIndexBufferHandle.Access::Enum">[2]</a>, <a href="bgfx.html#bgfx::setBuffer__uint8_t.DynamicVertexBufferHandle.Access::Enum">[3]</a>, <a href="bgfx.html#bgfx::setBuffer__uint8_t.IndirectBufferHandle.Access::Enum">[4]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx13setClearColorE7uint8_t8uint32_t">bgfx::setClearColor (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx13setClearColorE7uint8_tKf">[1]</a>, <a href="bgfx.html#_CPPv2N4bgfx13setClearColorE7uint8_tffff">[2]</a>
+  <dt><a href="bgfx.html#bgfx::setClearColor__uint8_t.uint32_t">bgfx::setClearColor (C++ function)</a>, <a href="bgfx.html#bgfx::setClearColor__uint8_t.floatC">[1]</a>, <a href="bgfx.html#bgfx::setClearColor__uint8_t.float.float.float.float">[2]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx8setDebugE8uint32_t">bgfx::setDebug (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setDebug__uint32_t">bgfx::setDebug (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx8setImageE7uint8_t13UniformHandle13TextureHandle7uint8_tN6Access4EnumEN13TextureFormat4EnumE">bgfx::setImage (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx8setImageE7uint8_t13UniformHandle17FrameBufferHandle7uint8_tN6Access4EnumEN13TextureFormat4EnumE">[1]</a>
+  <dt><a href="bgfx.html#bgfx::setImage__uint8_t.UniformHandle.TextureHandle.uint8_t.Access::Enum.TextureFormat::Enum">bgfx::setImage (C++ function)</a>, <a href="bgfx.html#bgfx::setImage__uint8_t.UniformHandle.FrameBufferHandle.uint8_t.Access::Enum.TextureFormat::Enum">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx14setIndexBufferE17IndexBufferHandle8uint32_t8uint32_t">bgfx::setIndexBuffer (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx14setIndexBufferE24DynamicIndexBufferHandle8uint32_t8uint32_t">[1]</a>, <a href="bgfx.html#_CPPv2N4bgfx14setIndexBufferEPK20TransientIndexBuffer">[2]</a>, <a href="bgfx.html#_CPPv2N4bgfx14setIndexBufferEPK20TransientIndexBuffer8uint32_t8uint32_t">[3]</a>
+  <dt><a href="bgfx.html#bgfx::setIndexBuffer__IndexBufferHandle.uint32_t.uint32_t">bgfx::setIndexBuffer (C++ function)</a>, <a href="bgfx.html#bgfx::setIndexBuffer__DynamicIndexBufferHandle.uint32_t.uint32_t">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx21setInstanceDataBufferE18VertexBufferHandle8uint32_t8uint32_t">bgfx::setInstanceDataBuffer (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx21setInstanceDataBufferE25DynamicVertexBufferHandle8uint32_t8uint32_t">[1]</a>, <a href="bgfx.html#_CPPv2N4bgfx21setInstanceDataBufferEPK18InstanceDataBuffer8uint32_t">[2]</a>
+  <dt><a href="bgfx.html#bgfx::setInstanceDataBuffer__VertexBufferHandle.uint32_t.uint32_t">bgfx::setInstanceDataBuffer (C++ function)</a>, <a href="bgfx.html#bgfx::setInstanceDataBuffer__DynamicVertexBufferHandle.uint32_t.uint32_t">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx9setMarkerEPKc">bgfx::setMarker (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setMarker__cCP">bgfx::setMarker (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15setPlatformDataERK12PlatformData">bgfx::setPlatformData (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setPlatformData__PlatformDataCR">bgfx::setPlatformData (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10setScissorE8uint16_t">bgfx::setScissor (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx10setScissorE8uint16_t8uint16_t8uint16_t8uint16_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::setScissor__uint16_t.uint16_t.uint16_t.uint16_t">bgfx::setScissor (C++ function)</a>, <a href="bgfx.html#bgfx::setScissor__uint16_t">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx8setStateE8uint64_t8uint32_t">bgfx::setState (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setState__uint64_t.uint32_t">bgfx::setState (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10setStencilE8uint32_t8uint32_t">bgfx::setStencil (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setStencil__uint32_t.uint32_t">bgfx::setStencil (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10setTextureE7uint8_t13UniformHandle13TextureHandle8uint32_t">bgfx::setTexture (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx10setTextureE7uint8_t13UniformHandle17FrameBufferHandle7uint8_t8uint32_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::setTexture__uint8_t.UniformHandle.TextureHandle.uint32_t">bgfx::setTexture (C++ function)</a>, <a href="bgfx.html#bgfx::setTexture__uint8_t.UniformHandle.FrameBufferHandle.uint8_t.uint32_t">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12setTransformE8uint32_t8uint16_t">bgfx::setTransform (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx12setTransformEPKv8uint16_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::setTransform__uint32_t.uint16_t">bgfx::setTransform (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15setVertexBufferE18VertexBufferHandle">bgfx::setVertexBuffer (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx15setVertexBufferE18VertexBufferHandle8uint32_t8uint32_t">[1]</a>, <a href="bgfx.html#_CPPv2N4bgfx15setVertexBufferE25DynamicVertexBufferHandle8uint32_t">[2]</a>, <a href="bgfx.html#_CPPv2N4bgfx15setVertexBufferEPK21TransientVertexBuffer">[3]</a>, <a href="bgfx.html#_CPPv2N4bgfx15setVertexBufferEPK21TransientVertexBuffer8uint32_t8uint32_t">[4]</a>
+  <dt><a href="bgfx.html#bgfx::setVertexBuffer__VertexBufferHandle">bgfx::setVertexBuffer (C++ function)</a>, <a href="bgfx.html#bgfx::setVertexBuffer__VertexBufferHandle.uint32_t.uint32_t">[1]</a>, <a href="bgfx.html#bgfx::setVertexBuffer__DynamicVertexBufferHandle.uint32_t">[2]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12setViewClearE7uint8_t8uint16_t8uint32_tf7uint8_t">bgfx::setViewClear (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx12setViewClearE7uint8_t8uint16_tf7uint8_t7uint8_t7uint8_t7uint8_t7uint8_t7uint8_t7uint8_t7uint8_t7uint8_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::setViewClear__uint8_t.uint16_t.uint32_t.float.uint8_t">bgfx::setViewClear (C++ function)</a>, <a href="bgfx.html#bgfx::setViewClear__uint8_t.uint16_t.float.uint8_t.uint8_t.uint8_t.uint8_t.uint8_t.uint8_t.uint8_t.uint8_t.uint8_t">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx18setViewFrameBufferE7uint8_t17FrameBufferHandle">bgfx::setViewFrameBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setViewFrameBuffer__uint8_t.FrameBufferHandle">bgfx::setViewFrameBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx11setViewNameE7uint8_tPKc">bgfx::setViewName (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setViewName__uint8_t.cCP">bgfx::setViewName (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx11setViewRectE7uint8_t8uint16_t8uint16_t8uint16_t8uint16_t">bgfx::setViewRect (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setViewRect__uint8_t.uint16_t.uint16_t.uint16_t.uint16_t">bgfx::setViewRect (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx12setViewRemapE7uint8_t7uint8_tPKv">bgfx::setViewRemap (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setViewRemap__uint8_t.uint8_t.voidCP">bgfx::setViewRemap (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx14setViewScissorE7uint8_t8uint16_t8uint16_t8uint16_t8uint16_t">bgfx::setViewScissor (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setViewScissor__uint8_t.uint16_t.uint16_t.uint16_t.uint16_t">bgfx::setViewScissor (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10setViewSeqE7uint8_tb">bgfx::setViewSeq (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setViewSeq__uint8_t.b">bgfx::setViewSeq (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx16setViewTransformE7uint8_tPKvPKv7uint8_tPKv">bgfx::setViewTransform (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::setViewTransform__uint8_t.voidCP.voidCP.uint8_t.voidCP">bgfx::setViewTransform (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx8shutdownEv">bgfx::shutdown (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::shutdown">bgfx::shutdown (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5StatsE">bgfx::Stats (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::Stats">bgfx::Stats (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5Stats7cpuTimeE">bgfx::Stats::cpuTime (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Stats::cpuTime__uint64_t">bgfx::Stats::cpuTime (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5Stats12cpuTimerFreqE">bgfx::Stats::cpuTimerFreq (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Stats::cpuTimerFreq__uint64_t">bgfx::Stats::cpuTimerFreq (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5Stats7gpuTimeE">bgfx::Stats::gpuTime (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Stats::gpuTime__uint64_t">bgfx::Stats::gpuTime (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5Stats12gpuTimerFreqE">bgfx::Stats::gpuTimerFreq (C++ member)</a>
+  <dt><a href="bgfx.html#bgfx::Stats::gpuTimerFreq__uint64_t">bgfx::Stats::gpuTimerFreq (C++ member)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx6submitE7uint8_t13ProgramHandle20IndirectBufferHandle8uint16_t8uint16_t7int32_t">bgfx::submit (C++ function)</a>, <a href="bgfx.html#_CPPv2N4bgfx6submitE7uint8_t13ProgramHandle7int32_t">[1]</a>
+  <dt><a href="bgfx.html#bgfx::submit__uint8_t.ProgramHandle.int32_t">bgfx::submit (C++ function)</a>, <a href="bgfx.html#bgfx::submit__uint8_t.ProgramHandle.IndirectBufferHandle.uint16_t.uint16_t.int32_t">[1]</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx5touchE7uint8_t">bgfx::touch (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::touch__uint8_t">bgfx::touch (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx11UniformTypeE">bgfx::UniformType (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::UniformType">bgfx::UniformType (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx24updateDynamicIndexBufferE24DynamicIndexBufferHandle8uint32_tPK6Memory">bgfx::updateDynamicIndexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::updateDynamicIndexBuffer__DynamicIndexBufferHandle.uint32_t.MemoryCP">bgfx::updateDynamicIndexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx25updateDynamicVertexBufferE25DynamicVertexBufferHandle8uint32_tPK6Memory">bgfx::updateDynamicVertexBuffer (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::updateDynamicVertexBuffer__DynamicVertexBufferHandle.uint32_t.MemoryCP">bgfx::updateDynamicVertexBuffer (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15updateTexture2DE13TextureHandle7uint8_t8uint16_t8uint16_t8uint16_t8uint16_tPK6Memory8uint16_t">bgfx::updateTexture2D (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::updateTexture2D__TextureHandle.uint8_t.uint16_t.uint16_t.uint16_t.uint16_t.MemoryCP.uint16_t">bgfx::updateTexture2D (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx15updateTexture3DE13TextureHandle7uint8_t8uint16_t8uint16_t8uint16_t8uint16_t8uint16_t8uint16_tPK6Memory">bgfx::updateTexture3D (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::updateTexture3D__TextureHandle.uint8_t.uint16_t.uint16_t.uint16_t.uint16_t.uint16_t.uint16_t.MemoryCP">bgfx::updateTexture3D (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx17updateTextureCubeE13TextureHandle7uint8_t7uint8_t8uint16_t8uint16_t8uint16_t8uint16_tPK6Memory8uint16_t">bgfx::updateTextureCube (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::updateTextureCube__TextureHandle.uint8_t.uint8_t.uint16_t.uint16_t.uint16_t.uint16_t.MemoryCP.uint16_t">bgfx::updateTextureCube (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDeclE">bgfx::VertexDecl (C++ class)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl">bgfx::VertexDecl (C++ class)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl3addEN6Attrib4EnumE7uint8_tN10AttribType4EnumEbb">bgfx::VertexDecl::add (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::add__Attrib::Enum.uint8_t.AttribType::Enum.b.b">bgfx::VertexDecl::add (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl5beginEN12RendererType4EnumE">bgfx::VertexDecl::begin (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::begin__RendererType::Enum">bgfx::VertexDecl::begin (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl6decodeEN6Attrib4EnumER7uint8_tRN10AttribType4EnumERbRb">bgfx::VertexDecl::decode (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::decode__Attrib::Enum.uint8_tR.AttribType::EnumR.bR.bR">bgfx::VertexDecl::decode (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl3endEv">bgfx::VertexDecl::end (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::end">bgfx::VertexDecl::end (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl9getOffsetEN6Attrib4EnumE">bgfx::VertexDecl::getOffset (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::getOffset__Attrib::Enum">bgfx::VertexDecl::getOffset (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl7getSizeE8uint32_t">bgfx::VertexDecl::getSize (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::getSize__uint32_t">bgfx::VertexDecl::getSize (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl9getStrideEv">bgfx::VertexDecl::getStride (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::getStride">bgfx::VertexDecl::getStride (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl3hasEN6Attrib4EnumE">bgfx::VertexDecl::has (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::has__Attrib::Enum">bgfx::VertexDecl::has (C++ function)</a>
   </dt>
 
       
-  <dt><a href="bgfx.html#_CPPv2N4bgfx10VertexDecl4skipE7uint8_t">bgfx::VertexDecl::skip (C++ function)</a>
+  <dt><a href="bgfx.html#bgfx::VertexDecl::skip__uint8_t">bgfx::VertexDecl::skip (C++ function)</a>
   </dt>
 
       
@@ -1067,7 +1067,7 @@
             VERSION:'1.0',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
-            HAS_SOURCE:  true
+            HAS_SOURCE:  false
         };
     </script>
       <script type="text/javascript" src="_static/jquery.js"></script>

+ 1 - 1
index.html

@@ -255,7 +255,7 @@ rendering library.</p>
             VERSION:'1.0',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
-            HAS_SOURCE:  true
+            HAS_SOURCE:  false
         };
     </script>
       <script type="text/javascript" src="_static/jquery.js"></script>

BIN
objects.inv


+ 1 - 1
search.html

@@ -209,7 +209,7 @@
             VERSION:'1.0',
             COLLAPSE_INDEX:false,
             FILE_SUFFIX:'.html',
-            HAS_SOURCE:  true
+            HAS_SOURCE:  false
         };
     </script>
       <script type="text/javascript" src="_static/jquery.js"></script>

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
searchindex.js


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff