diff options
author | Ian Romanick <[email protected]> | 2012-10-22 14:08:31 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2012-10-24 11:03:16 -0700 |
commit | be1c5f44988fd3d4e2a4f1437a8367f3bd073161 (patch) | |
tree | 0f471f6e3eb7dcfdc7806165e92b8aad73c3b8d2 /src/mesa/main/pack.c | |
parent | eee1ff423c6a0c9c776b4e76b79bb5ed5480d83c (diff) |
mesa: Use MIN instead of CLAMP for unsigned source data
This silences a zillion GCC warnings like:
../../../src/mesa/main/pack.c: In function '_mesa_pack_rgba_span_from_uints':
../../../src/mesa/main/pack.c:560:13: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/mesa/main/pack.c')
-rw-r--r-- | src/mesa/main/pack.c | 216 |
1 files changed, 108 insertions, 108 deletions
diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index a23bc998dd7..4f0caa7636c 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -557,9 +557,9 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGB) || (dstFormat == GL_RGB_INTEGER)) { GLubyte *dst = (GLubyte *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 7) << 5) - | (CLAMP(rgba[i][GCOMP], 0, 7) << 2) - | (CLAMP(rgba[i][BCOMP], 0, 3) ); + dst[i] = (MIN2(rgba[i][RCOMP], 7) << 5) + | (MIN2(rgba[i][GCOMP], 7) << 2) + | (MIN2(rgba[i][BCOMP], 3) ); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -569,9 +569,9 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGB) || (dstFormat == GL_RGB_INTEGER)) { GLubyte *dst = (GLubyte *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 7) ) - | (CLAMP(rgba[i][GCOMP], 0, 7) << 3) - | (CLAMP(rgba[i][BCOMP], 0, 3) << 6); + dst[i] = (MIN2(rgba[i][RCOMP], 7) ) + | (MIN2(rgba[i][GCOMP], 7) << 3) + | (MIN2(rgba[i][BCOMP], 3) << 6); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -581,9 +581,9 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGB) || (dstFormat == GL_RGB_INTEGER)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 31) << 11) - | (CLAMP(rgba[i][GCOMP], 0, 63) << 5) - | (CLAMP(rgba[i][BCOMP], 0, 31) ); + dst[i] = (MIN2(rgba[i][RCOMP], 31) << 11) + | (MIN2(rgba[i][GCOMP], 63) << 5) + | (MIN2(rgba[i][BCOMP], 31) ); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -593,9 +593,9 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGB) || (dstFormat == GL_RGB_INTEGER)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 31) ) - | (CLAMP(rgba[i][GCOMP], 0, 63) << 5) - | (CLAMP(rgba[i][BCOMP], 0, 31) << 11); + dst[i] = (MIN2(rgba[i][RCOMP], 31) ) + | (MIN2(rgba[i][GCOMP], 63) << 5) + | (MIN2(rgba[i][BCOMP], 31) << 11); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -605,28 +605,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 15) << 12) - | (CLAMP(rgba[i][GCOMP], 0, 15) << 8) - | (CLAMP(rgba[i][BCOMP], 0, 15) << 4) - | (CLAMP(rgba[i][ACOMP], 0, 15) ); + dst[i] = (MIN2(rgba[i][RCOMP], 15) << 12) + | (MIN2(rgba[i][GCOMP], 15) << 8) + | (MIN2(rgba[i][BCOMP], 15) << 4) + | (MIN2(rgba[i][ACOMP], 15) ); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 15) << 12) - | (CLAMP(rgba[i][GCOMP], 0, 15) << 8) - | (CLAMP(rgba[i][RCOMP], 0, 15) << 4) - | (CLAMP(rgba[i][ACOMP], 0, 15) ); + dst[i] = (MIN2(rgba[i][BCOMP], 15) << 12) + | (MIN2(rgba[i][GCOMP], 15) << 8) + | (MIN2(rgba[i][RCOMP], 15) << 4) + | (MIN2(rgba[i][ACOMP], 15) ); } } else if (dstFormat == GL_ABGR_EXT) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 15) << 12) - | (CLAMP(rgba[i][BCOMP], 0, 15) << 8) - | (CLAMP(rgba[i][GCOMP], 0, 15) << 4) - | (CLAMP(rgba[i][RCOMP], 0, 15) ); + dst[i] = (MIN2(rgba[i][ACOMP], 15) << 12) + | (MIN2(rgba[i][BCOMP], 15) << 8) + | (MIN2(rgba[i][GCOMP], 15) << 4) + | (MIN2(rgba[i][RCOMP], 15) ); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -636,28 +636,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 15) ) - | (CLAMP(rgba[i][GCOMP], 0, 15) << 4) - | (CLAMP(rgba[i][BCOMP], 0, 15) << 8) - | (CLAMP(rgba[i][ACOMP], 0, 15) << 12); + dst[i] = (MIN2(rgba[i][RCOMP], 15) ) + | (MIN2(rgba[i][GCOMP], 15) << 4) + | (MIN2(rgba[i][BCOMP], 15) << 8) + | (MIN2(rgba[i][ACOMP], 15) << 12); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 15) ) - | (CLAMP(rgba[i][GCOMP], 0, 15) << 4) - | (CLAMP(rgba[i][RCOMP], 0, 15) << 8) - | (CLAMP(rgba[i][ACOMP], 0, 15) << 12); + dst[i] = (MIN2(rgba[i][BCOMP], 15) ) + | (MIN2(rgba[i][GCOMP], 15) << 4) + | (MIN2(rgba[i][RCOMP], 15) << 8) + | (MIN2(rgba[i][ACOMP], 15) << 12); } } else if (dstFormat == GL_ABGR_EXT) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 15) ) - | (CLAMP(rgba[i][BCOMP], 0, 15) << 4) - | (CLAMP(rgba[i][GCOMP], 0, 15) << 8) - | (CLAMP(rgba[i][RCOMP], 0, 15) << 12); + dst[i] = (MIN2(rgba[i][ACOMP], 15) ) + | (MIN2(rgba[i][BCOMP], 15) << 4) + | (MIN2(rgba[i][GCOMP], 15) << 8) + | (MIN2(rgba[i][RCOMP], 15) << 12); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -667,28 +667,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 31) << 11) - | (CLAMP(rgba[i][GCOMP], 0, 31) << 6) - | (CLAMP(rgba[i][BCOMP], 0, 31) << 1) - | (CLAMP(rgba[i][ACOMP], 0, 1) ); + dst[i] = (MIN2(rgba[i][RCOMP], 31) << 11) + | (MIN2(rgba[i][GCOMP], 31) << 6) + | (MIN2(rgba[i][BCOMP], 31) << 1) + | (MIN2(rgba[i][ACOMP], 1) ); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 31) << 11) - | (CLAMP(rgba[i][GCOMP], 0, 31) << 6) - | (CLAMP(rgba[i][RCOMP], 0, 31) << 1) - | (CLAMP(rgba[i][ACOMP], 0, 1) ); + dst[i] = (MIN2(rgba[i][BCOMP], 31) << 11) + | (MIN2(rgba[i][GCOMP], 31) << 6) + | (MIN2(rgba[i][RCOMP], 31) << 1) + | (MIN2(rgba[i][ACOMP], 1) ); } } else if (dstFormat == GL_ABGR_EXT) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 31) << 11) - | (CLAMP(rgba[i][BCOMP], 0, 31) << 6) - | (CLAMP(rgba[i][GCOMP], 0, 31) << 1) - | (CLAMP(rgba[i][RCOMP], 0, 1) ); + dst[i] = (MIN2(rgba[i][ACOMP], 31) << 11) + | (MIN2(rgba[i][BCOMP], 31) << 6) + | (MIN2(rgba[i][GCOMP], 31) << 1) + | (MIN2(rgba[i][RCOMP], 1) ); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -698,28 +698,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 31) ) - | (CLAMP(rgba[i][GCOMP], 0, 31) << 5) - | (CLAMP(rgba[i][BCOMP], 0, 31) << 10) - | (CLAMP(rgba[i][ACOMP], 0, 1) << 15); + dst[i] = (MIN2(rgba[i][RCOMP], 31) ) + | (MIN2(rgba[i][GCOMP], 31) << 5) + | (MIN2(rgba[i][BCOMP], 31) << 10) + | (MIN2(rgba[i][ACOMP], 1) << 15); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 31) ) - | (CLAMP(rgba[i][GCOMP], 0, 31) << 5) - | (CLAMP(rgba[i][RCOMP], 0, 31) << 10) - | (CLAMP(rgba[i][ACOMP], 0, 1) << 15); + dst[i] = (MIN2(rgba[i][BCOMP], 31) ) + | (MIN2(rgba[i][GCOMP], 31) << 5) + | (MIN2(rgba[i][RCOMP], 31) << 10) + | (MIN2(rgba[i][ACOMP], 1) << 15); } } else if (dstFormat == GL_ABGR_EXT) { GLushort *dst = (GLushort *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 31) ) - | (CLAMP(rgba[i][BCOMP], 0, 31) << 5) - | (CLAMP(rgba[i][GCOMP], 0, 31) << 10) - | (CLAMP(rgba[i][RCOMP], 0, 1) << 15); + dst[i] = (MIN2(rgba[i][ACOMP], 31) ) + | (MIN2(rgba[i][BCOMP], 31) << 5) + | (MIN2(rgba[i][GCOMP], 31) << 10) + | (MIN2(rgba[i][RCOMP], 1) << 15); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -729,28 +729,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 255) << 24) - | (CLAMP(rgba[i][GCOMP], 0, 255) << 16) - | (CLAMP(rgba[i][BCOMP], 0, 255) << 8) - | (CLAMP(rgba[i][ACOMP], 0, 255) ); + dst[i] = (MIN2(rgba[i][RCOMP], 255) << 24) + | (MIN2(rgba[i][GCOMP], 255) << 16) + | (MIN2(rgba[i][BCOMP], 255) << 8) + | (MIN2(rgba[i][ACOMP], 255) ); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 255) << 24) - | (CLAMP(rgba[i][GCOMP], 0, 255) << 16) - | (CLAMP(rgba[i][RCOMP], 0, 255) << 8) - | (CLAMP(rgba[i][ACOMP], 0, 255) ); + dst[i] = (MIN2(rgba[i][BCOMP], 255) << 24) + | (MIN2(rgba[i][GCOMP], 255) << 16) + | (MIN2(rgba[i][RCOMP], 255) << 8) + | (MIN2(rgba[i][ACOMP], 255) ); } } else if (dstFormat == GL_ABGR_EXT) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 255) << 24) - | (CLAMP(rgba[i][BCOMP], 0, 255) << 16) - | (CLAMP(rgba[i][GCOMP], 0, 255) << 8) - | (CLAMP(rgba[i][RCOMP], 0, 255) ); + dst[i] = (MIN2(rgba[i][ACOMP], 255) << 24) + | (MIN2(rgba[i][BCOMP], 255) << 16) + | (MIN2(rgba[i][GCOMP], 255) << 8) + | (MIN2(rgba[i][RCOMP], 255) ); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -760,28 +760,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 255) ) - | (CLAMP(rgba[i][GCOMP], 0, 255) << 8) - | (CLAMP(rgba[i][BCOMP], 0, 255) << 16) - | (CLAMP(rgba[i][ACOMP], 0, 255) << 24); + dst[i] = (MIN2(rgba[i][RCOMP], 255) ) + | (MIN2(rgba[i][GCOMP], 255) << 8) + | (MIN2(rgba[i][BCOMP], 255) << 16) + | (MIN2(rgba[i][ACOMP], 255) << 24); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 255) ) - | (CLAMP(rgba[i][GCOMP], 0, 255) << 8) - | (CLAMP(rgba[i][RCOMP], 0, 255) << 16) - | (CLAMP(rgba[i][ACOMP], 0, 255) << 24); + dst[i] = (MIN2(rgba[i][BCOMP], 255) ) + | (MIN2(rgba[i][GCOMP], 255) << 8) + | (MIN2(rgba[i][RCOMP], 255) << 16) + | (MIN2(rgba[i][ACOMP], 255) << 24); } } else if (dstFormat == GL_ABGR_EXT) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 255) ) - | (CLAMP(rgba[i][BCOMP], 0, 255) << 8) - | (CLAMP(rgba[i][GCOMP], 0, 255) << 16) - | (CLAMP(rgba[i][RCOMP], 0, 255) << 24); + dst[i] = (MIN2(rgba[i][ACOMP], 255) ) + | (MIN2(rgba[i][BCOMP], 255) << 8) + | (MIN2(rgba[i][GCOMP], 255) << 16) + | (MIN2(rgba[i][RCOMP], 255) << 24); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -791,28 +791,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 1023) << 22) - | (CLAMP(rgba[i][GCOMP], 0, 1023) << 12) - | (CLAMP(rgba[i][BCOMP], 0, 1023) << 2) - | (CLAMP(rgba[i][ACOMP], 0, 3) ); + dst[i] = (MIN2(rgba[i][RCOMP], 1023) << 22) + | (MIN2(rgba[i][GCOMP], 1023) << 12) + | (MIN2(rgba[i][BCOMP], 1023) << 2) + | (MIN2(rgba[i][ACOMP], 3) ); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 1023) << 22) - | (CLAMP(rgba[i][GCOMP], 0, 1023) << 12) - | (CLAMP(rgba[i][RCOMP], 0, 1023) << 2) - | (CLAMP(rgba[i][ACOMP], 0, 3) ); + dst[i] = (MIN2(rgba[i][BCOMP], 1023) << 22) + | (MIN2(rgba[i][GCOMP], 1023) << 12) + | (MIN2(rgba[i][RCOMP], 1023) << 2) + | (MIN2(rgba[i][ACOMP], 3) ); } } else if (dstFormat == GL_ABGR_EXT) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 1023) << 22) - | (CLAMP(rgba[i][BCOMP], 0, 1023) << 12) - | (CLAMP(rgba[i][GCOMP], 0, 1023) << 2) - | (CLAMP(rgba[i][RCOMP], 0, 3) ); + dst[i] = (MIN2(rgba[i][ACOMP], 1023) << 22) + | (MIN2(rgba[i][BCOMP], 1023) << 12) + | (MIN2(rgba[i][GCOMP], 1023) << 2) + | (MIN2(rgba[i][RCOMP], 3) ); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); @@ -822,28 +822,28 @@ _mesa_pack_rgba_span_from_uints(struct gl_context *ctx, GLuint n, GLuint rgba[][ if ((dstFormat == GL_RGBA) || (dstFormat == GL_RGBA_INTEGER_EXT)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][RCOMP], 0, 1023) ) - | (CLAMP(rgba[i][GCOMP], 0, 1023) << 10) - | (CLAMP(rgba[i][BCOMP], 0, 1023) << 20) - | (CLAMP(rgba[i][ACOMP], 0, 3) << 30); + dst[i] = (MIN2(rgba[i][RCOMP], 1023) ) + | (MIN2(rgba[i][GCOMP], 1023) << 10) + | (MIN2(rgba[i][BCOMP], 1023) << 20) + | (MIN2(rgba[i][ACOMP], 3) << 30); } } else if ((dstFormat == GL_BGRA) || (dstFormat == GL_BGRA_INTEGER)) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][BCOMP], 0, 1023) ) - | (CLAMP(rgba[i][GCOMP], 0, 1023) << 10) - | (CLAMP(rgba[i][RCOMP], 0, 1023) << 20) - | (CLAMP(rgba[i][ACOMP], 0, 3) << 30); + dst[i] = (MIN2(rgba[i][BCOMP], 1023) ) + | (MIN2(rgba[i][GCOMP], 1023) << 10) + | (MIN2(rgba[i][RCOMP], 1023) << 20) + | (MIN2(rgba[i][ACOMP], 3) << 30); } } else if (dstFormat == GL_ABGR_EXT) { GLuint *dst = (GLuint *) dstAddr; for (i=0;i<n;i++) { - dst[i] = (CLAMP(rgba[i][ACOMP], 0, 1023) ) - | (CLAMP(rgba[i][BCOMP], 0, 1023) << 10) - | (CLAMP(rgba[i][GCOMP], 0, 1023) << 20) - | (CLAMP(rgba[i][RCOMP], 0, 3) << 30); + dst[i] = (MIN2(rgba[i][ACOMP], 1023) ) + | (MIN2(rgba[i][BCOMP], 1023) << 10) + | (MIN2(rgba[i][GCOMP], 1023) << 20) + | (MIN2(rgba[i][RCOMP], 3) << 30); } } else { _pack_rgba_span_from_uints_problem(ctx, dstFormat, dstType); |