-
Notifications
You must be signed in to change notification settings - Fork 0
/
sortdemo.h
149 lines (110 loc) · 3.74 KB
/
sortdemo.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
// sortdemo.h : main header file for the SORTDEMO application
//
//
// Copyright (c) 1995-2020 by 'Bombastic Bob' Frazier
//
// This program and source provided for example purposes. You may
// redistribute it so long as no modifications are made to any of
// the source files, and the above copyright notice has been
// included. You may also use portions of the sample code in your
// own programs, as desired.
#ifndef BOOL
#define BOOL bool
#endif // BOOL
#ifndef afx_msg
#define afx_msg
#endif // afx_msg
#ifndef UINT
#define UINT unsigned int
#endif // UINT
#ifndef LPCSTR
#define LPCSTR const char *
#endif // LPCSTR
#ifndef LPSTR
#define LPSTR char *
#endif // LPSTR
#if wxUSE_WCHAR_T /* defined as non-zero value when using wide char */
#define TCHAR wchar_t
#define __T(X) (L##X)
#else // single-byte characters, aka ASCII
#define TCHAR char
#define __T(X) (X)
#endif // wxUSE_WCHAR_T
/////////////////////////////////////////////////////////////////////////////
// CSortdemoApp:
// See sortdemo.cpp for the implementation of this class
//
class CSortdemoApp : public wxApp
{
public:
CSortdemoApp();
virtual ~CSortdemoApp();
// DOC/VIEW helper stuff
wxDocManager *m_pDocManager; // yep, like MFC
wxWindow *m_pMainWnd; // must add this for 'wxWidgets' version
wxThread *m_pSortThread; // sort thread object to terminate
// on application closure
wxMutex m_SortMutex; // use this instead
virtual bool OnInit();
virtual int OnExit();
// Implementation
void OnAppAbout(wxCommandEvent &evt);
void DoSortNewdata();
void DoSortRestore();
DECLARE_EVENT_TABLE()
};
extern const wxChar szAppName[];
unsigned long MyGetTickCount();
#define N_DATA_DIMENSIONS 256
enum WXBEGINTHREAD
{
WXBEGINTHREAD_DEFAULT = 0,
WXBEGINTHREAD_SUSPENDED = 1 // for now this is the only flag
};
// this next class allows anyone to call the 'TestDestroy()' function
// by casting a 'wxThread *' to 'wxWhoreThread *'.
class wxWhoreThread : public wxThread
{
public:
bool TestDestroy() { return(wxThread::TestDestroy()); }
};
class wxMyThread : public wxThread, public wxObject
{
DECLARE_ABSTRACT_CLASS(wxMyThread)
protected: // you must create this class dynamically, and derive from it
wxMyThread() : wxThread() { }
~wxMyThread() { }
friend wxMyThread *wxBeginThread(unsigned long (*)(void *), void *, int, unsigned int, unsigned lnog, void *);
friend wxMyThread *wxBeginThread(wxClassInfo *, int, unsigned int, unsigned long, void *);
public:
// use 'SafeTestDestroy()' within any loop
static BOOL SafeTestDestroy()
{
// use of 'wxWhoreThread' is necessary, because gcc will 'gripe'
// otherwise. This sounds more like a BUG, to me...
wxWhoreThread *pThread = (wxWhoreThread *)wxThread::This();
if(pThread)
return(pThread->TestDestroy());
return(FALSE);
}
};
wxMyThread *wxBeginThread(unsigned long (*)(void *), void *,
int nPriority = WXTHREAD_DEFAULT_PRIORITY,
unsigned int nStackSize = 0,
unsigned long dwCreateFlags = 0,
void *pSecurity = NULL);
wxMyThread *wxBeginThread(wxClassInfo *pThreadClass,
int nPriority = WXTHREAD_DEFAULT_PRIORITY,
unsigned int nStackSize = 0,
unsigned long dwCreateFlags = 0,
void *pSecurity = NULL);
//#define theApp (wxGetApp()) /* for MFC compatibility */
//DECLARE_APP(CSortdemoApp);
extern CSortdemoApp theApp;
#ifdef WIN32
UINT64 MyGetMicros();
#else // !WIN32
unsigned long long MyGetMicros();
#endif // WIN32
extern "C" void MySleep(unsigned long lMicroSeconds);
/////////////////////////////////////////////////////////////////////////////