mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-12 09:36:33 +01:00
remove sigc 2.0.18, again. Come on baby...
git-svn-id: svn://localhost/ardour2/branches/3.0@3436 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
449aab3c46
commit
176835be8d
72 changed files with 0 additions and 34477 deletions
|
|
@ -1,19 +0,0 @@
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
aclocal.m4
|
|
||||||
autom4te.cache
|
|
||||||
config.guess
|
|
||||||
config.log
|
|
||||||
config.status
|
|
||||||
config.sub
|
|
||||||
depcomp
|
|
||||||
install-sh
|
|
||||||
libsigc++-2.0.spec
|
|
||||||
libtool
|
|
||||||
ltmain.sh
|
|
||||||
missing
|
|
||||||
sigc++-2.0.pc
|
|
||||||
stamp-h1
|
|
||||||
configure
|
|
||||||
sigc++config.h
|
|
||||||
*.dylib
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
Martin Schulze <mschulze@cvs.gnome.org>
|
|
||||||
Murray Cumming <murrayc@murrayc.com>
|
|
||||||
Cedric Gustin <cedric.gustin@swing.be> (win32 support)
|
|
||||||
Timothy M. Shead <tshead@k-3d.com> and James Lin <jameslin@vmware.com> (MSVC support)
|
|
||||||
Damien Carbery <Damien.Carbery@Sun.COM> (Sun FORTE C++ support)
|
|
||||||
Takashi Takekawa <takekawa@users.sourceforge.jp> (Intel C++ support)
|
|
||||||
Andreas Rottmann <rottmann@users.sourceforge.net> (make system)
|
|
||||||
Karl Einar Nelson <kenelson@ece.ucdavis.edu> (initial version 1.9.4)
|
|
||||||
|
|
@ -1,515 +0,0 @@
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
Version 2.1, February 1999
|
|
||||||
|
|
||||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
[This is the first released version of the Lesser GPL. It also counts
|
|
||||||
as the successor of the GNU Library Public License, version 2, hence
|
|
||||||
the version number 2.1.]
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
Licenses are intended to guarantee your freedom to share and change
|
|
||||||
free software--to make sure the software is free for all its users.
|
|
||||||
|
|
||||||
This license, the Lesser General Public License, applies to some
|
|
||||||
specially designated software packages--typically libraries--of the
|
|
||||||
Free Software Foundation and other authors who decide to use it. You
|
|
||||||
can use it too, but we suggest you first think carefully about whether
|
|
||||||
this license or the ordinary General Public License is the better
|
|
||||||
strategy to use in any particular case, based on the explanations
|
|
||||||
below.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom of use,
|
|
||||||
not price. Our General Public Licenses are designed to make sure that
|
|
||||||
you have the freedom to distribute copies of free software (and charge
|
|
||||||
for this service if you wish); that you receive source code or can get
|
|
||||||
it if you want it; that you can change the software and use pieces of
|
|
||||||
it in new free programs; and that you are informed that you can do
|
|
||||||
these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
distributors to deny you these rights or to ask you to surrender these
|
|
||||||
rights. These restrictions translate to certain responsibilities for
|
|
||||||
you if you distribute copies of the library or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of the library, whether gratis
|
|
||||||
or for a fee, you must give the recipients all the rights that we gave
|
|
||||||
you. You must make sure that they, too, receive or can get the source
|
|
||||||
code. If you link other code with the library, you must provide
|
|
||||||
complete object files to the recipients, so that they can relink them
|
|
||||||
with the library after making changes to the library and recompiling
|
|
||||||
it. And you must show them these terms so they know their rights.
|
|
||||||
|
|
||||||
We protect your rights with a two-step method: (1) we copyright the
|
|
||||||
library, and (2) we offer you this license, which gives you legal
|
|
||||||
permission to copy, distribute and/or modify the library.
|
|
||||||
|
|
||||||
To protect each distributor, we want to make it very clear that
|
|
||||||
there is no warranty for the free library. Also, if the library is
|
|
||||||
modified by someone else and passed on, the recipients should know
|
|
||||||
that what they have is not the original version, so that the original
|
|
||||||
author's reputation will not be affected by problems that might be
|
|
||||||
introduced by others.
|
|
||||||
^L
|
|
||||||
Finally, software patents pose a constant threat to the existence of
|
|
||||||
any free program. We wish to make sure that a company cannot
|
|
||||||
effectively restrict the users of a free program by obtaining a
|
|
||||||
restrictive license from a patent holder. Therefore, we insist that
|
|
||||||
any patent license obtained for a version of the library must be
|
|
||||||
consistent with the full freedom of use specified in this license.
|
|
||||||
|
|
||||||
Most GNU software, including some libraries, is covered by the
|
|
||||||
ordinary GNU General Public License. This license, the GNU Lesser
|
|
||||||
General Public License, applies to certain designated libraries, and
|
|
||||||
is quite different from the ordinary General Public License. We use
|
|
||||||
this license for certain libraries in order to permit linking those
|
|
||||||
libraries into non-free programs.
|
|
||||||
|
|
||||||
When a program is linked with a library, whether statically or using
|
|
||||||
a shared library, the combination of the two is legally speaking a
|
|
||||||
combined work, a derivative of the original library. The ordinary
|
|
||||||
General Public License therefore permits such linking only if the
|
|
||||||
entire combination fits its criteria of freedom. The Lesser General
|
|
||||||
Public License permits more lax criteria for linking other code with
|
|
||||||
the library.
|
|
||||||
|
|
||||||
We call this license the "Lesser" General Public License because it
|
|
||||||
does Less to protect the user's freedom than the ordinary General
|
|
||||||
Public License. It also provides other free software developers Less
|
|
||||||
of an advantage over competing non-free programs. These disadvantages
|
|
||||||
are the reason we use the ordinary General Public License for many
|
|
||||||
libraries. However, the Lesser license provides advantages in certain
|
|
||||||
special circumstances.
|
|
||||||
|
|
||||||
For example, on rare occasions, there may be a special need to
|
|
||||||
encourage the widest possible use of a certain library, so that it
|
|
||||||
becomes
|
|
||||||
a de-facto standard. To achieve this, non-free programs must be
|
|
||||||
allowed to use the library. A more frequent case is that a free
|
|
||||||
library does the same job as widely used non-free libraries. In this
|
|
||||||
case, there is little to gain by limiting the free library to free
|
|
||||||
software only, so we use the Lesser General Public License.
|
|
||||||
|
|
||||||
In other cases, permission to use a particular library in non-free
|
|
||||||
programs enables a greater number of people to use a large body of
|
|
||||||
free software. For example, permission to use the GNU C Library in
|
|
||||||
non-free programs enables many more people to use the whole GNU
|
|
||||||
operating system, as well as its variant, the GNU/Linux operating
|
|
||||||
system.
|
|
||||||
|
|
||||||
Although the Lesser General Public License is Less protective of the
|
|
||||||
users' freedom, it does ensure that the user of a program that is
|
|
||||||
linked with the Library has the freedom and the wherewithal to run
|
|
||||||
that program using a modified version of the Library.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow. Pay close attention to the difference between a
|
|
||||||
"work based on the library" and a "work that uses the library". The
|
|
||||||
former contains code derived from the library, whereas the latter must
|
|
||||||
be combined with the library in order to run.
|
|
||||||
^L
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License Agreement applies to any software library or other
|
|
||||||
program which contains a notice placed by the copyright holder or
|
|
||||||
other authorized party saying it may be distributed under the terms of
|
|
||||||
this Lesser General Public License (also called "this License").
|
|
||||||
Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
A "library" means a collection of software functions and/or data
|
|
||||||
prepared so as to be conveniently linked with application programs
|
|
||||||
(which use some of those functions and data) to form executables.
|
|
||||||
|
|
||||||
The "Library", below, refers to any such software library or work
|
|
||||||
which has been distributed under these terms. A "work based on the
|
|
||||||
Library" means either the Library or any derivative work under
|
|
||||||
copyright law: that is to say, a work containing the Library or a
|
|
||||||
portion of it, either verbatim or with modifications and/or translated
|
|
||||||
straightforwardly into another language. (Hereinafter, translation is
|
|
||||||
included without limitation in the term "modification".)
|
|
||||||
|
|
||||||
"Source code" for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For a library, complete source code means
|
|
||||||
all the source code for all modules it contains, plus any associated
|
|
||||||
interface definition files, plus the scripts used to control
|
|
||||||
compilation
|
|
||||||
and installation of the library.
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running a program using the Library is not restricted, and output from
|
|
||||||
such a program is covered only if its contents constitute a work based
|
|
||||||
on the Library (independent of the use of the Library in a tool for
|
|
||||||
writing it). Whether that is true depends on what the Library does
|
|
||||||
and what the program that uses the Library does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Library's
|
|
||||||
complete source code as you receive it, in any medium, provided that
|
|
||||||
you conspicuously and appropriately publish on each copy an
|
|
||||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
|
||||||
all the notices that refer to this License and to the absence of any
|
|
||||||
warranty; and distribute a copy of this License along with the
|
|
||||||
Library.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy,
|
|
||||||
and you may at your option offer warranty protection in exchange for a
|
|
||||||
fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion
|
|
||||||
of it, thus forming a work based on the Library, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The modified work must itself be a software library.
|
|
||||||
|
|
||||||
b) You must cause the files modified to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
c) You must cause the whole of the work to be licensed at no
|
|
||||||
charge to all third parties under the terms of this License.
|
|
||||||
|
|
||||||
d) If a facility in the modified Library refers to a function or a
|
|
||||||
table of data to be supplied by an application program that uses
|
|
||||||
the facility, other than as an argument passed when the facility
|
|
||||||
is invoked, then you must make a good faith effort to ensure that,
|
|
||||||
in the event an application does not supply such function or
|
|
||||||
table, the facility still operates, and performs whatever part of
|
|
||||||
its purpose remains meaningful.
|
|
||||||
|
|
||||||
(For example, a function in a library to compute square roots has
|
|
||||||
a purpose that is entirely well-defined independent of the
|
|
||||||
application. Therefore, Subsection 2d requires that any
|
|
||||||
application-supplied function or table used by this function must
|
|
||||||
be optional: if the application does not supply it, the square
|
|
||||||
root function must still compute square roots.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Library,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Library, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote
|
|
||||||
it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Library.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Library
|
|
||||||
with the Library (or with a work based on the Library) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
|
||||||
License instead of this License to a given copy of the Library. To do
|
|
||||||
this, you must alter all the notices that refer to this License, so
|
|
||||||
that they refer to the ordinary GNU General Public License, version 2,
|
|
||||||
instead of to this License. (If a newer version than version 2 of the
|
|
||||||
ordinary GNU General Public License has appeared, then you can specify
|
|
||||||
that version instead if you wish.) Do not make any other change in
|
|
||||||
these notices.
|
|
||||||
^L
|
|
||||||
Once this change is made in a given copy, it is irreversible for
|
|
||||||
that copy, so the ordinary GNU General Public License applies to all
|
|
||||||
subsequent copies and derivative works made from that copy.
|
|
||||||
|
|
||||||
This option is useful when you wish to copy part of the code of
|
|
||||||
the Library into a program that is not a library.
|
|
||||||
|
|
||||||
4. You may copy and distribute the Library (or a portion or
|
|
||||||
derivative of it, under Section 2) in object code or executable form
|
|
||||||
under the terms of Sections 1 and 2 above provided that you accompany
|
|
||||||
it with the complete corresponding machine-readable source code, which
|
|
||||||
must be distributed under the terms of Sections 1 and 2 above on a
|
|
||||||
medium customarily used for software interchange.
|
|
||||||
|
|
||||||
If distribution of object code is made by offering access to copy
|
|
||||||
from a designated place, then offering equivalent access to copy the
|
|
||||||
source code from the same place satisfies the requirement to
|
|
||||||
distribute the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
5. A program that contains no derivative of any portion of the
|
|
||||||
Library, but is designed to work with the Library by being compiled or
|
|
||||||
linked with it, is called a "work that uses the Library". Such a
|
|
||||||
work, in isolation, is not a derivative work of the Library, and
|
|
||||||
therefore falls outside the scope of this License.
|
|
||||||
|
|
||||||
However, linking a "work that uses the Library" with the Library
|
|
||||||
creates an executable that is a derivative of the Library (because it
|
|
||||||
contains portions of the Library), rather than a "work that uses the
|
|
||||||
library". The executable is therefore covered by this License.
|
|
||||||
Section 6 states terms for distribution of such executables.
|
|
||||||
|
|
||||||
When a "work that uses the Library" uses material from a header file
|
|
||||||
that is part of the Library, the object code for the work may be a
|
|
||||||
derivative work of the Library even though the source code is not.
|
|
||||||
Whether this is true is especially significant if the work can be
|
|
||||||
linked without the Library, or if the work is itself a library. The
|
|
||||||
threshold for this to be true is not precisely defined by law.
|
|
||||||
|
|
||||||
If such an object file uses only numerical parameters, data
|
|
||||||
structure layouts and accessors, and small macros and small inline
|
|
||||||
functions (ten lines or less in length), then the use of the object
|
|
||||||
file is unrestricted, regardless of whether it is legally a derivative
|
|
||||||
work. (Executables containing this object code plus portions of the
|
|
||||||
Library will still fall under Section 6.)
|
|
||||||
|
|
||||||
Otherwise, if the work is a derivative of the Library, you may
|
|
||||||
distribute the object code for the work under the terms of Section 6.
|
|
||||||
Any executables containing that work also fall under Section 6,
|
|
||||||
whether or not they are linked directly with the Library itself.
|
|
||||||
^L
|
|
||||||
6. As an exception to the Sections above, you may also combine or
|
|
||||||
link a "work that uses the Library" with the Library to produce a
|
|
||||||
work containing portions of the Library, and distribute that work
|
|
||||||
under terms of your choice, provided that the terms permit
|
|
||||||
modification of the work for the customer's own use and reverse
|
|
||||||
engineering for debugging such modifications.
|
|
||||||
|
|
||||||
You must give prominent notice with each copy of the work that the
|
|
||||||
Library is used in it and that the Library and its use are covered by
|
|
||||||
this License. You must supply a copy of this License. If the work
|
|
||||||
during execution displays copyright notices, you must include the
|
|
||||||
copyright notice for the Library among them, as well as a reference
|
|
||||||
directing the user to the copy of this License. Also, you must do one
|
|
||||||
of these things:
|
|
||||||
|
|
||||||
a) Accompany the work with the complete corresponding
|
|
||||||
machine-readable source code for the Library including whatever
|
|
||||||
changes were used in the work (which must be distributed under
|
|
||||||
Sections 1 and 2 above); and, if the work is an executable linked
|
|
||||||
with the Library, with the complete machine-readable "work that
|
|
||||||
uses the Library", as object code and/or source code, so that the
|
|
||||||
user can modify the Library and then relink to produce a modified
|
|
||||||
executable containing the modified Library. (It is understood
|
|
||||||
that the user who changes the contents of definitions files in the
|
|
||||||
Library will not necessarily be able to recompile the application
|
|
||||||
to use the modified definitions.)
|
|
||||||
|
|
||||||
b) Use a suitable shared library mechanism for linking with the
|
|
||||||
Library. A suitable mechanism is one that (1) uses at run time a
|
|
||||||
copy of the library already present on the user's computer system,
|
|
||||||
rather than copying library functions into the executable, and (2)
|
|
||||||
will operate properly with a modified version of the library, if
|
|
||||||
the user installs one, as long as the modified version is
|
|
||||||
interface-compatible with the version that the work was made with.
|
|
||||||
|
|
||||||
c) Accompany the work with a written offer, valid for at
|
|
||||||
least three years, to give the same user the materials
|
|
||||||
specified in Subsection 6a, above, for a charge no more
|
|
||||||
than the cost of performing this distribution.
|
|
||||||
|
|
||||||
d) If distribution of the work is made by offering access to copy
|
|
||||||
from a designated place, offer equivalent access to copy the above
|
|
||||||
specified materials from the same place.
|
|
||||||
|
|
||||||
e) Verify that the user has already received a copy of these
|
|
||||||
materials or that you have already sent this user a copy.
|
|
||||||
|
|
||||||
For an executable, the required form of the "work that uses the
|
|
||||||
Library" must include any data and utility programs needed for
|
|
||||||
reproducing the executable from it. However, as a special exception,
|
|
||||||
the materials to be distributed need not include anything that is
|
|
||||||
normally distributed (in either source or binary form) with the major
|
|
||||||
components (compiler, kernel, and so on) of the operating system on
|
|
||||||
which the executable runs, unless that component itself accompanies
|
|
||||||
the executable.
|
|
||||||
|
|
||||||
It may happen that this requirement contradicts the license
|
|
||||||
restrictions of other proprietary libraries that do not normally
|
|
||||||
accompany the operating system. Such a contradiction means you cannot
|
|
||||||
use both them and the Library together in an executable that you
|
|
||||||
distribute.
|
|
||||||
^L
|
|
||||||
7. You may place library facilities that are a work based on the
|
|
||||||
Library side-by-side in a single library together with other library
|
|
||||||
facilities not covered by this License, and distribute such a combined
|
|
||||||
library, provided that the separate distribution of the work based on
|
|
||||||
the Library and of the other library facilities is otherwise
|
|
||||||
permitted, and provided that you do these two things:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work
|
|
||||||
based on the Library, uncombined with any other library
|
|
||||||
facilities. This must be distributed under the terms of the
|
|
||||||
Sections above.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library of the fact
|
|
||||||
that part of it is a work based on the Library, and explaining
|
|
||||||
where to find the accompanying uncombined form of the same work.
|
|
||||||
|
|
||||||
8. You may not copy, modify, sublicense, link with, or distribute
|
|
||||||
the Library except as expressly provided under this License. Any
|
|
||||||
attempt otherwise to copy, modify, sublicense, link with, or
|
|
||||||
distribute the Library is void, and will automatically terminate your
|
|
||||||
rights under this License. However, parties who have received copies,
|
|
||||||
or rights, from you under this License will not have their licenses
|
|
||||||
terminated so long as such parties remain in full compliance.
|
|
||||||
|
|
||||||
9. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Library or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Library (or any work based on the
|
|
||||||
Library), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Library or works based on it.
|
|
||||||
|
|
||||||
10. Each time you redistribute the Library (or any work based on the
|
|
||||||
Library), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute, link with or modify the Library
|
|
||||||
subject to these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties with
|
|
||||||
this License.
|
|
||||||
^L
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Library at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Library by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Library.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under
|
|
||||||
any particular circumstance, the balance of the section is intended to
|
|
||||||
apply, and the section as a whole is intended to apply in other
|
|
||||||
circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
12. If the distribution and/or use of the Library is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Library under this License
|
|
||||||
may add an explicit geographical distribution limitation excluding those
|
|
||||||
countries, so that distribution is permitted only in or among
|
|
||||||
countries not thus excluded. In such case, this License incorporates
|
|
||||||
the limitation as if written in the body of this License.
|
|
||||||
|
|
||||||
13. The Free Software Foundation may publish revised and/or new
|
|
||||||
versions of the Lesser General Public License from time to time.
|
|
||||||
Such new versions will be similar in spirit to the present version,
|
|
||||||
but may differ in detail to address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the Library
|
|
||||||
specifies a version number of this License which applies to it and
|
|
||||||
"any later version", you have the option of following the terms and
|
|
||||||
conditions either of that version or of any later version published by
|
|
||||||
the Free Software Foundation. If the Library does not specify a
|
|
||||||
license version number, you may choose any version ever published by
|
|
||||||
the Free Software Foundation.
|
|
||||||
^L
|
|
||||||
14. If you wish to incorporate parts of the Library into other free
|
|
||||||
programs whose distribution conditions are incompatible with these,
|
|
||||||
write to the author to ask for permission. For software which is
|
|
||||||
copyrighted by the Free Software Foundation, write to the Free
|
|
||||||
Software Foundation; we sometimes make exceptions for this. Our
|
|
||||||
decision will be guided by the two goals of preserving the free status
|
|
||||||
of all derivatives of our free software and of promoting the sharing
|
|
||||||
and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
|
||||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
|
||||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
|
||||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
|
||||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
|
||||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
|
||||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
|
||||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
|
||||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
|
||||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
|
||||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
|
||||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
|
||||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
|
||||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
|
||||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
||||||
DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
^L
|
|
||||||
How to Apply These Terms to Your New Libraries
|
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
|
||||||
possible use to the public, we recommend making it free software that
|
|
||||||
everyone can redistribute and change. You can do so by permitting
|
|
||||||
redistribution under these terms (or, alternatively, under the terms
|
|
||||||
of the ordinary General Public License).
|
|
||||||
|
|
||||||
To apply these terms, attach the following notices to the library.
|
|
||||||
It is safest to attach them to the start of each source file to most
|
|
||||||
effectively convey the exclusion of warranty; and each file should
|
|
||||||
have at least the "copyright" line and a pointer to where the full
|
|
||||||
notice is found.
|
|
||||||
|
|
||||||
|
|
||||||
<one line to give the library's name and a brief idea of what it
|
|
||||||
does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with this library; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper
|
|
||||||
mail.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or
|
|
||||||
your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
|
||||||
library `Frob' (a library for tweaking knobs) written by James
|
|
||||||
Random Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1990
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
That's all there is to it!
|
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,229 +0,0 @@
|
||||||
Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
|
|
||||||
Foundation, Inc.
|
|
||||||
|
|
||||||
This file is free documentation; the Free Software Foundation gives
|
|
||||||
unlimited permission to copy, distribute and modify it.
|
|
||||||
|
|
||||||
Basic Installation
|
|
||||||
==================
|
|
||||||
|
|
||||||
These are generic installation instructions.
|
|
||||||
|
|
||||||
The `configure' shell script attempts to guess correct values for
|
|
||||||
various system-dependent variables used during compilation. It uses
|
|
||||||
those values to create a `Makefile' in each directory of the package.
|
|
||||||
It may also create one or more `.h' files containing system-dependent
|
|
||||||
definitions. Finally, it creates a shell script `config.status' that
|
|
||||||
you can run in the future to recreate the current configuration, and a
|
|
||||||
file `config.log' containing compiler output (useful mainly for
|
|
||||||
debugging `configure').
|
|
||||||
|
|
||||||
It can also use an optional file (typically called `config.cache'
|
|
||||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
|
||||||
the results of its tests to speed up reconfiguring. (Caching is
|
|
||||||
disabled by default to prevent problems with accidental use of stale
|
|
||||||
cache files.)
|
|
||||||
|
|
||||||
If you need to do unusual things to compile the package, please try
|
|
||||||
to figure out how `configure' could check whether to do them, and mail
|
|
||||||
diffs or instructions to the address given in the `README' so they can
|
|
||||||
be considered for the next release. If you are using the cache, and at
|
|
||||||
some point `config.cache' contains results you don't want to keep, you
|
|
||||||
may remove or edit it.
|
|
||||||
|
|
||||||
The file `configure.ac' (or `configure.in') is used to create
|
|
||||||
`configure' by a program called `autoconf'. You only need
|
|
||||||
`configure.ac' if you want to change it or regenerate `configure' using
|
|
||||||
a newer version of `autoconf'.
|
|
||||||
|
|
||||||
The simplest way to compile this package is:
|
|
||||||
|
|
||||||
1. `cd' to the directory containing the package's source code and type
|
|
||||||
`./configure' to configure the package for your system. If you're
|
|
||||||
using `csh' on an old version of System V, you might need to type
|
|
||||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
|
||||||
`configure' itself.
|
|
||||||
|
|
||||||
Running `configure' takes awhile. While running, it prints some
|
|
||||||
messages telling which features it is checking for.
|
|
||||||
|
|
||||||
2. Type `make' to compile the package.
|
|
||||||
|
|
||||||
3. Optionally, type `make check' to run any self-tests that come with
|
|
||||||
the package.
|
|
||||||
|
|
||||||
4. Type `make install' to install the programs and any data files and
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
5. You can remove the program binaries and object files from the
|
|
||||||
source code directory by typing `make clean'. To also remove the
|
|
||||||
files that `configure' created (so you can compile the package for
|
|
||||||
a different kind of computer), type `make distclean'. There is
|
|
||||||
also a `make maintainer-clean' target, but that is intended mainly
|
|
||||||
for the package's developers. If you use it, you may have to get
|
|
||||||
all sorts of other programs in order to regenerate files that came
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
Compilers and Options
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Some systems require unusual options for compilation or linking that
|
|
||||||
the `configure' script does not know about. Run `./configure --help'
|
|
||||||
for details on some of the pertinent environment variables.
|
|
||||||
|
|
||||||
You can give `configure' initial values for configuration parameters
|
|
||||||
by setting variables in the command line or in the environment. Here
|
|
||||||
is an example:
|
|
||||||
|
|
||||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
|
||||||
|
|
||||||
*Note Defining Variables::, for more details.
|
|
||||||
|
|
||||||
Compiling For Multiple Architectures
|
|
||||||
====================================
|
|
||||||
|
|
||||||
You can compile the package for more than one kind of computer at the
|
|
||||||
same time, by placing the object files for each architecture in their
|
|
||||||
own directory. To do this, you must use a version of `make' that
|
|
||||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
|
||||||
directory where you want the object files and executables to go and run
|
|
||||||
the `configure' script. `configure' automatically checks for the
|
|
||||||
source code in the directory that `configure' is in and in `..'.
|
|
||||||
|
|
||||||
If you have to use a `make' that does not support the `VPATH'
|
|
||||||
variable, you have to compile the package for one architecture at a
|
|
||||||
time in the source code directory. After you have installed the
|
|
||||||
package for one architecture, use `make distclean' before reconfiguring
|
|
||||||
for another architecture.
|
|
||||||
|
|
||||||
Installation Names
|
|
||||||
==================
|
|
||||||
|
|
||||||
By default, `make install' will install the package's files in
|
|
||||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
|
||||||
installation prefix other than `/usr/local' by giving `configure' the
|
|
||||||
option `--prefix=PATH'.
|
|
||||||
|
|
||||||
You can specify separate installation prefixes for
|
|
||||||
architecture-specific files and architecture-independent files. If you
|
|
||||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
|
||||||
PATH as the prefix for installing programs and libraries.
|
|
||||||
Documentation and other data files will still use the regular prefix.
|
|
||||||
|
|
||||||
In addition, if you use an unusual directory layout you can give
|
|
||||||
options like `--bindir=PATH' to specify different values for particular
|
|
||||||
kinds of files. Run `configure --help' for a list of the directories
|
|
||||||
you can set and what kinds of files go in them.
|
|
||||||
|
|
||||||
If the package supports it, you can cause programs to be installed
|
|
||||||
with an extra prefix or suffix on their names by giving `configure' the
|
|
||||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
|
||||||
|
|
||||||
Optional Features
|
|
||||||
=================
|
|
||||||
|
|
||||||
Some packages pay attention to `--enable-FEATURE' options to
|
|
||||||
`configure', where FEATURE indicates an optional part of the package.
|
|
||||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
|
||||||
is something like `gnu-as' or `x' (for the X Window System). The
|
|
||||||
`README' should mention any `--enable-' and `--with-' options that the
|
|
||||||
package recognizes.
|
|
||||||
|
|
||||||
For packages that use the X Window System, `configure' can usually
|
|
||||||
find the X include and library files automatically, but if it doesn't,
|
|
||||||
you can use the `configure' options `--x-includes=DIR' and
|
|
||||||
`--x-libraries=DIR' to specify their locations.
|
|
||||||
|
|
||||||
Specifying the System Type
|
|
||||||
==========================
|
|
||||||
|
|
||||||
There may be some features `configure' cannot figure out
|
|
||||||
automatically, but needs to determine by the type of machine the package
|
|
||||||
will run on. Usually, assuming the package is built to be run on the
|
|
||||||
_same_ architectures, `configure' can figure that out, but if it prints
|
|
||||||
a message saying it cannot guess the machine type, give it the
|
|
||||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
|
||||||
type, such as `sun4', or a canonical name which has the form:
|
|
||||||
|
|
||||||
CPU-COMPANY-SYSTEM
|
|
||||||
|
|
||||||
where SYSTEM can have one of these forms:
|
|
||||||
|
|
||||||
OS KERNEL-OS
|
|
||||||
|
|
||||||
See the file `config.sub' for the possible values of each field. If
|
|
||||||
`config.sub' isn't included in this package, then this package doesn't
|
|
||||||
need to know the machine type.
|
|
||||||
|
|
||||||
If you are _building_ compiler tools for cross-compiling, you should
|
|
||||||
use the `--target=TYPE' option to select the type of system they will
|
|
||||||
produce code for.
|
|
||||||
|
|
||||||
If you want to _use_ a cross compiler, that generates code for a
|
|
||||||
platform different from the build platform, you should specify the
|
|
||||||
"host" platform (i.e., that on which the generated programs will
|
|
||||||
eventually be run) with `--host=TYPE'.
|
|
||||||
|
|
||||||
Sharing Defaults
|
|
||||||
================
|
|
||||||
|
|
||||||
If you want to set default values for `configure' scripts to share,
|
|
||||||
you can create a site shell script called `config.site' that gives
|
|
||||||
default values for variables like `CC', `cache_file', and `prefix'.
|
|
||||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
|
||||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
|
||||||
`CONFIG_SITE' environment variable to the location of the site script.
|
|
||||||
A warning: not all `configure' scripts look for a site script.
|
|
||||||
|
|
||||||
Defining Variables
|
|
||||||
==================
|
|
||||||
|
|
||||||
Variables not defined in a site shell script can be set in the
|
|
||||||
environment passed to `configure'. However, some packages may run
|
|
||||||
configure again during the build, and the customized values of these
|
|
||||||
variables may be lost. In order to avoid this problem, you should set
|
|
||||||
them in the `configure' command line, using `VAR=value'. For example:
|
|
||||||
|
|
||||||
./configure CC=/usr/local2/bin/gcc
|
|
||||||
|
|
||||||
will cause the specified gcc to be used as the C compiler (unless it is
|
|
||||||
overridden in the site shell script).
|
|
||||||
|
|
||||||
`configure' Invocation
|
|
||||||
======================
|
|
||||||
|
|
||||||
`configure' recognizes the following options to control how it
|
|
||||||
operates.
|
|
||||||
|
|
||||||
`--help'
|
|
||||||
`-h'
|
|
||||||
Print a summary of the options to `configure', and exit.
|
|
||||||
|
|
||||||
`--version'
|
|
||||||
`-V'
|
|
||||||
Print the version of Autoconf used to generate the `configure'
|
|
||||||
script, and exit.
|
|
||||||
|
|
||||||
`--cache-file=FILE'
|
|
||||||
Enable the cache: use and save the results of the tests in FILE,
|
|
||||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
|
||||||
disable caching.
|
|
||||||
|
|
||||||
`--config-cache'
|
|
||||||
`-C'
|
|
||||||
Alias for `--cache-file=config.cache'.
|
|
||||||
|
|
||||||
`--quiet'
|
|
||||||
`--silent'
|
|
||||||
`-q'
|
|
||||||
Do not print messages saying which checks are being made. To
|
|
||||||
suppress all normal output, redirect it to `/dev/null' (any error
|
|
||||||
messages will still be shown).
|
|
||||||
|
|
||||||
`--srcdir=DIR'
|
|
||||||
Look for the package's source code in directory DIR. Usually
|
|
||||||
`configure' can determine that directory automatically.
|
|
||||||
|
|
||||||
`configure' also accepts some other, not widely useful, options. Run
|
|
||||||
`configure --help' for more details.
|
|
||||||
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
|
|
||||||
# it includes all the autostuff automatically, you just name the
|
|
||||||
# other stuff here
|
|
||||||
EXTRA_DIST = autogen.sh sigc++config.h.in libsigc++-2.0.spec.in
|
|
||||||
# ACLOCAL_FLAGS = -I scripts
|
|
||||||
|
|
||||||
SUBDIRS = sigc++
|
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
|
||||||
|
|
||||||
sigc_configdir = $(libdir)/sigc++-2.0/include
|
|
||||||
sigc_config_DATA = sigc++config.h
|
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
|
||||||
pkgconfig_DATA = sigc++-2.0.pc
|
|
||||||
|
|
||||||
all-local:
|
|
||||||
@echo "*** Everything completed ***"
|
|
||||||
|
|
||||||
dist-hook:
|
|
||||||
@echo; echo; \
|
|
||||||
echo "**********************************************************"; \
|
|
||||||
echo "* IMPORTANT NOTICE: *"; \
|
|
||||||
echo "* *"; \
|
|
||||||
echo "* Be sure you have done a complete build before running *"; \
|
|
||||||
echo "* 'make dist' or 'make distcheck', because otherwise *"; \
|
|
||||||
echo "* the tarball will _not_ contain the dependency rules *"; \
|
|
||||||
echo "* generated by the compiler. *"; \
|
|
||||||
echo "**********************************************************"; \
|
|
||||||
echo; echo \
|
|
||||||
cp libsigc++-2.0.spec $(distdir)
|
|
||||||
|
|
@ -1,232 +0,0 @@
|
||||||
*** libsigc++ 2.0:
|
|
||||||
|
|
||||||
libsigc++ implements a typesafe callback system for standard C++. It
|
|
||||||
allows you to define signals and to connect those signals to any
|
|
||||||
callback function, either global or a member function, regardless of
|
|
||||||
whether it is static or virtual.
|
|
||||||
|
|
||||||
libsigc++ is used by gtkmm to wrap the GTK+ signal system. It does not depend
|
|
||||||
on GTK or gtkmm.
|
|
||||||
|
|
||||||
libsigc++ 2.0 uses modern C++ mechanisms to achieve a highly flexible,
|
|
||||||
yet typesafe callback system. It supports all features of libsigc++ 1.2
|
|
||||||
and improves upon it with a simpler and more powerful API.
|
|
||||||
|
|
||||||
This version of libsigc++ needs GNU g++ 3.2 or higher to compile.
|
|
||||||
|
|
||||||
|
|
||||||
*** ChangeLog summary:
|
|
||||||
|
|
||||||
2.0.6:
|
|
||||||
|
|
||||||
* Fixed a memory leak in sigc::slot.
|
|
||||||
* Fixed compilation for gcc-3.4.
|
|
||||||
* Fixed compilation for Intel C++ compiler (upgraded libtool).
|
|
||||||
* Fixed project files for MSVC .Net (Timothy M. Shead).
|
|
||||||
* Fixed segfaults when compiled with MSVC .Net 2003 (moved
|
|
||||||
all calls to new and delete into non-inline library code).
|
|
||||||
* In the compatibility module use correct bound_mem_functor
|
|
||||||
variants for const (volatile) methods when creating a slot.
|
|
||||||
* Minor documentation fix.
|
|
||||||
* Resolved bugs: #152327 #148744 #152323 #151404 #153143
|
|
||||||
|
|
||||||
2.0.5:
|
|
||||||
|
|
||||||
* Distribute pregenerated configuration header for MSVC .Net.
|
|
||||||
|
|
||||||
2.0.4:
|
|
||||||
|
|
||||||
* Fixed warnings and compiler errors in the test cases.
|
|
||||||
* Added a new test case (Murray Cumming).
|
|
||||||
* Fixed 'hello_world' example.
|
|
||||||
* Don't test optional features that fail with the Sun FORTE.
|
|
||||||
* Fixes for the Sun FORTE to compile out-of-the-box
|
|
||||||
(Damien Carbery, Murray Cumming, Martin Schulze).
|
|
||||||
* Fixes for MSVC to build a DLL out-of-the-box (James Lin).
|
|
||||||
* Improved compiler specific configuration during 'configure'.
|
|
||||||
* Added rmp description file libsigc++-2.0.spec (Eric Bourque).
|
|
||||||
* Minor documentation improvements (Murray Cumming).
|
|
||||||
* Resolved bugs: #147311 #147313 #147391 #144846 #145541
|
|
||||||
|
|
||||||
2.0.3:
|
|
||||||
|
|
||||||
* Fix segfault on emission of unconnected signal.
|
|
||||||
* Test emission of unconnected signals in the test case.
|
|
||||||
* Suppress compiler warning at dynamic_cast<>-test for good.
|
|
||||||
(Help from Christof Petig and Timothy M. Shead.)
|
|
||||||
|
|
||||||
2.0.2:
|
|
||||||
|
|
||||||
* Suppress compiler warning in compatibility module at
|
|
||||||
dynamic_cast<>-test (fix suggested by Timothy M. Shead).
|
|
||||||
* If a custom accumulator is specified invoke it on signal
|
|
||||||
emission even if the signal's slot list is empty. (This used
|
|
||||||
to be the case in libsigc++-1.2 as pointed out by Timothy.)
|
|
||||||
|
|
||||||
2.0.1:
|
|
||||||
|
|
||||||
* Fixed serious bug in reference counting in sigc::signal_base::impl().
|
|
||||||
* Fixed SigC::Object-derivation check in SigC::slot() compatibility module.
|
|
||||||
* Fixed compilation on Apple gcc 3.3 (assisted by Spundun Bhatt).
|
|
||||||
* Fixed configure check for gcc 3.4 (Murray Cumming).
|
|
||||||
|
|
||||||
2.0.0:
|
|
||||||
|
|
||||||
* Implemented sigc::connection::blocked() (Murray Cumming).
|
|
||||||
* Added the scripts directory to the make dist target (Murray Cumming).
|
|
||||||
* Added more documentation (Martin Schulze).
|
|
||||||
|
|
||||||
1.9.16:
|
|
||||||
|
|
||||||
* Fixed compiler warning in sigc::connection (Alexander Nedotsukov, Murray Cumming).
|
|
||||||
* Fixed examples and made them part of the regular build (Murray Cumming).
|
|
||||||
* Added header sigc++config.h for configure time checks (Murray Cumming).
|
|
||||||
* Added configure time checks to determine the correct syntax
|
|
||||||
for explicit template method specializations (Murray Cumming).
|
|
||||||
* Removed code using partial specializations of overloaded template methods
|
|
||||||
from test cases. SUN Forte doesn't support this feature (Martin Schulze).
|
|
||||||
* Fixed compilation for gcc 3.4 (Murray Cumming).
|
|
||||||
|
|
||||||
1.9.15:
|
|
||||||
|
|
||||||
API additions:
|
|
||||||
* Add numbered slot# templates.
|
|
||||||
* Allow for methods of the object's base types to be passed into sigc::mem_fun().
|
|
||||||
|
|
||||||
Other fixes and cleanups:
|
|
||||||
* Make is_base_and_derived template compatible with the SUN Forte.
|
|
||||||
* Non-template code moved from .m4 macro source to .h/.cc files (Murray Cumming).
|
|
||||||
* Implementation moved to .cc files (Murray Cumming).
|
|
||||||
* More fixes for the SUN Forte. Make some more ctors explicit.
|
|
||||||
|
|
||||||
1.9.14:
|
|
||||||
|
|
||||||
* Added sigc::slot_base::operator bool() (Murray Cumming).
|
|
||||||
* Build docs directory by default (Murray Cumming).
|
|
||||||
* Fixed minor doxygen issues (Murray Cumming).
|
|
||||||
* Fixed compiler warning in signal.h (Murray Cumming).
|
|
||||||
|
|
||||||
1.9.13:
|
|
||||||
|
|
||||||
* Fixed passing references through sigc::slot (Reported by Jeff Franks).
|
|
||||||
* Enabled binding of objects to method slots through sigc::bind().
|
|
||||||
* Reworked sigc::bind() API: Made the template argument for the
|
|
||||||
parameter position zero-based and optional. Added overloads for
|
|
||||||
binding of up to 7 arguments at a time when no position is specified.
|
|
||||||
* Reworked sigc::hide() API: Made the template argument for the
|
|
||||||
parameter position zero-based and optional.
|
|
||||||
* Fixed compilation problems with MSVC .Net 2003 (Roel Vanhout).
|
|
||||||
* Distribute MSVC .Net 2003 project files in the tarballs.
|
|
||||||
* Improved and extended documentation.
|
|
||||||
* Minor cleanups.
|
|
||||||
|
|
||||||
1.9.12:
|
|
||||||
|
|
||||||
* Added adaptor retype(). With this final API addition all adaptors
|
|
||||||
are in place that are available in libsigc++-1.2.
|
|
||||||
* Added negation lambda operator. Use STL names for lambda actions.
|
|
||||||
* Remove formerly disabled support for gcc extension typeof().
|
|
||||||
* Added project files for MS Visual Studio .Net 2003. (Roel Vanhout)
|
|
||||||
* Make libsigc++2 compile with .Net 2003. (Roel Vanhout, Martin Schulze)
|
|
||||||
* Build shared version of libsigc++2 by default. (Cedric Gustin)
|
|
||||||
* Add support for win32 platform. (Cedric Gustin)
|
|
||||||
* Install .m4 files. (requested by Ron Steinke)
|
|
||||||
* Cleaned up functors.
|
|
||||||
* Restructured and completed documentation of the core library parts.
|
|
||||||
|
|
||||||
1.9.11:
|
|
||||||
|
|
||||||
API Additions and important bug fixes:
|
|
||||||
* Compatibility module completed. libsigc++-1.2 filenames are preserved.
|
|
||||||
* Fixed critical bug in auto-disconnection: don't defer detaching
|
|
||||||
of a slot from all referred trackables during signal emission.
|
|
||||||
* Reduced size of slots significantly.
|
|
||||||
* Fixed support for sigc::ref() in adaptors.
|
|
||||||
* Fixed sigc::visit_each(): only hit targets that are passed by
|
|
||||||
reference; pass bound members in bound_member_functor by reference.
|
|
||||||
* Add lambda actions sigc::{reinterpret,static,dynamic}_cast_
|
|
||||||
to support explicit parameter conversion.
|
|
||||||
* Add adaptors sigc::retype_return<>() and sigc::hide_return().
|
|
||||||
|
|
||||||
Minor fixes:
|
|
||||||
* Fixed return type deduction for bind<0>.
|
|
||||||
libsigc++-1.9.11 should compile with gcc-3.3.
|
|
||||||
* Fixed copy constructor and operator=() of slot template.
|
|
||||||
* Fixed a compiler warning in signal_emit#<>::emit().
|
|
||||||
* Improved test case.
|
|
||||||
|
|
||||||
1.9.10:
|
|
||||||
|
|
||||||
* Fix compiler issues with gcc-3.3.2 (patch from Jeff Franks).
|
|
||||||
* Remove compiler check for the gcc extension typeof().
|
|
||||||
* Simplify bind_functor templates.
|
|
||||||
* Move definition of struct nil into functor_trait.h.
|
|
||||||
|
|
||||||
1.9.9:
|
|
||||||
|
|
||||||
* Add a constructor to sigc::connection that takes a slot_base&
|
|
||||||
to support user defined slot lists like they are used in gtkmm.
|
|
||||||
* Fix compiler issues with gcc-3.3.2 (reported by Jeff Franks).
|
|
||||||
|
|
||||||
1.9.8:
|
|
||||||
|
|
||||||
* Add compatibility module that defines namespace SigC.
|
|
||||||
namespace SigC should be API compatible to libsigc++-1.2.
|
|
||||||
Currently only the core parts of the library are supported.
|
|
||||||
Adaptors are still to follow.
|
|
||||||
* Fix connection::operator=(). Include connection.h in sigc++.h.
|
|
||||||
* Get rid of namespace functor.
|
|
||||||
* Rename dependency to destroy_notify_callback.
|
|
||||||
* Rename trackable::clear() to trackable::notify_callbacks().
|
|
||||||
* Move slot_base, signal_base, slot_iterator[_buf], slot_list
|
|
||||||
out of namespace internal. They are public API.
|
|
||||||
* Add reference counter to signal_impl enabling signals
|
|
||||||
to share the underlying information.
|
|
||||||
* Add convenience function signal#::make_slot().
|
|
||||||
* Get rid of one-letter-parameter-names.
|
|
||||||
* Get rid of "using namespace ..." in the test cases.
|
|
||||||
* Add lambda operators subscript ([]) and assign (=).
|
|
||||||
* Fix is_base_and_derived<> for const types.
|
|
||||||
* New and updated documentation.
|
|
||||||
* Add previous announces to file NEWS.
|
|
||||||
|
|
||||||
1.9.7:
|
|
||||||
|
|
||||||
* Added sigc++/sigc++.h. (Murray Cumming)
|
|
||||||
* Added member_method example. (Murray Cumming)
|
|
||||||
* Renamed closure to slot.
|
|
||||||
* Fixed issues with gcc-3.3. (Adreas Rottmann)
|
|
||||||
* Removed unnecessary void specializations.
|
|
||||||
* Made adaptors' operator()() (overload with no arguments) return a value.
|
|
||||||
* Made visit_each() support adaptors.
|
|
||||||
* Overhauled return type deduction to make it work without typeof().
|
|
||||||
* Added convinience macros SIGC_FUNCTORS_HAVE_RESULT_TYPE and
|
|
||||||
SIGC_FUNCTOR_TRAIT(T_functor, T_result) to make return type deduction system
|
|
||||||
support 3rd-party funtors.
|
|
||||||
* Changed syntax of group adaptor from "[functor] % grp([lambdas])" to "group
|
|
||||||
([functor], [lambdas])".
|
|
||||||
* Made many fixes to lambda functionality.
|
|
||||||
* Added var() and constant() lambda creators.
|
|
||||||
* Added many lambda operators.
|
|
||||||
* Added ref() which creates a reference wrapper to enable storage of
|
|
||||||
references in bind and group adaptors.
|
|
||||||
* Expanded test suite.
|
|
||||||
* Added documentation. (Corrections by Murray Cumming)
|
|
||||||
|
|
||||||
1.9.6:
|
|
||||||
|
|
||||||
* First public release of the unstable 2.0 generation.
|
|
||||||
libsigc++ 2.0 uses modern C++ mechanisms to achieve a highly
|
|
||||||
flexible, yet typesafe callback system. It supports all features of
|
|
||||||
libsigc++ 1.2 and improves upon it by:
|
|
||||||
- No need to specify the number of arguments in signal definitions.
|
|
||||||
- Connection of any compatible (=implicitly convertable) functor
|
|
||||||
to a signal.
|
|
||||||
- Implicit type conversions of parameters during signal emission.
|
|
||||||
- Lambda adaptor for complete restructuring of functor parameter
|
|
||||||
lists in one line (subject to changes).
|
|
||||||
- Signal has a fully featured stl style list interface.
|
|
||||||
- A convinient accumulator API (replacing the old marshaller API).
|
|
||||||
- Removal of unnecessary memory management functionality.
|
|
||||||
- Lightweight class "trackable" for use as base class of your
|
|
||||||
class hierarchy replaces class "Object".
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
libsigc++ -- The Typesafe Callback Framework for C++
|
|
||||||
|
|
||||||
|
|
||||||
General information:
|
|
||||||
|
|
||||||
libsigc++ implements a typesafe callback system for standard C++. It
|
|
||||||
allows you to define signals and to connect those signals to any
|
|
||||||
callback function, either global or a member function, regardless of
|
|
||||||
whether it is static or virtual.
|
|
||||||
|
|
||||||
libsigc++ is used by gtkmm to wrap the GTK+ signal system. It does not
|
|
||||||
depend on GTK or gtkmm.
|
|
||||||
|
|
||||||
Further information about the major release 2.0 is available on the
|
|
||||||
libsigc++ project home page: http://libsigc.sourceforge.net/
|
|
||||||
|
|
||||||
|
|
||||||
License information:
|
|
||||||
|
|
||||||
Distribution of library and components is under the LGPL as listed in the
|
|
||||||
file COPYING. Examples and tests are Public Domain.
|
|
||||||
|
|
||||||
|
|
||||||
Contact information:
|
|
||||||
Maintainer: mailto: mschulze@cvs.gnome.org
|
|
||||||
Maillist: mailto: libsigc-list@gnome.org
|
|
||||||
Homepage: http://libsigc.sourceforge.net
|
|
||||||
Online reference documentation: http://libsigc.sourceforge.net/libsigc2/docs/
|
|
||||||
Ftp: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.0/
|
|
||||||
CVS:
|
|
||||||
|
|
||||||
|
|
||||||
Overview of the distribution:
|
|
||||||
|
|
||||||
docs/ documentation on the signal system
|
|
||||||
docs/reference/ reference documentation
|
|
||||||
|
|
||||||
examples/ examples of various signal functions
|
|
||||||
|
|
||||||
sigc++/ source for library
|
|
||||||
sigc++/macros/ .m4 files used to auto-generate source files
|
|
||||||
sigc++/functors/ source for library (various functors)
|
|
||||||
sigc++/functors/macros/ .m4 files used to auto-generate source files
|
|
||||||
sigc++/adaptors/ source for library (various adaptors)
|
|
||||||
sigc++/adaptors/macros/ .m4 files used to auto-generate source files
|
|
||||||
sigc++/adpators/lambda/ source for library (lambda library)
|
|
||||||
sigc++/adpators/lambda/macros/ .m4 files used to auto-generate source files
|
|
||||||
|
|
||||||
scripts/ automake junk
|
|
||||||
|
|
||||||
tests/ programs testing and verifying proper behaviour
|
|
||||||
|
|
||||||
MSVC_Net2003/ project files for building the library with MSVC .NET 2003
|
|
||||||
|
|
||||||
|
|
||||||
Compatibility:
|
|
||||||
|
|
||||||
Compatible compilers must supports the following recent c++ techniques:
|
|
||||||
* Partial template (function) specialization.
|
|
||||||
* Explicit template (member) function instantiation.
|
|
||||||
* Treat void return as normal return.
|
|
||||||
|
|
||||||
This release has only been tested with gcc-3.3. It should at least also compile with:
|
|
||||||
* gcc >= 3.2
|
|
||||||
* cygwin (gcc >= 3.2)
|
|
||||||
* mingw32
|
|
||||||
* Microsoft Visual Studio .Net 2003
|
|
||||||
* Sun Forte C++ compiler >= 5.5
|
|
||||||
* Compaq C++ compiler
|
|
||||||
* Intel compiler
|
|
||||||
Please report any troubles you encounter with these compilers!
|
|
||||||
You are also invited to try a compiler that is not listed above.
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
# -*- python -*-
|
|
||||||
|
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import glob
|
|
||||||
|
|
||||||
sigc2_files = glob.glob('sigc++/*.cc') + glob.glob('sigc++/functors/*.cc') + glob.glob('sigc++/adaptors/lambda/*.cc')
|
|
||||||
|
|
||||||
Import('env install_prefix')
|
|
||||||
sigc2 = env.Copy()
|
|
||||||
|
|
||||||
libsigc2 = sigc2.SharedLibrary('sigc++2', sigc2_files)
|
|
||||||
|
|
||||||
if os.access ('autogen.sh', os.F_OK) :
|
|
||||||
sigc2_configure_script = sigc2.Command ('configure', 'configure.ac', 'cd libs/sigc++2 && ./autogen.sh && cd -', ENV=os.environ)
|
|
||||||
sigc2_config_h = sigc2.Command('sigc++config.h', [sigc2_configure_script, 'sigc++config.h.in'], 'cd libs/sigc++2 && ./configure && cd -', ENV=os.environ)
|
|
||||||
else :
|
|
||||||
sigc2_config_h = sigc2.Command('sigc++config.h', ['configure', 'sigc++config.h.in'], 'cd libs/sigc++2 && ./configure && cd -', ENV=os.environ)
|
|
||||||
|
|
||||||
|
|
||||||
Default([sigc2_config_h,libsigc2])
|
|
||||||
|
|
||||||
env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour3'), libsigc2))
|
|
||||||
|
|
||||||
env.Alias('tarball', env.Distribute (env['DISTTREE'],
|
|
||||||
[ 'NEWS', 'README', 'AUTHORS', 'ChangeLog',
|
|
||||||
'configure', 'configure.ac', 'Makefile.am', 'SConscript',
|
|
||||||
'sigc++/Makefile.in',
|
|
||||||
'sigc++config.h',
|
|
||||||
'sigc++config.h.in',
|
|
||||||
'sigc++-2.0.pc.in',
|
|
||||||
'libsigc++-2.0.spec.in',
|
|
||||||
'install-sh',
|
|
||||||
'Makefile.in',
|
|
||||||
'scripts',
|
|
||||||
'missing',
|
|
||||||
] + sigc2_files +
|
|
||||||
glob.glob('sigc++/*.h') +
|
|
||||||
glob.glob('sigc++/functors/*.h') + glob.glob('sigc++/adaptors/lambda/*.h') +
|
|
||||||
glob.glob('sigc++/adaptors/*.h')
|
|
||||||
))
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
||||||
Compatibility:
|
|
||||||
|
|
||||||
- Fix compilation for SUN FORTE C++ 5.5.
|
|
||||||
|
|
||||||
|
|
||||||
Configure checks and Makefile issues:
|
|
||||||
|
|
||||||
- When you use a single Makefile.am for
|
|
||||||
several directories (in sigc++2, all under sigc++/ is ruled by a
|
|
||||||
single Makefile.am with the new build system), you have a problem when
|
|
||||||
you do a build where $(srcdir) != $(builddir), since in the build-tree
|
|
||||||
the necessary subdirectories are not created. So I have to find a
|
|
||||||
place where to create this directories, in case they do not exist.
|
|
||||||
This is only an issue for clean CVS checkouts, however (Andy)
|
|
||||||
|
|
||||||
|
|
||||||
sigc++-1.2 compatibility:
|
|
||||||
|
|
||||||
- Verify completeness.
|
|
||||||
|
|
||||||
|
|
||||||
documentation:
|
|
||||||
|
|
||||||
- Improve documentation: Make groups (see index.html). Exclude stuff to make
|
|
||||||
the html output readable.
|
|
||||||
|
|
||||||
- Add documentation for adaptors and accumulators.
|
|
||||||
|
|
||||||
|
|
||||||
basic functionality:
|
|
||||||
|
|
||||||
- I don't understand what is meant by "stl-pointer-like functions" (Martin):
|
|
||||||
|
|
||||||
slot should have the full set of stl pointer like functions. (Karl Nelson)
|
|
||||||
|
|
||||||
|
|
||||||
lambda functionality (I don't understand this (Martin)):
|
|
||||||
|
|
||||||
- Add support for _R to force references down into
|
|
||||||
the stack frame of lambda. Ie.
|
|
||||||
|
|
||||||
A a;
|
|
||||||
(_1+_2)(1,a); // fail if no "operator int() const"
|
|
||||||
|
|
||||||
- Call groups in lambda. (Huh, that appears to be in group?)
|
|
||||||
|
|
||||||
|
|
||||||
Old TODO's that should be almost finished (Martin):
|
|
||||||
|
|
||||||
- Fine-tooth comb the code looking for missing operator =() function
|
|
||||||
and missing copy constructors.
|
|
||||||
|
|
||||||
- Improve and expand the test suite. There are a lot of combinations which
|
|
||||||
should be valid but haven't been tested which are likely to result in
|
|
||||||
wierd compiler errors if something wasn't done consistantly.
|
|
||||||
|
|
||||||
|
|
||||||
Old TODO's that should be finished (Martin):
|
|
||||||
|
|
||||||
- Improve signal#, it currently is just barely functional.
|
|
||||||
- Add iterator support and stl like functionality to signal.
|
|
||||||
|
|
||||||
- Add blocking capablity to slot.
|
|
||||||
|
|
||||||
- Deinline/move to .cc where possible to move functions into the
|
|
||||||
library to reduce resulting binary size.
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
# check all tools first
|
|
||||||
|
|
||||||
if /usr/bin/which libtoolize >/dev/null 2>&1 ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "You do not have libtool installed, which is very sadly required to build part of Ardour"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if /usr/bin/which automake >/dev/null 2>&1 ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "You do not have automake installed, which is very sadly required to build part of Ardour"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if /usr/bin/which autoconf >/dev/null 2>&1 ; then
|
|
||||||
:
|
|
||||||
else
|
|
||||||
echo "You do not have autoconf installed, which is very sadly required to build part of Ardour"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
srcdir=`dirname $0`
|
|
||||||
test -z "$srcdir" && srcdir=.
|
|
||||||
|
|
||||||
#echo "Adding libtools."
|
|
||||||
#libtoolize --automake --copy --force
|
|
||||||
|
|
||||||
echo "Building macros."
|
|
||||||
aclocal -I "$srcdir/scripts" $ACLOCAL_FLAGS
|
|
||||||
|
|
||||||
echo "Building makefiles."
|
|
||||||
automake --add-missing --copy
|
|
||||||
|
|
||||||
echo "Building configure."
|
|
||||||
autoconf
|
|
||||||
|
|
||||||
rm -f config.cache
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
||||||
dnl Configure.in
|
|
||||||
dnl
|
|
||||||
dnl Source for generating compiler independent libraries.
|
|
||||||
dnl
|
|
||||||
|
|
||||||
dnl INIT is required name a file which is unique to the package
|
|
||||||
dnl just to prevent someone from copying the configure to the wrong package.
|
|
||||||
AC_INIT(sigc++)
|
|
||||||
|
|
||||||
dnl This version stuff is just for the packaging section of the tool.
|
|
||||||
dnl thus make format_package-0.0.1.tar.gz
|
|
||||||
FP_MAJOR_VERSION=2
|
|
||||||
FP_MINOR_VERSION=0
|
|
||||||
FP_MICRO_VERSION=6
|
|
||||||
FP_VERSION=$FP_MAJOR_VERSION.$FP_MINOR_VERSION.$FP_MICRO_VERSION
|
|
||||||
|
|
||||||
dnl For automake.
|
|
||||||
VERSION=$FP_VERSION
|
|
||||||
PACKAGE=libsigc++
|
|
||||||
|
|
||||||
dnl Initialize automake stuff
|
|
||||||
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
|
|
||||||
|
|
||||||
dnl Specify a configuration file:
|
|
||||||
AC_CONFIG_HEADER(sigc++config.h)
|
|
||||||
|
|
||||||
dnl disable autoheader
|
|
||||||
AUTOHEADER=':'
|
|
||||||
|
|
||||||
dnl Maintainer support (autodependencies and packaging)
|
|
||||||
AM_MAINTAINER_MODE
|
|
||||||
|
|
||||||
dnl Using C compiler
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_CPP
|
|
||||||
|
|
||||||
dnl Using libtool
|
|
||||||
AC_CONFIG_MACRO_DIR(scripts)
|
|
||||||
dnl LT_INIT
|
|
||||||
dnl AM_PROG_LIBTOOL
|
|
||||||
|
|
||||||
dnl Using C++ compiler
|
|
||||||
AC_PROG_CXX
|
|
||||||
AC_LANG_CPLUSPLUS
|
|
||||||
|
|
||||||
SIGC_CXX_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD()
|
|
||||||
|
|
||||||
if test "X$config_error" = "Xyes" ; then
|
|
||||||
AC_ERROR(
|
|
||||||
[One or more of the required compiler features is missing.
|
|
||||||
If you believe this is in error, please consult the config.log file
|
|
||||||
for further details.
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Generate output
|
|
||||||
AC_OUTPUT([
|
|
||||||
Makefile
|
|
||||||
sigc++-2.0.pc
|
|
||||||
|
|
||||||
sigc++/Makefile
|
|
||||||
libsigc++-2.0.spec
|
|
||||||
])
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
||||||
Summary: The Typesafe Signal Framework for C++
|
|
||||||
Name: @PACKAGE@
|
|
||||||
Version: @VERSION@
|
|
||||||
Release: 1
|
|
||||||
License: LGPL
|
|
||||||
Group: System Environment/Libraries
|
|
||||||
Packager: Eric Bourque <ericb@computer.org>
|
|
||||||
URL: http://libsigc.sourceforge.net/
|
|
||||||
Source0: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.0/%{name}-%{version}.tar.bz2
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
|
||||||
|
|
||||||
%description
|
|
||||||
|
|
||||||
This library implements a full callback system for use in widget
|
|
||||||
libraries, abstract interfaces, and general programming. Originally
|
|
||||||
part of the Gtk-- widget set, %name is now a seperate library to
|
|
||||||
provide for more general use. It is the most complete library of its
|
|
||||||
kind with the ablity to connect an abstract callback to a class
|
|
||||||
method, function, or function object. It contains adaptor classes for
|
|
||||||
connection of dissimilar callbacks and has an ease of use unmatched by
|
|
||||||
other C++ callback libraries.
|
|
||||||
|
|
||||||
Package GTK-- (gtkmm), which is a C++ binding to the GTK+ library,
|
|
||||||
starting with version 1.1.2, uses %name.
|
|
||||||
|
|
||||||
Due to C++ ABI changes, this will only work with the gcc version which
|
|
||||||
the distribution was supplied with. If you got your rpm from any
|
|
||||||
previous version, please rebuild from spec!
|
|
||||||
|
|
||||||
%package devel
|
|
||||||
Summary: Development tools for the Typesafe Signal Framework for C++
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %name = %version
|
|
||||||
|
|
||||||
%description devel
|
|
||||||
The %name-devel package contains the static libraries and header files
|
|
||||||
needed for development with %name.
|
|
||||||
|
|
||||||
%package examples
|
|
||||||
Summary: Examples and tests for the Typesafe Signal Framework for C++
|
|
||||||
Group: Development/Libraries
|
|
||||||
Requires: %name-devel = %version
|
|
||||||
|
|
||||||
%description examples
|
|
||||||
The %name-devel package contains source code of
|
|
||||||
example and test programs for %name.
|
|
||||||
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -q
|
|
||||||
|
|
||||||
%build
|
|
||||||
./configure --prefix=/usr
|
|
||||||
make
|
|
||||||
|
|
||||||
%install
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
make DESTDIR=$RPM_BUILD_ROOT install
|
|
||||||
mkdir -p -m 755 $RPM_BUILD_ROOT/%{_libdir}/sigc++-2.0
|
|
||||||
cp -a examples tests $RPM_BUILD_ROOT/%{_libdir}/sigc++-2.0
|
|
||||||
|
|
||||||
%post -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%postun -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_libdir}/libsigc*.so*
|
|
||||||
%doc /usr/share/doc/libsigc-2.0
|
|
||||||
|
|
||||||
%files devel
|
|
||||||
/usr/include/sigc++-2.0
|
|
||||||
%{_libdir}/pkgconfig/*
|
|
||||||
%{_libdir}/libsigc*.a
|
|
||||||
%{_libdir}/libsigc*.la
|
|
||||||
%dir %{_libdir}/sigc++-2.0
|
|
||||||
%dir %{_libdir}/sigc++-2.0/include
|
|
||||||
%{_libdir}/sigc++-2.0/include/sigc++config.h
|
|
||||||
|
|
||||||
%files examples
|
|
||||||
%{_libdir}/sigc++-2.0/examples
|
|
||||||
%{_libdir}/sigc++-2.0/tests
|
|
||||||
|
|
||||||
%changelog
|
|
||||||
* Tue Jun 29 2004 Eric Bourque <ericb@computer.org> - 2.0-1
|
|
||||||
- Initial build.
|
|
||||||
|
|
||||||
|
|
@ -1,94 +0,0 @@
|
||||||
dnl
|
|
||||||
dnl SIGC_CXX_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD()
|
|
||||||
dnl
|
|
||||||
dnl
|
|
||||||
AC_DEFUN([SIGC_CXX_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD],[
|
|
||||||
AC_MSG_CHECKING([if C++ compiler supports the use of a particular specialization when calling operator() template methods.])
|
|
||||||
AC_TRY_COMPILE(
|
|
||||||
[
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
class Thing
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Thing()
|
|
||||||
{}
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
void operator()(T a, T b)
|
|
||||||
{
|
|
||||||
T c = a + b;
|
|
||||||
std::cout << c << std::endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T2>
|
|
||||||
class OtherThing
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void do_something()
|
|
||||||
{
|
|
||||||
Thing thing_;
|
|
||||||
thing_.template operator()<T2>(1, 2);
|
|
||||||
//This fails with or without the template keyword, on SUN Forte C++ 5.3, 5.4, and 5.5:
|
|
||||||
}
|
|
||||||
};
|
|
||||||
],
|
|
||||||
[
|
|
||||||
OtherThing<int> thing;
|
|
||||||
thing.do_something();
|
|
||||||
],
|
|
||||||
[
|
|
||||||
sigcm_cxx_gcc_template_specialization_operator_overload=yes
|
|
||||||
AC_DEFINE([SIGC_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD],[1],[does the C++ compiler support the use of a particular specialization when calling operator() template methods.])
|
|
||||||
AC_MSG_RESULT([$sigcm_cxx_gcc_template_specialization_operator_overload])
|
|
||||||
],[
|
|
||||||
sigcm_cxx_gcc_template_specialization_operator_overload=no
|
|
||||||
AC_MSG_RESULT([$sigcm_cxx_gcc_template_specialization_operator_overload])
|
|
||||||
])
|
|
||||||
])
|
|
||||||
AC_DEFUN([SIGC_CXX_MSVC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD],[
|
|
||||||
AC_MSG_CHECKING([if C++ compiler supports the use of a particular specialization when calling operator() template methods omitting the template keyword.])
|
|
||||||
AC_TRY_COMPILE(
|
|
||||||
[
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
class Thing
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Thing()
|
|
||||||
{}
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
void operator()(T a, T b)
|
|
||||||
{
|
|
||||||
T c = a + b;
|
|
||||||
std::cout << c << std::endl;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T2>
|
|
||||||
class OtherThing
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void do_something()
|
|
||||||
{
|
|
||||||
Thing thing_;
|
|
||||||
thing_.operator()<T2>(1, 2);
|
|
||||||
//This fails with or without the template keyword, on SUN Forte C++ 5.3, 5.4, and 5.5:
|
|
||||||
}
|
|
||||||
};
|
|
||||||
],
|
|
||||||
[
|
|
||||||
OtherThing<int> thing;
|
|
||||||
thing.do_something();
|
|
||||||
],
|
|
||||||
[
|
|
||||||
sigcm_cxx_msvc_template_specialization_operator_overload=yes
|
|
||||||
AC_DEFINE([SIGC_MSVC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD],[1],[does the C++ compiler support the use of a particular specialization when calling operator() template methods omitting the template keyword.])
|
|
||||||
AC_MSG_RESULT([$sigcm_cxx_msvc_template_specialization_operator_overload])
|
|
||||||
],[
|
|
||||||
sigcm_cxx_msvc_template_specialization_operator_overload=no
|
|
||||||
AC_MSG_RESULT([$sigcm_cxx_msvc_template_specialization_operator_overload])
|
|
||||||
])
|
|
||||||
])
|
|
||||||
5767
libs/sigc++2/scripts/libtool.m4
vendored
5767
libs/sigc++2/scripts/libtool.m4
vendored
File diff suppressed because it is too large
Load diff
358
libs/sigc++2/scripts/ltoptions.m4
vendored
358
libs/sigc++2/scripts/ltoptions.m4
vendored
|
|
@ -1,358 +0,0 @@
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
|
||||||
# Written by Gary V. Vaughan <gary@gnu.org>
|
|
||||||
|
|
||||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
|
|
||||||
# serial 1
|
|
||||||
|
|
||||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
|
||||||
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_MANGLE_OPTION(NAME)
|
|
||||||
# -----------------------
|
|
||||||
m4_define([_LT_MANGLE_OPTION],
|
|
||||||
[[_LT_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_SET_OPTION(NAME)
|
|
||||||
# ------------------------------
|
|
||||||
# Set option NAME. Other NAMEs are saved as a flag.
|
|
||||||
m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1]))])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
|
||||||
# -------------------------------------------
|
|
||||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
|
||||||
m4_define([_LT_IF_OPTION],
|
|
||||||
[m4_ifdef(_LT_MANGLE_OPTION([$1]), [$2], [$3])])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_UNLESS_OPTIONS(OPTIONS, IF-NOT-SET)
|
|
||||||
# ---------------------------------------
|
|
||||||
# Execute IF-NOT-SET if all OPTIONS are not set.
|
|
||||||
m4_define([_LT_UNLESS_OPTIONS],
|
|
||||||
[AC_FOREACH([_LT_Option], [$1],
|
|
||||||
[m4_ifdef(_LT_MANGLE_OPTION(_LT_Option),
|
|
||||||
[m4_define([$0_found])])])[]dnl
|
|
||||||
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$2
|
|
||||||
])[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_SET_OPTIONS(OPTIONS)
|
|
||||||
# ------------------------
|
|
||||||
# OPTIONS is a space-separated list of Automake options.
|
|
||||||
# If any OPTION has a handler macro declared with LT_OPTION_DEFINE,
|
|
||||||
# despatch to that macro; otherwise complain about the unknown option
|
|
||||||
# and exit.
|
|
||||||
m4_define([_LT_SET_OPTIONS],
|
|
||||||
[AC_FOREACH([_LT_Option], [$1],
|
|
||||||
[_LT_SET_OPTION(_LT_Option)
|
|
||||||
m4_ifdef(_LT_MANGLE_DEFUN(_LT_Option),
|
|
||||||
_LT_MANGLE_DEFUN(_LT_Option),
|
|
||||||
[m4_fatal([Unknown option `]_LT_Option[' to LT][_INIT_LIBTOOL])])
|
|
||||||
])dnl
|
|
||||||
dnl
|
|
||||||
dnl Simply set some default values (i.e off) if boolean options were not
|
|
||||||
dnl specified:
|
|
||||||
_LT_UNLESS_OPTIONS([dlopen], enable_dlopen=no)
|
|
||||||
_LT_UNLESS_OPTIONS([win32-dll], enable_win32_dll=no)
|
|
||||||
dnl
|
|
||||||
dnl If no reference was made to various pairs of opposing options, then
|
|
||||||
dnl we run the default mode handler for the pair. For example, if neither
|
|
||||||
dnl `shared' nor `disable-shared' was passed, we enable building of shared
|
|
||||||
dnl archives by default:
|
|
||||||
_LT_UNLESS_OPTIONS([shared disable-shared], [_LT_ENABLE_SHARED])
|
|
||||||
_LT_UNLESS_OPTIONS([static disable-static], [_LT_ENABLE_STATIC])
|
|
||||||
_LT_UNLESS_OPTIONS([pic-only no-pic], [_LT_WITH_PIC])
|
|
||||||
_LT_UNLESS_OPTIONS([fast-install disable-fast-install],
|
|
||||||
[_LT_ENABLE_FAST_INSTALL])
|
|
||||||
])# _LT_SET_OPTIONS
|
|
||||||
|
|
||||||
|
|
||||||
## ----------------------------------------- ##
|
|
||||||
## Macros to handle LT_INIT_LIBTOOL options. ##
|
|
||||||
## ----------------------------------------- ##
|
|
||||||
|
|
||||||
m4_define([_LT_MANGLE_DEFUN],
|
|
||||||
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1]), [[^A-Z0-9_]], [_])])
|
|
||||||
|
|
||||||
|
|
||||||
# LT_OPTION_DEFINE(NAME, CODE)
|
|
||||||
# ----------------------------
|
|
||||||
m4_define([LT_OPTION_DEFINE],
|
|
||||||
[m4_define(_LT_MANGLE_DEFUN([$1]), [$2])[]dnl
|
|
||||||
])# LT_OPTION_DEFINE
|
|
||||||
|
|
||||||
|
|
||||||
# dlopen
|
|
||||||
# ------
|
|
||||||
LT_OPTION_DEFINE([dlopen], [enable_dlopen=yes])
|
|
||||||
|
|
||||||
AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
|
||||||
[_LT_SET_OPTION([dlopen])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `dlopen' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# win32-dll
|
|
||||||
# ---------
|
|
||||||
# Declare package support for building win32 dll's.
|
|
||||||
LT_OPTION_DEFINE([win32-dll],
|
|
||||||
[enable_win32_dll=yes
|
|
||||||
|
|
||||||
case $host in
|
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32*)
|
|
||||||
AC_CHECK_TOOL(AS, as, false)
|
|
||||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
|
||||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
test -z "$AS" && AS=as
|
|
||||||
_LT_DECL([], [AS], [0], [Assembler program])dnl
|
|
||||||
|
|
||||||
test -z "$DLLTOOL" && DLLTOOL=dlltool
|
|
||||||
_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
|
|
||||||
|
|
||||||
test -z "$OBJDUMP" && OBJDUMP=objdump
|
|
||||||
_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
|
|
||||||
])# win32-dll
|
|
||||||
|
|
||||||
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
|
||||||
[_LT_SET_OPTION([win32-dll])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `win32-dll' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_ENABLE_SHARED([DEFAULT])
|
|
||||||
# ----------------------------
|
|
||||||
# implement the --enable-shared flag, and supports the `shared' and
|
|
||||||
# `disable-shared' LT_INIT_LIBTOOL options.
|
|
||||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
|
||||||
m4_define([_LT_ENABLE_SHARED],
|
|
||||||
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
|
||||||
AC_ARG_ENABLE([shared],
|
|
||||||
[AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
|
|
||||||
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
|
|
||||||
[p=${PACKAGE-default}
|
|
||||||
case $enableval in
|
|
||||||
yes) enable_shared=yes ;;
|
|
||||||
no) enable_shared=no ;;
|
|
||||||
*)
|
|
||||||
enable_shared=no
|
|
||||||
# Look at the argument we got. We use all the common list separators.
|
|
||||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
|
||||||
for pkg in $enableval; do
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
if test "X$pkg" = "X$p"; then
|
|
||||||
enable_shared=yes
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
;;
|
|
||||||
esac],
|
|
||||||
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
|
||||||
|
|
||||||
_LT_DECL([build_libtool_libs], [enable_shared], [0],
|
|
||||||
[Whether or not to build shared libraries])
|
|
||||||
])# _LT_ENABLE_SHARED
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([shared], [_LT_ENABLE_SHARED([yes])])
|
|
||||||
LT_OPTION_DEFINE([disable-shared], [_LT_ENABLE_SHARED([no])])
|
|
||||||
|
|
||||||
# Old names:
|
|
||||||
AU_DEFUN([AC_ENABLE_SHARED],
|
|
||||||
[_LT_SET_OPTION([shared])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `shared' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AM_ENABLE_SHARED],
|
|
||||||
[_LT_SET_OPTION([shared])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `shared' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AC_DISABLE_SHARED],
|
|
||||||
[_LT_SET_OPTION([disable-shared])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `disable-shared' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AM_DISABLE_SHARED],
|
|
||||||
[_LT_SET_OPTION([disable-shared])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `disable-shared' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_ENABLE_STATIC([DEFAULT])
|
|
||||||
# ----------------------------
|
|
||||||
# implement the --enable-static flag, and support the `static' and
|
|
||||||
# `disable-static' LT_INIT_LIBTOOL options.
|
|
||||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
|
||||||
m4_define([_LT_ENABLE_STATIC],
|
|
||||||
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
|
||||||
AC_ARG_ENABLE([static],
|
|
||||||
[AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
|
|
||||||
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
|
|
||||||
[p=${PACKAGE-default}
|
|
||||||
case $enableval in
|
|
||||||
yes) enable_static=yes ;;
|
|
||||||
no) enable_static=no ;;
|
|
||||||
*)
|
|
||||||
enable_static=no
|
|
||||||
# Look at the argument we got. We use all the common list separators.
|
|
||||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
|
||||||
for pkg in $enableval; do
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
if test "X$pkg" = "X$p"; then
|
|
||||||
enable_static=yes
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
;;
|
|
||||||
esac],
|
|
||||||
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
|
||||||
|
|
||||||
_LT_DECL([build_old_libs], [enable_static], [0],
|
|
||||||
[Whether or not to build static libraries])
|
|
||||||
])# _LT_ENABLE_STATIC
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([static], [_LT_ENABLE_STATIC([yes])])
|
|
||||||
LT_OPTION_DEFINE([disable-static], [_LT_ENABLE_STATIC([no])])
|
|
||||||
|
|
||||||
# Old names:
|
|
||||||
AU_DEFUN([AC_ENABLE_STATIC],
|
|
||||||
[_LT_SET_OPTION([static])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `static' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AM_ENABLE_STATIC],
|
|
||||||
[_LT_SET_OPTION([static])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `static' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AC_DISABLE_STATIC],
|
|
||||||
[_LT_SET_OPTION([disable-static])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `disable-static' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AM_DISABLE_STATIC],
|
|
||||||
[_LT_SET_OPTION([disable-static])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `disable-static' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
|
||||||
# ----------------------------------
|
|
||||||
# implement the --enable-fast-install flag, and support the `fast-install'
|
|
||||||
# and `disable-fast-install' LT_INIT_LIBTOOL options.
|
|
||||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
|
||||||
m4_define([_LT_ENABLE_FAST_INSTALL],
|
|
||||||
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
|
||||||
AC_ARG_ENABLE([fast-install],
|
|
||||||
[AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
|
|
||||||
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
|
|
||||||
[p=${PACKAGE-default}
|
|
||||||
case $enableval in
|
|
||||||
yes) enable_fast_install=yes ;;
|
|
||||||
no) enable_fast_install=no ;;
|
|
||||||
*)
|
|
||||||
enable_fast_install=no
|
|
||||||
# Look at the argument we got. We use all the common list separators.
|
|
||||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
|
||||||
for pkg in $enableval; do
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
if test "X$pkg" = "X$p"; then
|
|
||||||
enable_fast_install=yes
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
;;
|
|
||||||
esac],
|
|
||||||
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
|
||||||
|
|
||||||
_LT_DECL([fast_install], [enable_fast_install], [0],
|
|
||||||
[Whether or not to optimize for fast installation])dnl
|
|
||||||
])# _LT_ENABLE_FAST_INSTALL
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
|
|
||||||
LT_OPTION_DEFINE([disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
|
|
||||||
|
|
||||||
# Old names:
|
|
||||||
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
|
||||||
[_LT_SET_OPTION([fast-install])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `fast-install' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
|
||||||
[_LT_SET_OPTION([disable-fast-install])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `disable-fast-install' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_WITH_PIC([MODE])
|
|
||||||
# --------------------
|
|
||||||
# implement the --with-pic flag, and support the `pic-only' and `no-pic'
|
|
||||||
# LT_INIT_LIBTOOL options.
|
|
||||||
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
|
|
||||||
m4_define([_LT_WITH_PIC],
|
|
||||||
[AC_ARG_WITH([pic],
|
|
||||||
[AC_HELP_STRING([--with-pic],
|
|
||||||
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
|
||||||
[pic_mode="$withval"],
|
|
||||||
[pic_mode=default])
|
|
||||||
|
|
||||||
test -z "$pic_mode" && pic_mode=m4_if($#, 1, $1, default)
|
|
||||||
|
|
||||||
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
|
||||||
])# _LT_WITH_PIC
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([pic-only], [_LT_WITH_PIC([yes])])
|
|
||||||
LT_OPTION_DEFINE([no-pic], [_LT_WITH_PIC([no])])
|
|
||||||
|
|
||||||
# Old name:
|
|
||||||
AU_DEFUN([AC_LIBTOOL_PIC_MODE],
|
|
||||||
[_LT_SET_OPTION([pic-only])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `pic-only' option into LT_LIBTOOL_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
115
libs/sigc++2/scripts/ltsugar.m4
vendored
115
libs/sigc++2/scripts/ltsugar.m4
vendored
|
|
@ -1,115 +0,0 @@
|
||||||
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
|
||||||
# Written by Gary V. Vaughan.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful, but
|
|
||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
# General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
#
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
|
||||||
# distribute this file as part of a program that contains a
|
|
||||||
# configuration script generated by Autoconf, you may include it under
|
|
||||||
# the same distribution terms that you use for the rest of that program.
|
|
||||||
|
|
||||||
# serial 1
|
|
||||||
|
|
||||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
|
||||||
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_join(SEP, ARG1, [ARG2...])
|
|
||||||
# -----------------------------
|
|
||||||
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
|
||||||
# associated separator.
|
|
||||||
m4_define([lt_join],
|
|
||||||
[m4_case([$#],
|
|
||||||
[0], [m4_fatal([$0: too few arguments: $#])],
|
|
||||||
[1], [],
|
|
||||||
[2], [[$2]],
|
|
||||||
[m4_ifval([$2],
|
|
||||||
[m4_ifval([$3],
|
|
||||||
[[$2][$1][]$0([$1], m4_shiftn(2, $@))],
|
|
||||||
[m4_if([$#], [3],
|
|
||||||
[$2],
|
|
||||||
[$0([$1], [$2], m4_shiftn(3, $@))])])],
|
|
||||||
[$0([$1], m4_shiftn(2, $@))])])[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
|
||||||
# ----------------------------------------------------------
|
|
||||||
# Produce a SEP delimited list of all paired combinations of elements of
|
|
||||||
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
|
||||||
# has the form PREFIXmINFIXSUFFIXn.
|
|
||||||
m4_define([lt_combine],
|
|
||||||
[m4_if([$2], [[]], [],
|
|
||||||
[lt_join(m4_quote(m4_default([$1], [, ])),
|
|
||||||
_$0([$1], m4_car($2)[$3], m4_shiftn(3, $@)),
|
|
||||||
$0([$1], m4_cdr($2), m4_shiftn(2, $@)))])])
|
|
||||||
m4_define([_lt_combine],
|
|
||||||
[m4_if([$3], [], [],
|
|
||||||
[lt_join(m4_quote(m4_default([$1], [, ])),
|
|
||||||
[$2$3],
|
|
||||||
$0([$1], [$2], m4_shiftn(3, $@)))])[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
|
||||||
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
|
||||||
m4_define([lt_if_append_uniq],
|
|
||||||
[m4_ifdef([$1],
|
|
||||||
[m4_bmatch($3[]m4_defn([$1])$3, $3[]m4_re_escape([$2])$3,
|
|
||||||
[$5],
|
|
||||||
[m4_append([$1], [$2], [$3])$4])],
|
|
||||||
[m4_append([$1], [$2], [$3])$4])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_add(DICT, KEY, VALUE)
|
|
||||||
# -----------------------------
|
|
||||||
m4_define([lt_dict_add],
|
|
||||||
[m4_define([$1($2)], [$4])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
|
||||||
# --------------------------------------------
|
|
||||||
m4_define([lt_dict_add_subkey],
|
|
||||||
[m4_define([$1($2:$3)], [$4])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
|
||||||
# ----------------------------------
|
|
||||||
m4_define([lt_dict_fetch],
|
|
||||||
[m4_ifval([$3],
|
|
||||||
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
|
||||||
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
|
||||||
# -----------------------------------------------------------------
|
|
||||||
m4_define([lt_if_dict_fetch],
|
|
||||||
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
|
||||||
[$5],
|
|
||||||
[$6])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
m4_define([lt_dict_filter],
|
|
||||||
[m4_if([$5], [], [],
|
|
||||||
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
|
||||||
m4_quote(lt_if_dict_fetch([$1], [$5], [$2], [$3], [$5])),
|
|
||||||
m4_quote($0([$1], [$2], [$3], [$4], m4_shiftn(5, $@))))])dnl
|
|
||||||
])
|
|
||||||
15
libs/sigc++2/scripts/ltversion.m4
vendored
15
libs/sigc++2/scripts/ltversion.m4
vendored
|
|
@ -1,15 +0,0 @@
|
||||||
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
|
||||||
# Generated from ltversion.in; do not edit by hand.
|
|
||||||
|
|
||||||
# serial 1467
|
|
||||||
# This file is part of GNU Libtool
|
|
||||||
|
|
||||||
m4_define([LT_PACKAGE_VERSION], [])
|
|
||||||
m4_define([LT_PACKAGE_REVISION], [1.1467])
|
|
||||||
|
|
||||||
AC_DEFUN([LTVERSION_VERSION],
|
|
||||||
[macro_version=''
|
|
||||||
macro_revision='1.1467'
|
|
||||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
|
||||||
_LT_DECL(, macro_revision, 0)
|
|
||||||
])
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
libdir=@libdir@
|
|
||||||
includedir=@includedir@
|
|
||||||
|
|
||||||
Name: libsigc++ 2
|
|
||||||
Description: Typesafe signal and callback system for C++
|
|
||||||
Version: @VERSION@
|
|
||||||
Libs: -L${libdir} -lsigc-2.0
|
|
||||||
Cflags: -I${includedir}/sigc++-2.0 -I${libdir}/sigc++-2.0/include
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
.deps
|
|
||||||
*.os
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
||||||
# Base (./)
|
|
||||||
base_m4 = template.macros.m4 signal.h.m4 slot.h.m4 method_slot.h.m4 \
|
|
||||||
object_slot.h.m4 class_slot.h.m4 hide.h.m4 retype.h.m4
|
|
||||||
base_built_cc =
|
|
||||||
base_built_h = signal.h slot.h method_slot.h \
|
|
||||||
object_slot.h class_slot.h hide.h retype.h
|
|
||||||
|
|
||||||
signal.cc : signal.h signal_base.h functors/slot.h functors/slot_base.h functors/mem_fun.h functors/functor_trait.h
|
|
||||||
|
|
||||||
# Functors (functors/)
|
|
||||||
functors_m4 = functor_trait.h.m4 slot.h.m4 ptr_fun.h.m4 mem_fun.h.m4
|
|
||||||
functors_built_cc =
|
|
||||||
functors_built_h = functor_trait.h slot.h ptr_fun.h mem_fun.h
|
|
||||||
|
|
||||||
functors/slot.cc : functors/slot.h functors/slot_base.h functors/functor_trait.h
|
|
||||||
|
|
||||||
# Adaptors (adaptors/)
|
|
||||||
adaptors_m4 = deduce_result_type.h.m4 adaptor_trait.h.m4 bind.h.m4 bind_return.h.m4 \
|
|
||||||
retype_return.h.m4 hide.h.m4 retype.h.m4 compose.h.m4 exception_catch.h.m4
|
|
||||||
adaptors_built_cc =
|
|
||||||
adaptors_built_h = deduce_result_type.h adaptor_trait.h bind.h bind_return.h \
|
|
||||||
retype_return.h hide.h retype.h compose.h exception_catch.h
|
|
||||||
|
|
||||||
# Lambda (adaptors/lambda)
|
|
||||||
lambda_m4 = base.h.m4 select.h.m4 operator.h.m4 group.h.m4 lambda.cc.m4
|
|
||||||
lambda_built_cc = lambda.cc
|
|
||||||
lambda_built_h = base.h select.h operator.h group.h
|
|
||||||
|
|
||||||
adaptors/lambda/lambda.cc : adaptors/lambda/select.h adaptors/lambda/base.h \
|
|
||||||
adaptors/adaptor_trait.h adaptors/deduce_result_type.h \
|
|
||||||
functors/ptr_fun.h functors/mem_fun.h functors/functor_trait.h
|
|
||||||
|
|
||||||
# Subdirectories needed also in the build dir
|
|
||||||
build_subdirs = functors adaptors adaptors/lambda
|
|
||||||
|
|
||||||
# Combine all the above parts with right directories prefixed
|
|
||||||
sigc_m4 = $(base_m4:%=macros/%) \
|
|
||||||
$(functors_m4:%=functors/macros/%) \
|
|
||||||
$(adaptors_m4:%=adaptors/macros/%) \
|
|
||||||
$(lambda_m4:%=adaptors/lambda/macros/%)
|
|
||||||
sigc_built_cc = $(base_built_cc) \
|
|
||||||
$(functors_built_cc:%=functors/%) \
|
|
||||||
$(adaptors_built_cc:%=adaptors/%) \
|
|
||||||
$(lambda_built_cc:%=adaptors/lambda/%)
|
|
||||||
sigc_built_h = $(base_built_h) \
|
|
||||||
$(functors_built_h:%=functors/%) \
|
|
||||||
$(adaptors_built_h:%=adaptors/%) \
|
|
||||||
$(lambda_built_h:%=adaptors/lambda/%)
|
|
||||||
|
|
||||||
EXTRA_DIST = $(sigc_m4) $(sigc_built_h) $(sigc_built_cc)
|
|
||||||
|
|
||||||
# install the headers
|
|
||||||
library_includedir = $(includedir)/sigc++-2.0/sigc++
|
|
||||||
nobase_library_include_HEADERS = $(sigc_m4) $(sigc_built_h) \
|
|
||||||
sigc++.h connection.h trackable.h reference_wrapper.h type_traits.h visit_each.h \
|
|
||||||
object.h retype_return.h bind.h bind_return.h compatibility.h signal_base.h \
|
|
||||||
functors/functors.h \
|
|
||||||
functors/slot_base.h \
|
|
||||||
adaptors/adaptors.h \
|
|
||||||
adaptors/lambda/lambda.h
|
|
||||||
|
|
||||||
# build the library
|
|
||||||
#lib_LTLIBRARIES = libsigc-2.0.la
|
|
||||||
#libsigc_2_0_la_SOURCES = signal.cc signal_base.cc trackable.cc connection.cc \
|
|
||||||
functors/slot.cc functors/slot_base.cc \
|
|
||||||
adaptors/lambda/lambda.cc
|
|
||||||
#libsigc_2_0_la_LDFLAGS =
|
|
||||||
|
|
||||||
BUILT_SOURCES = $(sigc_built_h) $(sigc_built_cc)
|
|
||||||
|
|
||||||
CLEANFILES = build-subdirs-stamp
|
|
||||||
|
|
||||||
# Remove the generated sources during maintainer-clean:
|
|
||||||
MAINTAINERCLEANFILES = $(built_sources)
|
|
||||||
|
|
||||||
M4_DIR = $(top_srcdir)/sigc++/macros
|
|
||||||
|
|
||||||
# Rules to generate .h and .cc from .h.m4 and .cc.m4:
|
|
||||||
%.h: macros/%.h.m4 $(M4_DIR)/template.macros.m4
|
|
||||||
$(M4) $(M4_INCLUDES) $(DEFINES) -I $(M4_DIR) -I macros $< > $@
|
|
||||||
|
|
||||||
%.cc: macros/%.cc.m4 $(M4_DIR)/template.macros.m4
|
|
||||||
$(M4) $(M4_INCLUDES) $(DEFINES) -I $(M4_DIR) -I macros $< > $@
|
|
||||||
|
|
||||||
# This would be a necessary target for VPATH builds from a clean CVS checkout,
|
|
||||||
# but I'm not sure where to invoke it... [rotty]
|
|
||||||
build-subdirs-stamp:
|
|
||||||
for dir in $(build_subdirs); do \
|
|
||||||
test -d $$dir || mkdir $$dir; \
|
|
||||||
done
|
|
||||||
touch build-subdirs-stamp
|
|
||||||
|
|
||||||
# Remove current directory from DEFAULT_INCLUDES because signal.h has
|
|
||||||
# the same name as a standard header:
|
|
||||||
DEFAULT_INCLUDES =
|
|
||||||
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir)
|
|
||||||
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
*.os
|
|
||||||
|
|
@ -1,362 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_ADAPTORS_MACROS_ADAPTOR_TRAITHM4_
|
|
||||||
#define _SIGC_ADAPTORS_MACROS_ADAPTOR_TRAITHM4_
|
|
||||||
#include <sigc++config.h> //To get SIGC_TEMPLATE_KEYWORD_OPERATOR_OVERLOAD
|
|
||||||
#include <sigc++/visit_each.h>
|
|
||||||
#include <sigc++/functors/functor_trait.h>
|
|
||||||
#include <sigc++/functors/ptr_fun.h>
|
|
||||||
#include <sigc++/functors/mem_fun.h>
|
|
||||||
#include <sigc++/adaptors/deduce_result_type.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
// Call either operator()<>() or sun_forte_workaround<>(),
|
|
||||||
// depending on the compiler:
|
|
||||||
#ifdef SIGC_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
#define SIGC_WORKAROUND_OPERATOR_PARENTHESES template operator()
|
|
||||||
#define SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
#else
|
|
||||||
#ifdef SIGC_MSVC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
#define SIGC_WORKAROUND_OPERATOR_PARENTHESES operator()
|
|
||||||
#define SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
#else
|
|
||||||
#define SIGC_WORKAROUND_OPERATOR_PARENTHESES sun_forte_workaround
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_functor> struct adapts;
|
|
||||||
|
|
||||||
/** @defgroup adaptors Adaptors
|
|
||||||
* Adaptors are functors that alter the signature of a functor's
|
|
||||||
* operator()().
|
|
||||||
*
|
|
||||||
* The adaptor types libsigc++ provides
|
|
||||||
* are created with bind(), bind_return(), hide(), hide_return(),
|
|
||||||
* retype_return(), retype(), compose(), exception_catch() and group().
|
|
||||||
*
|
|
||||||
* You can easily derive your own adaptor type from sigc::adapts.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor into an adaptor type.
|
|
||||||
* All adaptor tyes in libsigc++ are unnumbered and have
|
|
||||||
* a <tt>template operator()</tt> member of every argument count
|
|
||||||
* they support. These functions in turn invoke a stored adaptor's
|
|
||||||
* <tt>template operator()</tt> processing the arguments and return
|
|
||||||
* value in a characteristic manner. Explicit function template
|
|
||||||
* instantiation is used to pass type hints thus saving copy costs.
|
|
||||||
*
|
|
||||||
* adaptor_functor is a glue between adaptors and arbitrary functors
|
|
||||||
* that just passes on the arguments. You won't use this type directly.
|
|
||||||
*
|
|
||||||
* The template argument @e T_functor determines the type of stored
|
|
||||||
* functor.
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
struct adaptor_functor : public adaptor_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename sigc::deduce_result_type<T_functor, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type type; };
|
|
||||||
typedef typename functor_trait<T_functor>::result_type result_type;
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
result_type
|
|
||||||
operator()() const;
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
result_type sun_forte_workaround() const
|
|
||||||
{ return operator(); }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @param _A_arg1 Argument to be passed on to the functor.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator()(T_arg1 _A_arg1) const
|
|
||||||
{ return functor_(_A_arg1); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_arg1) const
|
|
||||||
{ //Just calling operator() tries to copy the argument:
|
|
||||||
return functor_(_A_arg1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @param _A_arg1 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg2 Argument to be passed on to the functor.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) const
|
|
||||||
{ return functor_(_A_arg1,_A_arg2); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) const
|
|
||||||
{ //Just calling operator() tries to copy the argument:
|
|
||||||
return functor_(_A_arg1,_A_arg2);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @param _A_arg1 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg2 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg3 Argument to be passed on to the functor.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) const
|
|
||||||
{ return functor_(_A_arg1,_A_arg2,_A_arg3); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) const
|
|
||||||
{ //Just calling operator() tries to copy the argument:
|
|
||||||
return functor_(_A_arg1,_A_arg2,_A_arg3);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @param _A_arg1 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg2 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg3 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg4 Argument to be passed on to the functor.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) const
|
|
||||||
{ return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) const
|
|
||||||
{ //Just calling operator() tries to copy the argument:
|
|
||||||
return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @param _A_arg1 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg2 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg3 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg4 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg5 Argument to be passed on to the functor.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) const
|
|
||||||
{ return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) const
|
|
||||||
{ //Just calling operator() tries to copy the argument:
|
|
||||||
return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @param _A_arg1 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg2 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg3 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg4 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg5 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg6 Argument to be passed on to the functor.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5,T_arg6 _A_arg6) const
|
|
||||||
{ return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5,T_arg6 _A_arg6) const
|
|
||||||
{ //Just calling operator() tries to copy the argument:
|
|
||||||
return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.
|
|
||||||
* @param _A_arg1 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg2 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg3 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg4 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg5 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg6 Argument to be passed on to the functor.
|
|
||||||
* @param _A_arg7 Argument to be passed on to the functor.
|
|
||||||
* @return The return value of the functor invocation.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5,T_arg6 _A_arg6,T_arg7 _A_arg7) const
|
|
||||||
{ return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6,_A_arg7); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5,T_arg6 _A_arg6,T_arg7 _A_arg7) const
|
|
||||||
{ //Just calling operator() tries to copy the argument:
|
|
||||||
return functor_(_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6,_A_arg7);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
adaptor_functor()
|
|
||||||
{}
|
|
||||||
|
|
||||||
/** Constructs an adaptor_functor object that wraps the passed functor.
|
|
||||||
* @param _A_functor Functor to invoke from operator()().
|
|
||||||
*/
|
|
||||||
explicit adaptor_functor(const T_functor& _A_functor)
|
|
||||||
: functor_(_A_functor)
|
|
||||||
{}
|
|
||||||
|
|
||||||
/** Constructs an adaptor_functor object that wraps the passed (member)
|
|
||||||
* function pointer.
|
|
||||||
* @param _A_type Pointer to function or class method to invoke from operator()().
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
explicit adaptor_functor(const T_type& _A_type)
|
|
||||||
: functor_(_A_type)
|
|
||||||
{}
|
|
||||||
|
|
||||||
/// Functor that is invoked from operator()().
|
|
||||||
mutable T_functor functor_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor>
|
|
||||||
typename adaptor_functor<T_functor>::result_type
|
|
||||||
adaptor_functor<T_functor>::operator()() const
|
|
||||||
{ return functor_(); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Performs a functor on each of the targets of a functor.
|
|
||||||
* The function overload for sigc::adaptor_functor performs a functor
|
|
||||||
* on the functor stored in the sigc::adaptor_functor object.
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
template <class T_action, class T_functor>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const adaptor_functor<T_functor>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.functor_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Trait that specifies what is the adaptor version of a functor type.
|
|
||||||
* Template specializations for sigc::adaptor_base derived functors,
|
|
||||||
* for function pointers and for class methods are provided.
|
|
||||||
*
|
|
||||||
* The template argument @e T_functor is the functor type to convert.
|
|
||||||
* @e I_isadaptor indicates whether @e T_functor inherits from sigc::adaptor_base.
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
template <class T_functor, bool I_isadaptor = is_base_and_derived<adaptor_base, T_functor>::value> struct adaptor_trait;
|
|
||||||
|
|
||||||
/** Trait that specifies what is the adaptor version of a functor type.
|
|
||||||
* This template specialization is used for types that inherit from adaptor_base.
|
|
||||||
* adaptor_type is equal to @p T_functor in this case.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
struct adaptor_trait<T_functor, true>
|
|
||||||
{
|
|
||||||
typedef typename T_functor::result_type result_type;
|
|
||||||
typedef T_functor functor_type;
|
|
||||||
typedef T_functor adaptor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Trait that specifies what is the adaptor version of a functor type.
|
|
||||||
* This template specialization is used for arbitrary functors,
|
|
||||||
* for function pointers and for class methods are provided.
|
|
||||||
* The latter are converted into @p pointer_functor or @p mem_functor types.
|
|
||||||
* adaptor_type is equal to @p adaptor_functor<functor_type>.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
struct adaptor_trait<T_functor, false>
|
|
||||||
{
|
|
||||||
typedef typename functor_trait<T_functor>::result_type result_type;
|
|
||||||
typedef typename functor_trait<T_functor>::functor_type functor_type;
|
|
||||||
typedef adaptor_functor<functor_type> adaptor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/** Base type for adaptors.
|
|
||||||
* adapts wraps adaptors, functors, function pointers and class methods.
|
|
||||||
* It contains a single member functor which is always a sigc::adaptor_base.
|
|
||||||
* The typedef adaptor_type defines the exact type that is used
|
|
||||||
* to store the adaptor, functor, function pointer or class method passed
|
|
||||||
* into the constructor. It differs from @e T_functor unless @e T_functor
|
|
||||||
* inherits from sigc::adaptor_base.
|
|
||||||
*
|
|
||||||
* @par Example of a simple adaptor:
|
|
||||||
* @code
|
|
||||||
* template <T_functor>
|
|
||||||
* struct my_adpator : public sigc::adapts<T_functor>
|
|
||||||
* {
|
|
||||||
* template <class T_arg1=void, class T_arg2=void>
|
|
||||||
* struct deduce_result_type
|
|
||||||
* { typedef typename sigc::deduce_result_type<T_functor, T_arg1, T_arg2>::type type; };
|
|
||||||
* typedef typename sigc::functor_trait<T_functor>::result_type result_type;
|
|
||||||
*
|
|
||||||
* result_type
|
|
||||||
* operator()() const;
|
|
||||||
*
|
|
||||||
* template <class T_arg1>
|
|
||||||
* typename deduce_result_type<T_arg1>::type
|
|
||||||
* operator()(T_arg1 _A_arg1) const;
|
|
||||||
*
|
|
||||||
* template <class T_arg1, class T_arg2>
|
|
||||||
* typename deduce_result_type<T_arg1, T_arg2>::type
|
|
||||||
* operator()(T_arg1 _A_arg1, class T_arg2) const;
|
|
||||||
*
|
|
||||||
* explicit adaptor_functor(const T_functor& _A_functor) // Constructs a my_functor object that wraps the passed functor.
|
|
||||||
* : sigc::adapts<T_functor>(_A_functor) {}
|
|
||||||
*
|
|
||||||
* mutable T_functor functor_; // Functor that is invoked from operator()().
|
|
||||||
* };
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
struct adapts : public adaptor_base
|
|
||||||
{
|
|
||||||
typedef typename adaptor_trait<T_functor>::result_type result_type;
|
|
||||||
typedef typename adaptor_trait<T_functor>::adaptor_type adaptor_type;
|
|
||||||
|
|
||||||
/** Constructs an adaptor that wraps the passed functor.
|
|
||||||
* @param _A_functor Functor to invoke from operator()().
|
|
||||||
*/
|
|
||||||
explicit adapts(const T_functor& _A_functor)
|
|
||||||
: functor_(_A_functor)
|
|
||||||
{}
|
|
||||||
|
|
||||||
/// Adaptor that is invoked from operator()().
|
|
||||||
mutable adaptor_type functor_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_ADAPTORS_MACROS_ADAPTOR_TRAITHM4_ */
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_ADAPTOR_HPP_
|
|
||||||
#define _SIGC_ADAPTOR_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/adaptors/bind.h>
|
|
||||||
#include <sigc++/adaptors/bind_return.h>
|
|
||||||
#include <sigc++/adaptors/hide.h>
|
|
||||||
#include <sigc++/adaptors/retype_return.h>
|
|
||||||
#include <sigc++/adaptors/retype.h>
|
|
||||||
#include <sigc++/adaptors/compose.h>
|
|
||||||
#include <sigc++/adaptors/exception_catch.h>
|
|
||||||
#include <sigc++/adaptors/lambda/lambda.h>
|
|
||||||
|
|
||||||
#endif /* _SIGC_ADAPTOR_HPP_ */
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,204 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_ADAPTORS_MACROS_BIND_RETURNHM4_
|
|
||||||
#define _SIGC_ADAPTORS_MACROS_BIND_RETURNHM4_
|
|
||||||
#include <sigc++/adaptors/adaptor_trait.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** Adaptor that fixes the return value of the wrapped functor.
|
|
||||||
* Use the convenience function sigc::bind_return() to create an instance of sigc::bind_return_functor.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_return Type of the fixed return value.
|
|
||||||
* - @e T_functor Type of the functor to wrap.
|
|
||||||
*
|
|
||||||
* @ingroup bind
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_functor>
|
|
||||||
struct bind_return_functor : public adapts<T_functor>
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_return type; };
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor dropping its return value.
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
T_return operator()();
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.,
|
|
||||||
* @param _A_arg%1 Argument to be passed on to the functor.)
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
template <class T_arg1>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1); return ret_value_;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1); return ret_value_;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.,
|
|
||||||
* @param _A_arg%1 Argument to be passed on to the functor.)
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2); return ret_value_;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2); return ret_value_;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.,
|
|
||||||
* @param _A_arg%1 Argument to be passed on to the functor.)
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3); return ret_value_;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3); return ret_value_;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.,
|
|
||||||
* @param _A_arg%1 Argument to be passed on to the functor.)
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4); return ret_value_;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4); return ret_value_;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.,
|
|
||||||
* @param _A_arg%1 Argument to be passed on to the functor.)
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); return ret_value_;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); return ret_value_;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.,
|
|
||||||
* @param _A_arg%1 Argument to be passed on to the functor.)
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); return ret_value_;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); return ret_value_;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Invokes the wrapped functor passing on the arguments.,
|
|
||||||
* @param _A_arg%1 Argument to be passed on to the functor.)
|
|
||||||
* @return The fixed return value.
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); return ret_value_;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); return ret_value_;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/** Constructs a bind_return_functor object that fixes the return value to @p _A_ret_value.
|
|
||||||
* @param _A_functor Functor to invoke from operator()().
|
|
||||||
* @param _A_ret_value Value to return from operator()().
|
|
||||||
*/
|
|
||||||
bind_return_functor(typename type_trait<T_functor>::take _A_functor, typename type_trait<T_return>::take _A_ret_value)
|
|
||||||
: adapts<T_functor>(_A_functor), ret_value_(_A_ret_value)
|
|
||||||
{}
|
|
||||||
|
|
||||||
/// The fixed return value.
|
|
||||||
T_return ret_value_; // public, so that visit_each() can access it
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_return, class T_functor>
|
|
||||||
T_return bind_return_functor<T_return, T_functor>::operator()()
|
|
||||||
{ this->functor_(); return ret_value_; }
|
|
||||||
|
|
||||||
|
|
||||||
/** Performs a functor on each of the targets of a functor.
|
|
||||||
* The function overload for sigc::bind_return_functor performs a functor on the
|
|
||||||
* functor and on the object instance stored in the sigc::bind_return_functor object.
|
|
||||||
*
|
|
||||||
* @ingroup bind
|
|
||||||
*/
|
|
||||||
template <class T_action, class T_return, class T_functor>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const bind_return_functor<T_return, T_functor>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.ret_value_);
|
|
||||||
visit_each(_A_action, _A_target.functor_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates an adaptor of type sigc::bind_return_functor which fixes the return value of the passed functor to the passed argument.
|
|
||||||
*
|
|
||||||
* @param _A_functor Functor that should be wrapped.
|
|
||||||
* @param _A_ret_value Argument to fix the return value of @e _A_functor to.
|
|
||||||
* @return Adaptor that executes @e _A_functor on invokation and returns @e _A_ret_value.
|
|
||||||
*
|
|
||||||
* @ingroup bind
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_functor>
|
|
||||||
inline bind_return_functor<typename unwrap_reference<T_return>::type, T_functor>
|
|
||||||
bind_return(const T_functor& _A_functor, T_return _A_ret_value)
|
|
||||||
{ return bind_return_functor<typename unwrap_reference<T_return>::type, T_functor>(_A_functor, _A_ret_value); }
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_ADAPTORS_MACROS_BIND_RETURNHM4_ */
|
|
||||||
|
|
@ -1,294 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
|
|
||||||
#ifndef _SIGC_ADAPTORS_MACROS_COMPOSEHM4_
|
|
||||||
#define _SIGC_ADAPTORS_MACROS_COMPOSEHM4_
|
|
||||||
#include <sigc++/adaptors/adaptor_trait.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** @defgroup compose compose()
|
|
||||||
* sigc::compose() combines two or three arbitrary functors.
|
|
||||||
* On invokation parameters are passed on to one or two getter functor(s).
|
|
||||||
* The return value(s) are then passed on to the setter function.
|
|
||||||
*
|
|
||||||
* @par Examples:
|
|
||||||
* @code
|
|
||||||
* float square_root(float a) { return sqrtf(a); }
|
|
||||||
* float sum(float a, float b) { return a+b; }
|
|
||||||
* std::cout << sigc::compose(&square_root, &sum)(9, 16); // calls square_root(sum(3,6))
|
|
||||||
* std::cout << sigc::compose(&sum, &square_root, &square_root)(9); // calls sum(square_root(9), square_root(9))
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* The functor sigc::compose() returns can be passed into
|
|
||||||
* sigc::signal::connect() directly.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* sigc::signal<float,float,float> some_signal;
|
|
||||||
* some_signal.connect(sigc::compose(&square_root, &sum));
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* For a more powerful version of this functionality see the lambda
|
|
||||||
* library adaptor sigc::group() which can bind, hide and reorder
|
|
||||||
* arguments arbitrarily. Although sigc::group() is more flexible,
|
|
||||||
* sigc::bind() provides a means of binding parameters when then total
|
|
||||||
* number of parameters called is variable.
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Adaptor that combines two functors.
|
|
||||||
* Use the convenience function sigc::compose() to create an instance of sigc::compose1_functor.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_setter Type of the setter functor to wrap.
|
|
||||||
* - @e T_getter Type of the getter functor to wrap.
|
|
||||||
*
|
|
||||||
* @ingroup compose
|
|
||||||
*/
|
|
||||||
template <class T_setter, class T_getter>
|
|
||||||
struct compose1_functor : public adapts<T_setter>
|
|
||||||
{
|
|
||||||
typedef typename adapts<T_setter>::adaptor_type adaptor_type;
|
|
||||||
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename adaptor_type::template deduce_result_type<
|
|
||||||
typename sigc::deduce_result_type<T_getter, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
>::type type; };
|
|
||||||
typedef typename adaptor_type::result_type result_type;
|
|
||||||
|
|
||||||
result_type
|
|
||||||
operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator()(T_arg1 _A_a1)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter, T_arg1>::type>
|
|
||||||
(get_(_A_a1));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter, T_arg1,T_arg2>::type>
|
|
||||||
(get_(_A_a1,_A_a2));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter, T_arg1,T_arg2,T_arg3>::type>
|
|
||||||
(get_(_A_a1,_A_a2,_A_a3));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter, T_arg1,T_arg2,T_arg3,T_arg4>::type>
|
|
||||||
(get_(_A_a1,_A_a2,_A_a3,_A_a4));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>
|
|
||||||
(get_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>
|
|
||||||
(get_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>
|
|
||||||
(get_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Constructs a compose1_functor object that combines the passed functors.
|
|
||||||
* @param _A_setter Functor that receives the return values of the invokation of @e _A_getter1 and @e _A_getter2.
|
|
||||||
* @param _A_getter1 Functor to invoke from operator()().
|
|
||||||
* @param _A_getter2 Functor to invoke from operator()().
|
|
||||||
*/
|
|
||||||
compose1_functor(const T_setter& _A_setter, const T_getter& _A_getter)
|
|
||||||
: adapts<T_setter>(_A_setter), get_(_A_getter)
|
|
||||||
{}
|
|
||||||
|
|
||||||
T_getter get_; // public, so that visit_each() can access it
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_setter, class T_getter>
|
|
||||||
typename compose1_functor<T_setter, T_getter>::result_type
|
|
||||||
compose1_functor<T_setter, T_getter>::operator()()
|
|
||||||
{ return this->functor_(get_()); }
|
|
||||||
|
|
||||||
/** Adaptor that combines three functors.
|
|
||||||
* Use the convenience function sigc::compose() to create an instance of sigc::compose2_functor.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_setter Type of the setter functor to wrap.
|
|
||||||
* - @e T_getter1 Type of the first getter functor to wrap.
|
|
||||||
* - @e T_getter2 Type of the second getter functor to wrap.
|
|
||||||
*
|
|
||||||
* @ingroup compose
|
|
||||||
*/
|
|
||||||
template <class T_setter, class T_getter1, class T_getter2>
|
|
||||||
struct compose2_functor : public adapts<T_setter>
|
|
||||||
{
|
|
||||||
typedef typename adapts<T_setter>::adaptor_type adaptor_type;
|
|
||||||
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename adaptor_type::template deduce_result_type<
|
|
||||||
typename sigc::deduce_result_type<T_getter1, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
>::type result_type; };
|
|
||||||
typedef typename adaptor_type::result_type result_type;
|
|
||||||
|
|
||||||
result_type
|
|
||||||
operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator()(T_arg1 _A_a1)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter1, T_arg1>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1>::type>
|
|
||||||
(get1_(_A_a1), get2_(_A_a1));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter1, T_arg1,T_arg2>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1,T_arg2>::type>
|
|
||||||
(get1_(_A_a1,_A_a2), get2_(_A_a1,_A_a2));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter1, T_arg1,T_arg2,T_arg3>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1,T_arg2,T_arg3>::type>
|
|
||||||
(get1_(_A_a1,_A_a2,_A_a3), get2_(_A_a1,_A_a2,_A_a3));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter1, T_arg1,T_arg2,T_arg3,T_arg4>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1,T_arg2,T_arg3,T_arg4>::type>
|
|
||||||
(get1_(_A_a1,_A_a2,_A_a3,_A_a4), get2_(_A_a1,_A_a2,_A_a3,_A_a4));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter1, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>
|
|
||||||
(get1_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5), get2_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter1, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>
|
|
||||||
(get1_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6), get2_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename sigc::deduce_result_type<T_getter1, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename sigc::deduce_result_type<T_getter2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>
|
|
||||||
(get1_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7), get2_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Constructs a compose2_functor object that combines the passed functors.
|
|
||||||
* @param _A_setter Functor that receives the return values of the invokation of @e _A_getter1 and @e _A_getter2.
|
|
||||||
* @param _A_getter1 Functor to invoke from operator()().
|
|
||||||
* @param _A_getter2 Functor to invoke from operator()().
|
|
||||||
*/
|
|
||||||
compose2_functor(const T_setter& _A_setter,
|
|
||||||
const T_getter1& _A_getter1,
|
|
||||||
const T_getter2& _A_getter2)
|
|
||||||
: adapts<T_setter>(_A_setter), get1_(_A_getter1), get2_(_A_getter2)
|
|
||||||
{}
|
|
||||||
|
|
||||||
T_getter1 get1_; // public, so that visit_each() can access it
|
|
||||||
T_getter2 get2_; // public, so that visit_each() can access it
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_setter, class T_getter1, class T_getter2>
|
|
||||||
typename compose2_functor<T_setter, T_getter1, T_getter2>::result_type
|
|
||||||
compose2_functor<T_setter, T_getter1, T_getter2>::operator()()
|
|
||||||
{ return this->functor_(get1_(), get2_()); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Performs a functor on each of the targets of a functor.
|
|
||||||
* The function overload for sigc::compose1_functor performs a functor on the
|
|
||||||
* functors stored in the sigc::compose1_functor object.
|
|
||||||
*
|
|
||||||
* @ingroup compose
|
|
||||||
*/
|
|
||||||
template <class T_action, class T_setter, class T_getter>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const compose1_functor<T_setter, T_getter>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.functor_);
|
|
||||||
visit_each(_A_action, _A_target.get_);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Performs a functor on each of the targets of a functor.
|
|
||||||
* The function overload for sigc::compose2_functor performs a functor on the
|
|
||||||
* functors stored in the sigc::compose2_functor object.
|
|
||||||
*
|
|
||||||
* @ingroup compose
|
|
||||||
*/
|
|
||||||
template <class T_action, class T_setter, class T_getter1, class T_getter2>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const compose2_functor<T_setter, T_getter1, T_getter2>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.functor_);
|
|
||||||
visit_each(_A_action, _A_target.get1_);
|
|
||||||
visit_each(_A_action, _A_target.get2_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates an adaptor of type sigc::compose1_functor which combines two functors.
|
|
||||||
*
|
|
||||||
* @param _A_setter Functor that receives the return value of the invokation of @e _A_getter.
|
|
||||||
* @param _A_getter Functor to invoke from operator()().
|
|
||||||
* @return Adaptor that executes @e _A_setter with the value returned from invokation of @e _A_getter.
|
|
||||||
*
|
|
||||||
* @ingroup compose
|
|
||||||
*/
|
|
||||||
template <class T_setter, class T_getter>
|
|
||||||
inline compose1_functor<T_setter, T_getter>
|
|
||||||
compose(const T_setter& _A_setter, const T_getter& _A_getter)
|
|
||||||
{ return compose1_functor<T_setter, T_getter>(_A_setter, _A_getter); }
|
|
||||||
|
|
||||||
/** Creates an adaptor of type sigc::compose2_functor which combines three functors.
|
|
||||||
*
|
|
||||||
* @param _A_setter Functor that receives the return values of the invokation of @e _A_getter1 and @e _A_getter2.
|
|
||||||
* @param _A_getter1 Functor to invoke from operator()().
|
|
||||||
* @param _A_getter2 Functor to invoke from operator()().
|
|
||||||
* @return Adaptor that executes @e _A_setter with the values return from invokation of @e _A_getter1 and @e _A_getter2.
|
|
||||||
*
|
|
||||||
* @ingroup compose
|
|
||||||
*/
|
|
||||||
template <class T_setter, class T_getter1, class T_getter2>
|
|
||||||
inline compose2_functor<T_setter, T_getter1, T_getter2>
|
|
||||||
compose(const T_setter& _A_setter, const T_getter1& _A_getter1, const T_getter2& _A_getter2)
|
|
||||||
{ return compose2_functor<T_setter, T_getter1, T_getter2>(_A_setter, _A_getter1, _A_getter2); }
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_ADAPTORS_MACROS_COMPOSEHM4_ */
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_ADAPTORS_MACROS_DEDUCE_RESULT_TYPEHM4_
|
|
||||||
#define _SIGC_ADAPTORS_MACROS_DEDUCE_RESULT_TYPEHM4_
|
|
||||||
#include <sigc++/functors/functor_trait.h>
|
|
||||||
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** A hint to the compiler.
|
|
||||||
* Functors which have all methods based on templates
|
|
||||||
* should publicly inherit from this hint and define
|
|
||||||
* a nested template class @p deduce_result_type that
|
|
||||||
* can be used to deduce the methods' return types.
|
|
||||||
*
|
|
||||||
* adaptor_base inherits from the functor_base hint so
|
|
||||||
* derived types should also have a result_type defined.
|
|
||||||
*
|
|
||||||
* Adaptors don't inherit from this type directly. They use
|
|
||||||
* use sigc::adapts as a base type instead. sigc::adaptors
|
|
||||||
* wraps arbitrary functor types as well as function pointers
|
|
||||||
* and class methods.
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
struct adaptor_base : public functor_base {};
|
|
||||||
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* <tt>typename deduce_result_type<functor_type, list of arg_types>::type</tt>
|
|
||||||
* deduces a functor's result type if @p functor_type inherits from
|
|
||||||
* sigc::functor_base and defines @p result_type or if @p functor_type
|
|
||||||
* is actually a (member) function type. Multi-type functors are not
|
|
||||||
* supported.
|
|
||||||
*
|
|
||||||
* sigc++ adaptors use
|
|
||||||
* <tt>typename deduce_result_type<functor_type, list of arg_types>::type</tt>
|
|
||||||
* to determine the return type of their <tt>templated operator()</tt> overloads.
|
|
||||||
*
|
|
||||||
* Adaptors in turn define a nested template class @p deduce_result_type
|
|
||||||
* that is used by template specializations of the global deduce_result_type
|
|
||||||
* template to correctly deduce the return types of the adaptor's suitable
|
|
||||||
* <tt>template operator()</tt> overload.
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
template <class T_functor,
|
|
||||||
class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void,
|
|
||||||
bool I_derives_adaptor_base=is_base_and_derived<adaptor_base,T_functor>::value>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename functor_trait<T_functor>::result_type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 0 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
struct deduce_result_type<T_functor, void,void,void,void,void,void,void, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<>::type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 1 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor, class T_arg1>
|
|
||||||
struct deduce_result_type<T_functor, T_arg1, void,void,void,void,void,void, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<T_arg1>::type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 2 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor, class T_arg1,class T_arg2>
|
|
||||||
struct deduce_result_type<T_functor, T_arg1,T_arg2, void,void,void,void,void, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<T_arg1,T_arg2>::type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 3 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor, class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
struct deduce_result_type<T_functor, T_arg1,T_arg2,T_arg3, void,void,void,void, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 4 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
struct deduce_result_type<T_functor, T_arg1,T_arg2,T_arg3,T_arg4, void,void,void, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 5 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
struct deduce_result_type<T_functor, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, void,void, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 6 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
struct deduce_result_type<T_functor, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, void, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type type; };
|
|
||||||
|
|
||||||
/** Deduce the return type of a functor.
|
|
||||||
* This is the template specialization of the sigc::deduce_result_type template
|
|
||||||
* for 7 arguments.
|
|
||||||
*/
|
|
||||||
template <class T_functor, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
struct deduce_result_type<T_functor, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, true>
|
|
||||||
{ typedef typename T_functor::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type type; };
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_ADAPTORS_MACROS_DEDUCE_RESULT_TYPEHM4_ */
|
|
||||||
|
|
@ -1,319 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_ADAPTORS_MACROS_EXCEPTION_CATCHHM4_
|
|
||||||
#define _SIGC_ADAPTORS_MACROS_EXCEPTION_CATCHHM4_
|
|
||||||
#include <sigc++/adaptors/adaptor_trait.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/*
|
|
||||||
functor adaptor: exception_catch(functor, catcher)
|
|
||||||
|
|
||||||
usage:
|
|
||||||
|
|
||||||
|
|
||||||
Future directions:
|
|
||||||
The catcher should be told what type of return it needs to
|
|
||||||
return for multiple type functors, to do this the user
|
|
||||||
will need to derive from catcher_base.
|
|
||||||
*/
|
|
||||||
/** @defgroup exception_catch exception_catch()
|
|
||||||
* sigc::exception_catch() catches an exception thrown from within
|
|
||||||
* the wrapped functor and directs it to a catcher functor.
|
|
||||||
* This catcher can then rethrow the exception and catch it with the proper type.
|
|
||||||
*
|
|
||||||
* Note that the catcher is expected to return the same type
|
|
||||||
* as the wrapped functor so that normal flow can continue.
|
|
||||||
*
|
|
||||||
* Catchers can be cascaded to catch multiple types because uncaught
|
|
||||||
* rethrown exceptions proceed to the next catcher adaptor.
|
|
||||||
*
|
|
||||||
* @par Examples:
|
|
||||||
* @code
|
|
||||||
* struct my_catch
|
|
||||||
* {
|
|
||||||
* int operator()()
|
|
||||||
* {
|
|
||||||
* try { throw; }
|
|
||||||
* catch (std::range_error e) // catch what types we know
|
|
||||||
* { std::cerr << "caught " << e.what() << std::endl; }
|
|
||||||
* return 1;
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* int foo(); // throws std::range_error
|
|
||||||
* sigc::exception_catch(&foo, my_catch())();
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* The functor sigc::execption_catch() returns can be passed into
|
|
||||||
* sigc::signal::connect() directly.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* sigc::signal<int> some_signal;
|
|
||||||
* some_signal.connect(sigc::exception_catch(&foo, my_catch));
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @ingroup adaptors
|
|
||||||
*/
|
|
||||||
|
|
||||||
template <class T_functor, class T_catcher, class T_return = typename adapts<T_functor>::result_type>
|
|
||||||
struct exception_catch_functor : public adapts<T_functor>
|
|
||||||
{
|
|
||||||
typedef typename adapts<T_functor>::adaptor_type adaptor_type;
|
|
||||||
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename adaptor_type::template deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type type; };
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
result_type
|
|
||||||
operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator()(T_arg1 _A_a1)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
exception_catch_functor(const T_functor& _A_func,
|
|
||||||
const T_catcher& _A_catcher)
|
|
||||||
: adapts<T_functor>(_A_func), catcher_(_A_catcher)
|
|
||||||
{}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
T_catcher catcher_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor, class T_catcher, class T_return>
|
|
||||||
typename exception_catch_functor<T_functor, T_catcher, T_return>::result_type
|
|
||||||
exception_catch_functor<T_functor, T_catcher, T_return>::operator()()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{ return this->functor_(); }
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
// void specialization
|
|
||||||
template <class T_functor, class T_catcher>
|
|
||||||
struct exception_catch_functor<T_functor, T_catcher, void> : public adapts<T_functor>
|
|
||||||
{
|
|
||||||
typedef void result_type;
|
|
||||||
typedef typename adapts<T_functor>::adaptor_type adaptor_type;
|
|
||||||
|
|
||||||
void
|
|
||||||
operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator()(T_arg1 _A_a1)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7);
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{ return catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
exception_catch_functor() {}
|
|
||||||
exception_catch_functor(const T_functor& _A_func,
|
|
||||||
const T_catcher& _A_catcher)
|
|
||||||
: adapts<T_functor>(_A_func), catcher_(_A_catcher)
|
|
||||||
{}
|
|
||||||
~exception_catch_functor() {}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
T_catcher catcher_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor, class T_catcher>
|
|
||||||
void exception_catch_functor<T_functor, T_catcher, void>::operator()()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{ this->functor_(); } // I don't understand why void return doesn't work here (Martin)
|
|
||||||
catch (...)
|
|
||||||
{ this->catcher_(); }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_action, class T_functor, class T_catcher, class T_return>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const exception_catch_functor<T_functor, T_catcher, T_return>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.functor_);
|
|
||||||
visit_each(_A_action, _A_target.catcher_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_functor, class T_catcher>
|
|
||||||
inline exception_catch_functor<T_functor, T_catcher>
|
|
||||||
exception_catch(const T_functor& _A_func, const T_catcher& _A_catcher)
|
|
||||||
{ return exception_catch_functor<T_functor, T_catcher>(_A_func, _A_catcher); }
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_ADAPTORS_MACROS_EXCEPTION_CATCHHM4_ */
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1 +0,0 @@
|
||||||
*.os
|
|
||||||
|
|
@ -1,392 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_LAMBDA_BASE_HPP_
|
|
||||||
#define _SIGC_LAMBDA_BASE_HPP_
|
|
||||||
#include <sigc++/adaptors/adaptor_trait.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** @defgroup lambdas Lambdas
|
|
||||||
* libsigc++ ships with basic lambda functionality and the sigc::group adaptor that uses lambdas to transform a functor's parameter list.
|
|
||||||
*
|
|
||||||
* The lambda selectors sigc::_1, sigc::_2, ..., sigc::_9 are used to select the
|
|
||||||
* first, second, ..., nineth argument from a list.
|
|
||||||
*
|
|
||||||
* @par Examples:
|
|
||||||
* @code
|
|
||||||
* std::cout << sigc::_1(10,20,30); // returns 10
|
|
||||||
* std::cout << sigc::_2(10,20,30); // returns 20
|
|
||||||
* ...
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Operators are defined so that lambda selectors can be used e.g. as placeholders in
|
|
||||||
* arithmetic expressions.
|
|
||||||
*
|
|
||||||
* @par Examples:
|
|
||||||
* @code
|
|
||||||
* std::cout << (sigc::_1 + 5)(3); // returns (3 + 5)
|
|
||||||
* std::cout << (sigc::_1 * sigc::_2)(7,10); // returns (7 * 10)
|
|
||||||
* @endcode
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** A hint to the compiler.
|
|
||||||
* All lambda types publically inherit from this hint.
|
|
||||||
*
|
|
||||||
* @ingroup lambdas
|
|
||||||
*/
|
|
||||||
struct lambda_base : public adaptor_base {};
|
|
||||||
|
|
||||||
// Forward declaration of lambda.
|
|
||||||
template <class T_type> struct lambda;
|
|
||||||
|
|
||||||
|
|
||||||
namespace internal {
|
|
||||||
|
|
||||||
/** Abstracts lambda functionality.
|
|
||||||
* Objects of this type store a value that may be of type lambda itself.
|
|
||||||
* In this case, operator()() executes the lambda (a lambda is always a functor at the same time).
|
|
||||||
* Otherwise, operator()() simply returns the stored value.
|
|
||||||
*/
|
|
||||||
template <class T_type, bool I_islambda = is_base_and_derived<lambda_base, T_type>::value> struct lambda_core;
|
|
||||||
|
|
||||||
/// Abstracts lambda functionality (template specialization for lambda values).
|
|
||||||
template <class T_type>
|
|
||||||
struct lambda_core<T_type, true> : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename T_type::template deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type type; };
|
|
||||||
typedef typename T_type::result_type result_type;
|
|
||||||
typedef T_type lambda_type;
|
|
||||||
|
|
||||||
result_type
|
|
||||||
operator()() const;
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator ()(T_arg1 _A_1) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_1) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_1);
|
|
||||||
}
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator ()(T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_1,_A_2);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_1,_A_2);
|
|
||||||
}
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_1,_A_2,_A_3);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_1,_A_2,_A_3);
|
|
||||||
}
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4);
|
|
||||||
}
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4,_A_5);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4,_A_5);
|
|
||||||
}
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6);
|
|
||||||
}
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return value_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7);
|
|
||||||
}
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
lambda_core() {}
|
|
||||||
|
|
||||||
explicit lambda_core(const T_type& v)
|
|
||||||
: value_(v) {}
|
|
||||||
|
|
||||||
T_type value_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
typename lambda_core<T_type, true>::result_type
|
|
||||||
lambda_core<T_type, true>::operator()() const
|
|
||||||
{ return value_(); }
|
|
||||||
|
|
||||||
|
|
||||||
/// Abstracts lambda functionality (template specialization for other value types).
|
|
||||||
template <class T_type>
|
|
||||||
struct lambda_core<T_type, false> : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_type type; };
|
|
||||||
typedef T_type result_type; // all operator() overloads return T_type.
|
|
||||||
typedef lambda<T_type> lambda_type;
|
|
||||||
|
|
||||||
result_type operator()() const;
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
result_type operator ()(T_arg1 _A_1) const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
result_type sun_forte_workaround(T_arg1 _A_1) const
|
|
||||||
{ return value_; }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
result_type operator ()(T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return value_; }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return value_; }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return value_; }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return value_; }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return value_; }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return value_; }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
explicit lambda_core(typename type_trait<T_type>::take v)
|
|
||||||
: value_(v) {}
|
|
||||||
|
|
||||||
T_type value_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
typename lambda_core<T_type, false>::result_type lambda_core<T_type, false>::operator()() const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
} /* namespace internal */
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_action, class T_functor, bool I_islambda>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const internal::lambda_core<T_functor, I_islambda>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.value_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// forward declarations for lambda operators other<subscript> and other<assign>
|
|
||||||
template <class T_type>
|
|
||||||
struct other;
|
|
||||||
struct subscript;
|
|
||||||
struct assign;
|
|
||||||
|
|
||||||
template <class T_action, class T_type1, class T_type2>
|
|
||||||
struct lambda_operator;
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct unwrap_lambda_type;
|
|
||||||
|
|
||||||
|
|
||||||
/** Lambda type.
|
|
||||||
* Objects of this type store a value that may be of type lambda itself.
|
|
||||||
* In this case, operator()() executes the lambda (a lambda is always a functor at the same time).
|
|
||||||
* Otherwise, operator()() simply returns the stored value.
|
|
||||||
* The assign and subscript operators are defined to return a lambda operator.
|
|
||||||
*
|
|
||||||
* @ingroup lambdas
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
struct lambda : public internal::lambda_core<T_type>
|
|
||||||
{
|
|
||||||
typedef lambda<T_type> self;
|
|
||||||
|
|
||||||
lambda()
|
|
||||||
{}
|
|
||||||
|
|
||||||
lambda(typename type_trait<T_type>::take v)
|
|
||||||
: internal::lambda_core<T_type>(v)
|
|
||||||
{}
|
|
||||||
|
|
||||||
// operators for other<subscript>
|
|
||||||
template <class T_arg>
|
|
||||||
lambda<lambda_operator<other<subscript>, self, typename unwrap_lambda_type<T_arg>::type> >
|
|
||||||
operator [] (const T_arg& a) const
|
|
||||||
{ typedef lambda_operator<other<subscript>, self, typename unwrap_lambda_type<T_arg>::type> lambda_operator_type;
|
|
||||||
return lambda<lambda_operator_type>(lambda_operator_type(this->value_, unwrap_lambda_value(a))); }
|
|
||||||
|
|
||||||
// operators for other<assign>
|
|
||||||
template <class T_arg>
|
|
||||||
lambda<lambda_operator<other<assign>, self, typename unwrap_lambda_type<T_arg>::type> >
|
|
||||||
operator = (const T_arg& a) const
|
|
||||||
{ typedef lambda_operator<other<assign>, self, typename unwrap_lambda_type<T_arg>::type> lambda_operator_type;
|
|
||||||
return lambda<lambda_operator_type>(lambda_operator_type(this->value_, unwrap_lambda_value(a))); }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_action, class T_type>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const lambda<T_type>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.value_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// Converts a reference into a lambda object.
|
|
||||||
template <class T_type>
|
|
||||||
lambda<T_type&> var(T_type& v)
|
|
||||||
{ return lambda<T_type&>(v); }
|
|
||||||
|
|
||||||
/// Converts a constant reference into a lambda object.
|
|
||||||
template <class T_type>
|
|
||||||
lambda<const T_type&> var(const T_type& v)
|
|
||||||
{ return lambda<const T_type&>(v); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Deduces the type of the object stored in an object of the passed lambda type.
|
|
||||||
* If the type passed as template argument is no lambda type,
|
|
||||||
* type is defined to unwrap_reference<T_type>::type.
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
struct unwrap_lambda_type
|
|
||||||
{ typedef typename unwrap_reference<T_type>::type type; };
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct unwrap_lambda_type<lambda<T_type> >
|
|
||||||
{ typedef T_type type; };
|
|
||||||
|
|
||||||
|
|
||||||
/** Gets the object stored inside a lambda object.
|
|
||||||
* Returns the object passed as argument if it is not of type lambda.
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
T_type& unwrap_lambda_value(T_type& a)
|
|
||||||
{ return a; }
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
const T_type& unwrap_lambda_value(const T_type& a)
|
|
||||||
{ return a; }
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
const T_type& unwrap_lambda_value(const lambda<T_type>& a)
|
|
||||||
{ return a.value_; }
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
||||||
#endif /* _SIGC_LAMBDA_BASE_HPP_ */
|
|
||||||
|
|
@ -1,734 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_ADAPTORS_LAMBDA_MACROS_GROUPHM4_
|
|
||||||
#define _SIGC_ADAPTORS_LAMBDA_MACROS_GROUPHM4_
|
|
||||||
#include <sigc++/adaptors/lambda/base.h>
|
|
||||||
|
|
||||||
/** @defgroup group_ group()
|
|
||||||
* sigc::group() alters an arbitrary functor by rebuilding its arguments from one or more lambda expressions.
|
|
||||||
* For each parameter that should be passed to the wrapped functor one lambda expression
|
|
||||||
* has to be passed into group(). Lambda selectors can be used as placeholders for the
|
|
||||||
* arguments passed into the new functor. Arguments that don't have a placeholder in one
|
|
||||||
* of the lambda expressions are dropped.
|
|
||||||
*
|
|
||||||
* @par Examples:
|
|
||||||
* @code
|
|
||||||
* void foo(int, int);
|
|
||||||
* int bar(int);
|
|
||||||
* // argument binding ...
|
|
||||||
* sigc::group(&foo,10,sigc::_1)(20); //fixes the first argument and calls foo(10,20)
|
|
||||||
* sigc::group(&foo,sigc::_1,30)(40); //fixes the second argument and calls foo(40,30)
|
|
||||||
* // argument reordering ...
|
|
||||||
* sigc::group(&foo,sigc::_2,sigc::_1)(1,2); //calls foo(2,1)
|
|
||||||
* // argument hiding ...
|
|
||||||
* sigc::group(&foo,sigc::_1,sigc::_2)(1,2,3); //calls foo(1,2)
|
|
||||||
* // functor composition ...
|
|
||||||
* sigc::group(&foo,sigc::_1,sigc::group(&bar,sigc::_2))(1,2); //calls foo(1,bar(2))
|
|
||||||
* // algebraic expressions ...
|
|
||||||
* sigc::group(&foo,sigc::_1*sigc::_2,sigc::_1/sigc::_2)(6,3); //calls foo(6*3,6/3)
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* The functor sigc::group() returns can be passed into
|
|
||||||
* sigc::signal::connect() directly.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* sigc::signal<void,int,int> some_signal;
|
|
||||||
* void foo(int);
|
|
||||||
* some_signal.connect(sigc::group(&foo,sigc::_2));
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Like in sigc::bind() you can bind references to functors by passing the objects
|
|
||||||
* through the sigc::ref() helper function.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* int some_int;
|
|
||||||
* sigc::signal<void> some_signal;
|
|
||||||
* void foo(int&);
|
|
||||||
* some_signal.connect(sigc::group(&foo,sigc::ref(some_int)));
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* If you bind an object of a sigc::trackable derived type to a functor
|
|
||||||
* by reference, a slot assigned to the group adaptor is cleared automatically
|
|
||||||
* when the object goes out of scope.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* struct bar : public sigc::trackable {} some_bar;
|
|
||||||
* sigc::signal<void> some_signal;
|
|
||||||
* void foo(bar&);
|
|
||||||
* some_signal.connect(sigc::group(&foo,sigc::ref(some_bar)));
|
|
||||||
* // disconnected automatically if some_bar goes out of scope
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @ingroup adaptors, lambdas
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1>
|
|
||||||
struct lambda_group1 : public lambda_base
|
|
||||||
{
|
|
||||||
typedef typename functor_trait<T_functor>::result_type result_type;
|
|
||||||
typedef typename lambda<T_type1>::lambda_type value1_type;
|
|
||||||
typedef typename adaptor_trait<T_functor>::adaptor_type functor_type;
|
|
||||||
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename functor_type::template deduce_result_type<
|
|
||||||
typename value1_type::template deduce_result_type<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type
|
|
||||||
>::type type; };
|
|
||||||
|
|
||||||
result_type
|
|
||||||
operator ()() const;
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator() (T_arg1 _A_1) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
lambda_group1(typename type_trait<T_functor>::take _A_func, typename type_trait<T_type1>::take _A_1)
|
|
||||||
: value1_(_A_1), func_(_A_func) {}
|
|
||||||
|
|
||||||
value1_type value1_;
|
|
||||||
mutable functor_type func_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1>
|
|
||||||
typename lambda_group1<T_functor, T_type1>::result_type
|
|
||||||
lambda_group1<T_functor, T_type1>::operator ()() const
|
|
||||||
{ return func_(value1_()); }
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_action, class T_functor, class T_type1>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const lambda_group1<T_functor, T_type1>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.value1_);
|
|
||||||
visit_each(_A_action, _A_target.func_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1,class T_type2>
|
|
||||||
struct lambda_group2 : public lambda_base
|
|
||||||
{
|
|
||||||
typedef typename functor_trait<T_functor>::result_type result_type;
|
|
||||||
typedef typename lambda<T_type1>::lambda_type value1_type;
|
|
||||||
typedef typename lambda<T_type2>::lambda_type value2_type;
|
|
||||||
typedef typename adaptor_trait<T_functor>::adaptor_type functor_type;
|
|
||||||
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename functor_type::template deduce_result_type<
|
|
||||||
typename value1_type::template deduce_result_type<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type,
|
|
||||||
typename value2_type::template deduce_result_type<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type
|
|
||||||
>::type type; };
|
|
||||||
|
|
||||||
result_type
|
|
||||||
operator ()() const;
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator() (T_arg1 _A_1) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
lambda_group2(typename type_trait<T_functor>::take _A_func, typename type_trait<T_type1>::take _A_1,typename type_trait<T_type2>::take _A_2)
|
|
||||||
: value1_(_A_1),value2_(_A_2), func_(_A_func) {}
|
|
||||||
|
|
||||||
value1_type value1_;
|
|
||||||
value2_type value2_;
|
|
||||||
mutable functor_type func_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1,class T_type2>
|
|
||||||
typename lambda_group2<T_functor, T_type1,T_type2>::result_type
|
|
||||||
lambda_group2<T_functor, T_type1,T_type2>::operator ()() const
|
|
||||||
{ return func_(value1_(),value2_()); }
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_action, class T_functor, class T_type1,class T_type2>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const lambda_group2<T_functor, T_type1,T_type2>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.value1_);
|
|
||||||
visit_each(_A_action, _A_target.value2_);
|
|
||||||
visit_each(_A_action, _A_target.func_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1,class T_type2,class T_type3>
|
|
||||||
struct lambda_group3 : public lambda_base
|
|
||||||
{
|
|
||||||
typedef typename functor_trait<T_functor>::result_type result_type;
|
|
||||||
typedef typename lambda<T_type1>::lambda_type value1_type;
|
|
||||||
typedef typename lambda<T_type2>::lambda_type value2_type;
|
|
||||||
typedef typename lambda<T_type3>::lambda_type value3_type;
|
|
||||||
typedef typename adaptor_trait<T_functor>::adaptor_type functor_type;
|
|
||||||
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef typename functor_type::template deduce_result_type<
|
|
||||||
typename value1_type::template deduce_result_type<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type,
|
|
||||||
typename value2_type::template deduce_result_type<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type,
|
|
||||||
typename value3_type::template deduce_result_type<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::type
|
|
||||||
>::type type; };
|
|
||||||
|
|
||||||
result_type
|
|
||||||
operator ()() const;
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
operator() (T_arg1 _A_1) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
typename deduce_result_type<T_arg1>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass>(_A_1)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>(_A_1,_A_2,_A_3)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>(_A_1,_A_2,_A_3,_A_4)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type
|
|
||||||
sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const
|
|
||||||
{ return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename value2_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type,
|
|
||||||
typename value3_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type>(
|
|
||||||
this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7),
|
|
||||||
this->value2_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7),
|
|
||||||
this->value3_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<
|
|
||||||
typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>(_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); }
|
|
||||||
#endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
lambda_group3(typename type_trait<T_functor>::take _A_func, typename type_trait<T_type1>::take _A_1,typename type_trait<T_type2>::take _A_2,typename type_trait<T_type3>::take _A_3)
|
|
||||||
: value1_(_A_1),value2_(_A_2),value3_(_A_3), func_(_A_func) {}
|
|
||||||
|
|
||||||
value1_type value1_;
|
|
||||||
value2_type value2_;
|
|
||||||
value3_type value3_;
|
|
||||||
mutable functor_type func_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1,class T_type2,class T_type3>
|
|
||||||
typename lambda_group3<T_functor, T_type1,T_type2,T_type3>::result_type
|
|
||||||
lambda_group3<T_functor, T_type1,T_type2,T_type3>::operator ()() const
|
|
||||||
{ return func_(value1_(),value2_(),value3_()); }
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_action, class T_functor, class T_type1,class T_type2,class T_type3>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const lambda_group3<T_functor, T_type1,T_type2,T_type3>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.value1_);
|
|
||||||
visit_each(_A_action, _A_target.value2_);
|
|
||||||
visit_each(_A_action, _A_target.value3_);
|
|
||||||
visit_each(_A_action, _A_target.func_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1>
|
|
||||||
lambda<lambda_group1<T_functor, typename unwrap_reference<T_type1>::type> >
|
|
||||||
group(const T_functor& _A_func, T_type1 _A_1)
|
|
||||||
{
|
|
||||||
typedef lambda_group1<T_functor, typename unwrap_reference<T_type1>::type> T_lambda;
|
|
||||||
return lambda<T_lambda>(T_lambda(_A_func, _A_1));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1,class T_type2>
|
|
||||||
lambda<lambda_group2<T_functor, typename unwrap_reference<T_type1>::type,typename unwrap_reference<T_type2>::type> >
|
|
||||||
group(const T_functor& _A_func, T_type1 _A_1,T_type2 _A_2)
|
|
||||||
{
|
|
||||||
typedef lambda_group2<T_functor, typename unwrap_reference<T_type1>::type,typename unwrap_reference<T_type2>::type> T_lambda;
|
|
||||||
return lambda<T_lambda>(T_lambda(_A_func, _A_1,_A_2));
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1,class T_type2,class T_type3>
|
|
||||||
lambda<lambda_group3<T_functor, typename unwrap_reference<T_type1>::type,typename unwrap_reference<T_type2>::type,typename unwrap_reference<T_type3>::type> >
|
|
||||||
group(const T_functor& _A_func, T_type1 _A_1,T_type2 _A_2,T_type3 _A_3)
|
|
||||||
{
|
|
||||||
typedef lambda_group3<T_functor, typename unwrap_reference<T_type1>::type,typename unwrap_reference<T_type2>::type,typename unwrap_reference<T_type3>::type> T_lambda;
|
|
||||||
return lambda<T_lambda>(T_lambda(_A_func, _A_1,_A_2,_A_3));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_ADAPTORS_LAMBDA_MACROS_GROUPHM4_ */
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#include <sigc++/adaptors/lambda/select.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
const lambda<internal::lambda_select1> _1;
|
|
||||||
const lambda<internal::lambda_select2> _2;
|
|
||||||
const lambda<internal::lambda_select3> _3;
|
|
||||||
const lambda<internal::lambda_select4> _4;
|
|
||||||
const lambda<internal::lambda_select5> _5;
|
|
||||||
const lambda<internal::lambda_select6> _6;
|
|
||||||
const lambda<internal::lambda_select7> _7;
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_LAMBDA_HPP_
|
|
||||||
#define _SIGC_LAMBDA_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/adaptors/lambda/base.h>
|
|
||||||
#include <sigc++/adaptors/lambda/select.h>
|
|
||||||
#include <sigc++/adaptors/lambda/operator.h>
|
|
||||||
#include <sigc++/adaptors/lambda/group.h>
|
|
||||||
|
|
||||||
#endif /* _SIGC_LAMBDA_HPP_ */
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,346 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_LAMBDA_SELECT_HPP_
|
|
||||||
#define _SIGC_LAMBDA_SELECT_HPP_
|
|
||||||
#include <sigc++/adaptors/lambda/base.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
namespace internal {
|
|
||||||
struct lambda_select1 : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_arg1 type; };
|
|
||||||
typedef void result_type; // no operator ()() overload
|
|
||||||
|
|
||||||
void operator ()() const; // not implemented
|
|
||||||
template <class T_arg1>
|
|
||||||
T_arg1 operator ()(T_arg1 _A_1) const { return _A_1; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
//Does not work: T_arg1 sun_forte_workaround(T_arg1 _A_1) const { return operator()( _A_1 ); }
|
|
||||||
T_arg1 sun_forte_workaround(T_arg1 _A_1) const { return _A_1; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2) const { return _A_1; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
//Does not work: T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const { return operator()( _A_1,_A_2 ); }
|
|
||||||
T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const { return _A_1; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_1; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
//Does not work: T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return operator()( _A_1,_A_2,_A_3 ); }
|
|
||||||
T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_1; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_1; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
//Does not work: T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return operator()( _A_1,_A_2,_A_3,_A_4 ); }
|
|
||||||
T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_1; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_1; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
//Does not work: T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5 ); }
|
|
||||||
T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_1; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_1; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
//Does not work: T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6 ); }
|
|
||||||
T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_1; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_1; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
//Does not work: T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7 ); }
|
|
||||||
T_arg1 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_1; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
struct lambda_select2 : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_arg2 type; };
|
|
||||||
typedef void result_type; // no operator ()() overload
|
|
||||||
|
|
||||||
void operator ()() const; // not implemented
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2) const { return _A_2; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
//Does not work: T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const { return operator()( _A_1,_A_2 ); }
|
|
||||||
T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const { return _A_2; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_2; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
//Does not work: T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return operator()( _A_1,_A_2,_A_3 ); }
|
|
||||||
T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_2; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_2; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
//Does not work: T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return operator()( _A_1,_A_2,_A_3,_A_4 ); }
|
|
||||||
T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_2; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_2; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
//Does not work: T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5 ); }
|
|
||||||
T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_2; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_2; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
//Does not work: T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6 ); }
|
|
||||||
T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_2; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_2; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
//Does not work: T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7 ); }
|
|
||||||
T_arg2 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_2; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
struct lambda_select3 : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_arg3 type; };
|
|
||||||
typedef void result_type; // no operator ()() overload
|
|
||||||
|
|
||||||
void operator ()() const; // not implemented
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
T_arg3 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_3; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
//Does not work: T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return operator()( _A_1,_A_2,_A_3 ); }
|
|
||||||
T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_3; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
T_arg3 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_3; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
//Does not work: T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return operator()( _A_1,_A_2,_A_3,_A_4 ); }
|
|
||||||
T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_3; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
T_arg3 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_3; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
//Does not work: T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5 ); }
|
|
||||||
T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_3; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
T_arg3 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_3; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
//Does not work: T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6 ); }
|
|
||||||
T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_3; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
T_arg3 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_3; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
//Does not work: T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7 ); }
|
|
||||||
T_arg3 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_3; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
struct lambda_select4 : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_arg4 type; };
|
|
||||||
typedef void result_type; // no operator ()() overload
|
|
||||||
|
|
||||||
void operator ()() const; // not implemented
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
T_arg4 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_4; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
//Does not work: T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return operator()( _A_1,_A_2,_A_3,_A_4 ); }
|
|
||||||
T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_4; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
T_arg4 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_4; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
//Does not work: T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5 ); }
|
|
||||||
T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_4; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
T_arg4 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_4; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
//Does not work: T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6 ); }
|
|
||||||
T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_4; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
T_arg4 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_4; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
//Does not work: T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7 ); }
|
|
||||||
T_arg4 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_4; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
struct lambda_select5 : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_arg5 type; };
|
|
||||||
typedef void result_type; // no operator ()() overload
|
|
||||||
|
|
||||||
void operator ()() const; // not implemented
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
T_arg5 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_5; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
//Does not work: T_arg5 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5 ); }
|
|
||||||
T_arg5 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return _A_5; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
T_arg5 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_5; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
//Does not work: T_arg5 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6 ); }
|
|
||||||
T_arg5 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_5; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
T_arg5 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_5; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
//Does not work: T_arg5 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7 ); }
|
|
||||||
T_arg5 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_5; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
struct lambda_select6 : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_arg6 type; };
|
|
||||||
typedef void result_type; // no operator ()() overload
|
|
||||||
|
|
||||||
void operator ()() const; // not implemented
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
T_arg6 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_6; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
//Does not work: T_arg6 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6 ); }
|
|
||||||
T_arg6 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return _A_6; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
T_arg6 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_6; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
//Does not work: T_arg6 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7 ); }
|
|
||||||
T_arg6 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_6; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
struct lambda_select7 : public lambda_base
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_arg7 type; };
|
|
||||||
typedef void result_type; // no operator ()() overload
|
|
||||||
|
|
||||||
void operator ()() const; // not implemented
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
T_arg7 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_7; }
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
//Does not work: T_arg7 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return operator()( _A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7 ); }
|
|
||||||
T_arg7 sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return _A_7; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace internal */
|
|
||||||
|
|
||||||
extern SIGC_API const lambda<internal::lambda_select1> _1;
|
|
||||||
extern SIGC_API const lambda<internal::lambda_select2> _2;
|
|
||||||
extern SIGC_API const lambda<internal::lambda_select3> _3;
|
|
||||||
extern SIGC_API const lambda<internal::lambda_select4> _4;
|
|
||||||
extern SIGC_API const lambda<internal::lambda_select5> _5;
|
|
||||||
extern SIGC_API const lambda<internal::lambda_select6> _6;
|
|
||||||
extern SIGC_API const lambda<internal::lambda_select7> _7;
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
||||||
#endif /* _SIGC_LAMBDA_SELECT_HPP_ */
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,308 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_ADAPTORS_MACROS_RETYPE_RETURNHM4_
|
|
||||||
#define _SIGC_ADAPTORS_MACROS_RETYPE_RETURNHM4_
|
|
||||||
#include <sigc++/adaptors/adaptor_trait.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** Adaptor that perform a C-style cast on the return value of a functor.
|
|
||||||
* Use the convenience function sigc::retype_return() to create an instance of retype_return_functor.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_return Target type of the C-style cast.
|
|
||||||
* - @e T_functor Type of the functor to wrap.
|
|
||||||
*
|
|
||||||
* @ingroup retype
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_functor>
|
|
||||||
struct retype_return_functor : public adapts<T_functor>
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_return type; };
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
T_return operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
retype_return_functor() {}
|
|
||||||
|
|
||||||
/** Constructs a retype_return_functor object that perform a C-style cast on the return value of the passed functor.
|
|
||||||
* @param _A_functor Functor to invoke from operator()().
|
|
||||||
*/
|
|
||||||
explicit retype_return_functor(typename type_trait<T_functor>::take _A_functor)
|
|
||||||
: adapts<T_functor>(_A_functor)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_return, class T_functor>
|
|
||||||
T_return retype_return_functor<T_return, T_functor>::operator()()
|
|
||||||
{ return T_return(this->functor_()); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Adaptor that perform a C-style cast on the return value of a functor.
|
|
||||||
* This template specialization is for a void return. It drops the return value of the functor it invokes.
|
|
||||||
* Use the convenience function sigc::hide_return() to create an instance of sigc::retype_return_functor<void>.
|
|
||||||
*
|
|
||||||
* @ingroup retype
|
|
||||||
*/
|
|
||||||
/* The void specialization needed because of explicit cast to T_return.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
struct retype_return_functor<void, T_functor> : public adapts<T_functor>
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef void type; };
|
|
||||||
typedef void result_type;
|
|
||||||
|
|
||||||
void operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
inline void operator()(T_arg1 _A_a1)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass>
|
|
||||||
(_A_a1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>
|
|
||||||
(_A_a1,_A_a2);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>
|
|
||||||
(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
retype_return_functor() {}
|
|
||||||
retype_return_functor(typename type_trait<T_functor>::take _A_functor)
|
|
||||||
: adapts<T_functor>(_A_functor)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor>
|
|
||||||
void retype_return_functor<void, T_functor>::operator()()
|
|
||||||
{ this->functor_(); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Performs a functor on each of the targets of a functor.
|
|
||||||
* The function overload for sigc::retype_return_functor performs a functor on the
|
|
||||||
* functor stored in the sigc::retype_return_functor object.
|
|
||||||
*
|
|
||||||
* @ingroup retype
|
|
||||||
*/
|
|
||||||
template <class T_action, class T_return, class T_functor>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const retype_return_functor<T_return, T_functor>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.functor_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates an adaptor of type sigc::retype_return_functor which performs a C-style cast on the return value of the passed functor.
|
|
||||||
* The template argument @e T_return specifies the target type of the cast.
|
|
||||||
*
|
|
||||||
* @param _A_functor Functor that should be wrapped.
|
|
||||||
* @return Adaptor that executes @e _A_functor performing a C-style casts on the return value.
|
|
||||||
*
|
|
||||||
* @ingroup retype
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_functor>
|
|
||||||
inline retype_return_functor<T_return, T_functor>
|
|
||||||
retype_return(const T_functor& _A_functor)
|
|
||||||
{ return retype_return_functor<T_return, T_functor>(_A_functor); }
|
|
||||||
|
|
||||||
/** Creates an adaptor of type sigc::retype_return_functor which drops the return value of the passed functor.
|
|
||||||
*
|
|
||||||
* @param _A_functor Functor that should be wrapped.
|
|
||||||
* @return Adaptor that executes @e _A_functor dropping its return value.
|
|
||||||
*
|
|
||||||
* @ingroup hide
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
inline retype_return_functor<void, T_functor>
|
|
||||||
hide_return(const T_functor& _A_functor)
|
|
||||||
{ return retype_return_functor<void, T_functor>(_A_functor); }
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_ADAPTORS_MACROS_RETYPE_RETURNHM4_ */
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_BIND_HPP_
|
|
||||||
#define _SIGC_BIND_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/adaptors/bind.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
template <class T_bound1, class T_functor>
|
|
||||||
inline ::sigc::bind_functor<-1, T_functor,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound1>::type>
|
|
||||||
bind(const T_functor& _A_functor, T_bound1 _A_b1)
|
|
||||||
{ return ::sigc::bind_functor<-1, T_functor,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound1>::type>
|
|
||||||
(_A_functor, _A_b1);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_bound1, class T_bound2, class T_functor>
|
|
||||||
inline ::sigc::bind_functor<-1, T_functor,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound1>::type,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound2>::type>
|
|
||||||
bind(const T_functor& _A_functor, T_bound1 _A_b1, T_bound2 _A_b2)
|
|
||||||
{ return ::sigc::bind_functor<-1, T_functor,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound1>::type,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound2>::type>
|
|
||||||
(_A_functor, _A_b1, _A_b2);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class T_bound1, class T_bound2, class T_bound3, class T_functor>
|
|
||||||
inline ::sigc::bind_functor<-1, T_functor,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound1>::type,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound2>::type,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound3>::type>
|
|
||||||
bind(const T_functor& _A_functor, T_bound1 _A_b1, T_bound2 _A_b2,T_bound3 _A_b3)
|
|
||||||
{ return ::sigc::bind_functor<-1, T_functor,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound1>::type,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound2>::type,
|
|
||||||
typename ::sigc::unwrap_reference<T_bound3>::type>
|
|
||||||
(_A_functor, _A_b1, _A_b2, _A_b3);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
|
|
||||||
#endif /* _SIGC_BIND_HPP_ */
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_BIND_RETURN_HPP_
|
|
||||||
#define _SIGC_BIND_RETURN_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/adaptors/bind_return.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
using ::sigc::bind_return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
|
|
||||||
#endif /* _SIGC_BIND_RETURN_HPP_ */
|
|
||||||
|
|
@ -1,568 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SIGC_MACROS_CLASS_SLOTHM4_
|
|
||||||
#define _SIGC_MACROS_CLASS_SLOTHM4_
|
|
||||||
|
|
||||||
#include <sigc++/slot.h>
|
|
||||||
#include <sigc++/functors/mem_fun.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
// slot_class()
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)() )
|
|
||||||
{ return ::sigc::bound_mem_functor0<T_return, T_obj>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1) )
|
|
||||||
{ return ::sigc::bound_mem_functor1<T_return, T_obj, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2) )
|
|
||||||
{ return ::sigc::bound_mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) )
|
|
||||||
{ return ::sigc::bound_mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) )
|
|
||||||
{ return ::sigc::bound_mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) )
|
|
||||||
{ return ::sigc::bound_mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) )
|
|
||||||
{ return ::sigc::bound_mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) )
|
|
||||||
{ return ::sigc::bound_mem_functor7<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)() const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor0<T_return, T_obj>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1) const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor1<T_return, T_obj, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2) const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a const method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) const)
|
|
||||||
{ return ::sigc::bound_const_mem_functor7<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)() volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor0<T_return, T_obj>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1) volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor1<T_return, T_obj, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2) volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot_class( T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) volatile)
|
|
||||||
{ return ::sigc::bound_volatile_mem_functor7<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)() const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor0<T_return, T_obj>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1) const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor1<T_return, T_obj, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2) const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a const volatile method and an object instance.
|
|
||||||
*
|
|
||||||
* This function is part of the compatibility module and therefore deprecated.
|
|
||||||
* Use sigc::mem_fun() instead.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot_class(const T_obj& _A_obj, T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) const volatile)
|
|
||||||
{ return ::sigc::bound_const_volatile_mem_functor7<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif /* _SIGC_MACROS_CLASS_SLOTHM4_ */
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_COMPATIBILITY_HPP_
|
|
||||||
#define _SIGC_COMPATIBILITY_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/signal.h>
|
|
||||||
#include <sigc++/connection.h>
|
|
||||||
#include <sigc++/object_slot.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
/** @defgroup compat Compatibility module
|
|
||||||
* This set of types and functions provides an API that is compatible to
|
|
||||||
* libsigc++-1.2. Some internal structures of libsigc++-1.2 are not available.
|
|
||||||
*
|
|
||||||
* All types and functions that are defined in namespace SigC are deprecated.
|
|
||||||
* Use the new libsigc++2 API that is defined in namespace sigc.
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
|
|
||||||
#endif /* _SIGC_COMPATIBILITY_HPP_ */
|
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sigc++/connection.h>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
connection::connection()
|
|
||||||
: slot_(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
connection::connection(const connection& c)
|
|
||||||
: slot_(c.slot_)
|
|
||||||
{
|
|
||||||
//Let the connection forget about the signal handler when the handler object dies:
|
|
||||||
if (slot_)
|
|
||||||
slot_->add_destroy_notify_callback(this, ¬ify);
|
|
||||||
}
|
|
||||||
|
|
||||||
connection::connection(slot_base& sl)
|
|
||||||
: slot_(&sl)
|
|
||||||
{
|
|
||||||
//Let the connection forget about the signal handler when the handler object dies:
|
|
||||||
slot_->add_destroy_notify_callback(this, ¬ify);
|
|
||||||
}
|
|
||||||
|
|
||||||
connection& connection::operator=(const connection& c)
|
|
||||||
{
|
|
||||||
set_slot(c.slot_);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
connection::~connection()
|
|
||||||
{
|
|
||||||
if (slot_)
|
|
||||||
slot_->remove_destroy_notify_callback(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool connection::empty() const
|
|
||||||
{
|
|
||||||
return (!slot_ || slot_->empty());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool connection::connected() const
|
|
||||||
{
|
|
||||||
return !empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool connection::blocked() const
|
|
||||||
{
|
|
||||||
return (slot_ ? slot_->blocked() : false);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool connection::block(bool should_block)
|
|
||||||
{
|
|
||||||
return (slot_ ? slot_->block(should_block) : false);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool connection::unblock()
|
|
||||||
{
|
|
||||||
return (slot_ ? slot_->unblock() : false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void connection::disconnect()
|
|
||||||
{
|
|
||||||
if (slot_)
|
|
||||||
slot_->disconnect(); // This notifies slot_'s parent.
|
|
||||||
}
|
|
||||||
|
|
||||||
connection::operator bool()
|
|
||||||
{
|
|
||||||
return !empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
void connection::set_slot(slot_base* sl)
|
|
||||||
{
|
|
||||||
if (slot_)
|
|
||||||
slot_->remove_destroy_notify_callback(this);
|
|
||||||
|
|
||||||
slot_ = sl;
|
|
||||||
|
|
||||||
if (slot_)
|
|
||||||
slot_->add_destroy_notify_callback(this, ¬ify);
|
|
||||||
}
|
|
||||||
|
|
||||||
void* connection::notify(void* data)
|
|
||||||
{
|
|
||||||
connection* self = (connection*)data;
|
|
||||||
self->slot_ = 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
@ -1,154 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_CONNECTION_HPP_
|
|
||||||
#define _SIGC_CONNECTION_HPP_
|
|
||||||
#include <sigc++config.h>
|
|
||||||
#include <sigc++/signal.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** Convinience class for safe disconnection.
|
|
||||||
* Iterators must not be used beyond the lifetime of the list
|
|
||||||
* they work on. A connection object can be created from a
|
|
||||||
* slot list iterator and may safely be used to disconnect
|
|
||||||
* the referred slot at any time (disconnect()). If the slot
|
|
||||||
* has already been destroyed, disconnect() does nothing. empty() or
|
|
||||||
* operator bool() can be used to test whether the connection is
|
|
||||||
* still active. The connection can be blocked (block(), unblock()).
|
|
||||||
*
|
|
||||||
* This is possible because the connection object gets notified
|
|
||||||
* when the referred slot dies (notify()).
|
|
||||||
*
|
|
||||||
* @ingroup signal
|
|
||||||
*/
|
|
||||||
struct SIGC_API connection
|
|
||||||
{
|
|
||||||
/** Constructs an empty connection object. */
|
|
||||||
connection();
|
|
||||||
|
|
||||||
/** Constructs a connection object copying an existing one.
|
|
||||||
* @param c The connection object to make a copy from.
|
|
||||||
*/
|
|
||||||
connection(const connection& c);
|
|
||||||
|
|
||||||
/** Constructs a connection object from a slot list iterator.
|
|
||||||
* @param it The slot list iterator to take the slot from.
|
|
||||||
*/
|
|
||||||
template <typename T_slot>
|
|
||||||
connection(const slot_iterator<T_slot>& it) : slot_(&(*it))
|
|
||||||
{ if (slot_) slot_->add_destroy_notify_callback(this, ¬ify); }
|
|
||||||
|
|
||||||
/** Constructs a connection object from a slot object.
|
|
||||||
* This is only useful if you create your own slot list.
|
|
||||||
* @param sl The slot to operate on.
|
|
||||||
*/
|
|
||||||
explicit connection(slot_base& sl);
|
|
||||||
|
|
||||||
/** Overrides this connection object copying another one.
|
|
||||||
* @param c The connection object to make a copy from.
|
|
||||||
*/
|
|
||||||
connection& operator=(const connection& c);
|
|
||||||
|
|
||||||
/** Overrides this connection object with another slot list iterator.
|
|
||||||
* @param it The new slot list iterator to take the slot from.
|
|
||||||
*/
|
|
||||||
template <typename T_slot>
|
|
||||||
connection& operator=(const slot_iterator<T_slot>& it)
|
|
||||||
{ set_slot(&(*it)); return *this; }
|
|
||||||
|
|
||||||
~connection();
|
|
||||||
|
|
||||||
/** Returns whether the connection is still active.
|
|
||||||
* @return @p false if the connection is still active.
|
|
||||||
*/
|
|
||||||
bool empty() const;
|
|
||||||
|
|
||||||
/** Returns whether the connection is still active.
|
|
||||||
* @return @p true if the connection is still active.
|
|
||||||
*/
|
|
||||||
bool connected() const;
|
|
||||||
|
|
||||||
/** Returns whether the connection is blocked.
|
|
||||||
* @return @p true if the connection is blocked.
|
|
||||||
*/
|
|
||||||
bool blocked() const;
|
|
||||||
|
|
||||||
/** Sets or unsets the blocking state of this connection.
|
|
||||||
* See slot_base::block() for details.
|
|
||||||
* @param should_block Indicates whether the blocking state should be set or unset.
|
|
||||||
* @return @p true if the connection has been in blocking state before.
|
|
||||||
*/
|
|
||||||
bool block(bool should_block = true);
|
|
||||||
|
|
||||||
/** Unsets the blocking state of this connection.
|
|
||||||
* @return @p true if the connection has been in blocking state before.
|
|
||||||
*/
|
|
||||||
bool unblock();
|
|
||||||
|
|
||||||
/// Disconnects the referred slot.
|
|
||||||
void disconnect();
|
|
||||||
|
|
||||||
/** Returns whether the connection is still active.
|
|
||||||
* @return @p true if the connection is still active.
|
|
||||||
*/
|
|
||||||
operator bool();
|
|
||||||
|
|
||||||
/** Callback that is executed when the referred slot is destroyed.
|
|
||||||
* @param d The connection object notified (@p this).
|
|
||||||
*/
|
|
||||||
static void* notify(void* data);
|
|
||||||
|
|
||||||
private:
|
|
||||||
void set_slot(slot_base* sl);
|
|
||||||
|
|
||||||
/* Referred slot. Set to zero from notify().
|
|
||||||
* A value of zero indicates an "empty" connection.
|
|
||||||
*/
|
|
||||||
slot_base* slot_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
/** Convinience class for safe disconnection.
|
|
||||||
* Iterators must not be used beyond the lifetime of the list
|
|
||||||
* they work on. A connection object can be created from a
|
|
||||||
* slot list iterator and may safely be used to disconnect
|
|
||||||
* the referred slot at any time (disconnect()). If the slot
|
|
||||||
* has already been destroyed, disconnect() does nothing. empty() or
|
|
||||||
* operator bool() can be used to test whether the connection is
|
|
||||||
* still active. The connection can be blocked (block(), unblock()).
|
|
||||||
*
|
|
||||||
* This is possible because the connection object gets notified
|
|
||||||
* when the referred slot dies (notify()).
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::connection instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
typedef ::sigc::connection Connection;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
|
|
||||||
#endif /* _SIGC_TRACKABLE_HPP_ */
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
*.os
|
|
||||||
|
|
@ -1,307 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
/*
|
|
||||||
Trait functor_trait<functor>:
|
|
||||||
|
|
||||||
This trait allows the user to specific what is the return type
|
|
||||||
of any type. It has been overloaded to detect the return type and
|
|
||||||
the functor version of function pointers and class methods as well.
|
|
||||||
|
|
||||||
To populate the return type of user defined and third party functors
|
|
||||||
use the macro SIGC_FUNCTOR_TRAIT(T_functor,T_return) in
|
|
||||||
namespace sigc. Multi-type functors are only partly supported.
|
|
||||||
Try specifying the return type of the functor's operator()() overload.
|
|
||||||
|
|
||||||
Alternatively, you can derive your functors from functor_base and
|
|
||||||
place "typedef T_return result_type;" in the class definition.
|
|
||||||
|
|
||||||
Use SIGC_FUNCTORS_HAVE_RESULT_TYPE if you want sigc++ to assume that
|
|
||||||
result_type is defined in all user defined or 3rd-party functors
|
|
||||||
(except those you specify a return type explicitly with SIGC_FUNCTOR_TRAIT()).
|
|
||||||
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_FUNCTORS_MACROS_FUNCTOR_TRAITHM4_
|
|
||||||
#define _SIGC_FUNCTORS_MACROS_FUNCTOR_TRAITHM4_
|
|
||||||
#include <sigc++/type_traits.h>
|
|
||||||
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** nil_ struct type.
|
|
||||||
* The nil_ struct type is used as default template argument in the
|
|
||||||
* unnumbered sigc::signal and sigc::slot templates.
|
|
||||||
*
|
|
||||||
* @ingroup signal
|
|
||||||
* @ingroup slot
|
|
||||||
*/
|
|
||||||
struct nil_;
|
|
||||||
|
|
||||||
|
|
||||||
/** @defgroup functors Functors
|
|
||||||
* Functors are copyable types that define operator()().
|
|
||||||
*
|
|
||||||
* Types that define operator()() overloads with different return types are referred to
|
|
||||||
* as multi-type functors. Multi-type functors are only partly supported in libsigc++.
|
|
||||||
*
|
|
||||||
* Closures are functors that store all information needed to invoke a callback from operator()().
|
|
||||||
*
|
|
||||||
* Adaptors are functors that alter the signature of a functor's operator()().
|
|
||||||
*
|
|
||||||
* libsigc++ defines numerous functors, closures and adaptors.
|
|
||||||
* Since libsigc++ is a callback libaray, most functors are also closures.
|
|
||||||
* The documentation doesn't distinguish between functors and closures.
|
|
||||||
*
|
|
||||||
* The basic functor types libsigc++ provides are created with ptr_fun() and mem_fun()
|
|
||||||
* and can be converted into slots implicitly.
|
|
||||||
* The set of adaptors that ships with libsigc++ is documented in the equally named module.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** A hint to the compiler.
|
|
||||||
* All functors which define @p result_type should publically inherit from this hint.
|
|
||||||
*
|
|
||||||
* @ingroup functors
|
|
||||||
*/
|
|
||||||
struct functor_base {};
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_functor, bool I_derives_functor_base=is_base_and_derived<functor_base,T_functor>::value>
|
|
||||||
struct functor_trait
|
|
||||||
{
|
|
||||||
typedef void result_type;
|
|
||||||
typedef T_functor functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor>
|
|
||||||
struct functor_trait<T_functor,true>
|
|
||||||
{
|
|
||||||
typedef typename T_functor::result_type result_type;
|
|
||||||
typedef T_functor functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** If you want to mix functors from a different library with libsigc++ and
|
|
||||||
* these functors define @p result_type simply use this macro inside namespace sigc like so:
|
|
||||||
* @code
|
|
||||||
* namespace sigc { SIGC_FUNCTORS_HAVE_RESULT_TYPE }
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @ingroup functors
|
|
||||||
*/
|
|
||||||
#define SIGC_FUNCTORS_HAVE_RESULT_TYPE \
|
|
||||||
template <class T_functor> \
|
|
||||||
struct functor_trait<T_functor,false> \
|
|
||||||
{ \
|
|
||||||
typedef typename T_functor::result_type result_type; \
|
|
||||||
typedef T_functor functor_type; \
|
|
||||||
};
|
|
||||||
|
|
||||||
/** If you want to mix functors from a different library with libsigc++ and
|
|
||||||
* these functors don't define @p result_type use this macro inside namespace sigc
|
|
||||||
* to expose the return type of the functors like so:
|
|
||||||
* @code
|
|
||||||
* namespace sigc {
|
|
||||||
* SIGC_FUNCTOR_TRAIT(first_functor_type, return_type_of_first_functor_type)
|
|
||||||
* SIGC_FUNCTOR_TRAIT(second_functor_type, return_type_of_second_functor_type)
|
|
||||||
* ...
|
|
||||||
* }
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @ingroup functors
|
|
||||||
*/
|
|
||||||
#define SIGC_FUNCTOR_TRAIT(T_functor,T_return) \
|
|
||||||
template <> \
|
|
||||||
struct functor_trait<T_functor,false> \
|
|
||||||
{ \
|
|
||||||
typedef T_return result_type; \
|
|
||||||
typedef T_functor functor_type; \
|
|
||||||
};
|
|
||||||
|
|
||||||
// detect the return type and the functor version of non-functor types.
|
|
||||||
template <class T_return> class pointer_functor0;
|
|
||||||
template <class T_return>
|
|
||||||
struct functor_trait<T_return (*)(), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor0<T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1, class T_return> class pointer_functor1;
|
|
||||||
template <class T_arg1, class T_return>
|
|
||||||
struct functor_trait<T_return (*)(T_arg1), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor1<T_arg1, T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2, class T_return> class pointer_functor2;
|
|
||||||
template <class T_arg1,class T_arg2, class T_return>
|
|
||||||
struct functor_trait<T_return (*)(T_arg1,T_arg2), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor2<T_arg1,T_arg2, T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return> class pointer_functor3;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return>
|
|
||||||
struct functor_trait<T_return (*)(T_arg1,T_arg2,T_arg3), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor3<T_arg1,T_arg2,T_arg3, T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return> class pointer_functor4;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return>
|
|
||||||
struct functor_trait<T_return (*)(T_arg1,T_arg2,T_arg3,T_arg4), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor4<T_arg1,T_arg2,T_arg3,T_arg4, T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return> class pointer_functor5;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return>
|
|
||||||
struct functor_trait<T_return (*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor5<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return> class pointer_functor6;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return>
|
|
||||||
struct functor_trait<T_return (*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor6<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return> class pointer_functor7;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return>
|
|
||||||
struct functor_trait<T_return (*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef pointer_functor7<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_return> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_return, class T_obj> class mem_functor0;
|
|
||||||
template <class T_return, class T_obj> class const_mem_functor0;
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor0<T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)() const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor0<T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1, class T_return, class T_obj> class mem_functor1;
|
|
||||||
template <class T_arg1, class T_return, class T_obj> class const_mem_functor1;
|
|
||||||
template <class T_arg1, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor1<T_arg1, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_arg1, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1) const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor1<T_arg1, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2, class T_return, class T_obj> class mem_functor2;
|
|
||||||
template <class T_arg1,class T_arg2, class T_return, class T_obj> class const_mem_functor2;
|
|
||||||
template <class T_arg1,class T_arg2, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor2<T_arg1,T_arg2, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_arg1,class T_arg2, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2) const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor2<T_arg1,T_arg2, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return, class T_obj> class mem_functor3;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return, class T_obj> class const_mem_functor3;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor3<T_arg1,T_arg2,T_arg3, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3) const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor3<T_arg1,T_arg2,T_arg3, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return, class T_obj> class mem_functor4;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return, class T_obj> class const_mem_functor4;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor4<T_arg1,T_arg2,T_arg3,T_arg4, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4) const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor4<T_arg1,T_arg2,T_arg3,T_arg4, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return, class T_obj> class mem_functor5;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return, class T_obj> class const_mem_functor5;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor5<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor5<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return, class T_obj> class mem_functor6;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return, class T_obj> class const_mem_functor6;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor6<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor6<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return, class T_obj> class mem_functor7;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return, class T_obj> class const_mem_functor7;
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7), false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef mem_functor7<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return, class T_obj>
|
|
||||||
struct functor_trait<T_return (T_obj::*)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) const, false>
|
|
||||||
{
|
|
||||||
typedef T_return result_type;
|
|
||||||
typedef const_mem_functor7<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_return, T_obj> functor_type;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_FUNCTORS_MACROS_FUNCTOR_TRAITHM4_ */
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_FUNCTOR_HPP_
|
|
||||||
#define _SIGC_FUNCTOR_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/functors/slot.h>
|
|
||||||
#include <sigc++/functors/ptr_fun.h>
|
|
||||||
#include <sigc++/functors/mem_fun.h>
|
|
||||||
|
|
||||||
#endif /* _SIGC_FUNCTOR_HPP_ */
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,542 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
|
|
||||||
#ifndef _SIGC_FUNCTORS_MACROS_PTR_FUNHM4_
|
|
||||||
#define _SIGC_FUNCTORS_MACROS_PTR_FUNHM4_
|
|
||||||
#include <sigc++/type_traits.h>
|
|
||||||
#include <sigc++/functors/functor_trait.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** @defgroup ptr_fun ptr_fun()
|
|
||||||
* ptr_fun() is used to convert a pointer to a function to a functor.
|
|
||||||
* If the function pointer is to an overloaded type, you must specify
|
|
||||||
* the types using template arguments starting with the first argument.
|
|
||||||
* It is not necessary to supply the return type.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* void foo(int) {}
|
|
||||||
* sigc::slot<void, int> sl = sigc::ptr_fun(&foo);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Use ptr_fun#() if there is an abiguity as to the number of arguments.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* void foo(int) {} // choose this one
|
|
||||||
* void foo(float) {}
|
|
||||||
* void foo(int, int) {}
|
|
||||||
* sigc::slot<void, long> sl = sigc::ptr_fun1<int>(&foo);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* ptr_fun() can also be used to convert a pointer to a static member
|
|
||||||
* function to a functor, like so:
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* struct foo
|
|
||||||
* {
|
|
||||||
* static void bar(int) {}
|
|
||||||
* };
|
|
||||||
* sigc::slot<void, int> sl = sigc::ptr_fun(&foo::bar);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @ingroup functors
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** pointer_functor0 wraps existing non-member functions with 0 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor0.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_return>
|
|
||||||
class pointer_functor0 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)();
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor0() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor0 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor0(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()() const
|
|
||||||
{ return func_ptr_(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** pointer_functor1 wraps existing non-member functions with 1 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor1.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1, class T_return>
|
|
||||||
class pointer_functor1 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)(T_arg1);
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor1() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor1 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor1(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @param _A_a1 Argument to be passed on to the function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()(typename type_trait<T_arg1>::take _A_a1) const
|
|
||||||
{ return func_ptr_(_A_a1); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** pointer_functor2 wraps existing non-member functions with 2 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor2.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2, class T_return>
|
|
||||||
class pointer_functor2 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)(T_arg1,T_arg2);
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor2() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor2 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor2(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @param _A_a1 Argument to be passed on to the function.
|
|
||||||
* @param _A_a2 Argument to be passed on to the function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()(typename type_trait<T_arg1>::take _A_a1,typename type_trait<T_arg2>::take _A_a2) const
|
|
||||||
{ return func_ptr_(_A_a1,_A_a2); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** pointer_functor3 wraps existing non-member functions with 3 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor3.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return>
|
|
||||||
class pointer_functor3 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)(T_arg1,T_arg2,T_arg3);
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor3() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor3 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor3(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @param _A_a1 Argument to be passed on to the function.
|
|
||||||
* @param _A_a2 Argument to be passed on to the function.
|
|
||||||
* @param _A_a3 Argument to be passed on to the function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()(typename type_trait<T_arg1>::take _A_a1,typename type_trait<T_arg2>::take _A_a2,typename type_trait<T_arg3>::take _A_a3) const
|
|
||||||
{ return func_ptr_(_A_a1,_A_a2,_A_a3); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** pointer_functor4 wraps existing non-member functions with 4 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor4.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return>
|
|
||||||
class pointer_functor4 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)(T_arg1,T_arg2,T_arg3,T_arg4);
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor4() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor4 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor4(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @param _A_a1 Argument to be passed on to the function.
|
|
||||||
* @param _A_a2 Argument to be passed on to the function.
|
|
||||||
* @param _A_a3 Argument to be passed on to the function.
|
|
||||||
* @param _A_a4 Argument to be passed on to the function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()(typename type_trait<T_arg1>::take _A_a1,typename type_trait<T_arg2>::take _A_a2,typename type_trait<T_arg3>::take _A_a3,typename type_trait<T_arg4>::take _A_a4) const
|
|
||||||
{ return func_ptr_(_A_a1,_A_a2,_A_a3,_A_a4); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** pointer_functor5 wraps existing non-member functions with 5 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor5.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg5 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return>
|
|
||||||
class pointer_functor5 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5);
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor5() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor5 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor5(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @param _A_a1 Argument to be passed on to the function.
|
|
||||||
* @param _A_a2 Argument to be passed on to the function.
|
|
||||||
* @param _A_a3 Argument to be passed on to the function.
|
|
||||||
* @param _A_a4 Argument to be passed on to the function.
|
|
||||||
* @param _A_a5 Argument to be passed on to the function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()(typename type_trait<T_arg1>::take _A_a1,typename type_trait<T_arg2>::take _A_a2,typename type_trait<T_arg3>::take _A_a3,typename type_trait<T_arg4>::take _A_a4,typename type_trait<T_arg5>::take _A_a5) const
|
|
||||||
{ return func_ptr_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** pointer_functor6 wraps existing non-member functions with 6 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor6.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg5 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg6 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return>
|
|
||||||
class pointer_functor6 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6);
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor6() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor6 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor6(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @param _A_a1 Argument to be passed on to the function.
|
|
||||||
* @param _A_a2 Argument to be passed on to the function.
|
|
||||||
* @param _A_a3 Argument to be passed on to the function.
|
|
||||||
* @param _A_a4 Argument to be passed on to the function.
|
|
||||||
* @param _A_a5 Argument to be passed on to the function.
|
|
||||||
* @param _A_a6 Argument to be passed on to the function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()(typename type_trait<T_arg1>::take _A_a1,typename type_trait<T_arg2>::take _A_a2,typename type_trait<T_arg3>::take _A_a3,typename type_trait<T_arg4>::take _A_a4,typename type_trait<T_arg5>::take _A_a5,typename type_trait<T_arg6>::take _A_a6) const
|
|
||||||
{ return func_ptr_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** pointer_functor7 wraps existing non-member functions with 7 argument(s).
|
|
||||||
* Use the convenience function ptr_fun() to create an instance of pointer_functor7.
|
|
||||||
*
|
|
||||||
* The following template arguments are used:
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg5 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg6 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg7 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return>
|
|
||||||
class pointer_functor7 : public functor_base
|
|
||||||
{
|
|
||||||
typedef T_return (*function_type)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7);
|
|
||||||
protected:
|
|
||||||
function_type func_ptr_;
|
|
||||||
public:
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
/// Constructs an invalid functor.
|
|
||||||
pointer_functor7() {}
|
|
||||||
|
|
||||||
/** Constructs a pointer_functor7 object that wraps an existing function.
|
|
||||||
* @param _A_func Pointer to function that will be invoked from operator()().
|
|
||||||
*/
|
|
||||||
explicit pointer_functor7(function_type _A_func): func_ptr_(_A_func) {}
|
|
||||||
|
|
||||||
/** Execute the wrapped function.
|
|
||||||
* @param _A_a1 Argument to be passed on to the function.
|
|
||||||
* @param _A_a2 Argument to be passed on to the function.
|
|
||||||
* @param _A_a3 Argument to be passed on to the function.
|
|
||||||
* @param _A_a4 Argument to be passed on to the function.
|
|
||||||
* @param _A_a5 Argument to be passed on to the function.
|
|
||||||
* @param _A_a6 Argument to be passed on to the function.
|
|
||||||
* @param _A_a7 Argument to be passed on to the function.
|
|
||||||
* @return The return value of the function invocation.
|
|
||||||
*/
|
|
||||||
T_return operator()(typename type_trait<T_arg1>::take _A_a1,typename type_trait<T_arg2>::take _A_a2,typename type_trait<T_arg3>::take _A_a3,typename type_trait<T_arg4>::take _A_a4,typename type_trait<T_arg5>::take _A_a5,typename type_trait<T_arg6>::take _A_a6,typename type_trait<T_arg7>::take _A_a7) const
|
|
||||||
{ return func_ptr_(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// numbered ptr_fun
|
|
||||||
/** Creates a functor of type sigc::pointer_functor0 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_return>
|
|
||||||
inline pointer_functor0<T_return>
|
|
||||||
ptr_fun0(T_return (*_A_func)())
|
|
||||||
{ return pointer_functor0<T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor1 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1, class T_return>
|
|
||||||
inline pointer_functor1<T_arg1, T_return>
|
|
||||||
ptr_fun1(T_return (*_A_func)(T_arg1))
|
|
||||||
{ return pointer_functor1<T_arg1, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor2 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2, class T_return>
|
|
||||||
inline pointer_functor2<T_arg1,T_arg2, T_return>
|
|
||||||
ptr_fun2(T_return (*_A_func)(T_arg1,T_arg2))
|
|
||||||
{ return pointer_functor2<T_arg1,T_arg2, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor3 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return>
|
|
||||||
inline pointer_functor3<T_arg1,T_arg2,T_arg3, T_return>
|
|
||||||
ptr_fun3(T_return (*_A_func)(T_arg1,T_arg2,T_arg3))
|
|
||||||
{ return pointer_functor3<T_arg1,T_arg2,T_arg3, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor4 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return>
|
|
||||||
inline pointer_functor4<T_arg1,T_arg2,T_arg3,T_arg4, T_return>
|
|
||||||
ptr_fun4(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4))
|
|
||||||
{ return pointer_functor4<T_arg1,T_arg2,T_arg3,T_arg4, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor5 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return>
|
|
||||||
inline pointer_functor5<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_return>
|
|
||||||
ptr_fun5(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5))
|
|
||||||
{ return pointer_functor5<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor6 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return>
|
|
||||||
inline pointer_functor6<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_return>
|
|
||||||
ptr_fun6(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6))
|
|
||||||
{ return pointer_functor6<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor7 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return>
|
|
||||||
inline pointer_functor7<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_return>
|
|
||||||
ptr_fun7(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7))
|
|
||||||
{ return pointer_functor7<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_return>(_A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
// unnumbered ptr_fun
|
|
||||||
/** Creates a functor of type sigc::pointer_functor0 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_return>
|
|
||||||
inline pointer_functor0<T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)())
|
|
||||||
{ return pointer_functor0<T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor1 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1, class T_return>
|
|
||||||
inline pointer_functor1<T_arg1, T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)(T_arg1))
|
|
||||||
{ return pointer_functor1<T_arg1, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor2 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2, class T_return>
|
|
||||||
inline pointer_functor2<T_arg1,T_arg2, T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)(T_arg1,T_arg2))
|
|
||||||
{ return pointer_functor2<T_arg1,T_arg2, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor3 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3, class T_return>
|
|
||||||
inline pointer_functor3<T_arg1,T_arg2,T_arg3, T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)(T_arg1,T_arg2,T_arg3))
|
|
||||||
{ return pointer_functor3<T_arg1,T_arg2,T_arg3, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor4 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_return>
|
|
||||||
inline pointer_functor4<T_arg1,T_arg2,T_arg3,T_arg4, T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4))
|
|
||||||
{ return pointer_functor4<T_arg1,T_arg2,T_arg3,T_arg4, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor5 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_return>
|
|
||||||
inline pointer_functor5<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5))
|
|
||||||
{ return pointer_functor5<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor6 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_return>
|
|
||||||
inline pointer_functor6<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6))
|
|
||||||
{ return pointer_functor6<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type sigc::pointer_functor7 which wraps an existing non-member function.
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes @e _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @ingroup ptr_fun
|
|
||||||
*/
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_return>
|
|
||||||
inline pointer_functor7<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_return>
|
|
||||||
ptr_fun(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7))
|
|
||||||
{ return pointer_functor7<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7, T_return>(_A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif /* _SIGC_FUNCTORS_MACROS_PTR_FUNHM4_ */
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#include <sigc++/functors/slot.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,165 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2003, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sigc++/functors/slot_base.h>
|
|
||||||
|
|
||||||
namespace sigc
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace internal {
|
|
||||||
|
|
||||||
// only MSVC needs this to guarantee that all new/delete are executed from the DLL module
|
|
||||||
#ifdef SIGC_NEW_DELETE_IN_LIBRARY_ONLY
|
|
||||||
void* slot_rep::operator new(size_t size_)
|
|
||||||
{
|
|
||||||
return malloc(size_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void slot_rep::operator delete(void* p)
|
|
||||||
{
|
|
||||||
free(p);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void slot_rep::disconnect()
|
|
||||||
{
|
|
||||||
if (parent_)
|
|
||||||
{
|
|
||||||
call_ = 0; // Invalidate the slot.
|
|
||||||
// _Must_ be done here because parent_ might defer the actual
|
|
||||||
// destruction of the slot_rep and try to invoke it before that point.
|
|
||||||
void* data_ = parent_;
|
|
||||||
parent_ = 0; // Just a precaution.
|
|
||||||
(cleanup_)(data_); // Notify the parent (might lead to destruction of this!).
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//static
|
|
||||||
void* slot_rep::notify(void* data)
|
|
||||||
{
|
|
||||||
slot_rep* self_ = (slot_rep*)data;
|
|
||||||
self_->call_ = 0; // Invalidate the slot.
|
|
||||||
self_->destroy(); // Detach the stored functor from the other referred trackables and destroy it.
|
|
||||||
self_->disconnect(); // Disconnect the slot (might lead to deletion of self_!).
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace internal
|
|
||||||
|
|
||||||
slot_base::slot_base()
|
|
||||||
: rep_(0),
|
|
||||||
blocked_(false)
|
|
||||||
{}
|
|
||||||
|
|
||||||
slot_base::slot_base(rep_type* rep)
|
|
||||||
: rep_(rep),
|
|
||||||
blocked_(false)
|
|
||||||
{}
|
|
||||||
|
|
||||||
slot_base::slot_base(const slot_base& src)
|
|
||||||
: rep_(0),
|
|
||||||
blocked_(src.blocked_)
|
|
||||||
{
|
|
||||||
if (src.rep_)
|
|
||||||
rep_ = src.rep_->dup();
|
|
||||||
}
|
|
||||||
|
|
||||||
slot_base::~slot_base()
|
|
||||||
{
|
|
||||||
if (rep_)
|
|
||||||
delete rep_;
|
|
||||||
}
|
|
||||||
|
|
||||||
slot_base::operator bool() const
|
|
||||||
{
|
|
||||||
return rep_ != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
slot_base& slot_base::operator=(const slot_base& src)
|
|
||||||
{
|
|
||||||
if (src.rep_ == rep_) return *this;
|
|
||||||
|
|
||||||
if (src.empty())
|
|
||||||
{
|
|
||||||
disconnect();
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal::slot_rep* new_rep_ = src.rep_->dup();
|
|
||||||
|
|
||||||
if (rep_) // Silently exchange the slot_rep.
|
|
||||||
{
|
|
||||||
new_rep_->set_parent(rep_->parent_, rep_->cleanup_);
|
|
||||||
delete rep_;
|
|
||||||
}
|
|
||||||
|
|
||||||
rep_ = new_rep_;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void slot_base::set_parent(void* parent, void* (*cleanup)(void*)) const
|
|
||||||
{
|
|
||||||
if (rep_)
|
|
||||||
rep_->set_parent(parent, cleanup);
|
|
||||||
}
|
|
||||||
|
|
||||||
void slot_base::add_destroy_notify_callback(void* data, func_destroy_notify func) const
|
|
||||||
{
|
|
||||||
if (rep_)
|
|
||||||
rep_->add_destroy_notify_callback(data, func);
|
|
||||||
}
|
|
||||||
|
|
||||||
void slot_base::remove_destroy_notify_callback(void* data) const
|
|
||||||
{
|
|
||||||
if (rep_)
|
|
||||||
rep_->remove_destroy_notify_callback(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool slot_base::block(bool should_block)
|
|
||||||
{
|
|
||||||
bool old = blocked_;
|
|
||||||
blocked_ = should_block;
|
|
||||||
return old;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool slot_base::unblock()
|
|
||||||
{
|
|
||||||
return block(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void slot_base::disconnect()
|
|
||||||
{
|
|
||||||
if (rep_)
|
|
||||||
rep_->disconnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*bool slot_base::empty() const // having this function not inline is killing performance !!!
|
|
||||||
{
|
|
||||||
if (rep_ && !rep_->call_)
|
|
||||||
{
|
|
||||||
delete rep_; // This is not strictly necessary here. I'm convinced that it is
|
|
||||||
rep_ = 0; // safe to wait for the destructor to delete the slot_rep. Martin.
|
|
||||||
}
|
|
||||||
return (rep_ == 0);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
} //namespace sigc
|
|
||||||
|
|
@ -1,319 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2003, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_SLOT_BASE_HPP_
|
|
||||||
#define _SIGC_SLOT_BASE_HPP_
|
|
||||||
|
|
||||||
#include <sigc++config.h>
|
|
||||||
#include <sigc++/trackable.h>
|
|
||||||
#include <sigc++/functors/functor_trait.h>
|
|
||||||
|
|
||||||
namespace sigc
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace internal {
|
|
||||||
|
|
||||||
typedef void* (*hook)(void*);
|
|
||||||
|
|
||||||
/** Internal representation of a slot.
|
|
||||||
* Derivations of this class can be considered as a link
|
|
||||||
* between a slot and the functor that the slot should
|
|
||||||
* execute in operator(). This link is needed because in
|
|
||||||
* libsigc++2 the slot doesn't necessarily have exactly the
|
|
||||||
* same function signature as the functor thus allowing for
|
|
||||||
* implicit conversions.
|
|
||||||
* The base class slot_rep serves the purpose to
|
|
||||||
* - form a common pointer type (slot_rep*),
|
|
||||||
* - offer the possibility to create duplicates (dup()),
|
|
||||||
* - offer a notification callback (notify()),
|
|
||||||
* - implement some of slot_base's interface that depends
|
|
||||||
* on the notification callback, i.e.
|
|
||||||
* -# the possibility to set a single parent with a callback
|
|
||||||
* (set_parent()) that is executed from notify(),
|
|
||||||
* -# a generic function pointer, call_, that is simply
|
|
||||||
* set to zero in notify() to invalidate the slot.
|
|
||||||
* slot_rep inherits trackable so that connection objects can
|
|
||||||
* refer to the slot and are notified when the slot is destroyed.
|
|
||||||
*/
|
|
||||||
struct SIGC_API slot_rep : public trackable
|
|
||||||
{
|
|
||||||
/* NB: Instead of slot_rep we could inherit slot_base from trackable.
|
|
||||||
* However, a simple benchmark seems to indicate that this slows
|
|
||||||
* down dereferencing of slot list iterators. Martin. */
|
|
||||||
|
|
||||||
/// Callback that invokes the contained functor.
|
|
||||||
/* This can't be a virtual function since number of arguments
|
|
||||||
* must be flexible. We use function pointers to slot_call::call_it()
|
|
||||||
* instead. call_ is set to zero to indicate that the slot is invalid.
|
|
||||||
*/
|
|
||||||
hook call_;
|
|
||||||
|
|
||||||
/// Callback that detaches the slot_rep object from referred trackables and destroys it.
|
|
||||||
/* This could be a replaced by a virtual dtor. However since this struct is
|
|
||||||
* crucual for the efficiency of the whole library we want to avoid this.
|
|
||||||
*/
|
|
||||||
hook destroy_;
|
|
||||||
|
|
||||||
/** Callback that makes a deep copy of the slot_rep object.
|
|
||||||
* @return A deep copy of the slot_rep object.
|
|
||||||
*/
|
|
||||||
hook dup_;
|
|
||||||
|
|
||||||
/** Callback of parent_. */
|
|
||||||
hook cleanup_;
|
|
||||||
|
|
||||||
/** Parent object whose callback cleanup_ is executed on notification. */
|
|
||||||
void* parent_;
|
|
||||||
|
|
||||||
inline slot_rep(hook call__, hook destroy__, hook dup__)
|
|
||||||
: call_(call__), destroy_(destroy__), dup_(dup__), cleanup_(0), parent_(0) {}
|
|
||||||
|
|
||||||
inline ~slot_rep()
|
|
||||||
{ destroy(); }
|
|
||||||
|
|
||||||
// only MSVC needs this to guarantee that all new/delete are executed from the DLL module
|
|
||||||
#ifdef SIGC_NEW_DELETE_IN_LIBRARY_ONLY
|
|
||||||
void* operator new(size_t size_);
|
|
||||||
void operator delete(void* p);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Destroys the slot_rep object (but doesn't delete it).
|
|
||||||
*/
|
|
||||||
inline void destroy()
|
|
||||||
{ if (destroy_) (*destroy_)(this); }
|
|
||||||
|
|
||||||
/** Makes a deep copy of the slot_rep object.
|
|
||||||
* @return A deep copy of the slot_rep object.
|
|
||||||
*/
|
|
||||||
inline slot_rep* dup() const
|
|
||||||
{ return (slot_rep*)(*dup_)(const_cast<slot_rep*>(this)); }
|
|
||||||
|
|
||||||
/** Set the parent with a callback.
|
|
||||||
* slots have one parent exclusively.
|
|
||||||
* @param parent The new parent.
|
|
||||||
* @param cleanup The callback to execute from notify().
|
|
||||||
*/
|
|
||||||
inline void set_parent(void* parent, hook cleanup)
|
|
||||||
{
|
|
||||||
parent_ = parent;
|
|
||||||
cleanup_ = cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Invalidates the slot and executes the parent's cleanup callback.
|
|
||||||
void disconnect();
|
|
||||||
|
|
||||||
/** Callback that invalidates the slot.
|
|
||||||
* This callback is registered in every object of a trackable
|
|
||||||
* inherited type that is referred by this slot_rep object.
|
|
||||||
* It is executed when the slot becomes invalid because of some
|
|
||||||
* referred object dying.
|
|
||||||
* @param data The slot_rep object that is becoming invalid (@p this).
|
|
||||||
*/
|
|
||||||
static void* notify(void* data);
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Functor used to add a dependency to a trackable.
|
|
||||||
* Consequently slot_rep::notify() gets executed when the
|
|
||||||
* trackable is destroyed or overwritten.
|
|
||||||
*/
|
|
||||||
struct SIGC_API slot_do_bind
|
|
||||||
{
|
|
||||||
/** The slot_rep object trackables should notify on destruction. */
|
|
||||||
slot_rep* rep_;
|
|
||||||
|
|
||||||
/** Construct a slot_do_bind functor.
|
|
||||||
* @param rep The slot_rep object trackables should notify on destruction.
|
|
||||||
*/
|
|
||||||
inline slot_do_bind(slot_rep* rep) : rep_(rep) {}
|
|
||||||
|
|
||||||
/** Adds a dependency to @p t.
|
|
||||||
* @param t The trackable object to add a callback to.
|
|
||||||
*/
|
|
||||||
inline void operator()(const trackable* t) const
|
|
||||||
{ t->add_destroy_notify_callback(rep_, &slot_rep::notify); }
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Functor used to remove a dependency from a trackable.
|
|
||||||
struct SIGC_API slot_do_unbind
|
|
||||||
{
|
|
||||||
/** The slot_rep object trackables don't need to notify on destruction any more. */
|
|
||||||
slot_rep* rep_;
|
|
||||||
|
|
||||||
/** Construct a slot_do_unbind functor.
|
|
||||||
* @param rep The slot_rep object trackables don't need to notify on destruction any more.
|
|
||||||
*/
|
|
||||||
inline slot_do_unbind(slot_rep* rep) : rep_(rep) {}
|
|
||||||
|
|
||||||
/** Removes a dependency from @p t.
|
|
||||||
* @param t The trackable object to remove the callback from.
|
|
||||||
*/
|
|
||||||
inline void operator()(const trackable* t) const
|
|
||||||
{ t->remove_destroy_notify_callback(rep_); }
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace internal
|
|
||||||
|
|
||||||
|
|
||||||
/** @defgroup slot Slots
|
|
||||||
* Slots are type-safe representations of callback methods and functions.
|
|
||||||
* A Slot can be constructed from any function, regardless of whether it is a global function,
|
|
||||||
* a member method, static, or virtual.
|
|
||||||
*
|
|
||||||
* Use the sigc::mem_fun() and sigc::ptr_fun() template functions to get a sigc::slot, like so:
|
|
||||||
*
|
|
||||||
* @code
|
|
||||||
* sigc::slot<void, int> sl = sigc::mem_fun(someobj,& SomeClass::somemethod);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* or
|
|
||||||
*
|
|
||||||
* @code
|
|
||||||
* sigc::slot<void, int> sl = sigc::ptr_fun(&somefunction);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* or
|
|
||||||
*
|
|
||||||
* @code
|
|
||||||
* m_Button.signal_clicked().connect( sigc::mem_fun(*this, &MyWindow::on_button_clicked) );
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* The compiler will complain if SomeClass::somemethod, etc. have the wrong signature.
|
|
||||||
*
|
|
||||||
* You can also pass slots as method parameters where you might normally pass a function pointer.
|
|
||||||
*
|
|
||||||
* @ingroup functors
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Base type for slots.
|
|
||||||
* slot_base integrates most of the interface of the derived
|
|
||||||
* sigc::slot templates. slots
|
|
||||||
* can be connected to signals, be disconnected at some later point
|
|
||||||
* (disconnect()) and temporarily be blocked (block(), unblock()).
|
|
||||||
* The validity of a slot can be tested with empty().
|
|
||||||
*
|
|
||||||
* The internal representation of a sigc::internal::slot_rep derived
|
|
||||||
* type is built from slot_base's derivations. set_parent() is used to
|
|
||||||
* register a notification callback that is executed when the slot gets
|
|
||||||
* invalid. add_destroy_notify_callback() is used by connection objects
|
|
||||||
* to add a notification callback that is executed on destruction.
|
|
||||||
*
|
|
||||||
* @ingroup slot
|
|
||||||
*/
|
|
||||||
class SIGC_API slot_base : public functor_base
|
|
||||||
{
|
|
||||||
typedef internal::slot_rep rep_type;
|
|
||||||
|
|
||||||
public:
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
slot_base();
|
|
||||||
|
|
||||||
/** Constructs a slot from an existing slot_rep object.
|
|
||||||
* @param rep The slot_rep object this slot should contain.
|
|
||||||
*/
|
|
||||||
explicit slot_base(rep_type* rep);
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
slot_base(const slot_base& src);
|
|
||||||
|
|
||||||
~slot_base();
|
|
||||||
|
|
||||||
/** Tests whether a slot is null, because the default constructor was used.
|
|
||||||
* Test a slot for null like so:
|
|
||||||
* @code
|
|
||||||
* if(slot)
|
|
||||||
* do_something()
|
|
||||||
* @endcode
|
|
||||||
*/
|
|
||||||
operator bool() const;
|
|
||||||
|
|
||||||
/** Sets the parent of this slot.
|
|
||||||
* This function is used by signals to register a notification callback.
|
|
||||||
* This notification callback is executed when the slot becomes invalid
|
|
||||||
* because of some referred object dying.
|
|
||||||
* @param parent The new parent.
|
|
||||||
* @param cleanup The notification callback.
|
|
||||||
*/
|
|
||||||
void set_parent(void* parent, void* (*cleanup)(void*)) const;
|
|
||||||
|
|
||||||
typedef trackable::func_destroy_notify func_destroy_notify;
|
|
||||||
/** Add a callback that is executed (notified) when the slot is detroyed.
|
|
||||||
* This function is used internally by connection objects.
|
|
||||||
* @param data Passed into func upon notification.
|
|
||||||
* @param func Callback executed upon destruction of the object.
|
|
||||||
*/
|
|
||||||
void add_destroy_notify_callback(void* data, func_destroy_notify func) const;
|
|
||||||
|
|
||||||
/** Remove a callback previously installed with add_destroy_notify_callback().
|
|
||||||
* The callback is not executed.
|
|
||||||
* @param data Parameter passed into previous call to add_destroy_notify_callback().
|
|
||||||
*/
|
|
||||||
void remove_destroy_notify_callback(void* data) const;
|
|
||||||
|
|
||||||
/** Returns whether the slot is invalid.
|
|
||||||
* @return @p true if the slot is invalid (empty).
|
|
||||||
*/
|
|
||||||
inline bool empty() const
|
|
||||||
{ return (!rep_ || !rep_->call_); }
|
|
||||||
|
|
||||||
/** Returns whether the slot is blocked.
|
|
||||||
* @return @p true if the slot is blocked.
|
|
||||||
*/
|
|
||||||
inline bool blocked() const
|
|
||||||
{ return blocked_; }
|
|
||||||
|
|
||||||
/** Sets the blocking state.
|
|
||||||
* If @e should_block is @p true then the blocking state is set.
|
|
||||||
* Subsequent calls to slot::operator()() don't invoke the functor
|
|
||||||
* contained by this slot until unblock() or block() with
|
|
||||||
* @e should_block = @p false is called.
|
|
||||||
* @param should_block Indicates whether the blocking state should be set or unset.
|
|
||||||
* @return @p true if the slot was in blocking state before.
|
|
||||||
*/
|
|
||||||
bool block(bool should_block = true);
|
|
||||||
|
|
||||||
/** Unsets the blocking state.
|
|
||||||
* @return @p true if the slot was in blocking state before.
|
|
||||||
*/
|
|
||||||
bool unblock();
|
|
||||||
|
|
||||||
/** Disconnects the slot.
|
|
||||||
* Invalidates the slot and notifies the parent.
|
|
||||||
*/
|
|
||||||
void disconnect();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
slot_base& operator=(const slot_base& src);
|
|
||||||
|
|
||||||
public: // public to avoid template friend declarations
|
|
||||||
/** Typed slot_rep object that contains a functor. */
|
|
||||||
mutable rep_type *rep_;
|
|
||||||
|
|
||||||
/** Indicates whether the slot is blocked. */
|
|
||||||
bool blocked_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace sigc
|
|
||||||
|
|
||||||
#endif //_SIGC_SLOT_BASE_HPP_
|
|
||||||
|
|
||||||
|
|
@ -1,105 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
|
|
||||||
#ifndef _SIGC_MACROS_HIDEHM4_
|
|
||||||
#define _SIGC_MACROS_HIDEHM4_
|
|
||||||
|
|
||||||
#include <sigc++/slot.h>
|
|
||||||
#include <sigc++/adaptors/hide.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
template <class T_hidden1, class T_return>
|
|
||||||
inline SigC::Slot1<T_return, T_hidden1>
|
|
||||||
hide(const SigC::Slot0<T_return>& _A_slot)
|
|
||||||
{ return ::sigc::hide_functor<0, SigC::Slot0<T_return> >
|
|
||||||
(_A_slot); }
|
|
||||||
|
|
||||||
template <class T_hidden1, class T_return, class T_arg1>
|
|
||||||
inline SigC::Slot2<T_return, T_arg1, T_hidden1>
|
|
||||||
hide(const SigC::Slot1<T_return, T_arg1>& _A_slot)
|
|
||||||
{ return ::sigc::hide_functor<0, SigC::Slot1<T_return, T_arg1> >
|
|
||||||
(_A_slot); }
|
|
||||||
|
|
||||||
template <class T_hidden1, class T_return, class T_arg1,class T_arg2>
|
|
||||||
inline SigC::Slot3<T_return, T_arg1,T_arg2, T_hidden1>
|
|
||||||
hide(const SigC::Slot2<T_return, T_arg1,T_arg2>& _A_slot)
|
|
||||||
{ return ::sigc::hide_functor<0, SigC::Slot2<T_return, T_arg1,T_arg2> >
|
|
||||||
(_A_slot); }
|
|
||||||
|
|
||||||
template <class T_hidden1, class T_return, class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline SigC::Slot4<T_return, T_arg1,T_arg2,T_arg3, T_hidden1>
|
|
||||||
hide(const SigC::Slot3<T_return, T_arg1,T_arg2,T_arg3>& _A_slot)
|
|
||||||
{ return ::sigc::hide_functor<0, SigC::Slot3<T_return, T_arg1,T_arg2,T_arg3> >
|
|
||||||
(_A_slot); }
|
|
||||||
|
|
||||||
template <class T_hidden1, class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline SigC::Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4, T_hidden1>
|
|
||||||
hide(const SigC::Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>& _A_slot)
|
|
||||||
{ return ::sigc::hide_functor<0, SigC::Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
|
|
||||||
(_A_slot); }
|
|
||||||
|
|
||||||
template <class T_hidden1, class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline SigC::Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_hidden1>
|
|
||||||
hide(const SigC::Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& _A_slot)
|
|
||||||
{ return ::sigc::hide_functor<0, SigC::Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
|
|
||||||
(_A_slot); }
|
|
||||||
|
|
||||||
template <class T_hidden1, class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline SigC::Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6, T_hidden1>
|
|
||||||
hide(const SigC::Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>& _A_slot)
|
|
||||||
{ return ::sigc::hide_functor<0, SigC::Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> >
|
|
||||||
(_A_slot); }
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_hidden1,class T_hidden2, class T_return>
|
|
||||||
inline SigC::Slot2<T_return, T_hidden1,T_hidden2>
|
|
||||||
hide(const SigC::Slot0<T_return>& _A_slot)
|
|
||||||
{ return ::sigc::hide<0>(
|
|
||||||
::sigc::hide_functor<0, SigC::Slot0<T_return> >
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_hidden1,class T_hidden2, class T_return, class T_arg1>
|
|
||||||
inline SigC::Slot3<T_return, T_arg1, T_hidden1,T_hidden2>
|
|
||||||
hide(const SigC::Slot1<T_return, T_arg1>& _A_slot)
|
|
||||||
{ return ::sigc::hide<0>(
|
|
||||||
::sigc::hide_functor<0, SigC::Slot1<T_return, T_arg1> >
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_hidden1,class T_hidden2, class T_return, class T_arg1,class T_arg2>
|
|
||||||
inline SigC::Slot4<T_return, T_arg1,T_arg2, T_hidden1,T_hidden2>
|
|
||||||
hide(const SigC::Slot2<T_return, T_arg1,T_arg2>& _A_slot)
|
|
||||||
{ return ::sigc::hide<0>(
|
|
||||||
::sigc::hide_functor<0, SigC::Slot2<T_return, T_arg1,T_arg2> >
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_hidden1,class T_hidden2, class T_return, class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline SigC::Slot5<T_return, T_arg1,T_arg2,T_arg3, T_hidden1,T_hidden2>
|
|
||||||
hide(const SigC::Slot3<T_return, T_arg1,T_arg2,T_arg3>& _A_slot)
|
|
||||||
{ return ::sigc::hide<0>(
|
|
||||||
::sigc::hide_functor<0, SigC::Slot3<T_return, T_arg1,T_arg2,T_arg3> >
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_hidden1,class T_hidden2, class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline SigC::Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4, T_hidden1,T_hidden2>
|
|
||||||
hide(const SigC::Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>& _A_slot)
|
|
||||||
{ return ::sigc::hide<0>(
|
|
||||||
::sigc::hide_functor<0, SigC::Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4> >
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_hidden1,class T_hidden2, class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline SigC::Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5, T_hidden1,T_hidden2>
|
|
||||||
hide(const SigC::Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>& _A_slot)
|
|
||||||
{ return ::sigc::hide<0>(
|
|
||||||
::sigc::hide_functor<0, SigC::Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> >
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace SigC */
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
#endif /* _SIGC_MACROS_HIDEHM4_ */
|
|
||||||
|
|
@ -1,387 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SIGC_MACROS_METHOD_SLOTHM4_
|
|
||||||
#define _SIGC_MACROS_METHOD_SLOTHM4_
|
|
||||||
|
|
||||||
#include <sigc++/slot.h>
|
|
||||||
#include <sigc++/functors/mem_fun.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot1 that wraps a method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot1<T_return, T_obj&>
|
|
||||||
slot(T_return (T_obj::*_A_func)() )
|
|
||||||
{ return ::sigc::mem_functor0<T_return, T_obj>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot2 that wraps a method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot2<T_return, T_obj&, T_arg1>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1) )
|
|
||||||
{ return ::sigc::mem_functor1<T_return, T_obj, T_arg1>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot3 that wraps a method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot3<T_return, T_obj&, T_arg1,T_arg2>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2) )
|
|
||||||
{ return ::sigc::mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot4 that wraps a method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot4<T_return, T_obj&, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) )
|
|
||||||
{ return ::sigc::mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot5 that wraps a method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot5<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) )
|
|
||||||
{ return ::sigc::mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot6 that wraps a method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot6<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) )
|
|
||||||
{ return ::sigc::mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot7 that wraps a method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot7<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) )
|
|
||||||
{ return ::sigc::mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot1 that wraps a const method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot1<T_return, T_obj&>
|
|
||||||
slot(T_return (T_obj::*_A_func)() const)
|
|
||||||
{ return ::sigc::const_mem_functor0<T_return, T_obj>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot2 that wraps a const method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot2<T_return, T_obj&, T_arg1>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1) const)
|
|
||||||
{ return ::sigc::const_mem_functor1<T_return, T_obj, T_arg1>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot3 that wraps a const method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot3<T_return, T_obj&, T_arg1,T_arg2>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2) const)
|
|
||||||
{ return ::sigc::const_mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot4 that wraps a const method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot4<T_return, T_obj&, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) const)
|
|
||||||
{ return ::sigc::const_mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot5 that wraps a const method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot5<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) const)
|
|
||||||
{ return ::sigc::const_mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot6 that wraps a const method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot6<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const)
|
|
||||||
{ return ::sigc::const_mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot7 that wraps a const method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot7<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const)
|
|
||||||
{ return ::sigc::const_mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot1 that wraps a volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot1<T_return, T_obj&>
|
|
||||||
slot(T_return (T_obj::*_A_func)() volatile)
|
|
||||||
{ return ::sigc::volatile_mem_functor0<T_return, T_obj>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot2 that wraps a volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot2<T_return, T_obj&, T_arg1>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1) volatile)
|
|
||||||
{ return ::sigc::volatile_mem_functor1<T_return, T_obj, T_arg1>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot3 that wraps a volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot3<T_return, T_obj&, T_arg1,T_arg2>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2) volatile)
|
|
||||||
{ return ::sigc::volatile_mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot4 that wraps a volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot4<T_return, T_obj&, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) volatile)
|
|
||||||
{ return ::sigc::volatile_mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot5 that wraps a volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot5<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) volatile)
|
|
||||||
{ return ::sigc::volatile_mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot6 that wraps a volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot6<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) volatile)
|
|
||||||
{ return ::sigc::volatile_mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot7 that wraps a volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot7<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) volatile)
|
|
||||||
{ return ::sigc::volatile_mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot1 that wraps a const volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj>
|
|
||||||
inline Slot1<T_return, T_obj&>
|
|
||||||
slot(T_return (T_obj::*_A_func)() const volatile)
|
|
||||||
{ return ::sigc::const_volatile_mem_functor0<T_return, T_obj>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot2 that wraps a const volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj>
|
|
||||||
inline Slot2<T_return, T_obj&, T_arg1>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1) const volatile)
|
|
||||||
{ return ::sigc::const_volatile_mem_functor1<T_return, T_obj, T_arg1>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot3 that wraps a const volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj>
|
|
||||||
inline Slot3<T_return, T_obj&, T_arg1,T_arg2>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2) const volatile)
|
|
||||||
{ return ::sigc::const_volatile_mem_functor2<T_return, T_obj, T_arg1,T_arg2>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot4 that wraps a const volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj>
|
|
||||||
inline Slot4<T_return, T_obj&, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3) const volatile)
|
|
||||||
{ return ::sigc::const_volatile_mem_functor3<T_return, T_obj, T_arg1,T_arg2,T_arg3>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot5 that wraps a const volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj>
|
|
||||||
inline Slot5<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) const volatile)
|
|
||||||
{ return ::sigc::const_volatile_mem_functor4<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot6 that wraps a const volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj>
|
|
||||||
inline Slot6<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const volatile)
|
|
||||||
{ return ::sigc::const_volatile_mem_functor5<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type Sigc::Slot7 that wraps a const volatile method.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj>
|
|
||||||
inline Slot7<T_return, T_obj&, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot(T_return (T_obj::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const volatile)
|
|
||||||
{ return ::sigc::const_volatile_mem_functor6<T_return, T_obj, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif /* _SIGC_MACROS_METHOD_SLOTHM4_ */
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_OBJECT_HPP_
|
|
||||||
#define _SIGC_OBJECT_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/trackable.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
// Object
|
|
||||||
typedef ::sigc::trackable Object;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
|
|
||||||
#endif /* _SIGC_OBJECT_HPP_ */
|
|
||||||
|
|
@ -1,536 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SIGC_MACROS_OBJECT_SLOTHM4_
|
|
||||||
#define _SIGC_MACROS_OBJECT_SLOTHM4_
|
|
||||||
|
|
||||||
#include <sigc++/slot.h>
|
|
||||||
#include <sigc++/object.h>
|
|
||||||
#include <sigc++/functors/mem_fun.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj1, class T_obj2>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)() )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor0<T_return, T_obj2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj1, class T_obj2>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1) )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor1<T_return, T_obj2, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj1, class T_obj2>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2) )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor2<T_return, T_obj2, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj1, class T_obj2>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3) )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor3<T_return, T_obj2, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj1, class T_obj2>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor4<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj1, class T_obj2>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor5<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj1, class T_obj2>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor6<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj1, class T_obj2>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) )
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_mem_functor7<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj1, class T_obj2>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)() const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor0<T_return, T_obj2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj1, class T_obj2>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1) const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor1<T_return, T_obj2, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj1, class T_obj2>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2) const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor2<T_return, T_obj2, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj1, class T_obj2>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3) const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor3<T_return, T_obj2, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj1, class T_obj2>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor4<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj1, class T_obj2>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor5<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj1, class T_obj2>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor6<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a const method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj1, class T_obj2>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) const)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_mem_functor7<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj1, class T_obj2>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)() volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor0<T_return, T_obj2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj1, class T_obj2>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1) volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor1<T_return, T_obj2, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj1, class T_obj2>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2) volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor2<T_return, T_obj2, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj1, class T_obj2>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3) volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor3<T_return, T_obj2, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj1, class T_obj2>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor4<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj1, class T_obj2>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor5<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj1, class T_obj2>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor6<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj1, class T_obj2>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot( T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) volatile)
|
|
||||||
{ (void)dynamic_cast< Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_volatile_mem_functor7<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot0 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_obj1, class T_obj2>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)() const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor0<T_return, T_obj2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1, class T_obj1, class T_obj2>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1) const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor1<T_return, T_obj2, T_arg1>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_obj1, class T_obj2>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2) const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor2<T_return, T_obj2, T_arg1,T_arg2>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_obj1, class T_obj2>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3) const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor3<T_return, T_obj2, T_arg1,T_arg2,T_arg3>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_obj1, class T_obj2>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4) const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor4<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_obj1, class T_obj2>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor5<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_obj1, class T_obj2>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor6<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that encapsulates a const volatile method and an object instance.
|
|
||||||
* @e _A_obj must be of a type that inherits from SigC::Object.
|
|
||||||
*
|
|
||||||
* @param _A_obj Reference to object instance the functor should operate on.
|
|
||||||
* @param _A_func Pointer to method that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::mem_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_obj1, class T_obj2>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot(const T_obj1& _A_obj, T_return (T_obj2::*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) const volatile)
|
|
||||||
{ (void)dynamic_cast<const Object&>(_A_obj); // trigger compiler error if T_obj1 does not derive from SigC::Object
|
|
||||||
return ::sigc::bound_const_volatile_mem_functor7<T_return, T_obj2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_obj, _A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif /* _SIGC_MACROS_OBJECT_SLOTHM4_ */
|
|
||||||
|
|
@ -1,118 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_REFERENCE_WRAPPER_H_
|
|
||||||
#define _SIGC_REFERENCE_WRAPPER_H_
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
/** Reference wrapper.
|
|
||||||
* Use sigc::ref() to create a reference wrapper.
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
struct reference_wrapper
|
|
||||||
{
|
|
||||||
explicit reference_wrapper(T_type& v)
|
|
||||||
: value_(v) {}
|
|
||||||
|
|
||||||
operator T_type& () const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
T_type& value_;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Const reference wrapper.
|
|
||||||
* Use sigc::ref() to create a const reference wrapper.
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
struct const_reference_wrapper
|
|
||||||
{
|
|
||||||
explicit const_reference_wrapper(const T_type& v)
|
|
||||||
: value_(v) {}
|
|
||||||
|
|
||||||
operator const T_type& () const
|
|
||||||
{ return value_; }
|
|
||||||
|
|
||||||
const T_type& value_;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Creates a reference wrapper.
|
|
||||||
* Passing an object throught sigc::ref() makes libsigc++ adaptors
|
|
||||||
* like, e.g., sigc::bind store references to the object instead of copies.
|
|
||||||
* If the object type inherits from sigc::trackable this will ensure
|
|
||||||
* automatic invalidation of the adaptors when the object is deleted
|
|
||||||
* or overwritten.
|
|
||||||
*
|
|
||||||
* @param v Reference to store.
|
|
||||||
* @return A reference wrapper.
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
reference_wrapper<T_type> ref(T_type& v)
|
|
||||||
{ return reference_wrapper<T_type>(v); }
|
|
||||||
|
|
||||||
/** Creates a const reference wrapper.
|
|
||||||
* Passing an object throught sigc::ref() makes libsigc++ adaptors
|
|
||||||
* like, e.g., sigc::bind store references to the object instead of copies.
|
|
||||||
* If the object type inherits from sigc::trackable this will ensure
|
|
||||||
* automatic invalidation of the adaptors when the object is deleted
|
|
||||||
* or overwritten.
|
|
||||||
*
|
|
||||||
* @param v Reference to store.
|
|
||||||
* @return A reference wrapper.
|
|
||||||
*/
|
|
||||||
template <class T_type>
|
|
||||||
const_reference_wrapper<T_type> ref(const T_type& v)
|
|
||||||
{ return const_reference_wrapper<T_type>(v); }
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct unwrap_reference
|
|
||||||
{
|
|
||||||
typedef T_type type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct unwrap_reference<reference_wrapper<T_type> >
|
|
||||||
{
|
|
||||||
typedef T_type& type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct unwrap_reference<const_reference_wrapper<T_type> >
|
|
||||||
{
|
|
||||||
typedef const T_type& type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
T_type& unwrap(T_type& v)
|
|
||||||
{ return v; }
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
const T_type& unwrap(const T_type& v)
|
|
||||||
{ return v; }
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
T_type& unwrap(const reference_wrapper<T_type>& v)
|
|
||||||
{ return v; }
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
const T_type& unwrap(const const_reference_wrapper<T_type>& v)
|
|
||||||
{ return v; }
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
||||||
#endif /* _SIGC_REFERENCE_WRAPPER_H_ */
|
|
||||||
|
|
@ -1,321 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
#ifndef _SIGC_MACROS_RETYPEHM4_
|
|
||||||
#define _SIGC_MACROS_RETYPEHM4_
|
|
||||||
#include <sigc++/adaptors/adaptor_trait.h>
|
|
||||||
#include <sigc++/slot.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
template <class T_functor, class T_return, class T_type1=::sigc::nil_,class T_type2=::sigc::nil_,class T_type3=::sigc::nil_,class T_type4=::sigc::nil_,class T_type5=::sigc::nil_,class T_type6=::sigc::nil_,class T_type7=::sigc::nil_>
|
|
||||||
struct retype_slot_functor
|
|
||||||
: public ::sigc::adapts<T_functor>
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef T_return type; };
|
|
||||||
typedef T_return result_type;
|
|
||||||
|
|
||||||
T_return operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take>
|
|
||||||
((T_type1)_A_a1));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take>
|
|
||||||
((T_type1)_A_a1));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take,typename ::sigc::type_trait<T_type7>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6,(T_type7)_A_a7));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take,typename ::sigc::type_trait<T_type7>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6,(T_type7)_A_a7));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
retype_slot_functor(typename ::sigc::type_trait<T_functor>::take _A_functor)
|
|
||||||
: ::sigc::adapts<T_functor>(_A_functor)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor, class T_return, class T_type1,class T_type2,class T_type3,class T_type4,class T_type5,class T_type6,class T_type7>
|
|
||||||
T_return retype_slot_functor<T_functor, T_return, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>::operator()()
|
|
||||||
{ return T_return(this->functor_()); }
|
|
||||||
|
|
||||||
|
|
||||||
// void specialization needed because of explicit cast to T_return
|
|
||||||
template <class T_functor, class T_type1,class T_type2,class T_type3,class T_type4,class T_type5,class T_type6,class T_type7>
|
|
||||||
struct retype_slot_functor<T_functor, void, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>
|
|
||||||
: public ::sigc::adapts<T_functor>
|
|
||||||
{
|
|
||||||
template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>
|
|
||||||
struct deduce_result_type
|
|
||||||
{ typedef void type; };
|
|
||||||
typedef void result_type;
|
|
||||||
|
|
||||||
void operator()();
|
|
||||||
|
|
||||||
template <class T_arg1>
|
|
||||||
inline void operator()(T_arg1 _A_a1)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take>
|
|
||||||
((T_type1)_A_a1));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take>
|
|
||||||
((T_type1)_A_a1));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take,typename ::sigc::type_trait<T_type7>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6,(T_type7)_A_a7));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5,T_arg6 _A_a6,T_arg7 _A_a7)
|
|
||||||
{ T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename ::sigc::type_trait<T_type1>::take,typename ::sigc::type_trait<T_type2>::take,typename ::sigc::type_trait<T_type3>::take,typename ::sigc::type_trait<T_type4>::take,typename ::sigc::type_trait<T_type5>::take,typename ::sigc::type_trait<T_type6>::take,typename ::sigc::type_trait<T_type7>::take>
|
|
||||||
((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5,(T_type6)_A_a6,(T_type7)_A_a7));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
retype_slot_functor(typename ::sigc::type_trait<T_functor>::take _A_functor)
|
|
||||||
: ::sigc::adapts<T_functor>(_A_functor)
|
|
||||||
{}
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_functor, class T_type1,class T_type2,class T_type3,class T_type4,class T_type5,class T_type6,class T_type7>
|
|
||||||
void retype_slot_functor<T_functor, void, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>::operator()()
|
|
||||||
{ this->functor_(); }
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_action, class T_functor, class T_return, class T_type1,class T_type2,class T_type3,class T_type4,class T_type5,class T_type6,class T_type7>
|
|
||||||
void visit_each(const T_action& _A_action,
|
|
||||||
const retype_slot_functor<T_functor, T_return, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>& _A_target)
|
|
||||||
{
|
|
||||||
visit_each(_A_action, _A_target.functor_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <class T_return, class T_ret>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
retype(const Slot0<T_ret>& _A_slot)
|
|
||||||
{ return Slot0<T_return>
|
|
||||||
(retype_slot_functor<Slot0<T_ret>, T_return>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_return, class T_arg1, class T_ret, class T_type1>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
retype(const Slot1<T_ret, T_type1>& _A_slot)
|
|
||||||
{ return Slot1<T_return, T_arg1>
|
|
||||||
(retype_slot_functor<Slot1<T_ret, T_type1>, T_return, T_type1>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_return, class T_arg1,class T_arg2, class T_ret, class T_type1,class T_type2>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
retype(const Slot2<T_ret, T_type1,T_type2>& _A_slot)
|
|
||||||
{ return Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
(retype_slot_functor<Slot2<T_ret, T_type1, T_type2>, T_return, T_type1,T_type2>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3, class T_ret, class T_type1,class T_type2,class T_type3>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
retype(const Slot3<T_ret, T_type1,T_type2,T_type3>& _A_slot)
|
|
||||||
{ return Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
(retype_slot_functor<Slot3<T_ret, T_type1, T_type2, T_type3>, T_return, T_type1,T_type2,T_type3>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4, class T_ret, class T_type1,class T_type2,class T_type3,class T_type4>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
retype(const Slot4<T_ret, T_type1,T_type2,T_type3,T_type4>& _A_slot)
|
|
||||||
{ return Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
(retype_slot_functor<Slot4<T_ret, T_type1, T_type2, T_type3, T_type4>, T_return, T_type1,T_type2,T_type3,T_type4>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5, class T_ret, class T_type1,class T_type2,class T_type3,class T_type4,class T_type5>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
retype(const Slot5<T_ret, T_type1,T_type2,T_type3,T_type4,T_type5>& _A_slot)
|
|
||||||
{ return Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
(retype_slot_functor<Slot5<T_ret, T_type1, T_type2, T_type3, T_type4, T_type5>, T_return, T_type1,T_type2,T_type3,T_type4,T_type5>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6, class T_ret, class T_type1,class T_type2,class T_type3,class T_type4,class T_type5,class T_type6>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
retype(const Slot6<T_ret, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6>& _A_slot)
|
|
||||||
{ return Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
(retype_slot_functor<Slot6<T_ret, T_type1, T_type2, T_type3, T_type4, T_type5, T_type6>, T_return, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7, class T_ret, class T_type1,class T_type2,class T_type3,class T_type4,class T_type5,class T_type6,class T_type7>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
retype(const Slot7<T_ret, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>& _A_slot)
|
|
||||||
{ return Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
(retype_slot_functor<Slot7<T_ret, T_type1, T_type2, T_type3, T_type4, T_type5, T_type6, T_type7>, T_return, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>
|
|
||||||
(_A_slot)); }
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace SigC */
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
#endif /* _SIGC_MACROS_RETYPEHM4_ */
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_RETYPE_RETURN_HPP_
|
|
||||||
#define _SIGC_RETYPE_RETURN_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/adaptors/retype_return.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
using ::sigc::retype_return;
|
|
||||||
using ::sigc::hide_return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* LIBSIGC_DISABLE_DEPRECATED */
|
|
||||||
|
|
||||||
#endif /* _SIGC_RETYPE_RETURN_HPP_ */
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2003, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SIGCXX_SIGCXX_H
|
|
||||||
#define SIGCXX_SIGCXX_H
|
|
||||||
|
|
||||||
#include <sigc++/signal.h>
|
|
||||||
#include <sigc++/connection.h>
|
|
||||||
#include <sigc++/trackable.h>
|
|
||||||
#include <sigc++/adaptors/adaptors.h>
|
|
||||||
#include <sigc++/functors/functors.h>
|
|
||||||
|
|
||||||
#endif /* SIGCXX_SIGCXX_H */
|
|
||||||
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#include <sigc++/signal.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
|
|
||||||
} /* sigc */
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,151 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2003, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#include <sigc++/signal_base.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
namespace internal {
|
|
||||||
|
|
||||||
signal_impl::signal_impl()
|
|
||||||
: ref_count_(0), exec_count_(0), deferred_(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
// only MSVC needs this to guarantee that all new/delete are executed from the DLL module
|
|
||||||
#ifdef SIGC_NEW_DELETE_IN_LIBRARY_ONLY
|
|
||||||
void* signal_impl::operator new(size_t size_)
|
|
||||||
{
|
|
||||||
return malloc(size_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void signal_impl::operator delete(void* p)
|
|
||||||
{
|
|
||||||
free(p);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void signal_impl::clear()
|
|
||||||
{
|
|
||||||
slots_.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_impl::size_type signal_impl::size() const
|
|
||||||
{
|
|
||||||
return slots_.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_impl::iterator_type signal_impl::connect(const slot_base& slot_)
|
|
||||||
{
|
|
||||||
return insert(slots_.end(), slot_);
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_impl::iterator_type signal_impl::erase(iterator_type i)
|
|
||||||
{
|
|
||||||
return slots_.erase(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_impl::iterator_type signal_impl::insert(signal_impl::iterator_type i, const slot_base& slot_)
|
|
||||||
{
|
|
||||||
iterator_type temp = slots_.insert(i, slot_);
|
|
||||||
temp->set_parent(this, ¬ify);
|
|
||||||
return temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void signal_impl::sweep()
|
|
||||||
{
|
|
||||||
iterator_type i = slots_.begin();
|
|
||||||
while (i != slots_.end())
|
|
||||||
if ((*i).empty())
|
|
||||||
i = slots_.erase(i);
|
|
||||||
else
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
void* signal_impl::notify(void* d)
|
|
||||||
{
|
|
||||||
signal_impl* self = (signal_impl*)d;
|
|
||||||
if (self->exec_count_ == 0)
|
|
||||||
self->sweep();
|
|
||||||
else // This is occuring during signal emission.
|
|
||||||
self->deferred_ = true; // => sweep() will be called from ~signal_exec().
|
|
||||||
return 0; // This is safer because we don't have to care about our iterators in emit().
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* namespace internal */
|
|
||||||
|
|
||||||
signal_base::signal_base()
|
|
||||||
: impl_(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
signal_base::signal_base(const signal_base& src)
|
|
||||||
: trackable(),
|
|
||||||
impl_(src.impl())
|
|
||||||
{
|
|
||||||
impl_->reference();
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_base::~signal_base()
|
|
||||||
{
|
|
||||||
if (impl_)
|
|
||||||
impl_->unreference();
|
|
||||||
}
|
|
||||||
|
|
||||||
void signal_base::clear()
|
|
||||||
{
|
|
||||||
if (impl_)
|
|
||||||
impl_->clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_base::size_type signal_base::size() const
|
|
||||||
{
|
|
||||||
return (impl_ ? impl_->size() : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_base::iterator_type signal_base::connect(const slot_base& slot_)
|
|
||||||
{
|
|
||||||
return impl()->connect(slot_);
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_base::iterator_type signal_base::insert(iterator_type i, const slot_base& slot_)
|
|
||||||
{
|
|
||||||
return impl()->insert(i, slot_);
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_base::iterator_type signal_base::erase(iterator_type i)
|
|
||||||
{
|
|
||||||
return impl()->erase(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
signal_base& signal_base::operator = (const signal_base& src)
|
|
||||||
{
|
|
||||||
if (impl_) impl_->unreference();
|
|
||||||
impl_ = src.impl();
|
|
||||||
impl_->reference();
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal::signal_impl* signal_base::impl() const
|
|
||||||
{
|
|
||||||
if (!impl_) {
|
|
||||||
impl_ = new internal::signal_impl;
|
|
||||||
impl_->reference(); // start with a reference count of 1
|
|
||||||
}
|
|
||||||
return impl_;
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* sigc */
|
|
||||||
|
|
@ -1,261 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _SIGC_SIGNAL_BASE_H_
|
|
||||||
#define _SIGC_SIGNAL_BASE_H_
|
|
||||||
|
|
||||||
#include <list>
|
|
||||||
#include <sigc++config.h>
|
|
||||||
#include <sigc++/type_traits.h>
|
|
||||||
#include <sigc++/trackable.h>
|
|
||||||
#include <sigc++/functors/slot.h>
|
|
||||||
#include <sigc++/functors/mem_fun.h>
|
|
||||||
|
|
||||||
namespace sigc
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace internal
|
|
||||||
{
|
|
||||||
|
|
||||||
/** Implementation of the signal interface.
|
|
||||||
* signal_impl manages a list of slots. When a slot becomes
|
|
||||||
* invalid (because some referred object dies), notify() is executed.
|
|
||||||
* notify() either calls sweep() directly or defers the execution of
|
|
||||||
* sweep() when the signal is being emitted. sweep() removes all
|
|
||||||
* invalid slot from the list.
|
|
||||||
*/
|
|
||||||
struct SIGC_API signal_impl
|
|
||||||
{
|
|
||||||
typedef size_t size_type;
|
|
||||||
typedef std::list<slot_base>::iterator iterator_type;
|
|
||||||
typedef std::list<slot_base>::const_iterator const_iterator_type;
|
|
||||||
|
|
||||||
signal_impl();
|
|
||||||
|
|
||||||
// only MSVC needs this to guarantee that all new/delete are executed from the DLL module
|
|
||||||
#ifdef SIGC_NEW_DELETE_IN_LIBRARY_ONLY
|
|
||||||
void* operator new(size_t size_);
|
|
||||||
void operator delete(void* p);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// Increments the reference counter.
|
|
||||||
inline void reference()
|
|
||||||
{ ++ref_count_; }
|
|
||||||
|
|
||||||
/// Increments the reference and execution counter.
|
|
||||||
inline void reference_exec()
|
|
||||||
{ ++ref_count_; ++exec_count_; }
|
|
||||||
|
|
||||||
/** Decrements the reference counter.
|
|
||||||
* The object is deleted when the reference counter reaches zero.
|
|
||||||
*/
|
|
||||||
inline void unreference()
|
|
||||||
{ if (!(--ref_count_)) delete this; }
|
|
||||||
|
|
||||||
/** Decrements the reference and execution counter.
|
|
||||||
* Invokes sweep() if the execution counter reaches zero and the
|
|
||||||
* removal of one or more slots has been deferred.
|
|
||||||
*/
|
|
||||||
inline void unreference_exec()
|
|
||||||
{
|
|
||||||
if (!(--ref_count_)) delete this;
|
|
||||||
else if (!(--exec_count_) && deferred_) sweep();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns whether the list of slots is empty.
|
|
||||||
* @return @p true if the list of slots is empty.
|
|
||||||
*/
|
|
||||||
inline bool empty() const
|
|
||||||
{ return slots_.empty(); }
|
|
||||||
|
|
||||||
/// Empties the list of slots.
|
|
||||||
void clear();
|
|
||||||
|
|
||||||
/** Returns the number of slots in the list.
|
|
||||||
* @return The number of slots in the list.
|
|
||||||
*/
|
|
||||||
size_type size() const;
|
|
||||||
|
|
||||||
/** Adds a slot at the bottom of the list of slots.
|
|
||||||
* @param slot_ The slot to add to the list of slots.
|
|
||||||
* @return An iterator pointing to the new slot in the list.
|
|
||||||
*/
|
|
||||||
iterator_type connect(const slot_base& slot_);
|
|
||||||
|
|
||||||
/** Adds a slot at the given position into the list of slots.
|
|
||||||
* @param i An iterator indicating the position where @p slot_ should be inserted.
|
|
||||||
* @param slot_ The slot to add to the list of slots.
|
|
||||||
* @return An iterator pointing to the new slot in the list.
|
|
||||||
*/
|
|
||||||
iterator_type insert(iterator_type i, const slot_base& slot_);
|
|
||||||
|
|
||||||
/** Removes the slot at the given position from the list of slots.
|
|
||||||
* @param i An iterator pointing to the slot to be removed.
|
|
||||||
* @return An iterator pointing to the slot in the list after the one removed.
|
|
||||||
*/
|
|
||||||
iterator_type erase(iterator_type i);
|
|
||||||
|
|
||||||
/// Removes invalid slots from the list of slots.
|
|
||||||
void sweep();
|
|
||||||
|
|
||||||
/** Callback that is executed when some slot becomes invalid.
|
|
||||||
* This callback is registered in every slot when inserted into
|
|
||||||
* the list of slots. It is executed when a slot becomes invalid
|
|
||||||
* because of some referred object being destroyed.
|
|
||||||
* It either calls sweep() directly or defers the execution of
|
|
||||||
* sweep() when the signal is being emitted.
|
|
||||||
* @param d The signal object (@p this).
|
|
||||||
*/
|
|
||||||
static void* notify(void* d);
|
|
||||||
|
|
||||||
/** Reference counter.
|
|
||||||
* The object is destroyed when @em ref_count_ reaches zero.
|
|
||||||
*/
|
|
||||||
short ref_count_;
|
|
||||||
|
|
||||||
/** Execution counter.
|
|
||||||
* Indicates whether the signal is being emitted.
|
|
||||||
*/
|
|
||||||
short exec_count_;
|
|
||||||
|
|
||||||
/// Indicates whether the execution of sweep() is being deferred.
|
|
||||||
bool deferred_;
|
|
||||||
|
|
||||||
/// The list of slots.
|
|
||||||
std::list<slot_base> slots_;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Exception safe sweeper for cleaning up invalid slots on the slot list.
|
|
||||||
struct SIGC_API signal_exec
|
|
||||||
{
|
|
||||||
/// The parent sigc::signal_impl object.
|
|
||||||
signal_impl* sig_;
|
|
||||||
|
|
||||||
/** Increments the reference and execution counter of the parent sigc::signal_impl object.
|
|
||||||
* @param sig The parent sigc::signal_impl object.
|
|
||||||
*/
|
|
||||||
inline signal_exec(const signal_impl* sig)
|
|
||||||
: sig_(const_cast<signal_impl*>(sig) )
|
|
||||||
{ sig_->reference_exec(); }
|
|
||||||
|
|
||||||
/// Decrements the reference and execution counter of the parent sigc::signal_impl object.
|
|
||||||
inline ~signal_exec()
|
|
||||||
{ sig_->unreference_exec(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
} /* namespace internal */
|
|
||||||
|
|
||||||
|
|
||||||
/** @defgroup signal Signals
|
|
||||||
* Use sigc::signal::connect() with sigc::mem_fun() and sigc::ptr_fun() to connect a method or function with a signal.
|
|
||||||
*
|
|
||||||
* @code
|
|
||||||
* signal_clicked.connect( sigc::mem_fun(*this, &MyWindow::on_clicked) );
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* When the signal is emitted your method will be called.
|
|
||||||
*
|
|
||||||
* signal::connect() returns a connection, which you can later use to disconnect your method.
|
|
||||||
* If the type of your object inherits from sigc::trackable the method is disconnected
|
|
||||||
* automatically when your object is destroyed.
|
|
||||||
*
|
|
||||||
* When signals are copied they share the underlying information,
|
|
||||||
* so you can have a protected/private sigc::signal member and a public accessor method.
|
|
||||||
*
|
|
||||||
* signal and slot objects provide the core functionality of this
|
|
||||||
* library. A slot is a container for an arbitrary functor.
|
|
||||||
* A signal is a list of slots that are executed on emission.
|
|
||||||
* For compile time type safety a list of template arguments
|
|
||||||
* must be provided for the signal template that determines the
|
|
||||||
* parameter list for emission. Functors and closures are converted
|
|
||||||
* into slots implicitely on connection, triggering compiler errors
|
|
||||||
* if the given functor or closure cannot be invoked with the
|
|
||||||
* parameter list of the signal to connect to.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Base class for the sigc::signal# templates.
|
|
||||||
* signal_base integrates most of the interface of the derived sigc::signal#
|
|
||||||
* templates. The implementation, however, resides in sigc::internal::signal_impl.
|
|
||||||
* A sigc::internal::signal_impl object is dynamically allocated from signal_base
|
|
||||||
* when first connecting a slot to the signal. This ensures that empty signals
|
|
||||||
* don't waste memory.
|
|
||||||
*
|
|
||||||
* @ingroup signal
|
|
||||||
*/
|
|
||||||
struct SIGC_API signal_base : public trackable
|
|
||||||
{
|
|
||||||
typedef size_t size_type;
|
|
||||||
|
|
||||||
signal_base();
|
|
||||||
|
|
||||||
signal_base(const signal_base& src);
|
|
||||||
|
|
||||||
~signal_base();
|
|
||||||
|
|
||||||
signal_base& operator = (const signal_base& src);
|
|
||||||
|
|
||||||
/** Returns whether the list of slots is empty.
|
|
||||||
* @return @p true if the list of slots is empty.
|
|
||||||
*/
|
|
||||||
inline bool empty() const
|
|
||||||
{ return (!impl_ || impl_->empty()); }
|
|
||||||
|
|
||||||
/// Empties the list of slots.
|
|
||||||
void clear();
|
|
||||||
|
|
||||||
/** Returns the number of slots in the list.
|
|
||||||
* @return The number of slots in the list.
|
|
||||||
*/
|
|
||||||
size_type size() const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
typedef internal::signal_impl::iterator_type iterator_type;
|
|
||||||
|
|
||||||
/** Adds a slot at the bottom of the list of slots.
|
|
||||||
* @param slot_ The slot to add to the list of slots.
|
|
||||||
* @return An iterator pointing to the new slot in the list.
|
|
||||||
*/
|
|
||||||
iterator_type connect(const slot_base& slot_);
|
|
||||||
|
|
||||||
/** Adds a slot at the given position into the list of slots.
|
|
||||||
* @param i An iterator indicating the position where @e slot_ should be inserted.
|
|
||||||
* @param slot_ The slot to add to the list of slots.
|
|
||||||
* @return An iterator pointing to the new slot in the list.
|
|
||||||
*/
|
|
||||||
iterator_type insert(iterator_type i, const slot_base& slot_);
|
|
||||||
|
|
||||||
/** Removes the slot at the given position from the list of slots.
|
|
||||||
* @param i An iterator pointing to the slot to be removed.
|
|
||||||
* @return An iterator pointing to the slot in the list after the one removed.
|
|
||||||
*/
|
|
||||||
iterator_type erase(iterator_type i);
|
|
||||||
|
|
||||||
/** Returns the signal_impl object encapsulating the list of slots.
|
|
||||||
* @return The signal_impl object encapsulating the list of slots.
|
|
||||||
*/
|
|
||||||
internal::signal_impl* impl() const;
|
|
||||||
|
|
||||||
/// The signal_impl object encapsulating the slot list.
|
|
||||||
mutable internal::signal_impl* impl_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace sigc
|
|
||||||
|
|
||||||
#endif /* _SIGC_SIGNAL_BASE_H_ */
|
|
||||||
|
|
@ -1,614 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/* Do not edit! -- generated file */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SIGC_MACROS_SLOTHM4_
|
|
||||||
#define _SIGC_MACROS_SLOTHM4_
|
|
||||||
|
|
||||||
#include <sigc++/functors/slot.h>
|
|
||||||
|
|
||||||
#ifndef LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
|
|
||||||
namespace SigC {
|
|
||||||
|
|
||||||
// SlotN
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot0 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return>
|
|
||||||
class Slot0
|
|
||||||
: public ::sigc::slot<T_return>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot0() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot0(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot0(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot0& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot1 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1>
|
|
||||||
class Slot1
|
|
||||||
: public ::sigc::slot<T_return, T_arg1>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return, T_arg1> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot1() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot1(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return, T_arg1>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot1(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot1& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot2 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2>
|
|
||||||
class Slot2
|
|
||||||
: public ::sigc::slot<T_return, T_arg1,T_arg2>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return, T_arg1,T_arg2> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot2() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot2(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return, T_arg1,T_arg2>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot2(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot2& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot3 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
class Slot3
|
|
||||||
: public ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot3() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot3(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot3(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot3& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot4 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
class Slot4
|
|
||||||
: public ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot4() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot4(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot4(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot4& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot5 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg5 Argument type used in the definition of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
class Slot5
|
|
||||||
: public ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot5() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot5(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot5(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot5& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot6 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg5 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg6 Argument type used in the definition of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
class Slot6
|
|
||||||
: public ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot6() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot6(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot6(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot6& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Converts an arbitrary functor to a unified type which is opaque.
|
|
||||||
* Slot7 itself is a functor or to be more precise a closure. It contains
|
|
||||||
* a single, arbitrary functor (or closure) that is executed in operator()().
|
|
||||||
*
|
|
||||||
* The template arguments determine the function signature of operator()():
|
|
||||||
* - @e T_return The return type of operator()().
|
|
||||||
* - @e T_arg1 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg2 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg3 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg4 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg5 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg6 Argument type used in the definition of operator()().
|
|
||||||
* - @e T_arg7 Argument type used in the definition of operator()().
|
|
||||||
*
|
|
||||||
* To use simply assign the slot to the desired functor. If the functor
|
|
||||||
* is not compatible with the parameter list defined with the template
|
|
||||||
* arguments compiler errors are triggered. When called the slot
|
|
||||||
* will invoke the functor with minimal copies.
|
|
||||||
* block() and unblock() can be used to block the functor's invocation
|
|
||||||
* from operator()() temporarily.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* #include <sigc++/slot.h>
|
|
||||||
* void foo(int) {}
|
|
||||||
* SigC::Slot1<void, long> s = SigC::slot(&foo);
|
|
||||||
* s(19);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @deprecated Use the unnumbered template sigc::slot instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
class Slot7
|
|
||||||
: public ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> parent_type;
|
|
||||||
|
|
||||||
/// Constructs an empty slot.
|
|
||||||
Slot7() {}
|
|
||||||
|
|
||||||
/** Constructs a slot from an arbitrary functor.
|
|
||||||
* @param _A_func The desired functor the new slot should be assigned to.
|
|
||||||
*/
|
|
||||||
template <class T_functor>
|
|
||||||
Slot7(const T_functor& _A_func)
|
|
||||||
: ::sigc::slot<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_func) {}
|
|
||||||
|
|
||||||
/** Constructs a slot, copying an existing one.
|
|
||||||
* @param src The existing slot to copy.
|
|
||||||
*/
|
|
||||||
Slot7(const parent_type& src)
|
|
||||||
: parent_type(src) {}
|
|
||||||
|
|
||||||
/** Overrides this slot making a copy from another slot.
|
|
||||||
* @param src The slot from which to make a copy.
|
|
||||||
* @return @p this.
|
|
||||||
*/
|
|
||||||
Slot7& operator=(const parent_type& src)
|
|
||||||
{ parent_type::operator=(src); return *this; }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
|
||||||
/* gcc 3.2 reports a strange conflict between SigC::slot() and sigc::slot<>
|
|
||||||
* when "using namespace SigC" and later using a slot(obj,func) overload
|
|
||||||
* without the prefix "SigC::". Probably a compiler bug. I will investigate.
|
|
||||||
*
|
|
||||||
* This ugly hack avoids the error:
|
|
||||||
*/
|
|
||||||
// #define slot(...) make_slot(__VA_ARGS__) /* only works for gcc */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// slot()
|
|
||||||
/** Creates a functor of type SigC::Slot0 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return>
|
|
||||||
inline Slot0<T_return>
|
|
||||||
slot(T_return (*_A_func)())
|
|
||||||
{ return Slot0<T_return>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot1 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1>
|
|
||||||
inline Slot1<T_return, T_arg1>
|
|
||||||
slot(T_return (*_A_func)(T_arg1))
|
|
||||||
{ return Slot1<T_return, T_arg1>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot2 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2>
|
|
||||||
inline Slot2<T_return, T_arg1,T_arg2>
|
|
||||||
slot(T_return (*_A_func)(T_arg1,T_arg2))
|
|
||||||
{ return Slot2<T_return, T_arg1,T_arg2>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot3 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3>
|
|
||||||
inline Slot3<T_return, T_arg1,T_arg2,T_arg3>
|
|
||||||
slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3))
|
|
||||||
{ return Slot3<T_return, T_arg1,T_arg2,T_arg3>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot4 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4>
|
|
||||||
inline Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>
|
|
||||||
slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4))
|
|
||||||
{ return Slot4<T_return, T_arg1,T_arg2,T_arg3,T_arg4>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot5 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>
|
|
||||||
inline Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>
|
|
||||||
slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5))
|
|
||||||
{ return Slot5<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot6 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>
|
|
||||||
inline Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>
|
|
||||||
slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6))
|
|
||||||
{ return Slot6<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>(_A_func); }
|
|
||||||
|
|
||||||
/** Creates a functor of type SigC::Slot7 that wraps an existing non-member function.
|
|
||||||
*
|
|
||||||
* @param _A_func Pointer to function that should be wrapped.
|
|
||||||
* @return Functor that executes _A_func on invokation.
|
|
||||||
*
|
|
||||||
* @deprecated Use sigc::ptr_fun() instead.
|
|
||||||
* @ingroup compat
|
|
||||||
*/
|
|
||||||
template <class T_return, class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7>
|
|
||||||
inline Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>
|
|
||||||
slot(T_return (*_A_func)(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7))
|
|
||||||
{ return Slot7<T_return, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>(_A_func); }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif /* _SIGC_MACROS_SLOTHM4_ */
|
|
||||||
|
|
@ -1,124 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sigc++/trackable.h>
|
|
||||||
#include <iostream>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
namespace sigc
|
|
||||||
{
|
|
||||||
|
|
||||||
trackable::trackable()
|
|
||||||
: callback_list_(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
/* Don't copy the notification list.
|
|
||||||
The objects watching src don't need to be notified when the new object dies. */
|
|
||||||
trackable::trackable(const trackable& /*src*/)
|
|
||||||
: callback_list_(0)
|
|
||||||
{}
|
|
||||||
|
|
||||||
trackable& trackable::operator=(const trackable& src)
|
|
||||||
{
|
|
||||||
if(this != &src)
|
|
||||||
notify_callbacks(); //Make sure that we have finished with existing stuff before replacing it.
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
trackable::~trackable()
|
|
||||||
{
|
|
||||||
notify_callbacks();
|
|
||||||
}
|
|
||||||
|
|
||||||
void trackable::add_destroy_notify_callback(void* data, func_destroy_notify func) const
|
|
||||||
{
|
|
||||||
callback_list()->add_callback(data, func);
|
|
||||||
}
|
|
||||||
|
|
||||||
void trackable::remove_destroy_notify_callback(void* data) const
|
|
||||||
{
|
|
||||||
callback_list()->remove_callback(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
void trackable::notify_callbacks()
|
|
||||||
{
|
|
||||||
if (callback_list_)
|
|
||||||
delete callback_list_; //This invokes all of the callbacks.
|
|
||||||
|
|
||||||
callback_list_ = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal::trackable_callback_list* trackable::callback_list() const
|
|
||||||
{
|
|
||||||
if (!callback_list_)
|
|
||||||
callback_list_ = new internal::trackable_callback_list;
|
|
||||||
|
|
||||||
return callback_list_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
namespace internal
|
|
||||||
{
|
|
||||||
|
|
||||||
trackable_callback_list::~trackable_callback_list()
|
|
||||||
{
|
|
||||||
clearing_ = true;
|
|
||||||
|
|
||||||
for (callback_list::iterator i = callbacks_.begin(); i != callbacks_.end(); ++i)
|
|
||||||
(*i).func_((*i).data_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void trackable_callback_list::add_callback(void* data, func_destroy_notify func)
|
|
||||||
{
|
|
||||||
if (!clearing_) // TODO: Is it okay to silently ignore attempts to add dependencies when the list is being cleared?
|
|
||||||
// I'd consider this a serious application bug, since the app is likely to segfault.
|
|
||||||
// But then, how should we handle it? Throw an exception? Martin.
|
|
||||||
callbacks_.push_back(trackable_callback(data, func));
|
|
||||||
}
|
|
||||||
|
|
||||||
void trackable_callback_list::clear()
|
|
||||||
{
|
|
||||||
clearing_ = true;
|
|
||||||
|
|
||||||
for (callback_list::iterator i = callbacks_.begin(); i != callbacks_.end(); ++i)
|
|
||||||
(*i).func_((*i).data_);
|
|
||||||
|
|
||||||
callbacks_.clear();
|
|
||||||
|
|
||||||
clearing_ = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void trackable_callback_list::remove_callback(void* data)
|
|
||||||
{
|
|
||||||
if (clearing_) return; // No circular notices
|
|
||||||
|
|
||||||
for (callback_list::iterator i = callbacks_.begin(); i != callbacks_.end(); ++i)
|
|
||||||
if ((*i).data_ == data)
|
|
||||||
{
|
|
||||||
callbacks_.erase(i);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* namespace internal */
|
|
||||||
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
@ -1,148 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_TRACKABLE_HPP_
|
|
||||||
#define _SIGC_TRACKABLE_HPP_
|
|
||||||
#include <list>
|
|
||||||
#include <sigc++config.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
namespace internal {
|
|
||||||
|
|
||||||
typedef void* (*func_destroy_notify) (void* data);
|
|
||||||
|
|
||||||
/** Destroy notification callback.
|
|
||||||
* A destroy notification callback consists of a data pointer and a
|
|
||||||
* function pointer. The function is executed from the owning callback
|
|
||||||
* list (of type sigc::internal::trackable_callback_list) when its parent
|
|
||||||
* object (of type sigc::trackable) is destroyed or overwritten.
|
|
||||||
*/
|
|
||||||
struct SIGC_API trackable_callback
|
|
||||||
{
|
|
||||||
void* data_;
|
|
||||||
func_destroy_notify func_;
|
|
||||||
trackable_callback(void* data, func_destroy_notify func)
|
|
||||||
: data_(data), func_(func) {}
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Callback list.
|
|
||||||
* A callback list holds an STL list of callbacks of type
|
|
||||||
* trackable_callback. Callbacks are added and removed with
|
|
||||||
* add_callback(), remove_callback() and clear(). The callbacks
|
|
||||||
* are invoked from clear() and from the destructor.
|
|
||||||
*/
|
|
||||||
struct SIGC_API trackable_callback_list
|
|
||||||
{
|
|
||||||
/** Add a callback function.
|
|
||||||
* @param data Data that will be sent as a parameter to teh callback function.
|
|
||||||
* @param func The callback function.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void add_callback(void* data, func_destroy_notify func);
|
|
||||||
|
|
||||||
/** Remove the callback which has this data associated with it.
|
|
||||||
* @param data The data that was given as a parameter to add_callback().
|
|
||||||
*/
|
|
||||||
void remove_callback(void* data);
|
|
||||||
|
|
||||||
/** This invokes all of the callback functions.
|
|
||||||
*/
|
|
||||||
void clear();
|
|
||||||
|
|
||||||
trackable_callback_list()
|
|
||||||
: clearing_(false) {}
|
|
||||||
|
|
||||||
/** This invokes all of the callback functions.
|
|
||||||
*/
|
|
||||||
~trackable_callback_list();
|
|
||||||
|
|
||||||
private:
|
|
||||||
typedef std::list<trackable_callback> callback_list;
|
|
||||||
callback_list callbacks_;
|
|
||||||
bool clearing_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} /* namespace internal */
|
|
||||||
|
|
||||||
|
|
||||||
/** Base class for objects with auto-disconnection.
|
|
||||||
* trackable must be inherited when objects shall automatically
|
|
||||||
* invalidate slots referring to them on destruction.
|
|
||||||
* A slot built from a member function of a trackable derived
|
|
||||||
* type installs a callback that is invoked when the trackable object
|
|
||||||
* is destroyed or overwritten.
|
|
||||||
*
|
|
||||||
* add_destroy_notify_callback() and remove_destroy_notify_callback()
|
|
||||||
* can be used to manually install and remove callbacks when
|
|
||||||
* notification of the object dying is needed.
|
|
||||||
*
|
|
||||||
* notify_callbacks() invokes and removes all previously installed
|
|
||||||
* callbacks and can therefore be used to disconnect from all signals.
|
|
||||||
*
|
|
||||||
* Note that there is no virtual destructor. Don't use @p trackable*
|
|
||||||
* as pointer type for managing your data or the destructors of
|
|
||||||
* your derived types won't be called when deleting your objects.
|
|
||||||
*
|
|
||||||
* @ingroup signal
|
|
||||||
*/
|
|
||||||
struct SIGC_API trackable
|
|
||||||
{
|
|
||||||
trackable();
|
|
||||||
|
|
||||||
trackable(const trackable& src);
|
|
||||||
|
|
||||||
trackable& operator=(const trackable& src);
|
|
||||||
|
|
||||||
~trackable();
|
|
||||||
|
|
||||||
/*virtual ~trackable() {} */ /* we would need a virtual dtor for users
|
|
||||||
who insist on using "trackable*" as
|
|
||||||
pointer type for their own derived objects */
|
|
||||||
|
|
||||||
|
|
||||||
typedef internal::func_destroy_notify func_destroy_notify;
|
|
||||||
|
|
||||||
/** Add a callback that is executed (notified) when the trackable object is detroyed.
|
|
||||||
* @param data Passed into func upon notification.
|
|
||||||
* @param func Callback executed upon destruction of the object.
|
|
||||||
*/
|
|
||||||
void add_destroy_notify_callback(void* data, func_destroy_notify func) const;
|
|
||||||
|
|
||||||
/** Remove a callback previously installed with add_destroy_notify_callback().
|
|
||||||
* The callback is not executed.
|
|
||||||
* @param data Parameter passed into previous call to add_destroy_notify_callback().
|
|
||||||
*/
|
|
||||||
void remove_destroy_notify_callback(void* data) const;
|
|
||||||
|
|
||||||
/// Execute and remove all previously installed callbacks.
|
|
||||||
void notify_callbacks();
|
|
||||||
|
|
||||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
|
||||||
private:
|
|
||||||
/* The callbacks are held in a list of type trackable_callback_list.
|
|
||||||
* This list is allocated dynamically when the first callback is added.
|
|
||||||
*/
|
|
||||||
internal::trackable_callback_list* callback_list() const;
|
|
||||||
mutable internal::trackable_callback_list* callback_list_;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
||||||
#endif /* _SIGC_TRACKABLE_HPP_ */
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_TYPE_TRAIT_H_
|
|
||||||
#define _SIGC_TYPE_TRAIT_H_
|
|
||||||
|
|
||||||
#include <sigc++/reference_wrapper.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct type_trait
|
|
||||||
{
|
|
||||||
typedef T_type type;
|
|
||||||
typedef T_type& pass;
|
|
||||||
typedef const T_type& take;
|
|
||||||
typedef T_type* pointer;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type, int N>
|
|
||||||
struct type_trait<T_type[N]>
|
|
||||||
{
|
|
||||||
typedef T_type* type;
|
|
||||||
typedef T_type*& pass;
|
|
||||||
typedef const T_type*& take;
|
|
||||||
typedef T_type** pointer;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct type_trait<T_type&>
|
|
||||||
{
|
|
||||||
typedef T_type type;
|
|
||||||
typedef T_type& pass;
|
|
||||||
typedef T_type& take;
|
|
||||||
typedef T_type* pointer;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct type_trait<const T_type&>
|
|
||||||
{
|
|
||||||
typedef const T_type type;
|
|
||||||
typedef const T_type& pass;
|
|
||||||
typedef const T_type& take;
|
|
||||||
typedef const T_type* pointer;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct type_trait<reference_wrapper<T_type> >
|
|
||||||
{
|
|
||||||
typedef T_type type;
|
|
||||||
typedef T_type& pass;
|
|
||||||
typedef T_type& take;
|
|
||||||
typedef T_type* pointer;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
struct type_trait<const_reference_wrapper<T_type> >
|
|
||||||
{
|
|
||||||
typedef T_type type;
|
|
||||||
typedef T_type& pass;
|
|
||||||
typedef const T_type& take;
|
|
||||||
typedef T_type* pointer;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<>
|
|
||||||
struct type_trait<void>
|
|
||||||
{
|
|
||||||
typedef void type;
|
|
||||||
typedef void pass;
|
|
||||||
typedef void take;
|
|
||||||
typedef void* pointer;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/** From Esa Pulkkin:
|
|
||||||
* Compile-time determination of base-class relationship in C++
|
|
||||||
* (adapted to match the syntax of boost's type_traits library).
|
|
||||||
*/
|
|
||||||
template <class T_base, class T_derived>
|
|
||||||
struct is_base_and_derived
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
struct big {
|
|
||||||
char memory[64];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct test {
|
|
||||||
static big is_base_class_(...);
|
|
||||||
static char is_base_class_(typename type_trait<T_base>::pointer);
|
|
||||||
};
|
|
||||||
|
|
||||||
public:
|
|
||||||
static const bool value =
|
|
||||||
sizeof(test::is_base_class_((typename type_trait<T_derived>::pointer)0)) ==
|
|
||||||
sizeof(char);
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_base>
|
|
||||||
struct is_base_and_derived<T_base, T_base>
|
|
||||||
{
|
|
||||||
static const bool value = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
|
|
||||||
#endif /* _SIGC_TYPE_TRAIT_H_ */
|
|
||||||
|
|
@ -1,128 +0,0 @@
|
||||||
// -*- c++ -*-
|
|
||||||
/*
|
|
||||||
* Copyright 2002, The libsigc++ Development Team
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#ifndef _SIGC_VISIT_EACH_HPP_
|
|
||||||
#define _SIGC_VISIT_EACH_HPP_
|
|
||||||
|
|
||||||
#include <sigc++/type_traits.h>
|
|
||||||
|
|
||||||
namespace sigc {
|
|
||||||
|
|
||||||
namespace internal {
|
|
||||||
|
|
||||||
/// Helper struct for visit_each_type().
|
|
||||||
template <class T_target, class T_action>
|
|
||||||
struct limit_derived_target
|
|
||||||
{
|
|
||||||
typedef limit_derived_target<T_target, T_action> T_self;
|
|
||||||
|
|
||||||
template <bool I_derived, class T_type> struct with_type;
|
|
||||||
|
|
||||||
template <class T_type> struct with_type<false,T_type>
|
|
||||||
{ static void execute_(const T_type&, const T_self&) {} };
|
|
||||||
|
|
||||||
template <class T_type> struct with_type<true,T_type>
|
|
||||||
{ static void execute_(const T_type& _A_type, const T_self& _A_action)
|
|
||||||
{ _A_action.action_(_A_type); }
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
void operator()(const T_type& _A_type) const
|
|
||||||
{ with_type<is_base_and_derived<T_target,T_type>::value,T_type>::execute_(_A_type,*this); }
|
|
||||||
|
|
||||||
limit_derived_target(const T_action& _A_action): action_(_A_action) {}
|
|
||||||
|
|
||||||
T_action action_;
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Helper struct for visit_each_type().
|
|
||||||
template <class T_target, class T_action>
|
|
||||||
struct limit_derived_target<T_target*, T_action>
|
|
||||||
{
|
|
||||||
typedef limit_derived_target<T_target*, T_action> T_self;
|
|
||||||
|
|
||||||
template <bool I_derived, class T_type> struct with_type;
|
|
||||||
|
|
||||||
template <class T_type> struct with_type<false,T_type>
|
|
||||||
{ static void execute_(const T_type&, const T_self&) {} };
|
|
||||||
|
|
||||||
template <class T_type> struct with_type<true,T_type>
|
|
||||||
{ static void execute_(const T_type& _A_type, const T_self& _A_action)
|
|
||||||
{ _A_action.action_(&_A_type); }
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T_type>
|
|
||||||
void operator()(const T_type& _A_type) const
|
|
||||||
{ with_type<is_base_and_derived<T_target,T_type>::value,T_type>::execute_(_A_type,*this); }
|
|
||||||
|
|
||||||
limit_derived_target(const T_action& _A_action): action_(_A_action) {}
|
|
||||||
|
|
||||||
T_action action_;
|
|
||||||
};
|
|
||||||
|
|
||||||
} /* namespace internal */
|
|
||||||
|
|
||||||
|
|
||||||
/** This function performs a functor on each of the targets of a functor.
|
|
||||||
* All unknown types just call @e _A_action on them.
|
|
||||||
* Add overloads that specialize the @e T_functor argument for your own
|
|
||||||
* functor types, so that subobjects get visited. This is needed to enable
|
|
||||||
* auto-disconnection support for your functor types.
|
|
||||||
*
|
|
||||||
* @par Example:
|
|
||||||
* @code
|
|
||||||
* struct some_functor
|
|
||||||
* {
|
|
||||||
* void operator()() {}
|
|
||||||
* some_possibly_sigc_trackable_derived_type some_data_member;
|
|
||||||
* some_other_functor_type some_other_functor;
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* namespace sigc
|
|
||||||
* {
|
|
||||||
* template <class T_action>
|
|
||||||
* void visit_each(const T_action& _A_action,
|
|
||||||
* const some_functor& _A_target)
|
|
||||||
* {
|
|
||||||
* visit_each(_A_action, _A_target.some_data_member);
|
|
||||||
* visit_each(_A_action, _A_target.some_other_functor);
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @ingroup functors
|
|
||||||
*/
|
|
||||||
template <class T_action, class T_functor>
|
|
||||||
void visit_each(const T_action& _A_action, const T_functor& _A_functor)
|
|
||||||
{ _A_action(_A_functor); }
|
|
||||||
|
|
||||||
/** This function performs a functor on each of the targets
|
|
||||||
* of a functor limited to a restricted type.
|
|
||||||
*
|
|
||||||
* @ingroup functors
|
|
||||||
*/
|
|
||||||
template <class T_type, class T_action, class T_functor>
|
|
||||||
void visit_each_type(const T_action& _A_action, const T_functor& _A_functor)
|
|
||||||
{
|
|
||||||
internal::limit_derived_target<T_type,T_action> limited_action(_A_action);
|
|
||||||
visit_each(limited_action,_A_functor);
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* namespace sigc */
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
/* sigc++config.h.in. (Generated manually.) */
|
|
||||||
|
|
||||||
/* configure checks */
|
|
||||||
#undef SIGC_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
#undef SIGC_MSVC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
|
|
||||||
|
|
||||||
/* platform specific macros */
|
|
||||||
// #define LIBSIGC_DISABLE_DEPRECATED
|
|
||||||
// #define SIGC_NEW_DELETE_IN_LIBRARY_ONLY // only defined for MSVC to keep ABI compatibility
|
|
||||||
#define SIGC_API
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue