OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // This file is auto-generated from | 5 // This file is auto-generated from |
6 // ui/gl/generate_bindings.py | 6 // ui/gl/generate_bindings.py |
7 // It's formatted by clang-format using chromium coding style: | 7 // It's formatted by clang-format using chromium coding style: |
8 // clang-format -i -style=chromium filename | 8 // clang-format -i -style=chromium filename |
9 // DO NOT EDIT! | 9 // DO NOT EDIT! |
10 | 10 |
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 GLint zoffset, | 474 GLint zoffset, |
475 GLint x, | 475 GLint x, |
476 GLint y, | 476 GLint y, |
477 GLsizei width, | 477 GLsizei width, |
478 GLsizei height) { | 478 GLsizei height) { |
479 MakeFunctionUnique("glCopyTexSubImage3D"); | 479 MakeFunctionUnique("glCopyTexSubImage3D"); |
480 interface_->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, | 480 interface_->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, |
481 width, height); | 481 width, height); |
482 } | 482 } |
483 | 483 |
| 484 void GL_BINDING_CALL MockGLInterface::Mock_glCoverFillPathInstancedNV( |
| 485 GLsizei numPaths, |
| 486 GLenum pathNameType, |
| 487 const void* paths, |
| 488 GLuint pathBase, |
| 489 GLenum coverMode, |
| 490 GLenum transformType, |
| 491 const GLfloat* transformValues) { |
| 492 MakeFunctionUnique("glCoverFillPathInstancedNV"); |
| 493 interface_->CoverFillPathInstancedNV(numPaths, pathNameType, paths, pathBase, |
| 494 coverMode, transformType, |
| 495 transformValues); |
| 496 } |
| 497 |
484 void GL_BINDING_CALL MockGLInterface::Mock_glCoverFillPathNV(GLuint path, | 498 void GL_BINDING_CALL MockGLInterface::Mock_glCoverFillPathNV(GLuint path, |
485 GLenum coverMode) { | 499 GLenum coverMode) { |
486 MakeFunctionUnique("glCoverFillPathNV"); | 500 MakeFunctionUnique("glCoverFillPathNV"); |
487 interface_->CoverFillPathNV(path, coverMode); | 501 interface_->CoverFillPathNV(path, coverMode); |
488 } | 502 } |
489 | 503 |
| 504 void GL_BINDING_CALL MockGLInterface::Mock_glCoverStrokePathInstancedNV( |
| 505 GLsizei numPaths, |
| 506 GLenum pathNameType, |
| 507 const void* paths, |
| 508 GLuint pathBase, |
| 509 GLenum coverMode, |
| 510 GLenum transformType, |
| 511 const GLfloat* transformValues) { |
| 512 MakeFunctionUnique("glCoverStrokePathInstancedNV"); |
| 513 interface_->CoverStrokePathInstancedNV(numPaths, pathNameType, paths, |
| 514 pathBase, coverMode, transformType, |
| 515 transformValues); |
| 516 } |
| 517 |
490 void GL_BINDING_CALL | 518 void GL_BINDING_CALL |
491 MockGLInterface::Mock_glCoverStrokePathNV(GLuint name, GLenum coverMode) { | 519 MockGLInterface::Mock_glCoverStrokePathNV(GLuint name, GLenum coverMode) { |
492 MakeFunctionUnique("glCoverStrokePathNV"); | 520 MakeFunctionUnique("glCoverStrokePathNV"); |
493 interface_->CoverStrokePathNV(name, coverMode); | 521 interface_->CoverStrokePathNV(name, coverMode); |
494 } | 522 } |
495 | 523 |
496 GLuint GL_BINDING_CALL MockGLInterface::Mock_glCreateProgram(void) { | 524 GLuint GL_BINDING_CALL MockGLInterface::Mock_glCreateProgram(void) { |
497 MakeFunctionUnique("glCreateProgram"); | 525 MakeFunctionUnique("glCreateProgram"); |
498 return interface_->CreateProgram(); | 526 return interface_->CreateProgram(); |
499 } | 527 } |
(...skipping 1548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2048 | 2076 |
2049 void GL_BINDING_CALL | 2077 void GL_BINDING_CALL |
2050 MockGLInterface::Mock_glShaderSource(GLuint shader, | 2078 MockGLInterface::Mock_glShaderSource(GLuint shader, |
2051 GLsizei count, | 2079 GLsizei count, |
2052 const char* const* str, | 2080 const char* const* str, |
2053 const GLint* length) { | 2081 const GLint* length) { |
2054 MakeFunctionUnique("glShaderSource"); | 2082 MakeFunctionUnique("glShaderSource"); |
2055 interface_->ShaderSource(shader, count, str, length); | 2083 interface_->ShaderSource(shader, count, str, length); |
2056 } | 2084 } |
2057 | 2085 |
| 2086 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFillPathInstancedNV( |
| 2087 GLsizei numPaths, |
| 2088 GLenum pathNameType, |
| 2089 const void* paths, |
| 2090 GLuint pathBase, |
| 2091 GLenum fillMode, |
| 2092 GLuint mask, |
| 2093 GLenum transformType, |
| 2094 const GLfloat* transformValues) { |
| 2095 MakeFunctionUnique("glStencilFillPathInstancedNV"); |
| 2096 interface_->StencilFillPathInstancedNV(numPaths, pathNameType, paths, |
| 2097 pathBase, fillMode, mask, |
| 2098 transformType, transformValues); |
| 2099 } |
| 2100 |
2058 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFillPathNV(GLuint path, | 2101 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFillPathNV(GLuint path, |
2059 GLenum fillMode, | 2102 GLenum fillMode, |
2060 GLuint mask) { | 2103 GLuint mask) { |
2061 MakeFunctionUnique("glStencilFillPathNV"); | 2104 MakeFunctionUnique("glStencilFillPathNV"); |
2062 interface_->StencilFillPathNV(path, fillMode, mask); | 2105 interface_->StencilFillPathNV(path, fillMode, mask); |
2063 } | 2106 } |
2064 | 2107 |
2065 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFunc(GLenum func, | 2108 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFunc(GLenum func, |
2066 GLint ref, | 2109 GLint ref, |
2067 GLuint mask) { | 2110 GLuint mask) { |
(...skipping 28 matching lines...) Expand all Loading... |
2096 } | 2139 } |
2097 | 2140 |
2098 void GL_BINDING_CALL MockGLInterface::Mock_glStencilOpSeparate(GLenum face, | 2141 void GL_BINDING_CALL MockGLInterface::Mock_glStencilOpSeparate(GLenum face, |
2099 GLenum fail, | 2142 GLenum fail, |
2100 GLenum zfail, | 2143 GLenum zfail, |
2101 GLenum zpass) { | 2144 GLenum zpass) { |
2102 MakeFunctionUnique("glStencilOpSeparate"); | 2145 MakeFunctionUnique("glStencilOpSeparate"); |
2103 interface_->StencilOpSeparate(face, fail, zfail, zpass); | 2146 interface_->StencilOpSeparate(face, fail, zfail, zpass); |
2104 } | 2147 } |
2105 | 2148 |
| 2149 void GL_BINDING_CALL MockGLInterface::Mock_glStencilStrokePathInstancedNV( |
| 2150 GLsizei numPaths, |
| 2151 GLenum pathNameType, |
| 2152 const void* paths, |
| 2153 GLuint pathBase, |
| 2154 GLint ref, |
| 2155 GLuint mask, |
| 2156 GLenum transformType, |
| 2157 const GLfloat* transformValues) { |
| 2158 MakeFunctionUnique("glStencilStrokePathInstancedNV"); |
| 2159 interface_->StencilStrokePathInstancedNV(numPaths, pathNameType, paths, |
| 2160 pathBase, ref, mask, transformType, |
| 2161 transformValues); |
| 2162 } |
| 2163 |
2106 void GL_BINDING_CALL | 2164 void GL_BINDING_CALL |
2107 MockGLInterface::Mock_glStencilStrokePathNV(GLuint path, | 2165 MockGLInterface::Mock_glStencilStrokePathNV(GLuint path, |
2108 GLint reference, | 2166 GLint reference, |
2109 GLuint mask) { | 2167 GLuint mask) { |
2110 MakeFunctionUnique("glStencilStrokePathNV"); | 2168 MakeFunctionUnique("glStencilStrokePathNV"); |
2111 interface_->StencilStrokePathNV(path, reference, mask); | 2169 interface_->StencilStrokePathNV(path, reference, mask); |
2112 } | 2170 } |
2113 | 2171 |
2114 void GL_BINDING_CALL | 2172 void GL_BINDING_CALL |
| 2173 MockGLInterface::Mock_glStencilThenCoverFillPathInstancedNV( |
| 2174 GLsizei numPaths, |
| 2175 GLenum pathNameType, |
| 2176 const void* paths, |
| 2177 GLuint pathBase, |
| 2178 GLenum fillMode, |
| 2179 GLuint mask, |
| 2180 GLenum coverMode, |
| 2181 GLenum transformType, |
| 2182 const GLfloat* transformValues) { |
| 2183 MakeFunctionUnique("glStencilThenCoverFillPathInstancedNV"); |
| 2184 interface_->StencilThenCoverFillPathInstancedNV( |
| 2185 numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, |
| 2186 transformType, transformValues); |
| 2187 } |
| 2188 |
| 2189 void GL_BINDING_CALL |
2115 MockGLInterface::Mock_glStencilThenCoverFillPathNV(GLuint path, | 2190 MockGLInterface::Mock_glStencilThenCoverFillPathNV(GLuint path, |
2116 GLenum fillMode, | 2191 GLenum fillMode, |
2117 GLuint mask, | 2192 GLuint mask, |
2118 GLenum coverMode) { | 2193 GLenum coverMode) { |
2119 MakeFunctionUnique("glStencilThenCoverFillPathNV"); | 2194 MakeFunctionUnique("glStencilThenCoverFillPathNV"); |
2120 interface_->StencilThenCoverFillPathNV(path, fillMode, mask, coverMode); | 2195 interface_->StencilThenCoverFillPathNV(path, fillMode, mask, coverMode); |
2121 } | 2196 } |
2122 | 2197 |
2123 void GL_BINDING_CALL | 2198 void GL_BINDING_CALL |
| 2199 MockGLInterface::Mock_glStencilThenCoverStrokePathInstancedNV( |
| 2200 GLsizei numPaths, |
| 2201 GLenum pathNameType, |
| 2202 const void* paths, |
| 2203 GLuint pathBase, |
| 2204 GLint ref, |
| 2205 GLuint mask, |
| 2206 GLenum coverMode, |
| 2207 GLenum transformType, |
| 2208 const GLfloat* transformValues) { |
| 2209 MakeFunctionUnique("glStencilThenCoverStrokePathInstancedNV"); |
| 2210 interface_->StencilThenCoverStrokePathInstancedNV( |
| 2211 numPaths, pathNameType, paths, pathBase, ref, mask, coverMode, |
| 2212 transformType, transformValues); |
| 2213 } |
| 2214 |
| 2215 void GL_BINDING_CALL |
2124 MockGLInterface::Mock_glStencilThenCoverStrokePathNV(GLuint path, | 2216 MockGLInterface::Mock_glStencilThenCoverStrokePathNV(GLuint path, |
2125 GLint reference, | 2217 GLint reference, |
2126 GLuint mask, | 2218 GLuint mask, |
2127 GLenum coverMode) { | 2219 GLenum coverMode) { |
2128 MakeFunctionUnique("glStencilThenCoverStrokePathNV"); | 2220 MakeFunctionUnique("glStencilThenCoverStrokePathNV"); |
2129 interface_->StencilThenCoverStrokePathNV(path, reference, mask, coverMode); | 2221 interface_->StencilThenCoverStrokePathNV(path, reference, mask, coverMode); |
2130 } | 2222 } |
2131 | 2223 |
2132 GLboolean GL_BINDING_CALL MockGLInterface::Mock_glTestFenceAPPLE(GLuint fence) { | 2224 GLboolean GL_BINDING_CALL MockGLInterface::Mock_glTestFenceAPPLE(GLuint fence) { |
2133 MakeFunctionUnique("glTestFenceAPPLE"); | 2225 MakeFunctionUnique("glTestFenceAPPLE"); |
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2802 if (strcmp(name, "glCompressedTexSubImage3D") == 0) | 2894 if (strcmp(name, "glCompressedTexSubImage3D") == 0) |
2803 return reinterpret_cast<void*>(Mock_glCompressedTexSubImage3D); | 2895 return reinterpret_cast<void*>(Mock_glCompressedTexSubImage3D); |
2804 if (strcmp(name, "glCopyBufferSubData") == 0) | 2896 if (strcmp(name, "glCopyBufferSubData") == 0) |
2805 return reinterpret_cast<void*>(Mock_glCopyBufferSubData); | 2897 return reinterpret_cast<void*>(Mock_glCopyBufferSubData); |
2806 if (strcmp(name, "glCopyTexImage2D") == 0) | 2898 if (strcmp(name, "glCopyTexImage2D") == 0) |
2807 return reinterpret_cast<void*>(Mock_glCopyTexImage2D); | 2899 return reinterpret_cast<void*>(Mock_glCopyTexImage2D); |
2808 if (strcmp(name, "glCopyTexSubImage2D") == 0) | 2900 if (strcmp(name, "glCopyTexSubImage2D") == 0) |
2809 return reinterpret_cast<void*>(Mock_glCopyTexSubImage2D); | 2901 return reinterpret_cast<void*>(Mock_glCopyTexSubImage2D); |
2810 if (strcmp(name, "glCopyTexSubImage3D") == 0) | 2902 if (strcmp(name, "glCopyTexSubImage3D") == 0) |
2811 return reinterpret_cast<void*>(Mock_glCopyTexSubImage3D); | 2903 return reinterpret_cast<void*>(Mock_glCopyTexSubImage3D); |
| 2904 if (strcmp(name, "glCoverFillPathInstancedNV") == 0) |
| 2905 return reinterpret_cast<void*>(Mock_glCoverFillPathInstancedNV); |
2812 if (strcmp(name, "glCoverFillPathNV") == 0) | 2906 if (strcmp(name, "glCoverFillPathNV") == 0) |
2813 return reinterpret_cast<void*>(Mock_glCoverFillPathNV); | 2907 return reinterpret_cast<void*>(Mock_glCoverFillPathNV); |
| 2908 if (strcmp(name, "glCoverStrokePathInstancedNV") == 0) |
| 2909 return reinterpret_cast<void*>(Mock_glCoverStrokePathInstancedNV); |
2814 if (strcmp(name, "glCoverStrokePathNV") == 0) | 2910 if (strcmp(name, "glCoverStrokePathNV") == 0) |
2815 return reinterpret_cast<void*>(Mock_glCoverStrokePathNV); | 2911 return reinterpret_cast<void*>(Mock_glCoverStrokePathNV); |
2816 if (strcmp(name, "glCreateProgram") == 0) | 2912 if (strcmp(name, "glCreateProgram") == 0) |
2817 return reinterpret_cast<void*>(Mock_glCreateProgram); | 2913 return reinterpret_cast<void*>(Mock_glCreateProgram); |
2818 if (strcmp(name, "glCreateShader") == 0) | 2914 if (strcmp(name, "glCreateShader") == 0) |
2819 return reinterpret_cast<void*>(Mock_glCreateShader); | 2915 return reinterpret_cast<void*>(Mock_glCreateShader); |
2820 if (strcmp(name, "glCullFace") == 0) | 2916 if (strcmp(name, "glCullFace") == 0) |
2821 return reinterpret_cast<void*>(Mock_glCullFace); | 2917 return reinterpret_cast<void*>(Mock_glCullFace); |
2822 if (strcmp(name, "glDeleteBuffers") == 0) | 2918 if (strcmp(name, "glDeleteBuffers") == 0) |
2823 return reinterpret_cast<void*>(Mock_glDeleteBuffers); | 2919 return reinterpret_cast<void*>(Mock_glDeleteBuffers); |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3249 if (strcmp(name, "glScissor") == 0) | 3345 if (strcmp(name, "glScissor") == 0) |
3250 return reinterpret_cast<void*>(Mock_glScissor); | 3346 return reinterpret_cast<void*>(Mock_glScissor); |
3251 if (strcmp(name, "glSetFenceAPPLE") == 0) | 3347 if (strcmp(name, "glSetFenceAPPLE") == 0) |
3252 return reinterpret_cast<void*>(Mock_glSetFenceAPPLE); | 3348 return reinterpret_cast<void*>(Mock_glSetFenceAPPLE); |
3253 if (strcmp(name, "glSetFenceNV") == 0) | 3349 if (strcmp(name, "glSetFenceNV") == 0) |
3254 return reinterpret_cast<void*>(Mock_glSetFenceNV); | 3350 return reinterpret_cast<void*>(Mock_glSetFenceNV); |
3255 if (strcmp(name, "glShaderBinary") == 0) | 3351 if (strcmp(name, "glShaderBinary") == 0) |
3256 return reinterpret_cast<void*>(Mock_glShaderBinary); | 3352 return reinterpret_cast<void*>(Mock_glShaderBinary); |
3257 if (strcmp(name, "glShaderSource") == 0) | 3353 if (strcmp(name, "glShaderSource") == 0) |
3258 return reinterpret_cast<void*>(Mock_glShaderSource); | 3354 return reinterpret_cast<void*>(Mock_glShaderSource); |
| 3355 if (strcmp(name, "glStencilFillPathInstancedNV") == 0) |
| 3356 return reinterpret_cast<void*>(Mock_glStencilFillPathInstancedNV); |
3259 if (strcmp(name, "glStencilFillPathNV") == 0) | 3357 if (strcmp(name, "glStencilFillPathNV") == 0) |
3260 return reinterpret_cast<void*>(Mock_glStencilFillPathNV); | 3358 return reinterpret_cast<void*>(Mock_glStencilFillPathNV); |
3261 if (strcmp(name, "glStencilFunc") == 0) | 3359 if (strcmp(name, "glStencilFunc") == 0) |
3262 return reinterpret_cast<void*>(Mock_glStencilFunc); | 3360 return reinterpret_cast<void*>(Mock_glStencilFunc); |
3263 if (strcmp(name, "glStencilFuncSeparate") == 0) | 3361 if (strcmp(name, "glStencilFuncSeparate") == 0) |
3264 return reinterpret_cast<void*>(Mock_glStencilFuncSeparate); | 3362 return reinterpret_cast<void*>(Mock_glStencilFuncSeparate); |
3265 if (strcmp(name, "glStencilMask") == 0) | 3363 if (strcmp(name, "glStencilMask") == 0) |
3266 return reinterpret_cast<void*>(Mock_glStencilMask); | 3364 return reinterpret_cast<void*>(Mock_glStencilMask); |
3267 if (strcmp(name, "glStencilMaskSeparate") == 0) | 3365 if (strcmp(name, "glStencilMaskSeparate") == 0) |
3268 return reinterpret_cast<void*>(Mock_glStencilMaskSeparate); | 3366 return reinterpret_cast<void*>(Mock_glStencilMaskSeparate); |
3269 if (strcmp(name, "glStencilOp") == 0) | 3367 if (strcmp(name, "glStencilOp") == 0) |
3270 return reinterpret_cast<void*>(Mock_glStencilOp); | 3368 return reinterpret_cast<void*>(Mock_glStencilOp); |
3271 if (strcmp(name, "glStencilOpSeparate") == 0) | 3369 if (strcmp(name, "glStencilOpSeparate") == 0) |
3272 return reinterpret_cast<void*>(Mock_glStencilOpSeparate); | 3370 return reinterpret_cast<void*>(Mock_glStencilOpSeparate); |
| 3371 if (strcmp(name, "glStencilStrokePathInstancedNV") == 0) |
| 3372 return reinterpret_cast<void*>(Mock_glStencilStrokePathInstancedNV); |
3273 if (strcmp(name, "glStencilStrokePathNV") == 0) | 3373 if (strcmp(name, "glStencilStrokePathNV") == 0) |
3274 return reinterpret_cast<void*>(Mock_glStencilStrokePathNV); | 3374 return reinterpret_cast<void*>(Mock_glStencilStrokePathNV); |
| 3375 if (strcmp(name, "glStencilThenCoverFillPathInstancedNV") == 0) |
| 3376 return reinterpret_cast<void*>(Mock_glStencilThenCoverFillPathInstancedNV); |
3275 if (strcmp(name, "glStencilThenCoverFillPathNV") == 0) | 3377 if (strcmp(name, "glStencilThenCoverFillPathNV") == 0) |
3276 return reinterpret_cast<void*>(Mock_glStencilThenCoverFillPathNV); | 3378 return reinterpret_cast<void*>(Mock_glStencilThenCoverFillPathNV); |
| 3379 if (strcmp(name, "glStencilThenCoverStrokePathInstancedNV") == 0) |
| 3380 return reinterpret_cast<void*>( |
| 3381 Mock_glStencilThenCoverStrokePathInstancedNV); |
3277 if (strcmp(name, "glStencilThenCoverStrokePathNV") == 0) | 3382 if (strcmp(name, "glStencilThenCoverStrokePathNV") == 0) |
3278 return reinterpret_cast<void*>(Mock_glStencilThenCoverStrokePathNV); | 3383 return reinterpret_cast<void*>(Mock_glStencilThenCoverStrokePathNV); |
3279 if (strcmp(name, "glTestFenceAPPLE") == 0) | 3384 if (strcmp(name, "glTestFenceAPPLE") == 0) |
3280 return reinterpret_cast<void*>(Mock_glTestFenceAPPLE); | 3385 return reinterpret_cast<void*>(Mock_glTestFenceAPPLE); |
3281 if (strcmp(name, "glTestFenceNV") == 0) | 3386 if (strcmp(name, "glTestFenceNV") == 0) |
3282 return reinterpret_cast<void*>(Mock_glTestFenceNV); | 3387 return reinterpret_cast<void*>(Mock_glTestFenceNV); |
3283 if (strcmp(name, "glTexImage2D") == 0) | 3388 if (strcmp(name, "glTexImage2D") == 0) |
3284 return reinterpret_cast<void*>(Mock_glTexImage2D); | 3389 return reinterpret_cast<void*>(Mock_glTexImage2D); |
3285 if (strcmp(name, "glTexImage3D") == 0) | 3390 if (strcmp(name, "glTexImage3D") == 0) |
3286 return reinterpret_cast<void*>(Mock_glTexImage3D); | 3391 return reinterpret_cast<void*>(Mock_glTexImage3D); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3415 if (strcmp(name, "glVertexAttribPointer") == 0) | 3520 if (strcmp(name, "glVertexAttribPointer") == 0) |
3416 return reinterpret_cast<void*>(Mock_glVertexAttribPointer); | 3521 return reinterpret_cast<void*>(Mock_glVertexAttribPointer); |
3417 if (strcmp(name, "glViewport") == 0) | 3522 if (strcmp(name, "glViewport") == 0) |
3418 return reinterpret_cast<void*>(Mock_glViewport); | 3523 return reinterpret_cast<void*>(Mock_glViewport); |
3419 if (strcmp(name, "glWaitSync") == 0) | 3524 if (strcmp(name, "glWaitSync") == 0) |
3420 return reinterpret_cast<void*>(Mock_glWaitSync); | 3525 return reinterpret_cast<void*>(Mock_glWaitSync); |
3421 return reinterpret_cast<void*>(&MockInvalidFunction); | 3526 return reinterpret_cast<void*>(&MockInvalidFunction); |
3422 } | 3527 } |
3423 | 3528 |
3424 } // namespace gfx | 3529 } // namespace gfx |
OLD | NEW |