annotate libinterp/corefcn/gtk-manager.h @ 31225:3eab70385569

sparse-xpow.cc: Use faster multiplication technique, this time for complex
author Arun Giridhar <arungiridhar@gmail.com>
date Sun, 11 Sep 2022 13:53:38 -0400
parents 796f54d4ddbf
children e88a07dec498
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30116
diff changeset
3 // Copyright (C) 2007-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
26 #if ! defined (octave_gtk_manager_h)
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 #define octave_gtk_manager_h 1
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29 #include "octave-config.h"
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 #include <map>
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32 #include <set>
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
33 #include <string>
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 #include "Cell.h"
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 #include "graphics-toolkit.h"
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38 namespace octave
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 {
29233
665c9ed14c97 Set API tags in files in libinterp/corefcn (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27923
diff changeset
40 class OCTINTERP_API gtk_manager
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41 {
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
42 public:
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
44 gtk_manager (void) { }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
45
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
46 ~gtk_manager (void)
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47 {
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
48 unload_all_toolkits ();
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
50
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
51 graphics_toolkit get_toolkit (void) const;
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
52
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
53 void register_toolkit (const std::string& name);
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
54
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
55 void unregister_toolkit (const std::string& name);
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
56
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
57 void load_toolkit (const graphics_toolkit& tk)
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
58 {
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
59 m_loaded_toolkits[tk.get_name ()] = tk;
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
61
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 void unload_toolkit (const std::string& name)
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
63 {
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
64 m_loaded_toolkits.erase (name);
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
67 graphics_toolkit find_toolkit (const std::string& name) const
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
68 {
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
69 auto p = m_loaded_toolkits.find (name);
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
70
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
71 if (p != m_loaded_toolkits.end ())
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
72 return p->second;
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
73 else
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74 return graphics_toolkit ();
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
75 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
76
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
77 Cell available_toolkits_list (void) const
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
78 {
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
79 Cell m (1, m_available_toolkits.size ());
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
80
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
81 octave_idx_type i = 0;
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
82 for (const auto& tkit : m_available_toolkits)
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
83 m(i++) = tkit;
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
84
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
85 return m;
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
86 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
87
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
88 Cell loaded_toolkits_list (void) const
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
89 {
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
90 Cell m (1, m_loaded_toolkits.size ());
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
91
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
92 octave_idx_type i = 0;
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
93 for (const auto& nm_tkit_p : m_loaded_toolkits)
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
94 m(i++) = nm_tkit_p.first;
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
95
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
96 return m;
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
97 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
98
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
99 void unload_all_toolkits (void)
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
100 {
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
101 while (! m_loaded_toolkits.empty ())
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
102 {
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
103 auto p = m_loaded_toolkits.begin ();
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
104
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
105 std::string name = p->first;
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
106
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
107 p->second.close ();
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
108
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
109 // The toolkit may have unloaded itself. If not, we'll do it here.
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
110 if (m_loaded_toolkits.find (name) != m_loaded_toolkits.end ())
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
111 unload_toolkit (name);
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
112 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
113 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
114
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
115 std::string default_toolkit (void) const { return m_dtk; }
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
116
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
117 private:
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
118
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
119 // The name of the default toolkit.
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
120 std::string m_dtk;
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
121
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
122 // The list of toolkits that we know about.
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
123 std::set<std::string> m_available_toolkits;
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
124
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
125 // The list of toolkits we have actually loaded.
30116
815b5b7bb672 maint: use "m_" prefix for member variables in class gtk_manager.
Rik <rik@octave.org>
parents: 29359
diff changeset
126 std::map<std::string, graphics_toolkit> m_loaded_toolkits;
23774
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
127 };
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
128 }
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
129
41795b504a8b don't use singleton for gtk_manager
John W. Eaton <jwe@octave.org>
parents:
diff changeset
130 #endif