Sorting Network Verify and Draw
Check Whether Comparator Networks Sort and Draw Them
ComparatorNetwork.h
Go to the documentation of this file.
1
3
4// MIT License
5//
6// Copyright (c) 2022 Ian Parberry
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in all
16// copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24// SOFTWARE.
25
26#ifndef __ComparatorNetwork_h__
27#define __ComparatorNetwork_h__
28
29#include "Defines.h"
30
40
42 protected:
43 UINT** m_nMatch = nullptr;
44 bool** m_bUsed = nullptr;
45
46 UINT m_nInputs = 0;
47 UINT m_nDepth = 0;
48 UINT m_nSize = 0;
49
50 bool m_bSorts = false;
51
52 void InsertComparator(UINT, UINT, UINT);
53 void CreateMatchArray(UINT, UINT);
54 void ComputeSize();
55
56 public:
58
59 virtual bool Read(LPWSTR);
60 void Prune(const UINT);
61
62 const UINT GetNumInputs() const;
63 const UINT GetDepth() const;
64 const UINT GetSize() const;
65
66 const bool FirstNormalForm() const;
67}; //CComparatorNetwork
68
69#endif //__ComparatorNetwork_h__
Useful definitions.
Comparator network.
UINT ** m_nMatch
Matchings at each level.
~CComparatorNetwork()
Destructor.
const UINT GetDepth() const
Get depth.
void Prune(const UINT)
Prune down number of inputs.
virtual bool Read(LPWSTR)
Read from file.
const bool FirstNormalForm() const
Test for first normal form.
void InsertComparator(UINT, UINT, UINT)
Insert comparator.
bool m_bSorts
True if it sorts, false if it doesn't or unknown.
void ComputeSize()
Compute size.
const UINT GetSize() const
Get size.
const UINT GetNumInputs() const
Get number of inputs.
UINT m_nInputs
Number of inputs.
void CreateMatchArray(UINT, UINT)
Create match array.
bool ** m_bUsed
Whether comparators are used when sorting.