From 3726194fbe3da234eb30b6371e5b4ab1ea388f93 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Sat, 2 Feb 2019 11:58:54 -0500 Subject: Feature/as refactor review (#821) * Replace dynamicCast with as where does not change behavior (ie not Type derived). Use free function where scoping is clear. * Replace uses of dynamicCast with as when there is no difference in behavior. * Remove the IsXXXX methods from Type. * Don't have separate smart pointer to store canonicalType on Type. * Simplify Slang.FilteredMemberRefList.Adjust, such does the cast directly. * Use free as where appropriate. * Use free function version of casts where appropriate. * Fix text in casting.md * Fix typos in decl-refs.md * Remove the uses of free function as on RefDecl. Add 'canAs' to RefDecl as a way to test if a cast is possible. Moved 'as' into RefDeclBase. * Use 'is' to test for as cast on smart pointers. Fix small scope issue. * * Cache stringType and enumTypeType on the Session * Make DeclRefType::Create return a RefPtr * Make casting of result use the *method* .as (cos using free function would mean objects being wrongly destroyed) * Make results from createInstance ref'd to avoid possible leaks. * Fix typo in template parameter for is on RefPtr. --- source/slang/syntax-base-defs.h | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'source/slang/syntax-base-defs.h') diff --git a/source/slang/syntax-base-defs.h b/source/slang/syntax-base-defs.h index 7f49bb607..93fe687fd 100644 --- a/source/slang/syntax-base-defs.h +++ b/source/slang/syntax-base-defs.h @@ -80,27 +80,22 @@ public: Session* getSession() { return this->session; } void setSession(Session* s) { this->session = s; } - bool Equals(Type * type); - bool Equals(RefPtr type); - - bool IsTextureOrSampler(); - bool IsTexture() { return as(this) != nullptr; } - bool IsSampler() { return as(this) != nullptr; } - bool IsStruct(); - //bool IsClass(); - + bool Equals(Type* type); + Type* GetCanonicalType(); virtual RefPtr SubstituteImpl(SubstitutionSet subst, int* ioDiff) override; virtual bool EqualsVal(Val* val) override; + + ~Type(); + protected: - virtual bool EqualsImpl(Type * type) = 0; + virtual bool EqualsImpl(Type* type) = 0; virtual RefPtr CreateCanonicalType() = 0; Type* canonicalType = nullptr; - RefPtr canonicalTypeRefPtr; - + Session* session = nullptr; ) END_SYNTAX_CLASS() -- cgit v1.2.3