skia2/include/core
Mike Klein 37bbfe3ea4 Make SkASSERT and co. constexpr compatible.
One of the nice bits of constexpr is that an expression is constexpr if
there exists any set of argument values that make it constant.  It
doesn't have to be constant for _all_ argument values.

This means that this expression is constexpr:

   condition ? constexpr_value
             : []{ arbitrary non-constexpr code; }();

... it's constant when condition is true.

We can use this to rewrite SkASSERT(condition) as

    ( (condition) ? (void)0
                  : []{ SK_ABORT(#condition); }() )

Both sides of the ?: are void, and when condition is true at compile
time the right hand side disappears completely.  In C++11 constexpr
functions we just have to use the comma operator to jam SkASSERT()
into the order of evaluation:

    constexpr uint32_t foo(int x, int y) {
        return SkASSERT(x > y),
               x - y;
    }

Change-Id: I21878d14fb2af76d93591d2ae229460ee825cfde
Reviewed-on: https://skia-review.googlesource.com/52663
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Trent Apted <tapted@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2017-09-29 13:49:04 +00:00
..
SkAnnotation.h remove unneeded flag for annotations 2016-03-05 06:00:12 -08:00
SkBBHFactory.h Remove stray semicolons. 2016-09-27 14:04:26 +00:00
SkBitmap.h Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap" 2017-09-27 23:15:07 +00:00
SkBlendMode.h move SkBlendMode_Name into public (for chrome) 2016-11-16 19:17:21 +00:00
SkBlurTypes.h move common blur types into central header 2014-04-28 16:25:35 +00:00
SkCanvas.h regenerate includes 2017-09-21 16:49:10 +00:00
SkClipOp.h add flag to hide deprecated clipops 2017-05-10 18:56:14 +00:00
SkColor.h Make SkASSERT and co. constexpr compatible. 2017-09-29 13:49:04 +00:00
SkColorFilter.h Make GrFragmentProcessor be non-refcounted and use std::unique_ptr. 2017-08-11 14:13:26 +00:00
SkColorPriv.h add back SkPacked16toX32 to SkColorPriv 2017-09-19 13:12:39 +00:00
SkColorSpace.h Hide ctors of SkShader, SkImage & SkColorSpace 2017-05-26 22:34:00 +00:00
SkColorSpaceXform.h add helper static to SkColorSpaceXform 2017-05-22 18:08:13 +00:00
SkColorSpaceXformCanvas.h Make xformer class for SkCSXCanvas, use for draw loopers 2017-03-30 18:02:58 +00:00
SkData.h Class delete call unsized delete when size not known. 2016-10-19 21:41:00 +00:00
SkDataTable.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkDeferredDisplayListRecorder.h DeferredDisplayList API proposal 2017-08-30 19:25:47 +00:00
SkDeque.h This CL addresses "SkCanvas::save flags are not respected by GPU backend" (https://code.google.com/p/skia/issues/detail?id=1503). 2013-08-16 00:53:34 +00:00
SkDocument.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkDrawable.h Add SK_API to APIs used by the android framework. 2017-09-21 18:14:36 +00:00
SkDrawFilter.h SkPaintFilterCanvas cleanup 2016-01-12 12:14:10 -08:00
SkDrawLooper.h Make xformer class for SkCSXCanvas, use for draw loopers 2017-03-30 18:02:58 +00:00
SkEncodedImageFormat.h Reland "skia: add heif decoding support" 2017-08-18 14:40:29 +00:00
SkExecutor.h Add FIFO thread pool, use it for most things. 2017-09-01 16:19:47 +00:00
SkFilterQuality.h Skia Filter Quality and Scaling Metrics 2016-04-18 09:14:00 -07:00
SkFlattenable.h Remove SkLightingShader and associated classes 2017-08-07 13:33:49 +00:00
SkFlattenableSerialization.h hide setImageFilter(ptr) 2016-11-01 16:05:41 +00:00
SkFont.h typedef uint16_t SkGlyphID 2016-07-25 07:18:12 -07:00
SkFontArguments.h Add SkTypeface::getVariationDesignPosition. 2017-02-24 16:59:05 +00:00
SkFontLCDConfig.h Add SK_API to SkFontLCDConfig. 2016-05-03 11:56:03 -07:00
SkFontStyle.h Remove union from SkFontStyle. 2017-07-31 20:24:47 +00:00
SkGraphics.h add API to change max pointsize for font cache 2017-06-01 20:55:16 +00:00
SkICC.h Improve comment in SkICC.h 2017-02-24 20:35:57 +00:00
SkImage.h make SkColorTable private 2017-07-22 20:47:37 +00:00
SkImageDeserializer.h Deserialize pictures with custom image-deserializer 2016-08-11 03:55:15 -07:00
SkImageEncoder.h Add support for webp lossless compression 2017-05-17 02:24:29 +00:00
SkImageFilter.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkImageGenerator.h Rework GrSamplerParams to be more compact and use its own wrap mode enum. 2017-09-07 16:58:31 +00:00
SkImageInfo.h Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap" 2017-09-27 23:15:07 +00:00
SkMallocPixelRef.h removed dead colortable code 2017-07-19 22:20:57 +00:00
SkMask.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkMaskFilter.h Retract GrTexture.h a bit 2017-06-09 17:29:09 +00:00
SkMath.h SkLiteDL: remove freelisting, add reset() and SKLITEDL_PAGE knob. 2016-08-16 09:36:18 -07:00
SkMatrix44.h Suppress float-cast-overflow for double-to-float in SkMatrix{,44} 2017-09-18 17:23:39 +00:00
SkMatrix.h minor changes to SkMatrix.h and SkRect.h 2017-09-19 13:54:59 +00:00
SkMetaData.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkMilestone.h Update Skia milestone to 63 2017-08-31 13:34:51 +00:00
SkMultiPictureDraw.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkOverdrawCanvas.h Add SK_API to SkOverdrawCanvas and SkOverdrawColorFilter. 2017-08-18 16:53:49 +00:00
SkPaint.h regenerate includes 2017-09-21 16:49:10 +00:00
SkPath.h make SkPath::fConvexity atomic 2017-09-28 01:59:06 +00:00
SkPathEffect.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkPathMeasure.h Move seg_to to a new header, define SkSegType enum there 2016-08-09 09:38:30 -07:00
SkPicture.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkPictureAnalyzer.h Revert[2] "remove SK_SUPPORT_LEGACY_CLIP_REGIONOPS" 2016-12-09 14:33:41 +00:00
SkPictureRecorder.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkPixelRef.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkPixelSerializer.h Revert "Revert "remove dead code for legacy image encode api"" 2017-07-18 21:08:35 +00:00
SkPixmap.h Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap" 2017-09-27 23:15:07 +00:00
SkPngChunkReader.h Delete SkImageDecoder 2016-03-24 10:41:47 -07:00
SkPoint3.h Update SkLightingShader to support rotation 2015-08-20 05:15:07 -07:00
SkPoint.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkPostConfig.h clang on windows support 2017-07-31 18:39:23 +00:00
SkPreConfig.h use __BYTE_ORDER__ macro to detect endianness when available 2016-11-28 21:07:47 +00:00
SkRasterHandleAllocator.h Make header files self-sufficient 2017-02-10 01:19:52 +00:00
SkRasterizer.h Revert of Delete SkFlattenable::Type (patchset #2 id:20001 of https://codereview.chromium.org/1834303003/ ) 2016-04-04 14:57:19 -07:00
SkRect.h minor changes to SkMatrix.h and SkRect.h 2017-09-19 13:54:59 +00:00
SkRefCnt.h Only perform SkSafeRef race detection if on android framework 2017-03-23 14:32:47 +00:00
SkRegion.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkRRect.h Serialize rrect/oval paths as rrects rather than points and verbs. 2017-09-21 18:16:13 +00:00
SkRSXform.h Make header files self-sufficient 2017-02-10 01:19:52 +00:00
SkRWBuffer.h Remove deprecated SkRWBuffer snapshot methods 2017-06-02 15:44:57 +00:00
SkScalar.h Change SkScalarTruncToInt to saturate. 2017-09-18 18:26:13 +00:00
SkShader.h SkShader::asACompose is android-only 2017-06-09 17:29:08 +00:00
SkSize.h SkSize can be aggregate-initialized 2017-04-11 18:57:20 +00:00
SkStream.h remove dead code for STREAM_API 2017-09-20 20:43:50 +00:00
SkString.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkStrokeRec.h Unify implementations of stroking radius calculationsns 2016-04-29 07:07:03 -07:00
SkSurface.h Revert "Revert "Revert "Revert "Remove GrBackendRenderTargetDesc in favor of GrBackendRenderTarget."""" 2017-08-31 20:04:12 +00:00
SkSurfaceProps.h remove disable aa/dither flags from Props -- never used 2016-08-18 09:30:44 -07:00
SkSwizzle.h Add missing SK_API to SkSwizzle.h 2016-03-24 07:50:14 -07:00
SkTextBlob.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkTime.h Make SkTime SK_API so that SkTime::GetDateTime() is visible to the clients. 2016-05-02 15:04:46 -07:00
SkTLazy.h Fix SkTLazy(const T*) initialization 2016-08-24 11:03:24 -07:00
SkTraceMemoryDump.h Add support for light dumps in SkTraceMemoryDump interface. 2015-09-30 04:31:23 -07:00
SkTypeface.h Remove SkTypeface::style(). 2017-08-15 20:57:57 +00:00
SkTypes.h Make SkASSERT and co. constexpr compatible. 2017-09-29 13:49:04 +00:00
SkUnPreMultiply.h Factor out UnPreMultiplyPreservingByteOrder 2014-01-15 22:24:58 +00:00
SkVertices.h Add SK_API to APIs used by the android framework. 2017-09-21 18:14:36 +00:00
SkWriteBuffer.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkWriter32.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkYUVSizeInfo.h Make header files self-sufficient 2017-02-10 01:19:52 +00:00