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 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 GLint zoffset, | 468 GLint zoffset, |
469 GLint x, | 469 GLint x, |
470 GLint y, | 470 GLint y, |
471 GLsizei width, | 471 GLsizei width, |
472 GLsizei height) { | 472 GLsizei height) { |
473 MakeFunctionUnique("glCopyTexSubImage3D"); | 473 MakeFunctionUnique("glCopyTexSubImage3D"); |
474 interface_->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, | 474 interface_->CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, |
475 width, height); | 475 width, height); |
476 } | 476 } |
477 | 477 |
| 478 void GL_BINDING_CALL MockGLInterface::Mock_glCoverFillPathInstancedNV( |
| 479 GLsizei numPaths, |
| 480 GLenum pathNameType, |
| 481 const void* paths, |
| 482 GLuint pathBase, |
| 483 GLenum coverMode, |
| 484 GLenum transformType, |
| 485 const GLfloat* transformValues) { |
| 486 MakeFunctionUnique("glCoverFillPathInstancedNV"); |
| 487 interface_->CoverFillPathInstancedNV(numPaths, pathNameType, paths, pathBase, |
| 488 coverMode, transformType, |
| 489 transformValues); |
| 490 } |
| 491 |
478 void GL_BINDING_CALL MockGLInterface::Mock_glCoverFillPathNV(GLuint path, | 492 void GL_BINDING_CALL MockGLInterface::Mock_glCoverFillPathNV(GLuint path, |
479 GLenum coverMode) { | 493 GLenum coverMode) { |
480 MakeFunctionUnique("glCoverFillPathNV"); | 494 MakeFunctionUnique("glCoverFillPathNV"); |
481 interface_->CoverFillPathNV(path, coverMode); | 495 interface_->CoverFillPathNV(path, coverMode); |
482 } | 496 } |
483 | 497 |
| 498 void GL_BINDING_CALL MockGLInterface::Mock_glCoverStrokePathInstancedNV( |
| 499 GLsizei numPaths, |
| 500 GLenum pathNameType, |
| 501 const void* paths, |
| 502 GLuint pathBase, |
| 503 GLenum coverMode, |
| 504 GLenum transformType, |
| 505 const GLfloat* transformValues) { |
| 506 MakeFunctionUnique("glCoverStrokePathInstancedNV"); |
| 507 interface_->CoverStrokePathInstancedNV(numPaths, pathNameType, paths, |
| 508 pathBase, coverMode, transformType, |
| 509 transformValues); |
| 510 } |
| 511 |
484 void GL_BINDING_CALL | 512 void GL_BINDING_CALL |
485 MockGLInterface::Mock_glCoverStrokePathNV(GLuint name, GLenum coverMode) { | 513 MockGLInterface::Mock_glCoverStrokePathNV(GLuint name, GLenum coverMode) { |
486 MakeFunctionUnique("glCoverStrokePathNV"); | 514 MakeFunctionUnique("glCoverStrokePathNV"); |
487 interface_->CoverStrokePathNV(name, coverMode); | 515 interface_->CoverStrokePathNV(name, coverMode); |
488 } | 516 } |
489 | 517 |
490 GLuint GL_BINDING_CALL MockGLInterface::Mock_glCreateProgram(void) { | 518 GLuint GL_BINDING_CALL MockGLInterface::Mock_glCreateProgram(void) { |
491 MakeFunctionUnique("glCreateProgram"); | 519 MakeFunctionUnique("glCreateProgram"); |
492 return interface_->CreateProgram(); | 520 return interface_->CreateProgram(); |
493 } | 521 } |
(...skipping 1548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2042 | 2070 |
2043 void GL_BINDING_CALL | 2071 void GL_BINDING_CALL |
2044 MockGLInterface::Mock_glShaderSource(GLuint shader, | 2072 MockGLInterface::Mock_glShaderSource(GLuint shader, |
2045 GLsizei count, | 2073 GLsizei count, |
2046 const char* const* str, | 2074 const char* const* str, |
2047 const GLint* length) { | 2075 const GLint* length) { |
2048 MakeFunctionUnique("glShaderSource"); | 2076 MakeFunctionUnique("glShaderSource"); |
2049 interface_->ShaderSource(shader, count, str, length); | 2077 interface_->ShaderSource(shader, count, str, length); |
2050 } | 2078 } |
2051 | 2079 |
| 2080 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFillPathInstancedNV( |
| 2081 GLsizei numPaths, |
| 2082 GLenum pathNameType, |
| 2083 const void* paths, |
| 2084 GLuint pathBase, |
| 2085 GLenum fillMode, |
| 2086 GLuint mask, |
| 2087 GLenum transformType, |
| 2088 const GLfloat* transformValues) { |
| 2089 MakeFunctionUnique("glStencilFillPathInstancedNV"); |
| 2090 interface_->StencilFillPathInstancedNV(numPaths, pathNameType, paths, |
| 2091 pathBase, fillMode, mask, |
| 2092 transformType, transformValues); |
| 2093 } |
| 2094 |
2052 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFillPathNV(GLuint path, | 2095 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFillPathNV(GLuint path, |
2053 GLenum fillMode, | 2096 GLenum fillMode, |
2054 GLuint mask) { | 2097 GLuint mask) { |
2055 MakeFunctionUnique("glStencilFillPathNV"); | 2098 MakeFunctionUnique("glStencilFillPathNV"); |
2056 interface_->StencilFillPathNV(path, fillMode, mask); | 2099 interface_->StencilFillPathNV(path, fillMode, mask); |
2057 } | 2100 } |
2058 | 2101 |
2059 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFunc(GLenum func, | 2102 void GL_BINDING_CALL MockGLInterface::Mock_glStencilFunc(GLenum func, |
2060 GLint ref, | 2103 GLint ref, |
2061 GLuint mask) { | 2104 GLuint mask) { |
(...skipping 28 matching lines...) Expand all Loading... |
2090 } | 2133 } |
2091 | 2134 |
2092 void GL_BINDING_CALL MockGLInterface::Mock_glStencilOpSeparate(GLenum face, | 2135 void GL_BINDING_CALL MockGLInterface::Mock_glStencilOpSeparate(GLenum face, |
2093 GLenum fail, | 2136 GLenum fail, |
2094 GLenum zfail, | 2137 GLenum zfail, |
2095 GLenum zpass) { | 2138 GLenum zpass) { |
2096 MakeFunctionUnique("glStencilOpSeparate"); | 2139 MakeFunctionUnique("glStencilOpSeparate"); |
2097 interface_->StencilOpSeparate(face, fail, zfail, zpass); | 2140 interface_->StencilOpSeparate(face, fail, zfail, zpass); |
2098 } | 2141 } |
2099 | 2142 |
| 2143 void GL_BINDING_CALL MockGLInterface::Mock_glStencilStrokePathInstancedNV( |
| 2144 GLsizei numPaths, |
| 2145 GLenum pathNameType, |
| 2146 const void* paths, |
| 2147 GLuint pathBase, |
| 2148 GLint ref, |
| 2149 GLuint mask, |
| 2150 GLenum transformType, |
| 2151 const GLfloat* transformValues) { |
| 2152 MakeFunctionUnique("glStencilStrokePathInstancedNV"); |
| 2153 interface_->StencilStrokePathInstancedNV(numPaths, pathNameType, paths, |
| 2154 pathBase, ref, mask, transformType, |
| 2155 transformValues); |
| 2156 } |
| 2157 |
2100 void GL_BINDING_CALL | 2158 void GL_BINDING_CALL |
2101 MockGLInterface::Mock_glStencilStrokePathNV(GLuint path, | 2159 MockGLInterface::Mock_glStencilStrokePathNV(GLuint path, |
2102 GLint reference, | 2160 GLint reference, |
2103 GLuint mask) { | 2161 GLuint mask) { |
2104 MakeFunctionUnique("glStencilStrokePathNV"); | 2162 MakeFunctionUnique("glStencilStrokePathNV"); |
2105 interface_->StencilStrokePathNV(path, reference, mask); | 2163 interface_->StencilStrokePathNV(path, reference, mask); |
2106 } | 2164 } |
2107 | 2165 |
2108 void GL_BINDING_CALL | 2166 void GL_BINDING_CALL |
| 2167 MockGLInterface::Mock_glStencilThenCoverFillPathInstancedNV( |
| 2168 GLsizei numPaths, |
| 2169 GLenum pathNameType, |
| 2170 const void* paths, |
| 2171 GLuint pathBase, |
| 2172 GLenum fillMode, |
| 2173 GLuint mask, |
| 2174 GLenum coverMode, |
| 2175 GLenum transformType, |
| 2176 const GLfloat* transformValues) { |
| 2177 MakeFunctionUnique("glStencilThenCoverFillPathInstancedNV"); |
| 2178 interface_->StencilThenCoverFillPathInstancedNV( |
| 2179 numPaths, pathNameType, paths, pathBase, fillMode, mask, coverMode, |
| 2180 transformType, transformValues); |
| 2181 } |
| 2182 |
| 2183 void GL_BINDING_CALL |
2109 MockGLInterface::Mock_glStencilThenCoverFillPathNV(GLuint path, | 2184 MockGLInterface::Mock_glStencilThenCoverFillPathNV(GLuint path, |
2110 GLenum fillMode, | 2185 GLenum fillMode, |
2111 GLuint mask, | 2186 GLuint mask, |
2112 GLenum coverMode) { | 2187 GLenum coverMode) { |
2113 MakeFunctionUnique("glStencilThenCoverFillPathNV"); | 2188 MakeFunctionUnique("glStencilThenCoverFillPathNV"); |
2114 interface_->StencilThenCoverFillPathNV(path, fillMode, mask, coverMode); | 2189 interface_->StencilThenCoverFillPathNV(path, fillMode, mask, coverMode); |
2115 } | 2190 } |
2116 | 2191 |
2117 void GL_BINDING_CALL | 2192 void GL_BINDING_CALL |
| 2193 MockGLInterface::Mock_glStencilThenCoverStrokePathInstancedNV( |
| 2194 GLsizei numPaths, |
| 2195 GLenum pathNameType, |
| 2196 const void* paths, |
| 2197 GLuint pathBase, |
| 2198 GLint ref, |
| 2199 GLuint mask, |
| 2200 GLenum coverMode, |
| 2201 GLenum transformType, |
| 2202 const GLfloat* transformValues) { |
| 2203 MakeFunctionUnique("glStencilThenCoverStrokePathInstancedNV"); |
| 2204 interface_->StencilThenCoverStrokePathInstancedNV( |
| 2205 numPaths, pathNameType, paths, pathBase, ref, mask, coverMode, |
| 2206 transformType, transformValues); |
| 2207 } |
| 2208 |
| 2209 void GL_BINDING_CALL |
2118 MockGLInterface::Mock_glStencilThenCoverStrokePathNV(GLuint path, | 2210 MockGLInterface::Mock_glStencilThenCoverStrokePathNV(GLuint path, |
2119 GLint reference, | 2211 GLint reference, |
2120 GLuint mask, | 2212 GLuint mask, |
2121 GLenum coverMode) { | 2213 GLenum coverMode) { |
2122 MakeFunctionUnique("glStencilThenCoverStrokePathNV"); | 2214 MakeFunctionUnique("glStencilThenCoverStrokePathNV"); |
2123 interface_->StencilThenCoverStrokePathNV(path, reference, mask, coverMode); | 2215 interface_->StencilThenCoverStrokePathNV(path, reference, mask, coverMode); |
2124 } | 2216 } |
2125 | 2217 |
2126 GLboolean GL_BINDING_CALL MockGLInterface::Mock_glTestFenceAPPLE(GLuint fence) { | 2218 GLboolean GL_BINDING_CALL MockGLInterface::Mock_glTestFenceAPPLE(GLuint fence) { |
2127 MakeFunctionUnique("glTestFenceAPPLE"); | 2219 MakeFunctionUnique("glTestFenceAPPLE"); |
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2794 if (strcmp(name, "glCompressedTexSubImage3D") == 0) | 2886 if (strcmp(name, "glCompressedTexSubImage3D") == 0) |
2795 return reinterpret_cast<void*>(Mock_glCompressedTexSubImage3D); | 2887 return reinterpret_cast<void*>(Mock_glCompressedTexSubImage3D); |
2796 if (strcmp(name, "glCopyBufferSubData") == 0) | 2888 if (strcmp(name, "glCopyBufferSubData") == 0) |
2797 return reinterpret_cast<void*>(Mock_glCopyBufferSubData); | 2889 return reinterpret_cast<void*>(Mock_glCopyBufferSubData); |
2798 if (strcmp(name, "glCopyTexImage2D") == 0) | 2890 if (strcmp(name, "glCopyTexImage2D") == 0) |
2799 return reinterpret_cast<void*>(Mock_glCopyTexImage2D); | 2891 return reinterpret_cast<void*>(Mock_glCopyTexImage2D); |
2800 if (strcmp(name, "glCopyTexSubImage2D") == 0) | 2892 if (strcmp(name, "glCopyTexSubImage2D") == 0) |
2801 return reinterpret_cast<void*>(Mock_glCopyTexSubImage2D); | 2893 return reinterpret_cast<void*>(Mock_glCopyTexSubImage2D); |
2802 if (strcmp(name, "glCopyTexSubImage3D") == 0) | 2894 if (strcmp(name, "glCopyTexSubImage3D") == 0) |
2803 return reinterpret_cast<void*>(Mock_glCopyTexSubImage3D); | 2895 return reinterpret_cast<void*>(Mock_glCopyTexSubImage3D); |
| 2896 if (strcmp(name, "glCoverFillPathInstancedNV") == 0) |
| 2897 return reinterpret_cast<void*>(Mock_glCoverFillPathInstancedNV); |
2804 if (strcmp(name, "glCoverFillPathNV") == 0) | 2898 if (strcmp(name, "glCoverFillPathNV") == 0) |
2805 return reinterpret_cast<void*>(Mock_glCoverFillPathNV); | 2899 return reinterpret_cast<void*>(Mock_glCoverFillPathNV); |
| 2900 if (strcmp(name, "glCoverStrokePathInstancedNV") == 0) |
| 2901 return reinterpret_cast<void*>(Mock_glCoverStrokePathInstancedNV); |
2806 if (strcmp(name, "glCoverStrokePathNV") == 0) | 2902 if (strcmp(name, "glCoverStrokePathNV") == 0) |
2807 return reinterpret_cast<void*>(Mock_glCoverStrokePathNV); | 2903 return reinterpret_cast<void*>(Mock_glCoverStrokePathNV); |
2808 if (strcmp(name, "glCreateProgram") == 0) | 2904 if (strcmp(name, "glCreateProgram") == 0) |
2809 return reinterpret_cast<void*>(Mock_glCreateProgram); | 2905 return reinterpret_cast<void*>(Mock_glCreateProgram); |
2810 if (strcmp(name, "glCreateShader") == 0) | 2906 if (strcmp(name, "glCreateShader") == 0) |
2811 return reinterpret_cast<void*>(Mock_glCreateShader); | 2907 return reinterpret_cast<void*>(Mock_glCreateShader); |
2812 if (strcmp(name, "glCullFace") == 0) | 2908 if (strcmp(name, "glCullFace") == 0) |
2813 return reinterpret_cast<void*>(Mock_glCullFace); | 2909 return reinterpret_cast<void*>(Mock_glCullFace); |
2814 if (strcmp(name, "glDeleteBuffers") == 0) | 2910 if (strcmp(name, "glDeleteBuffers") == 0) |
2815 return reinterpret_cast<void*>(Mock_glDeleteBuffers); | 2911 return reinterpret_cast<void*>(Mock_glDeleteBuffers); |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3241 if (strcmp(name, "glScissor") == 0) | 3337 if (strcmp(name, "glScissor") == 0) |
3242 return reinterpret_cast<void*>(Mock_glScissor); | 3338 return reinterpret_cast<void*>(Mock_glScissor); |
3243 if (strcmp(name, "glSetFenceAPPLE") == 0) | 3339 if (strcmp(name, "glSetFenceAPPLE") == 0) |
3244 return reinterpret_cast<void*>(Mock_glSetFenceAPPLE); | 3340 return reinterpret_cast<void*>(Mock_glSetFenceAPPLE); |
3245 if (strcmp(name, "glSetFenceNV") == 0) | 3341 if (strcmp(name, "glSetFenceNV") == 0) |
3246 return reinterpret_cast<void*>(Mock_glSetFenceNV); | 3342 return reinterpret_cast<void*>(Mock_glSetFenceNV); |
3247 if (strcmp(name, "glShaderBinary") == 0) | 3343 if (strcmp(name, "glShaderBinary") == 0) |
3248 return reinterpret_cast<void*>(Mock_glShaderBinary); | 3344 return reinterpret_cast<void*>(Mock_glShaderBinary); |
3249 if (strcmp(name, "glShaderSource") == 0) | 3345 if (strcmp(name, "glShaderSource") == 0) |
3250 return reinterpret_cast<void*>(Mock_glShaderSource); | 3346 return reinterpret_cast<void*>(Mock_glShaderSource); |
| 3347 if (strcmp(name, "glStencilFillPathInstancedNV") == 0) |
| 3348 return reinterpret_cast<void*>(Mock_glStencilFillPathInstancedNV); |
3251 if (strcmp(name, "glStencilFillPathNV") == 0) | 3349 if (strcmp(name, "glStencilFillPathNV") == 0) |
3252 return reinterpret_cast<void*>(Mock_glStencilFillPathNV); | 3350 return reinterpret_cast<void*>(Mock_glStencilFillPathNV); |
3253 if (strcmp(name, "glStencilFunc") == 0) | 3351 if (strcmp(name, "glStencilFunc") == 0) |
3254 return reinterpret_cast<void*>(Mock_glStencilFunc); | 3352 return reinterpret_cast<void*>(Mock_glStencilFunc); |
3255 if (strcmp(name, "glStencilFuncSeparate") == 0) | 3353 if (strcmp(name, "glStencilFuncSeparate") == 0) |
3256 return reinterpret_cast<void*>(Mock_glStencilFuncSeparate); | 3354 return reinterpret_cast<void*>(Mock_glStencilFuncSeparate); |
3257 if (strcmp(name, "glStencilMask") == 0) | 3355 if (strcmp(name, "glStencilMask") == 0) |
3258 return reinterpret_cast<void*>(Mock_glStencilMask); | 3356 return reinterpret_cast<void*>(Mock_glStencilMask); |
3259 if (strcmp(name, "glStencilMaskSeparate") == 0) | 3357 if (strcmp(name, "glStencilMaskSeparate") == 0) |
3260 return reinterpret_cast<void*>(Mock_glStencilMaskSeparate); | 3358 return reinterpret_cast<void*>(Mock_glStencilMaskSeparate); |
3261 if (strcmp(name, "glStencilOp") == 0) | 3359 if (strcmp(name, "glStencilOp") == 0) |
3262 return reinterpret_cast<void*>(Mock_glStencilOp); | 3360 return reinterpret_cast<void*>(Mock_glStencilOp); |
3263 if (strcmp(name, "glStencilOpSeparate") == 0) | 3361 if (strcmp(name, "glStencilOpSeparate") == 0) |
3264 return reinterpret_cast<void*>(Mock_glStencilOpSeparate); | 3362 return reinterpret_cast<void*>(Mock_glStencilOpSeparate); |
| 3363 if (strcmp(name, "glStencilStrokePathInstancedNV") == 0) |
| 3364 return reinterpret_cast<void*>(Mock_glStencilStrokePathInstancedNV); |
3265 if (strcmp(name, "glStencilStrokePathNV") == 0) | 3365 if (strcmp(name, "glStencilStrokePathNV") == 0) |
3266 return reinterpret_cast<void*>(Mock_glStencilStrokePathNV); | 3366 return reinterpret_cast<void*>(Mock_glStencilStrokePathNV); |
| 3367 if (strcmp(name, "glStencilThenCoverFillPathInstancedNV") == 0) |
| 3368 return reinterpret_cast<void*>(Mock_glStencilThenCoverFillPathInstancedNV); |
3267 if (strcmp(name, "glStencilThenCoverFillPathNV") == 0) | 3369 if (strcmp(name, "glStencilThenCoverFillPathNV") == 0) |
3268 return reinterpret_cast<void*>(Mock_glStencilThenCoverFillPathNV); | 3370 return reinterpret_cast<void*>(Mock_glStencilThenCoverFillPathNV); |
| 3371 if (strcmp(name, "glStencilThenCoverStrokePathInstancedNV") == 0) |
| 3372 return reinterpret_cast<void*>( |
| 3373 Mock_glStencilThenCoverStrokePathInstancedNV); |
3269 if (strcmp(name, "glStencilThenCoverStrokePathNV") == 0) | 3374 if (strcmp(name, "glStencilThenCoverStrokePathNV") == 0) |
3270 return reinterpret_cast<void*>(Mock_glStencilThenCoverStrokePathNV); | 3375 return reinterpret_cast<void*>(Mock_glStencilThenCoverStrokePathNV); |
3271 if (strcmp(name, "glTestFenceAPPLE") == 0) | 3376 if (strcmp(name, "glTestFenceAPPLE") == 0) |
3272 return reinterpret_cast<void*>(Mock_glTestFenceAPPLE); | 3377 return reinterpret_cast<void*>(Mock_glTestFenceAPPLE); |
3273 if (strcmp(name, "glTestFenceNV") == 0) | 3378 if (strcmp(name, "glTestFenceNV") == 0) |
3274 return reinterpret_cast<void*>(Mock_glTestFenceNV); | 3379 return reinterpret_cast<void*>(Mock_glTestFenceNV); |
3275 if (strcmp(name, "glTexImage2D") == 0) | 3380 if (strcmp(name, "glTexImage2D") == 0) |
3276 return reinterpret_cast<void*>(Mock_glTexImage2D); | 3381 return reinterpret_cast<void*>(Mock_glTexImage2D); |
3277 if (strcmp(name, "glTexImage3D") == 0) | 3382 if (strcmp(name, "glTexImage3D") == 0) |
3278 return reinterpret_cast<void*>(Mock_glTexImage3D); | 3383 return reinterpret_cast<void*>(Mock_glTexImage3D); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3407 if (strcmp(name, "glVertexAttribPointer") == 0) | 3512 if (strcmp(name, "glVertexAttribPointer") == 0) |
3408 return reinterpret_cast<void*>(Mock_glVertexAttribPointer); | 3513 return reinterpret_cast<void*>(Mock_glVertexAttribPointer); |
3409 if (strcmp(name, "glViewport") == 0) | 3514 if (strcmp(name, "glViewport") == 0) |
3410 return reinterpret_cast<void*>(Mock_glViewport); | 3515 return reinterpret_cast<void*>(Mock_glViewport); |
3411 if (strcmp(name, "glWaitSync") == 0) | 3516 if (strcmp(name, "glWaitSync") == 0) |
3412 return reinterpret_cast<void*>(Mock_glWaitSync); | 3517 return reinterpret_cast<void*>(Mock_glWaitSync); |
3413 return reinterpret_cast<void*>(&MockInvalidFunction); | 3518 return reinterpret_cast<void*>(&MockInvalidFunction); |
3414 } | 3519 } |
3415 | 3520 |
3416 } // namespace gfx | 3521 } // namespace gfx |
OLD | NEW |