Last active
January 25, 2016 21:37
-
-
Save HalCanary/104983bb370c2216fbba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright 2016 Google Inc. | |
* | |
* Use of this source code is governed by a BSD-style license that can be | |
* found in the LICENSE file. | |
*/ | |
#ifndef SkValues_DEFINED | |
#define SkValues_DEFINED | |
#define SK_TAGGED_UNION_U_1(X) X* f##X; | |
#define SK_TAGGED_UNION_U_2(X, ...) X* f##X; SK_TAGGED_UNION_U_1(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_3(X, ...) X* f##X; SK_TAGGED_UNION_U_2(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_4(X, ...) X* f##X; SK_TAGGED_UNION_U_3(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_5(X, ...) X* f##X; SK_TAGGED_UNION_U_4(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_6(X, ...) X* f##X; SK_TAGGED_UNION_U_5(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_7(X, ...) X* f##X; SK_TAGGED_UNION_U_6(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_8(X, ...) X* f##X; SK_TAGGED_UNION_U_7(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_9(X, ...) X* f##X; SK_TAGGED_UNION_U_8(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_10(X, ...) X* f##X; SK_TAGGED_UNION_U_9(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_11(X, ...) X* f##X; SK_TAGGED_UNION_U_10(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_12(X, ...) X* f##X; SK_TAGGED_UNION_U_11(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_13(X, ...) X* f##X; SK_TAGGED_UNION_U_12(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_14(X, ...) X* f##X; SK_TAGGED_UNION_U_13(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_15(X, ...) X* f##X; SK_TAGGED_UNION_U_14(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_16(X, ...) X* f##X; SK_TAGGED_UNION_U_15(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_17(X, ...) X* f##X; SK_TAGGED_UNION_U_16(__VA_ARGS__) | |
#define SK_TAGGED_UNION_U_18(X, ...) X* f##X; SK_TAGGED_UNION_U_17(__VA_ARGS__) | |
#define SK_TAGGED_UNION_CAT0(x, y) x ## y | |
#define SK_TAGGED_UNION_CAT(x, y) SK_TAGGED_UNION_CAT0(x, y) | |
#define SK_TAGGED_UNION_NARGS_SEQ(_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,N,...) N | |
#define SK_TAGGED_UNION_NARGS(...) \ | |
SK_TAGGED_UNION_NARGS_SEQ(__VA_ARGS__,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1) | |
#define SK_TAGGED_UNION_MAKE_PTRS(...) SK_TAGGED_UNION_CAT(SK_TAGGED_UNION_U_, SK_TAGGED_UNION_NARGS(__VA_ARGS__))(__VA_ARGS__) | |
#define SK_TAGGED_UNION(STRUCT_NAME, ...) \ | |
struct STRUCT_NAME { \ | |
enum class Type { __VA_ARGS__ }; \ | |
Type fType; \ | |
union { SK_TAGGED_UNION_MAKE_PTRS(__VA_ARGS__) }; \ | |
}; | |
namespace SkValue { | |
struct SrcOverXfermode_v1 {}; | |
struct ArithmeticXfermode_v1 {}; | |
struct LerpXfermode_v1 {}; | |
struct PixelXorXfermode_v1 {}; | |
struct ProcCoeffXfermode_v1 {}; | |
SK_TAGGED_UNION( | |
Xfermode_v1, | |
SrcOverXfermode_v1, | |
ArithmeticXfermode_v1, | |
LerpXfermode_v1, | |
PixelXorXfermode_v1, | |
ProcCoeffXfermode_v1) | |
/* | |
struct Xfermode_v1 { | |
enum class Type { | |
SrcOverXfermode_v1, | |
ArithmeticXfermode_v1, | |
LerpXfermode_v1, | |
PixelXorXfermode_v1, | |
ProcCoeffXfermode_v1 | |
}; | |
Type fType; | |
union { | |
SrcOverXfermode_v1* fSrcOverXfermode_v1; | |
ArithmeticXfermode_v1* fArithmeticXfermode_v1; | |
LerpXfermode_v1* fLerpXfermode_v1; | |
PixelXorXfermode_v1* fPixelXorXfermode_v1; | |
ProcCoeffXfermode_v1* fProcCoeffXfermode_v1; | |
}; | |
}; | |
*/ | |
struct BitmapProcShader_v1 {}; | |
struct ThreeDeeShader_v1 {}; | |
struct ColorFilterShader_v1 {}; | |
struct ComposeShader_v1 {}; | |
struct LightingShader_v1 {}; | |
struct LightingShader_Light_v1 {}; | |
struct LocalMatrixShader_v1 {}; | |
struct PictureShader_v1 {}; | |
struct ColorShader_v1 {}; | |
struct PerlinNoiseShader_v1 {}; | |
struct LinearGradientShader_v1 {}; | |
struct RadialGradientShader_v1 {}; | |
struct SweepGradientShader_v1 {}; | |
struct TwoPointConicalGradientShader_v1 {}; | |
struct ImageShader_v1 {}; | |
SK_TAGGED_UNION( | |
Shader_v1, | |
BitmapProcShader_v1, | |
ThreeDeeShader_v1, | |
ColorFilterShader_v1, | |
ComposeShader_v1, | |
LightingShader_v1, | |
LightingShader_Light_v1, | |
LocalMatrixShader_v1, | |
PictureShader_v1, | |
ColorShader_v1, | |
PerlinNoiseShader_v1, | |
LinearGradientShader_v1, | |
RadialGradientShader_v1, | |
SweepGradientShader_v1, | |
TwoPointConicalGradientShader_v1, | |
ImageShader_v1) | |
/* | |
struct Shader_v1 { | |
enum class Type { | |
BitmapProcShader_v1, | |
ThreeDeeShader_v1, | |
ColorFilterShader_v1, | |
ComposeShader_v1, | |
LightingShader_v1, | |
LightingShader_Light_v1, | |
LocalMatrixShader_v1, | |
PictureShader_v1, | |
ColorShader_v1, | |
PerlinNoiseShader_v1, | |
LinearGradientShader_v1, | |
RadialGradientShader_v1, | |
SweepGradientShader_v1, | |
TwoPointConicalGradientShader_v1, | |
ImageShader_v1 | |
}; | |
Type fType; | |
union { | |
BitmapProcShader_v1* fBitmapProcShader_v1; | |
ThreeDeeShader_v1* fThreeDeeShader_v1; | |
ColorFilterShader_v1* fColorFilterShader_v1; | |
ComposeShader_v1* fComposeShader_v1; | |
LightingShader_v1* fLightingShader_v1; | |
LightingShader_Light_v1* fLightingShader_Light_v1; | |
LocalMatrixShader_v1* fLocalMatrixShader_v1; | |
PictureShader_v1* fPictureShader_v1; | |
ColorShader_v1* fColorShader_v1; | |
PerlinNoiseShader_v1* fPerlinNoiseShader_v1; | |
LinearGradientShader_v1* fLinearGradientShader_v1; | |
RadialGradientShader_v1* fRadialGradientShader_v1; | |
SweepGradientShader_v1* fSweepGradientShader_v1; | |
TwoPointConicalGradientShader_v1* fTwoPointConicalGradientShader_v1; | |
ImageShader_v1* fImageShader_v1; | |
}; | |
}; | |
*/ | |
} // namespace | |
#undef SK_TAGGED_UNION_U_1 | |
#undef SK_TAGGED_UNION_U_2 | |
#undef SK_TAGGED_UNION_U_3 | |
#undef SK_TAGGED_UNION_U_4 | |
#undef SK_TAGGED_UNION_U_5 | |
#undef SK_TAGGED_UNION_U_6 | |
#undef SK_TAGGED_UNION_U_7 | |
#undef SK_TAGGED_UNION_U_8 | |
#undef SK_TAGGED_UNION_U_9 | |
#undef SK_TAGGED_UNION_U_10 | |
#undef SK_TAGGED_UNION_U_11 | |
#undef SK_TAGGED_UNION_U_12 | |
#undef SK_TAGGED_UNION_U_13 | |
#undef SK_TAGGED_UNION_U_14 | |
#undef SK_TAGGED_UNION_U_15 | |
#undef SK_TAGGED_UNION_U_16 | |
#undef SK_TAGGED_UNION_U_17 | |
#undef SK_TAGGED_UNION_U_18 | |
#undef SK_TAGGED_UNION_CAT0 | |
#undef SK_TAGGED_UNION_CAT | |
#undef SK_TAGGED_UNION_NARGS_SEQ | |
#undef SK_TAGGED_UNION_NARGS | |
#undef SK_TAGGED_UNION_MAKE_PTRS | |
#undef SK_TAGGED_UNION | |
#endif // SkValues_DEFINED |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment