Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(230)

Side by Side Diff: skia/sgl/SkTemplatesPriv.h

Issue 113827: Remove the remainder of the skia source code from the Chromium repo.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « skia/sgl/SkTSort.h ('k') | skia/sgl/SkTypeface.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* libs/graphics/sgl/SkTemplatesPriv.h
2 **
3 ** Copyright 2006, The Android Open Source Project
4 **
5 ** Licensed under the Apache License, Version 2.0 (the "License");
6 ** you may not use this file except in compliance with the License.
7 ** You may obtain a copy of the License at
8 **
9 ** http://www.apache.org/licenses/LICENSE-2.0
10 **
11 ** Unless required by applicable law or agreed to in writing, software
12 ** distributed under the License is distributed on an "AS IS" BASIS,
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 ** See the License for the specific language governing permissions and
15 ** limitations under the License.
16 */
17
18 #ifndef SkTemplatesPriv_DEFINED
19 #define SkTemplatesPriv_DEFINED
20
21 #include "SkTemplates.h"
22
23 ////////////////////////////////////////////////////////////////////////////////
24
25 #ifdef SK_BUILD_FOR_WIN32
26 #define SK_PLACEMENT_NEW(result, classname, storage, storageSize) \
27 result = SkNEW(classname)
28
29 #define SK_PLACEMENT_NEW_ARGS(result, classname, storage, storageSize, args) \
30 result = SkNEW_ARGS(classname, args)
31 #else
32 #include <new>
33 #define SK_PLACEMENT_NEW(result, classname, storage, storagesize) \
34 do { \
35 if (storagesize) \
36 { \
37 SkASSERT(storageSize >= sizeof(classname)); \
38 result = new(storage) classname; \
39 } \
40 else \
41 result = SkNEW(classname); \
42 } while (0)
43
44 #define SK_PLACEMENT_NEW_ARGS(result, classname, storage, storagesize, args) \
45 do { \
46 if (storagesize) \
47 { \
48 SkASSERT(storageSize >= sizeof(classname)); \
49 result = new(storage) classname args; \
50 } \
51 else \
52 result = SkNEW_ARGS(classname, args); \
53 } while (0)
54 #endif
55
56 ////////////////////////////////////////////////////////////////////////////////
57
58 template <class T> class SkAutoTPlacementDelete {
59 public:
60 SkAutoTPlacementDelete(T* obj, void* storage) : fObj(obj), fStorage(storage)
61 {
62 }
63 ~SkAutoTPlacementDelete()
64 {
65 if (fObj)
66 {
67 if (fObj == fStorage)
68 fObj->~T();
69 else
70 delete fObj;
71 }
72 }
73 T* detach()
74 {
75 T* obj = fObj;
76 fObj = NULL;
77 return obj;
78 }
79 private:
80 T* fObj;
81 void* fStorage;
82 };
83
84 #endif
OLDNEW
« no previous file with comments | « skia/sgl/SkTSort.h ('k') | skia/sgl/SkTypeface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698