Skip to content

Commit 064d6de

Browse files
committed
Move AST memory macros to macro header
1 parent efc0331 commit 064d6de

File tree

3 files changed

+50
-68
lines changed

3 files changed

+50
-68
lines changed

src/ast.cpp

-32
Original file line numberDiff line numberDiff line change
@@ -2124,38 +2124,6 @@ namespace Sass {
21242124
return ret;
21252125
}
21262126

2127-
//////////////////////////////////////////////////////////////////////////////////////////
2128-
// Copy implementations
2129-
//////////////////////////////////////////////////////////////////////////////////////////
2130-
2131-
#ifdef DEBUG_SHARED_PTR
2132-
2133-
#define IMPLEMENT_AST_OPERATORS(klass) \
2134-
klass##_Ptr klass::copy(std::string file, size_t line) const { \
2135-
klass##_Ptr cpy = new klass(this); \
2136-
cpy->trace(file, line); \
2137-
return cpy; \
2138-
} \
2139-
klass##_Ptr klass::clone(std::string file, size_t line) const { \
2140-
klass##_Ptr cpy = copy(file, line); \
2141-
cpy->cloneChildren(); \
2142-
return cpy; \
2143-
} \
2144-
2145-
#else
2146-
2147-
#define IMPLEMENT_AST_OPERATORS(klass) \
2148-
klass##_Ptr klass::copy() const { \
2149-
return new klass(this); \
2150-
} \
2151-
klass##_Ptr klass::clone() const { \
2152-
klass##_Ptr cpy = copy(); \
2153-
cpy->cloneChildren(); \
2154-
return cpy; \
2155-
} \
2156-
2157-
#endif
2158-
21592127
IMPLEMENT_AST_OPERATORS(Supports_Operator);
21602128
IMPLEMENT_AST_OPERATORS(Supports_Negation);
21612129
IMPLEMENT_AST_OPERATORS(Compound_Selector);

src/ast.hpp

-36
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,6 @@
1313
#include "sass/base.h"
1414
#include "ast_fwd_decl.hpp"
1515

16-
#ifdef DEBUG_SHARED_PTR
17-
18-
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
19-
virtual klass##_Ptr copy(std::string, size_t) const = 0; \
20-
virtual klass##_Ptr clone(std::string, size_t) const = 0; \
21-
22-
#define ATTACH_AST_OPERATIONS(klass) \
23-
virtual klass##_Ptr copy(std::string, size_t) const; \
24-
virtual klass##_Ptr clone(std::string, size_t) const; \
25-
26-
#else
27-
28-
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
29-
virtual klass##_Ptr copy() const = 0; \
30-
virtual klass##_Ptr clone() const = 0; \
31-
32-
#define ATTACH_AST_OPERATIONS(klass) \
33-
virtual klass##_Ptr copy() const; \
34-
virtual klass##_Ptr clone() const; \
35-
36-
#endif
37-
38-
#ifdef __clang__
39-
40-
/*
41-
* There are some overloads used here that trigger the clang overload
42-
* hiding warning. Specifically:
43-
*
44-
* Type type() which hides string type() from Expression
45-
*
46-
*/
47-
#pragma clang diagnostic push
48-
#pragma clang diagnostic ignored "-Woverloaded-virtual"
49-
50-
#endif
51-
5216
#include "util.hpp"
5317
#include "units.hpp"
5418
#include "context.hpp"

src/ast_def_macros.hpp

+50
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,54 @@ public: \
6767
void name(type name##__) { hash_ = 0; name##_ = name##__; } \
6868
private:
6969

70+
#ifdef DEBUG_SHARED_PTR
71+
72+
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
73+
virtual klass##_Ptr copy(std::string, size_t) const = 0; \
74+
virtual klass##_Ptr clone(std::string, size_t) const = 0; \
75+
76+
#define ATTACH_AST_OPERATIONS(klass) \
77+
virtual klass##_Ptr copy(std::string, size_t) const; \
78+
virtual klass##_Ptr clone(std::string, size_t) const; \
79+
80+
#else
81+
82+
#define ATTACH_VIRTUAL_AST_OPERATIONS(klass) \
83+
virtual klass##_Ptr copy() const = 0; \
84+
virtual klass##_Ptr clone() const = 0; \
85+
86+
#define ATTACH_AST_OPERATIONS(klass) \
87+
virtual klass##_Ptr copy() const; \
88+
virtual klass##_Ptr clone() const; \
89+
90+
#endif
91+
92+
#ifdef DEBUG_SHARED_PTR
93+
94+
#define IMPLEMENT_AST_OPERATORS(klass) \
95+
klass##_Ptr klass::copy(std::string file, size_t line) const { \
96+
klass##_Ptr cpy = new klass(this); \
97+
cpy->trace(file, line); \
98+
return cpy; \
99+
} \
100+
klass##_Ptr klass::clone(std::string file, size_t line) const { \
101+
klass##_Ptr cpy = copy(file, line); \
102+
cpy->cloneChildren(); \
103+
return cpy; \
104+
} \
105+
106+
#else
107+
108+
#define IMPLEMENT_AST_OPERATORS(klass) \
109+
klass##_Ptr klass::copy() const { \
110+
return new klass(this); \
111+
} \
112+
klass##_Ptr klass::clone() const { \
113+
klass##_Ptr cpy = copy(); \
114+
cpy->cloneChildren(); \
115+
return cpy; \
116+
} \
117+
118+
#endif
119+
70120
#endif

0 commit comments

Comments
 (0)