Commit Graph

6 Commits

Author SHA1 Message Date
mtklein
0d992db1cf Make SkFunction copyable so it can go in containers.
This totally overhauls the implementation to use ordinary inheritance-based type erasure.  I give up for now getting my manual vtable shenanigans to work with MSVC.  Still those same "expected ; before ), also expected ) before ;" errors.

I added support for uninitialized SkFunctions and operator=(), because it was fairly straightforward with this implementation.

The main downside here is that I've removed the inline implementation.  All SkFunctions involve a heap allocation, even when just wrapping function pointers.

BUG=skia:

Review URL: https://codereview.chromium.org/1056673002
2015-05-06 07:40:26 -07:00
mtklein
b41f05787e That last CL subverted the purpose of the test. Put it back how it was.
BUG=skia:

Review URL: https://codereview.chromium.org/1055633003
2015-04-01 13:36:23 -07:00
mtklein
03e5161bed Implicit constructors for SkFunction are much more readable.
BUG=skia:

Review URL: https://codereview.chromium.org/1052663004
2015-04-01 13:08:50 -07:00
mtklein
74415278ce Constructor and call argument forwarding for SkFunction.
BUG=skia:

Review URL: https://codereview.chromium.org/1050113003
2015-04-01 11:26:31 -07:00
mtklein
97312d0f79 small-object optimization for SkFunction
Anything <= sizeof(void*) will be inlined, avoiding heap allocation.

BUG=skia:

Review URL: https://codereview.chromium.org/1048243002
2015-04-01 08:11:16 -07:00
mtklein
4a9426f0fa Sketch SkFunction
Let's start with baby steps in case some bot can't handle this.
I have left many TODOs, most of which I know how to do if this
looks feasible and useful.

BUG=skia:

Review URL: https://codereview.chromium.org/1049223003
2015-03-31 14:24:27 -07:00