Skip to content

Commit cbc0764

Browse files
committed
TestComponent: add Override class
This will be used to test subclassing composable types with protected and overridable methods.
1 parent 70efc21 commit cbc0764

File tree

5 files changed

+101
-0
lines changed

5 files changed

+101
-0
lines changed

TestComponent/Override.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include "pch.h"
2+
#include "Override.h"
3+
#include "Override.g.cpp"
4+
5+
using namespace winrt;
6+
using namespace Windows::Foundation;
7+
8+
namespace winrt::TestComponent::implementation
9+
{
10+
void Override::CallProtected()
11+
{
12+
OnProtected();
13+
}
14+
15+
void Override::OnProtected()
16+
{
17+
m_protected_called_event(*this, nullptr);
18+
}
19+
20+
event_token Override::ProtectedCalled(EventHandler<IInspectable> const& handler)
21+
{
22+
return m_protected_called_event.add(handler);
23+
}
24+
25+
void Override::ProtectedCalled(event_token token) noexcept
26+
{
27+
m_protected_called_event.remove(token);
28+
}
29+
30+
void Override::CallOverridable()
31+
{
32+
overridable().OnOverridable();
33+
}
34+
35+
void Override::OnOverridable()
36+
{
37+
m_overridable_called_event(*this, nullptr);
38+
}
39+
40+
event_token Override::OverridableCalled(EventHandler<IInspectable> const& handler)
41+
{
42+
return m_overridable_called_event.add(handler);
43+
}
44+
45+
void Override::OverridableCalled(event_token token) noexcept
46+
{
47+
m_overridable_called_event.remove(token);
48+
}
49+
}

TestComponent/Override.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#pragma once
2+
#include "Override.g.h"
3+
4+
using namespace winrt;
5+
using namespace Windows::Foundation;
6+
7+
namespace winrt::TestComponent::implementation
8+
{
9+
struct Override : OverrideT<Override>
10+
{
11+
private:
12+
event<EventHandler<IInspectable>> m_protected_called_event;
13+
event<EventHandler<IInspectable>> m_overridable_called_event;
14+
15+
public:
16+
Override() = default;
17+
18+
void CallProtected();
19+
void OnProtected();
20+
event_token ProtectedCalled(EventHandler<IInspectable> const& handler);
21+
void ProtectedCalled(event_token token) noexcept;
22+
23+
void CallOverridable();
24+
virtual void OnOverridable();
25+
event_token OverridableCalled(EventHandler<IInspectable> const& handler);
26+
void OverridableCalled(event_token token) noexcept;
27+
};
28+
}
29+
30+
namespace winrt::TestComponent::factory_implementation
31+
{
32+
struct Override : OverrideT<Override, implementation::Override>
33+
{
34+
};
35+
}

TestComponent/TestComponent.idl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,4 +339,17 @@ namespace TestComponent
339339
[overridable] interface TestComponent.IOverloadClassOverrides;
340340
[overridable] interface TestComponent.IOverloadClassOverrides2;
341341
}
342+
343+
unsealed runtimeclass Override
344+
{
345+
Override();
346+
347+
void CallProtected();
348+
protected void OnProtected();
349+
event Windows.Foundation.EventHandler<Object> ProtectedCalled;
350+
351+
void CallOverridable();
352+
overridable void OnOverridable();
353+
event Windows.Foundation.EventHandler<Object> OverridableCalled;
354+
}
342355
}

TestComponent/TestComponent.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
<ClInclude Include="Composable.h" />
152152
<ClInclude Include="Derived.h" />
153153
<ClInclude Include="OverloadClass.h" />
154+
<ClInclude Include="Override.h" />
154155
<ClInclude Include="pch.h" />
155156
<ClInclude Include="TestRunner.h" />
156157
</ItemGroup>
@@ -159,6 +160,7 @@
159160
<ClCompile Include="Composable.cpp" />
160161
<ClCompile Include="Derived.cpp" />
161162
<ClCompile Include="OverloadClass.cpp" />
163+
<ClCompile Include="Override.cpp" />
162164
<ClCompile Include="pch.cpp">
163165
<PrecompiledHeader>Create</PrecompiledHeader>
164166
</ClCompile>

TestComponent/TestComponent.vcxproj.filters

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<ClCompile Include="Derived.cpp" />
1818
<ClCompile Include="Class.cpp" />
1919
<ClCompile Include="OverloadClass.cpp" />
20+
<ClCompile Include="Override.cpp" />
2021
</ItemGroup>
2122
<ItemGroup>
2223
<ClInclude Include="pch.h" />
@@ -25,6 +26,7 @@
2526
<ClInclude Include="Derived.h" />
2627
<ClInclude Include="Class.h" />
2728
<ClInclude Include="OverloadClass.h" />
29+
<ClInclude Include="Override.h" />
2830
</ItemGroup>
2931
<ItemGroup>
3032
<Midl Include="TestComponent.idl" />

0 commit comments

Comments
 (0)