From f76fc34c29bb29d4f73db06996222a2c59a1e502 Mon Sep 17 00:00:00 2001 From: Taybin Rutkin Date: Sat, 3 Feb 2007 02:13:18 +0000 Subject: [PATCH] Removed libglademm. Updated libsigc++ from 2.0.6 to 2.0.17. git-svn-id: svn://localhost/ardour2/branches/2.1-staging@1413 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/libglademm/AUTHORS | 2 - libs/libglademm/COPYING | 504 -- libs/libglademm/ChangeLog | 361 -- libs/libglademm/NEWS | 95 - libs/libglademm/SConscript | 25 - libs/libglademm/libglademm.h | 31 - libs/libglademm/libglademm/init.cc | 34 - libs/libglademm/libglademm/init.h | 38 - libs/libglademm/libglademm/private/xml_p.h | 50 - libs/libglademm/libglademm/variablesmap.cc | 199 - libs/libglademm/libglademm/variablesmap.h | 96 - libs/libglademm/libglademm/wrap_init.cc | 50 - libs/libglademm/libglademm/wrap_init.h | 37 - libs/libglademm/libglademm/xml.cc | 343 - libs/libglademm/libglademm/xml.h | 348 - libs/libglademm/libglademmconfig.h | 15 - libs/sigc++2/ChangeLog | 601 ++ libs/sigc++2/Makefile.am | 3 +- libs/sigc++2/NEWS | 110 +- libs/sigc++2/autogen.sh | 9 +- libs/sigc++2/configure.ac | 82 +- libs/sigc++2/scripts/cxx.m4 | 28 + libs/sigc++2/scripts/cxx_std.m4 | 77 + libs/sigc++2/scripts/libtool.m4 | 5767 ----------------- libs/sigc++2/scripts/ltoptions.m4 | 358 - libs/sigc++2/scripts/ltsugar.m4 | 115 - libs/sigc++2/scripts/ltversion.m4 | 15 - libs/sigc++2/sigc++/.cvsignore | 4 - libs/sigc++2/sigc++/Makefile.am | 20 +- libs/sigc++2/sigc++/adaptors/adaptor_trait.h | 5 +- libs/sigc++2/sigc++/adaptors/bind.h | 811 +-- libs/sigc++2/sigc++/adaptors/bind_return.h | 74 +- libs/sigc++2/sigc++/adaptors/bound_argument.h | 165 + libs/sigc++2/sigc++/adaptors/compose.h | 42 +- .../sigc++2/sigc++/adaptors/exception_catch.h | 7 +- libs/sigc++2/sigc++/adaptors/hide.h | 137 +- libs/sigc++2/sigc++/adaptors/lambda/base.h | 55 +- libs/sigc++2/sigc++/adaptors/lambda/group.h | 3 + .../sigc++2/sigc++/adaptors/lambda/operator.h | 3 + libs/sigc++2/sigc++/adaptors/lambda/select.h | 108 +- libs/sigc++2/sigc++/adaptors/retype.h | 31 +- libs/sigc++2/sigc++/adaptors/retype_return.h | 3 +- libs/sigc++2/sigc++/connection.cc | 2 +- libs/sigc++2/sigc++/functors/mem_fun.h | 609 +- libs/sigc++2/sigc++/functors/slot.h | 120 +- libs/sigc++2/sigc++/functors/slot_base.cc | 18 +- libs/sigc++2/sigc++/functors/slot_base.h | 6 +- libs/sigc++2/sigc++/limit_reference.h | 455 ++ libs/sigc++2/sigc++/reference_wrapper.h | 8 - libs/sigc++2/sigc++/retype.h | 57 +- libs/sigc++2/sigc++/signal.h | 423 +- libs/sigc++2/sigc++/signal_base.cc | 3 +- libs/sigc++2/sigc++/signal_base.h | 45 +- libs/sigc++2/sigc++/trackable.cc | 3 + libs/sigc++2/sigc++/type_traits.h | 70 +- libs/sigc++2/sigc++/visit_each.h | 98 +- libs/sigc++2/sigc++config.h.in | 86 +- 57 files changed, 3250 insertions(+), 9614 deletions(-) delete mode 100644 libs/libglademm/AUTHORS delete mode 100644 libs/libglademm/COPYING delete mode 100644 libs/libglademm/ChangeLog delete mode 100644 libs/libglademm/NEWS delete mode 100644 libs/libglademm/SConscript delete mode 100644 libs/libglademm/libglademm.h delete mode 100644 libs/libglademm/libglademm/init.cc delete mode 100644 libs/libglademm/libglademm/init.h delete mode 100644 libs/libglademm/libglademm/private/xml_p.h delete mode 100644 libs/libglademm/libglademm/variablesmap.cc delete mode 100644 libs/libglademm/libglademm/variablesmap.h delete mode 100644 libs/libglademm/libglademm/wrap_init.cc delete mode 100644 libs/libglademm/libglademm/wrap_init.h delete mode 100644 libs/libglademm/libglademm/xml.cc delete mode 100644 libs/libglademm/libglademm/xml.h delete mode 100644 libs/libglademm/libglademmconfig.h create mode 100644 libs/sigc++2/scripts/cxx_std.m4 delete mode 100644 libs/sigc++2/scripts/libtool.m4 delete mode 100644 libs/sigc++2/scripts/ltoptions.m4 delete mode 100644 libs/sigc++2/scripts/ltsugar.m4 delete mode 100644 libs/sigc++2/scripts/ltversion.m4 delete mode 100644 libs/sigc++2/sigc++/.cvsignore create mode 100644 libs/sigc++2/sigc++/adaptors/bound_argument.h create mode 100644 libs/sigc++2/sigc++/limit_reference.h diff --git a/libs/libglademm/AUTHORS b/libs/libglademm/AUTHORS deleted file mode 100644 index 0258b21bfe..0000000000 --- a/libs/libglademm/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Maintainers: -Murray Cumming diff --git a/libs/libglademm/COPYING b/libs/libglademm/COPYING deleted file mode 100644 index b1e3f5a263..0000000000 --- a/libs/libglademm/COPYING +++ /dev/null @@ -1,504 +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. - - 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. - - 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. - - 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. - - 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. - - 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. - - 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. - - 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 - - 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. - - - Copyright (C) - - 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 - -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. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/libs/libglademm/ChangeLog b/libs/libglademm/ChangeLog deleted file mode 100644 index 90bd943ff9..0000000000 --- a/libs/libglademm/ChangeLog +++ /dev/null @@ -1,361 +0,0 @@ -2.6.1: - -2005-09-07 Murray Cumming - - * NEWS: Updated. - * configure.in: Increased version. - -2005-03-10 Cedric Gustin - - * MSVC_Net2003/Makefile.am: Add blank.cpp to EXTRA_DIST. - * MSVC_Net2003/libglademm/libglademm.vcproj: Disable warning #4250. - * MSVC_Net2003/examples/*/*.vcproj: Change name of - PDB file to $(OutDir)/$(TargetName).pdb. Disable warning #4250. - -2.6.0: - -2005-01-24 Cedric Gustin - - * MSVC_Net2003/libglademm/Makefile.am: Rewrote rule for local copy - of glibmmconfig.h (required for 'make distcheck'). - * MSVC_Net2003/libglademm/libglademm.vcproj: Removed GLIBMM_BUILD - macro. - -2.5.1: - -2005-01-11 Murray Cumming - - * MSVC_Net2003/libglademm/Makefile.am: Add libglademmconfig.h to - DISTCLEANFILES, to fix the distcheck. - -2004-12-13 Cedric Gustin - - * configure.in : parse version tags at configure time (for - libglademm-2.4.rc). - * MSVC_Net2003/libglademm/libglademm-2.4.rc.in : New resource file. - * MSVC_Net2003/libglademm/Makefile.am: Include libglademm-2.4.rc - in distribution. - * MSVC_Net2003/libglademm/libglademm.vcproj: Added resource file. - -2004-12-08 Cedric Gustin - - * MSVC_Net2003/: Initial release. - * configure.in: Added MSVC_Net2003 Makefiles. - * Makefile.am: Added MSVC_Net2003 subdir. - -2004-08-28 Alberto Paro - - * libglade/xml.{ccg|hg}: Added connect_clicked() for easy connection of - buttons and menuitems signals to a signal handler. - * libglade/variablesmap.[ccg|hg]: Glade::VariablesMap now handles - Entry, ComboTextEntry, SpinButton, *Scale, Calendar and CheckBox. - * example/variablesmap: Improved the example to handle new - VariablesMap types. - -2004-09-19 Murray Cumming - - * This is the HEAD branch. - -2004-09-19 Murray Cumming - - * libglademm/xml.hg: Fix from Denis Leroy in bug #151872. - -2.4.1: - -2004-06-02 Bryan Forbes - - * examples/derived/deriveddialog.h: fix to compile with gcc 3.4.0. - -2.4.0: - -2.3.3: - -2004-03-28 - - * libglade/xml.hg: Check the return value of get_cwidget(). - -2004-03-18 Murray Cumming - - * docs/reference/Makefile.am: Removed make target dependency on - installed beautify_docs, so it does not try to rebuild them when - building from a tarball. Bug #137548 from Dalgoda. - -2004-03-15 Cedric Gustin - - * tools/m4/Makefile.am: install m4 files in libglademm-2.4 subdir - instead of libglademm-2.0. - -2004-03-15 Cedric Gustin - - * configure.in: Added test for struct packing convention on win32 - (-mms-bitfields / -fnative-struct). - -2004-03-12 Murray Cumming - - * libglade/src/xml.hg: get_widget_derived(): actually return the - existing widget when a wrapper instance already exists. Bug #136913 - from Roger Whinlatter who submitted it to debian but should have - submitted it to bugzilla.gnome.org first. - -2.3.2: - -2004-02-13 Murray Cumming - - * Updated for latest libsigc++ 2 API. - -2.3.1: - -2003-12-31 Murray Cumming - - * docs/reference/Makefile.am: Generate a real devhelp file. Added - a doxygen_to_devhelp.xsl file for this, by copying it from gtkmm and - modifying it. - -2003-12-29 Murray Cumming - - * configure.in: Use glibmm_check_perl() m4 macro installed by glibmm, - so that doxygen can know the PERL_PATH. - * docs/reference/Makefile.am: Added the docs rules from the same - file in gtkmm, so that the docs are built and distributed and installed - and uploaded. - -2003-12-22 Murray Cumming - - * docs/reference/Makefile.am: Use beautify_docs.pl installed from - glibmm 2.4. - -2.3.0: - -2003-12-07 Murray Cumming - - * examples/menus/example.glade: Corrected the text. Patch by - Billy O'Connor in bug 128683. - -2003-11-29 Murray Cumming - - * libglade/libglade-2.0.pc.in: Corrected library name. - -2003-11-06 Cedric Gustin - - * configure.in: Added test of win32 platform. Commented - out AM_DISABLE_SHARED (DLLs are shared libraries). - * build_shared/Makefile_build.am_fragment: added a few LDFLAGS - for win32 DLLs (defined in win32_dlls_ldflags and appended to - common_ldflags). - -2003-11-06 Murray Cumming - - * Added examples/menus. - * examples/basic: Added and distributed basic.gladep which is - necessary to prevent glade-2 from creating libgnomeui menus. - -2003-11-02 Murray Cumming - - * This is now libglademm 2.4, which builds against gtkmm 2.4, and is - parallel-installable with libglademm 2.0/2.2. - -This is HEAD, for GNOME 2.6, using gtkmm 2.4. - -2003-10-30 Murray Cumming - - * libglade/libglademm.h: Include gtkmmconfig.h rather than - libgnomemmconfig.h. These are platform-specific stuff. I am - surprised that it built before, because this does not depend - on libgnomemm at all. - -2003-10-17 Alberto Paro - - * docs/reference/Doxyfile.in: fixed docs generation - -2.1.2: - -2003-09-25 Eric Bourque - - * libglademm.spec.in: new file - -2003-09-02 Murray Cumming - - * libglademm/src/xml.hg: Added code to get_widget_derived(), - to return an existing C++ instance if one exists. This makes - get_widget_derived() always return the same instance, like - get_widget() already does. I added some more explicit explanation - to the gtkmm book about this. - -2.1.1: - -2003-09-01 Murray Cumming - - * Just rebuilt the tarball. Some corruption was causing the - .la files to not be installed. - -2.1.0: - -2003-08-23 Murray Cumming - - * libglademm/src/xml.[hg|ccg]: Added - Glade::Xml::get_widget_derived() templated method. - * Added examples/derived/ to demonstrate it. This allows you - to encapsulate the handling of the child widgets inside the - container widget's code. - * Makefile.am: Added examples to SUBDIRS so that they are built - by default, for regression testing. - * examples/Makefile.am_fragment: Added top_srcdir include for - distcheck. - -2.0.0: - -2002-12-20 Daniel Elstner - - * examples/basic/basic.cc (main): Exit the program if loading - the glade file failed, so that it won't segfault. - -2002-12-20 Murray Cumming - - * _IGNORE()ed some internal libglade functions. - -2002-12-20 Murray Cumming - - * examples/basic/basic.cc: Used try/catch to catch the new XmlError - exception. Added some comments. - -2002-12-20 Daniel Elstner - - * libglade/src/xml.{ccg,hg} (XmlError): New exception class. - (Xml::Xml): Throw an XmlError exception if glade_xml_construct() - or glade_xml_create_from_buffer() failed. - -2002-12-16 Daniel Elstner - - * libglade/src/xml.{ccg,hg} (Xml::Xml): In order to reduce code - size, replace the ctor overloads with a single ctor and default - arguments, and treat empty strings as 0. Also, use std::string - instead of Glib::ustring for the filename argument. - (Xml::Xml): Add ctor overload for glade_xml_new_from_buffer(). - We should use a construct() function instead but that requires - an API addition to libglade. - (Xml::create): Use std::string for the filename argument, and - reduce code by using default arguments instead of 3 overloads. - (Xml::create_from_buffer): Take a plain const char* for the buffer - argument, plus an int for its size. We already need to do this - for the ctor to avoid overload ambiguities, and I don't see much - of a point in providing an additional create_from_buffer() overload - since it's rarely used. - (Xml::get_widget_checked): New internal method that checks the - type of the widget and prints a warning on failure. - (Xml::get_widget): Move most of the code into the non-templated - method get_widget_checked(), to reduce binary size. - (Xml::relative_file): Take and return std::string, since it's - a filename. - (Xml::get_filename): New accessor to public struct data member. - (Xml::get_widget_name): Add. - (Xml::glade_get_widget_tree): Add. - - * tools/m4/convert_libglademm.m4: Add conversion from GladeXML* - to Glib::RefPtr. - -2002-12-16 Murray Cumming - - * src/xml.hg: reparent_widget() is no longer virtual. - -2002-12-16 Murray Cumming - - * src/xml.[hg|ccg]: Renamed lookup_type() to lookup_type_vfunc(), to - be consistent with other gtkmm vfuncs, and made it virtual. - -2002-12-12 Murray Cumming - - * configure.in: Increased version from 1.3.x to 2.0 - * libglademm/libglademm/Makefile.am: Changed librarary name. - * libglademm/*.pc.in: Changed library name. - * examples/Makefile.am_fragment: Changed library name. - -2002-12-10 Bradley Bell - - * scripts/Makefile.am: distribute macros.m4 - -1.3.5: - * Updated for gtkmm2. - -1.3.4: - -2002-08-07 Murray Cumming - - * Glade::Xml now uses the new gtkmm _CONSTRUCT macro, so it uses - the correct Glib::Object constructor. - -2002-08-06 Martin Schulze - - * examples/basic/Makefile.am: Replace 'example' with 'basic' to - match the actual file names. - -1.3.3: - -2002-07-16 Murray Cumming - - * Rebuilt for latest gtkmm. - -1.3.2: - -2002-06-23 Murray Cumming - - * Rebuilt for latest gtkmm. - * VariablesMap: Fixed "no return statement" warning. - -1.3.1: - -2002-05-02 Murray Cumming - - * Added Gnome::Glade::VariablesMap, with an example. This allows - you to map named Glade widgets to member variables, and transfer - all the data with one method call. - -1.3.0: - -2002-04-29 Murray Cumming - - * Added reparent_widget() method. - -2002-04-28 Murray Cumming - - * Added templated get_widget(name, widget) override, which - does the dynamic casting and warns about any runtime errors, so - that application code doesn't need to. - -2002-04-25 Murray Cumming - - * examples/basic: Use a GtkDialog in the .glade file instead of - the deprecated GnomeDialog. The signal connection now seems to - work. - * libglade/src/xml.[hg|ccg]: Added a lookup_type() vfunc - that instantiates gtkmm types instead of gtk+ types. This requires - the latest libglade. - -2002-04-25 Michael A. Koziarski - - * libglade/src/xml.ccg - * libglade/src/xml.hg: As requested, implemented overloaded - create_from_buffer methods. - -2002-04-25 Murray Cumming - - * Added "basic" example based on the libglade docs and Michael - Koziarski's .glade file. - -2002-04-24 Michael A. Koziarski - - * libglade/src/xml.ccg - * libglade/src/xml.hg: Implemented overloaded create methods & - constructors. Most applications won't need to send a domain - parameter, and some don't need a root parameter - -2002-04-23 Murray Cumming - - * Generated sources are now distributed. The - build_shared/*.am_fragement files were copied from libgnomecanvasmm. - -2002-04-23 Murray Cumming - - * Xml constructor uses the glade_xml_construct() function because - GladeXML doesn't have construct-time properties yet. - - diff --git a/libs/libglademm/NEWS b/libs/libglademm/NEWS deleted file mode 100644 index 52eacdedbe..0000000000 --- a/libs/libglademm/NEWS +++ /dev/null @@ -1,95 +0,0 @@ -2.6.1: - -* Windows build fixes. (Cedric Gustin) - -2.6.0: - -libglademm 2.6 is API/ABI-compatible with libglademm 2.4. - -Changes since libglademm 2.4: - -* Glade::Xml: Added connect_clicked() for easy connection of - buttons and menuitems signals. (Alberto Paro) -* Glade::VariablesMap: now handles Entry, ComboTextEntry, - SpinButton, *Scale, Calendar and CheckBox. (Alberto Paro). - - -2.5.1: - -* Glade::Xml: Added connect_clicked() for easy connection of - buttons and menuitems signals. (Alberto Paro) -* Glade::VariablesMap: now handles Entry, ComboTextEntry, - SpinButton, *Scale, Calendar and CheckBox. (Alberto Paro). - -2.4.1: - -* gcc 3.4 build fix. (Bryan Forbes) - -2.4.0: - -The API is now stable. - -2.3.3: - -* get_widget(): - - Don't create a C++ object with a null C object, when the - C object can not be found. (jdhall) - - Really return existing widget wrappers. (Murray Cumming) -* Stop accidental need for doxygen when building from tarballs. - (Murray Cumming) -* win32: Test for -mms-bitfields / -fnative-struct. - -2.3.2: - -* Updated for new libsigc++ 2 syntax. - -2.3.1: - -Documentation: -- Generate and install devhelp file. -- beautify hmtl documentation, like the gtkmm docs. -- Install html documentation. - -2.3.0: - -This is the new unstable branch of the parallel-installable libglademm 2.4, -for use with gtkmm 2.4. - -2.1.2: - -* get_widget_derived() now returns an existing C++ instance if one exists, like - get_widget() already does. (Murray Cumming) - -2.1.1: - -No changes. Just recreated the tarball - it was not installing the .la files. - -2.1.0: - -This is the development phase for libglademm 2.2.0, -which will add API but will not break API or ABI. - -* Added Glade::Xml::get_widget_derived() and - examples/derived/ to demonstrate it. - This allows you to use Glade to layout your - own derived container widgets. Tell me what you - think. - (Murray Cumming) - - -2.0.1: - -* Rebuilt the tarball with newer autotools, fixing the $SED problem. - -2.0.0 - -* Glade::Xml::create() now throws an XmlError expection if it fails. - (Daniel Elstner) -* Minimise use of templates, to reduce application code size. - (Daniel Elstner) - -1.3.5 - - - - diff --git a/libs/libglademm/SConscript b/libs/libglademm/SConscript deleted file mode 100644 index 0d22ba243f..0000000000 --- a/libs/libglademm/SConscript +++ /dev/null @@ -1,25 +0,0 @@ -# -*- python -*- - -import os -import os.path -import glob - -Import('env libraries install_prefix') - -libglademm_files = glob.glob('libglademm/*.cc') - -libglademm = env.Copy() -libglademm.Merge([libraries['gtk2'], libraries['glade2'], libraries['sigc2'], libraries['glibmm2'], libraries['pangomm'], libraries['atkmm'], libraries['gdkmm2'], libraries['gtkmm2']]) - -libglade = libglademm.SharedLibrary('libglademm', libglademm_files) - -Default(libglade) - -env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour2'), libglade)) - -env.Alias('tarball', env.Distribute (env['DISTTREE'], - [ 'SConscript', 'libglademmconfig.h', 'libglademm.h'] + - libglademm_files + - glob.glob('libglademm/*.h') + - glob.glob('libglademm/private/*.h') - )) diff --git a/libs/libglademm/libglademm.h b/libs/libglademm/libglademm.h deleted file mode 100644 index fb37dfb10d..0000000000 --- a/libs/libglademm/libglademm.h +++ /dev/null @@ -1,31 +0,0 @@ -/* $Id$ */ -/* libglademm - a C++ wrapper for libglade - * - * Copyright 1999-2001 Free Software Foundation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef LIBGLADEMM_H -#define LIBGLADEMM_H - -/* libglademm version. */ -extern const int libglademm_major_version; -extern const int libglademm_minor_version; -extern const int libglademm_micro_version; - -#include - -#endif /* #ifndef LIBGLADEMM_H */ diff --git a/libs/libglademm/libglademm/init.cc b/libs/libglademm/libglademm/init.cc deleted file mode 100644 index 5e394a8a40..0000000000 --- a/libs/libglademm/libglademm/init.cc +++ /dev/null @@ -1,34 +0,0 @@ -// -*- c++ -*- -/* $Id$ */ - -/* init.cc - * - * Copyright 2001 Free Software Foundation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include - -namespace Gnome -{ - -namespace Glade -{ - - -} //namespace Glade -} //namespace Gnome diff --git a/libs/libglademm/libglademm/init.h b/libs/libglademm/libglademm/init.h deleted file mode 100644 index 8924769150..0000000000 --- a/libs/libglademm/libglademm/init.h +++ /dev/null @@ -1,38 +0,0 @@ -// -*- c++ -*- -#ifndef _LIBGLADEMM_INIT_H -#define _LIBGLADEMM_INIT_H -/* $Id$ */ - -/* init.h - * - * Copyright 2001 Free Software Foundation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -namespace Gnome -{ - -namespace Glade -{ - - - -} /* namespace Glade */ -} //namespace Gnome - -#endif //_LIBGLADEMM_INIT_H - diff --git a/libs/libglademm/libglademm/private/xml_p.h b/libs/libglademm/libglademm/private/xml_p.h deleted file mode 100644 index e69f6798cc..0000000000 --- a/libs/libglademm/libglademm/private/xml_p.h +++ /dev/null @@ -1,50 +0,0 @@ -// -*- c++ -*- -// Generated by gtkmmproc -- DO NOT MODIFY! -#ifndef _LIBGLADEMM_XML_P_H -#define _LIBGLADEMM_XML_P_H -#include - -#include - -namespace Gnome -{ - -namespace Glade -{ - -class Xml_Class : public Glib::Class -{ -public: -#ifndef DOXYGEN_SHOULD_SKIP_THIS - typedef Xml CppObjectType; - typedef GladeXML BaseObjectType; - typedef GladeXMLClass BaseClassType; - typedef Glib::Object_Class CppClassParent; - typedef GObjectClass BaseClassParent; - - friend class Xml; -#endif /* DOXYGEN_SHOULD_SKIP_THIS */ - - const Glib::Class& init(); - - static void class_init_function(void* g_class, void* class_data); - - static Glib::ObjectBase* wrap_new(GObject*); - -protected: - - //Callbacks (default signal handlers): - //These will call the *_impl member methods, which will then call the existing default signal callbacks, if any. - //You could prevent the original default signal handlers being called by overriding the *_impl method. - - //Callbacks (virtual functions): - static GType lookup_type_vfunc_callback(GladeXML* self, const char* classname); - }; - - -} // namespace Glade - -} // namespace Gnome - -#endif /* _LIBGLADEMM_XML_P_H */ - diff --git a/libs/libglademm/libglademm/variablesmap.cc b/libs/libglademm/libglademm/variablesmap.cc deleted file mode 100644 index 57d9785bc3..0000000000 --- a/libs/libglademm/libglademm/variablesmap.cc +++ /dev/null @@ -1,199 +0,0 @@ -/* variablesmap.cc - * - * Copyright (C) 2002 The libglademm Development Team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include -#include -#include -#include - -namespace Gnome -{ - -namespace Glade -{ - -VariablesMap::VariablesMap(const Glib::RefPtr& glade) -: m_refGlade(glade) -{ -} - -VariablesMap::~VariablesMap() -{ -} - - -void VariablesMap::connect_widget(const Glib::ustring& widget_name, bool& variable) -{ - Gtk::ToggleButton* pToggleButton = 0; - m_refGlade->get_widget(widget_name, pToggleButton); //Glade::Xml will complain if it is not a ToggleButton. - if(pToggleButton) - { - m_mapWidgetsToVariables[pToggleButton] = (void*)(&variable); - } -} - -void VariablesMap::connect_widget(const Glib::ustring& widget_name, Glib::ustring& variable) -{ - Gtk::Widget* pWidget = 0; - m_refGlade->get_widget(widget_name, pWidget); - - Gtk::Entry* pEntry = dynamic_cast(pWidget); //it mange both Gtk::entry and Gtk::SpinButton - Gtk::ComboBoxEntry* pComboBoxEntry = dynamic_cast(pWidget); - if(pEntry) - { - m_mapWidgetsToVariables[pEntry] = (void*)(&variable); - } - if(pComboBoxEntry) - { - m_mapWidgetsToVariables[pComboBoxEntry] = (void*)(&variable); - } -} - -void VariablesMap::connect_widget(const Glib::ustring& widget_name, double& variable) -{ - Gtk::Widget* pWidget = 0; - m_refGlade->get_widget(widget_name, pWidget); - - Gtk::Scale* pScale = dynamic_cast(pWidget); - if(pScale) - { - m_mapWidgetsToVariables[pScale] = (void*)(&variable); - } -} - -void VariablesMap::connect_widget(const Glib::ustring& widget_name, Glib::Date& variable) -{ - Gtk::Widget* pWidget = 0; - m_refGlade->get_widget(widget_name, pWidget); - - Gtk::Calendar* pCalendar = dynamic_cast(pWidget); - if(pCalendar) - { - m_mapWidgetsToVariables[pCalendar] = (void*)(&variable); - } -} - -void VariablesMap::transfer_widgets_to_variables() -{ - if(validate_widgets()) //If the widgets' data is correct. Useful to override. - { - for(type_mapWidgetsToVariables::iterator iter = m_mapWidgetsToVariables.begin(); iter != m_mapWidgetsToVariables.end(); ++iter) - { - transfer_one_widget(iter->first, true); //true = to_variable. - } - } -} - -void VariablesMap::transfer_variables_to_widgets() -{ - for(type_mapWidgetsToVariables::iterator iter = m_mapWidgetsToVariables.begin(); iter != m_mapWidgetsToVariables.end(); ++iter) - { - transfer_one_widget(iter->first, false); //false = to_widget. - } -} - - -void VariablesMap::transfer_one_widget(Gtk::Widget* pWidget, bool to_variable) -{ - //Find the widget in the map: - type_mapWidgetsToVariables::iterator iterFind = m_mapWidgetsToVariables.find(pWidget); - if(iterFind != m_mapWidgetsToVariables.end()) - { - //Get the variable for the widget: - void* pVariable = iterFind->second; - if(pVariable) - { - //Cast the variable appropriately and set it appropriately: - Gtk::Entry* pEntry = dynamic_cast(pWidget); - Gtk::ComboBoxEntry* pComboBoxEntry = dynamic_cast(pWidget); - - Gtk::ToggleButton* pToggleButton = dynamic_cast(pWidget); //CheckButtons and RadioButtons. - Gtk::Scale* pScale = dynamic_cast(pWidget); - Gtk::Calendar* pCalendar = dynamic_cast(pWidget); - - if(pEntry) - { - Glib::ustring* pVar = (Glib::ustring*)(pVariable); - - if(to_variable) - (*pVar) = pEntry->get_text(); - else - pEntry->set_text(*pVar); - } - if(pComboBoxEntry) - { - Glib::ustring* pVar = (Glib::ustring*)(pVariable); - Gtk::Entry* pIEntry = dynamic_cast(pComboBoxEntry->get_child()); - - if(to_variable){ - if(pIEntry) - (*pVar) = pIEntry->get_text(); - } else { - if(pIEntry) - pIEntry->set_text(*pVar); - } - } - if(pToggleButton) - { - bool* pVar = (bool*)(pVariable); - - if(to_variable) - (*pVar) = pToggleButton->get_active(); - else - pToggleButton->set_active(*pVar); - } - if(pScale) - { - double* pVar = (double*)(pVariable); - - if(to_variable) - (*pVar) = pScale->get_value(); - else - pScale->set_value(*pVar); - } - if(pCalendar) - { - Glib::Date* pVar = (Glib::Date*)(pVariable); - - if(to_variable){ - guint year,month,day; - pCalendar->get_date(year,month,day); - (*pVar) = Glib::Date(day,(Glib::Date::Month)month,year); - } else { - pCalendar->select_day(pVar->get_day()); - pCalendar->select_month(pVar->get_month(), pVar->get_year()); - } - } - } - } -} - -bool VariablesMap::validate_widgets() -{ - //Override to add validation. - //TODO: We could add some automatic data-range and text-length validation. - return true; -} - - - -} /* namespace Glade */ -} /* namespace Gnome */ diff --git a/libs/libglademm/libglademm/variablesmap.h b/libs/libglademm/libglademm/variablesmap.h deleted file mode 100644 index af8bbcdbb9..0000000000 --- a/libs/libglademm/libglademm/variablesmap.h +++ /dev/null @@ -1,96 +0,0 @@ -/* variablesmap.h - * - * Copyright (C) 2002 The libglademm Development Team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef _LIBGLADEMM_VARIABLESMAP_H -#define _LIBGLADEMM_VARIABLESMAP_H - -#include -#include - -namespace Gnome -{ - -namespace Glade -{ - -/** Associates named Glade widgets with member variables. - * Use connect_widget() to link the widgets with variables that will contain their data. - * Then use transfer_widgets_to_variables() and transfer_variables_to_widgets() to get or set all of the variables at once. - * - * This is meant to be a bit like MFC's "Dialog Data Exchange and Validation". - * - * The association of widget and member varables follow this mapping: - * - * Gtk::Entry --> Glib::ustring - * Gtk::SpinBox --> Glib::ustring - * Gtk::ComboBoxEntry --> Glib::ustring - * Gtk::Scale --> double - * Gtk::Calendar --> Glib::Date - * Gtk::CheckBox --> bool - * Gtk::RadioButton --> bool - * - */ -class VariablesMap -{ -public: - explicit VariablesMap(const Glib::RefPtr& glade); - virtual ~VariablesMap(); - - ///For ToggleButton (CheckBox and RadioButton) - virtual void connect_widget(const Glib::ustring& widget_name, bool& variable); - - ///For Entry, ComboBoxEntry and SpinBox - virtual void connect_widget(const Glib::ustring& widget_name, Glib::ustring& variable); - - ///For Scale (HScale and VScale) - virtual void connect_widget(const Glib::ustring& widget_name, double& variable); - - ///For Calendar - virtual void connect_widget(const Glib::ustring& widget_name, Glib::Date& variable); - - ///Transfer data from the widget to the variable. - virtual void transfer_widgets_to_variables(); - - ///Transfer data from the variable to the widget. - virtual void transfer_variables_to_widgets(); - -protected: - - /** Override this to validate the data that the user enters into the widgets. - * The return value indicates whether the widgets' data is valid. - */ - virtual bool validate_widgets(); - - virtual void transfer_one_widget(Gtk::Widget* pWidget, bool to_variable); - - typedef std::map type_mapWidgetsToVariables; - type_mapWidgetsToVariables m_mapWidgetsToVariables; - - Glib::RefPtr m_refGlade; -}; - -} /* namespace Glade */ -} /* namespace Gnome */ - - - - -#endif /* _LIBGLADEMM_VARIABLESMAP_H */ - - diff --git a/libs/libglademm/libglademm/wrap_init.cc b/libs/libglademm/libglademm/wrap_init.cc deleted file mode 100644 index ff78f96a4f..0000000000 --- a/libs/libglademm/libglademm/wrap_init.cc +++ /dev/null @@ -1,50 +0,0 @@ - -#include - -// Disable the 'const' function attribute of the get_type() functions. -// GCC would optimize them out because we don't use the return value. -#undef G_GNUC_CONST -#define G_GNUC_CONST /* empty */ - -#include -#include -#include - -// #include the widget headers so that we can call the get_type() static methods: - -#include "xml.h" - -extern "C" -{ - -//Declarations of the *_get_type() functions: - -GType glade_xml_get_type(void); - -//Declarations of the *_error_quark() functions: - -} // extern "C" - - -//Declarations of the *_Class::wrap_new() methods, instead of including all the private headers: - -namespace Gnome { namespace Glade { class Xml_Class { public: static Glib::ObjectBase* wrap_new(GObject*); }; } } - -namespace Gnome { namespace Glade { - -void wrap_init() -{ - // Register Error domains: - -// Map gtypes to gtkmm wrapper-creation functions: - Glib::wrap_register(glade_xml_get_type(), &Gnome::Glade::Xml_Class::wrap_new); - - // Register the gtkmm gtypes: - Gnome::Glade::Xml::get_type(); - -} // wrap_init() - -} //Glade -} //Gnome - - diff --git a/libs/libglademm/libglademm/wrap_init.h b/libs/libglademm/libglademm/wrap_init.h deleted file mode 100644 index 59dcf4ae07..0000000000 --- a/libs/libglademm/libglademm/wrap_init.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _LIBGLADEMM_WRAP_INIT_H -#define _LIBGLADEMM_WRAP_INIT_H - -/* wrap_init.h - * - * Copyright (C) 1998-2001 The libglademm Development Team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -// wrap_init.cc is generated by tools/generate_wrap_init.pl - -namespace Gnome -{ - -namespace UI -{ - -void wrap_init(); - -} /* namespace UI */ - -} /* namespace Gnome */ - -#endif // _LIBGLADEMM_WRAP_INIT_H diff --git a/libs/libglademm/libglademm/xml.cc b/libs/libglademm/libglademm/xml.cc deleted file mode 100644 index 5b672bc582..0000000000 --- a/libs/libglademm/libglademm/xml.cc +++ /dev/null @@ -1,343 +0,0 @@ -// Generated by gtkmmproc -- DO NOT MODIFY! - -#include -#include - -/* $Id$ */ - -/* Copyright (C) 2002 The libglademm Development Team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include - -namespace Gnome -{ - -namespace Glade -{ - -XmlError::XmlError(const Glib::ustring& message) -: - message_ (message) -{} - -XmlError::~XmlError() throw() -{} - -XmlError::XmlError(const XmlError& other) -: - Glib::Exception (other), - message_ (other.message_) -{} - -XmlError& XmlError::operator=(const XmlError& other) -{ - message_ = other.message_; - return *this; -} - -Glib::ustring XmlError::what() const -{ - return message_; -} - - -Xml::Xml(const std::string& filename, const Glib::ustring& root, const Glib::ustring& domain) -: - Glib::ObjectBase(0), //Mark this class as gtkmmproc-generated, rather than a custom class, to allow vfunc optimisations. - Glib::Object(Glib::ConstructParams(xml_class_.init(), (char*) 0)) -{ - if(!glade_xml_construct(gobj(), filename.c_str(), root.empty() ? 0 : root.c_str(), - domain.empty() ? 0 : domain.c_str())) - { - throw XmlError("Failed to load glade file `" + Glib::filename_to_utf8(filename) + '\''); - } -} - -// TODO: we need glade_xml_construct_from_buffer() -Xml::Xml(const char* buffer, int size, const Glib::ustring& root, const Glib::ustring& domain) -: - Glib::ObjectBase(0), - Glib::Object((GObject*) glade_xml_new_from_buffer( - buffer, size, root.empty() ? 0 : root.c_str(), domain.empty() ? 0 : domain.c_str())) -{ - if(!gobj()) - throw XmlError("Failed to read glade input buffer"); -} - -// static -Glib::RefPtr Xml::create(const std::string& filename, - const Glib::ustring& root, const Glib::ustring& domain) -{ - return Glib::RefPtr(new Xml(filename, root, domain)); -} - -// static -Glib::RefPtr Xml::create_from_buffer(const char* buffer, int size, - const Glib::ustring& root, const Glib::ustring& domain) -{ - return Glib::RefPtr(new Xml(buffer, size, root, domain)); -} - -void Xml::reparent_widget(const Glib::ustring& name, Gtk::Container& container) -{ - Gtk::Widget* pWidget = 0; - get_widget(name, pWidget); - - g_return_if_fail(pWidget != 0); - - pWidget->reparent(container); -} - -Gtk::Widget* Xml::get_widget_checked(const Glib::ustring& name, GType type) -{ - // Get the widget from the glade file. - Gtk::Widget *const pWidget = get_widget(name); - - if(!pWidget) - { - g_critical("widget `%s' not found in glade file `%s'", name.c_str(), gobj()->filename); - return 0; - } - - // Check if it has the correct type. - if(!g_type_is_a(G_OBJECT_TYPE(pWidget->gobj()), type)) - { - g_critical("widget `%s' (in glade file `%s') is of type `%s' but `%s' was expected", - name.c_str(), gobj()->filename, G_OBJECT_TYPE_NAME(pWidget->gobj()), g_type_name(type)); - return 0; - } - - return pWidget; -} - -GtkWidget* Xml::get_cwidget(const Glib::ustring& name) -{ - GtkWidget* pCWidget = glade_xml_get_widget(gobj(), name.c_str()); - if(!pCWidget) - g_critical("Glade::Xml::get_cwidget(): glade_xml_get_widget() failed."); - - return pCWidget; -} - -// Custom coded so that we can custom-code the vfunc in the Xml class. -// This is marginally better than modifying gtkmmproc to allow this. -// -GType Xml_Class::lookup_type_vfunc_callback(GladeXML* self, const char* classname) -{ - CppObjectType *const obj = dynamic_cast( - Glib::ObjectBase::_get_current_wrapper((GObject*) self)); - - if(obj) - { - try - { - return obj->lookup_type_vfunc(Glib::convert_const_gchar_ptr_to_ustring(classname)); - } - catch(...) - { - Glib::exception_handlers_invoke(); - } - } - else - { - BaseClassType *const base = static_cast( - g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class. - ); - - if(base && base->lookup_type) - return (*base->lookup_type)(self, classname); - } - - return 0; -} - -GType Xml::lookup_type_vfunc(const Glib::ustring& classname) -{ - // See if there is a gtkmm version of the gclass: - Glib::ustring classname_prefixed ("gtkmm__"); // gtkmm uses a prefix - classname_prefixed += classname; - - GType gtype = g_type_from_name(classname_prefixed.c_str()); - - if(gtype == G_TYPE_INVALID) // if it's not a registered typename - { - // There's no gtkmm derived type, so just use the normal one. - gtype = g_type_from_name(classname.c_str()); - } - - return gtype; -} - -void Xml::connect_clicked(const Glib::ustring& widget_name, const sigc::slot& slot_ ) -{ - Gtk::Widget* pWidget = 0; - get_widget(widget_name, pWidget); - - Gtk::Button* pButton = dynamic_cast(pWidget); - Gtk::MenuItem* pMenuItem = dynamic_cast(pWidget); - - if(pButton) - pButton->signal_clicked().connect( slot_); - - if(pMenuItem) - pMenuItem->signal_activate().connect( slot_ ); -} - -} // namespace Glade -} // namespace Gnome - - -namespace -{ -} // anonymous namespace - - -namespace Glib -{ - -Glib::RefPtr wrap(GladeXML* object, bool take_copy) -{ - return Glib::RefPtr( dynamic_cast (Glib::wrap_auto ((GObject*)(object), take_copy)) ); - //We use dynamic_cast<> in case of multiple inheritance. -} - -} /* namespace Glib */ - - -namespace Gnome -{ - -namespace Glade -{ - - -/* The *_Class implementation: */ - -const Glib::Class& Xml_Class::init() -{ - if(!gtype_) // create the GType if necessary - { - // Glib::Class has to know the class init function to clone custom types. - class_init_func_ = &Xml_Class::class_init_function; - - // This is actually just optimized away, apparently with no harm. - // Make sure that the parent type has been created. - //CppClassParent::CppObjectType::get_type(); - - // Create the wrapper type, with the same class/instance size as the base type. - register_derived_type(glade_xml_get_type()); - - // Add derived versions of interfaces, if the C type implements any interfaces: - } - - return *this; -} - -void Xml_Class::class_init_function(void* g_class, void* class_data) -{ - BaseClassType *const klass = static_cast(g_class); - CppClassParent::class_init_function(klass, class_data); - - klass->lookup_type = &lookup_type_vfunc_callback; - } - - -Glib::ObjectBase* Xml_Class::wrap_new(GObject* object) -{ - return new Xml((GladeXML*)object); -} - - -/* The implementation: */ - -GladeXML* Xml::gobj_copy() -{ - reference(); - return gobj(); -} - -Xml::Xml(const Glib::ConstructParams& construct_params) -: - Glib::Object(construct_params) -{} - -Xml::Xml(GladeXML* castitem) -: - Glib::Object((GObject*)(castitem)) -{} - -Xml::~Xml() -{} - - -Xml::CppClassType Xml::xml_class_; // initialize static member - -GType Xml::get_type() -{ - return xml_class_.init().get_type(); -} - -GType Xml::get_base_type() -{ - return glade_xml_get_type(); -} - - -std::string Xml::get_filename() const -{ - return Glib::convert_const_gchar_ptr_to_stdstring(gobj()->filename); -} - -Gtk::Widget* Xml::get_widget(const Glib::ustring& name) -{ - return Glib::wrap(glade_xml_get_widget(gobj(), name.c_str())); -} - -Glib::ListHandle Xml::get_widget_prefix(const Glib::ustring& name) -{ - return Glib::ListHandle(glade_xml_get_widget_prefix(gobj(), name.c_str()), Glib::OWNERSHIP_SHALLOW); -} - -std::string Xml::relative_file(const std::string& filename) const -{ - return Glib::convert_return_gchar_ptr_to_stdstring(glade_xml_relative_file(const_cast(gobj()), filename.c_str())); -} - -Glib::ustring Xml::get_widget_name(Gtk::Widget& widget) -{ - return Glib::convert_const_gchar_ptr_to_ustring(glade_get_widget_name((widget).gobj())); -} - -Glib::RefPtr Xml::get_widget_tree(Gtk::Widget& widget) -{ - - Glib::RefPtr retvalue = Glib::wrap(glade_get_widget_tree((widget).gobj())); - - if(retvalue) - retvalue->reference(); //The function does not do a ref for us. - return retvalue; -} - - -} // namespace Glade - -} // namespace Gnome - - diff --git a/libs/libglademm/libglademm/xml.h b/libs/libglademm/libglademm/xml.h deleted file mode 100644 index b0e5c440f7..0000000000 --- a/libs/libglademm/libglademm/xml.h +++ /dev/null @@ -1,348 +0,0 @@ -// -*- c++ -*- -// Generated by gtkmmproc -- DO NOT MODIFY! -#ifndef _LIBGLADEMM_XML_H -#define _LIBGLADEMM_XML_H - -#include - -/* $Id$ */ - -/* Copyright (C) 2002 The libglademm Development Team - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - - -#ifndef DOXYGEN_SHOULD_SKIP_THIS -typedef struct _GladeXML GladeXML; -typedef struct _GladeXMLClass GladeXMLClass; -#endif /* DOXYGEN_SHOULD_SKIP_THIS */ - - -namespace Gnome -{ - -namespace Glade -{ class Xml_Class; } // namespace Glade - -} // namespace Gnome -namespace Gnome -{ - -namespace Glade -{ - -class XmlError : public Glib::Exception -{ -public: - explicit XmlError(const Glib::ustring& message); - virtual ~XmlError() throw(); - - XmlError(const XmlError& other); - XmlError& operator=(const XmlError& other); - - virtual Glib::ustring what() const; - -private: - Glib::ustring message_; -}; - - -class Xml : public Glib::Object -{ - -#ifndef DOXYGEN_SHOULD_SKIP_THIS - -public: - typedef Xml CppObjectType; - typedef Xml_Class CppClassType; - typedef GladeXML BaseObjectType; - typedef GladeXMLClass BaseClassType; - -private: friend class Xml_Class; - static CppClassType xml_class_; - -private: - // noncopyable - Xml(const Xml&); - Xml& operator=(const Xml&); - -protected: - explicit Xml(const Glib::ConstructParams& construct_params); - explicit Xml(GladeXML* castitem); - -#endif /* DOXYGEN_SHOULD_SKIP_THIS */ - -public: - virtual ~Xml(); - -#ifndef DOXYGEN_SHOULD_SKIP_THIS - static GType get_type() G_GNUC_CONST; - static GType get_base_type() G_GNUC_CONST; -#endif - - ///Provides access to the underlying C GObject. - GladeXML* gobj() { return reinterpret_cast(gobject_); } - - ///Provides access to the underlying C GObject. - const GladeXML* gobj() const { return reinterpret_cast(gobject_); } - - ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. - GladeXML* gobj_copy(); - -private: - - - //Ignore private glade_xml functions. - -protected: - /** Loads a glade XML file. - * @throw XmlError - */ - Xml(const std::string& filename, const Glib::ustring& root, const Glib::ustring& domain); - - /** Reads glade XML data from memory. - * @throw XmlError - */ - Xml(const char* buffer, int size, const Glib::ustring& root, const Glib::ustring& domain); - - Gtk::Widget* get_widget_checked(const Glib::ustring& name, GType type); - GtkWidget* get_cwidget(const Glib::ustring& name); - -public: - typedef Gnome::Glade::XmlError Error; - - /** Loads a glade XML file. - * @throw XmlError - */ - static Glib::RefPtr create(const std::string& filename, - const Glib::ustring& root = Glib::ustring(), - const Glib::ustring& domain = Glib::ustring()); - - /** Reads glade XML data from memory. - * @throw XmlError - */ - static Glib::RefPtr create_from_buffer(const char* buffer, int size, - const Glib::ustring& root = Glib::ustring(), - const Glib::ustring& domain = Glib::ustring()); - - std::string get_filename() const; - -//void glade_xml_signal_connect (GladeXML *self, -// const char *handlername, -// GCallback func); -//void glade_xml_signal_connect_data (GladeXML *self, -// const char *handlername, -// GCallback func, -// gpointer user_data); -// -//void glade_xml_signal_autoconnect (GladeXML *self); -// -// -//typedef void (*GladeXMLConnectFunc) (const gchar *handler_name, -// GObject *object, -// const gchar *signal_name, -// const gchar *signal_data, -// GObject *connect_object, -// gboolean after, -// gpointer user_data); -// -// -//void glade_xml_signal_connect_full (GladeXML *self, -// const gchar *handler_name, -// GladeXMLConnectFunc func, -// gpointer user_data); -// -//void glade_xml_signal_autoconnect_full (GladeXML *self, -// GladeXMLConnectFunc func, -// gpointer user_data); -// -// - /** Get a widget from the glade file. - * For instance: - * @code - * Gtk::Table* pTable = dynamic_cast(refXml->get_widget("mytable")); - * @endcode - * @param name The name of the widget. - * @return A pointer to the widget, or 0 on failure. - */ - - Gtk::Widget* get_widget(const Glib::ustring& name); - - /** This is for convenience. - * It allows for a shorter syntax with less repetition. For instance: - * @code - * Gtk::Table* pTable = 0; - * refXml->get_widget("mytable", pTable); - * @endcode - * This method prints a warning message to the console if the widget - * doesn't exist or has the wrong type, so you don't need to check that - * manually. - * @param name The name of the widget. - * @retval widget A pointer to the widget, or 0 on failure. - * @return The value of @a widget. - */ - template inline - T_Widget* get_widget(const Glib::ustring& name, T_Widget*& widget) - { - // The dynamic_cast<> should never fail if get_widget_checked() succeeded. - widget = dynamic_cast(this->get_widget_checked(name, T_Widget::get_base_type())); - - if(!widget) - g_critical("Gnome::Glade::Xml::get_widget(): dynamic_cast<> failed."); - - return widget; - } - - /** This provides a pointer to a widget whose details are specified in the Glade file, but which is implemented - * by your own derived class. Your class must have a constructor like so: - * @code - * DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr& refGlade) - * : Gtk::Dialog(cobject) //Calls the base class constructor - * @endcode - * - * For instance: - * @code - * Gtk::DerivedBox* pBox = 0; - * refXml->get_widget_derived("mybox", pBox); - * @endcode - * - * @param name The name of the widget. - * @retval widget A pointer to the widget, or 0 on failure. - * @return The value of @a widget. - */ - template inline - T_Widget* get_widget_derived(const Glib::ustring& name, T_Widget*& widget) - { - // initialize input parameter - widget = 0; - - // Get the widget from the glade file. - typedef typename T_Widget::BaseObjectType cwidget_type; - cwidget_type* pCWidget = (cwidget_type*)get_cwidget(name); - - //The error was already reported by get_cwidget(). - if(!pCWidget) - return 0; - - //Check whether there is already a C++ wrapper instance associated with this C instance: - Glib::ObjectBase* pObjectBase = ObjectBase::_get_current_wrapper((GObject*)pCWidget); - - //If there is already a C++ instance, then return it again: - if(pObjectBase) - { - widget = dynamic_cast( Glib::wrap((GtkWidget*)pCWidget) ); - //Newer, more spec-complaint, versions of g++ not resolve a specific wrap() function in a template. - - //The dynamic cast checks that it is of the correct type. - //Somebody might be trying to call get_widget_derived() after already calling get_widget(), - //or after already calling get_widget_derived() with a different derived C++ type. - if(!widget) - g_critical("Gnome::Glade::Xml::get_widget_derived(): dynamic_cast<> failed. An existing C++ instance, of a different type, seems to exist."); - } - else - { - //Create a new C++ instance to wrap the existing C instance: - - //Set the output variable. We needed to do this because we can not template the return type. - Glib::RefPtr refThis(this); - refThis->reference(); //take a copy. - widget = new T_Widget(pCWidget, refThis); - } - - //We return it as well (we need the parameter as well, because C++ can not just template the return type.) - return widget; - } - - - Glib::ListHandle get_widget_prefix(const Glib::ustring& name); - - ///Take the widget from the glade-generated container and put it in another container. - void reparent_widget(const Glib::ustring& name, Gtk::Container& container); - - - std::string relative_file(const std::string& filename) const; - - - static Glib::ustring get_widget_name(Gtk::Widget& widget); - - static Glib::RefPtr get_widget_tree(Gtk::Widget& widget); - - - /** Connect a Gtk::Button's clicked signal or a Gtk::MenuItem's activated signal to a slot. - * - * For instance: - * @code - * refXml->connect_button("button", sigc::mem_fun(*this, &ExampleWindow::on_button_clicked) ); - * @endcode - * - * @param name The name of the widget. - * @param pslot The slot to connect to. - */ - void connect_clicked(const Glib::ustring& name, const sigc::slot& slot_); - - -///* interface for changing the custom widget handling */ -//typedef GtkWidget *(* GladeXMLCustomWidgetHandler) (GladeXML *xml, -// gchar *func_name, -// gchar *name, -// gchar *string1, -// gchar *string2, -// gint int1, -// gint int2, -// gpointer user_data); - -//void glade_set_custom_handler(GladeXMLCustomWidgetHandler handler, -// gpointer user_data); - - -protected: - - - virtual GType lookup_type_vfunc(const Glib::ustring& classname); - - -public: - -public: - //C++ methods used to invoke GTK+ virtual functions: - -protected: - //GTK+ Virtual Functions (override these to change behaviour): - - //Default Signal Handlers:: - - -}; - -} // namespace Glade -} // namespace Gnome - - -namespace Glib -{ - /** @relates Gnome::Glade::Xml - * @param object The C instance - * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. - * @result A C++ instance that wraps this C instance. - */ - Glib::RefPtr wrap(GladeXML* object, bool take_copy = false); -} - - -#endif /* _LIBGLADEMM_XML_H */ - diff --git a/libs/libglademm/libglademmconfig.h b/libs/libglademm/libglademmconfig.h deleted file mode 100644 index 9285bfc4f3..0000000000 --- a/libs/libglademm/libglademmconfig.h +++ /dev/null @@ -1,15 +0,0 @@ -/* libglade/libglademmconfig.h. Generated by configure. */ -#ifndef _LIBGLADEMM_CONFIG_H -#define _LIBGLADEMM_CONFIG_H 1 - -#include "gtkmmconfig.h" - -/* version numbers */ -#define LIBGLADEMM_MAJOR_VERSION 2 -#define LIBGLADEMM_MINOR_VERSION 6 -#define LIBGLADEMM_MICRO_VERSION 1 -#define LIBGLADEMM_VERSION "2.6.1" -#define LIBGLADE_VERSION_NEEDED_QUOTED "2.3.6" - -#endif /* _LIBGLADEMM_CONFIG_H */ - diff --git a/libs/sigc++2/ChangeLog b/libs/sigc++2/ChangeLog index 8e02aef058..23c59ee3fa 100644 --- a/libs/sigc++2/ChangeLog +++ b/libs/sigc++2/ChangeLog @@ -1,3 +1,604 @@ +2.0.17: + +2005-12-20 Murray Cumming + + * sigc++/macros/signal.h.m4: Make all operator--() methods + return by reference, like the operator++() methods. + Bug #304402 from John Profic. + +This is the libsigc-2-0 branch, for maintenance of libsigc++ 2.0. +API/ABI-compatible API-addition happens in the HEAD branch. + +2005-12-01 Murray Cumming + + * sigc++/functors/slot_base.cc: + slot_base::disconnect(): Set call_ to 0, + to invalidate the slot, even if parent_ is 0. + I think parent_ is, for instance, a signal, but + disconnect should still work on a slot that is not + connected to a signal, because a slot can be invoked + directly. + Fixes bug #311057 from James Lin. + +2005-12-01 Murray Cumming + + * tests/Makefile.am: + * tests/test_slot_disconnect.cc: Added test + case from bug #311057. + +2005-11-16 Philipp Berndt + + * sigc++/adaptors/macros/exception_catch.h.m4: Make member + exception_catch_functor::catcher_ + public so that it can be accessed by visit_each() + (bug fixed for generalization on 2004-11-06) + +2.0.16: + +2005-08-01 Neal E. Coombes + + * sigc++/signal_base.h: Updated the documentation for temp_slot_list + as requested in bug #303896. + +2005-08-01 Murray Cumming + + * sigc++/adaptors/hide.h.m4: Added missing + ) in call to sun_forte_workaround(), fixing + build on SUN Forte 5.5. Bug #312020. + +2005-08-19 Bruno Martinez + + * sigc++/type_traits.h: Renamed + ::sigc::is_base_and_derived::internal to + ::sigc::is_base_and_derived::internal_class + in order to avoid conflict with + namespace internal. + +2005-07-13 Murray Cumming + + * docs/manual/libsigc_manual.xml: Correct mentions of + 1.2 stuff instead of 2.0. Patch in bug #310213 from + pebble.org.uk. + +2005-07-13 Murray Cumming + + * docs/manual/libsigc_manual.xml: Fixed typo + found by Antonio Coralles. + +2005-07-09 Murray Cumming + + * sigc++/macros/signal.h.m4: Did the same (see + last commit) for slot_const_iterator and + slot_iterator_buf. + +2005-07-09 Murray Cumming + + * sigc++/macros/signal.h.m4: slot_iterator: + operator--() now returns value, not reference, like + operator++() already did. This caused crashes when + using --no-inline with g++. Bug #308651 by + Michael Andres. + +2.0.15: + +2005-07-04 Philip Langdale + + * sigc++/adaptors/macros/compose.h.m4: Add a setter typedef to + compose*_functor and use it instead of the (incorrect) getter + typedef in the compose* specialization of visit_each<>(). + This corrects the lifetime management of slots created with + compose(). Bug #308433. + +2005-06-13 Marek Rouchal + + * tests/test_deduce_result_type.cc: Specify int return type + for main(), to be more ISO C++ compliant. Bug #307478. + +2005-06-11 Andris Pavenis + + * sigc++/adaptors/lambda/macros/base.h.m4: + * sigc++/adaptors/lambda/macros/select.h.m4 + * sigc++/adaptors/macros/hide.h.m4: Specify only a type (not a + parameter name) for unused member function parameters + +2005-06-12 Paul Pogonyshev + + * configure.ac: + * scripts/cxx.m4: + * sigc++config.h.in: Add test for whether the compiler allows + referencing to member functions of the class/structure being + declared from a definition of a static member variable. + Supposedly a generic solution for GCC 3.2 compilation problems. + + * sigc++/type_traits.h: Define SIGC_WRAP_IS_BASE_CLASS_ based on + results of the above test. + (struct is_base_and_derived): Wrap up is_base_class_() functions + in an internal class if SIGC_WRAP_IS_BASE_CLASS_ is defined. + +2005-06-10 Murray Cumming + + * sigc++/adaptors/macros/bind.h.m4: + * sigc++/functors/macros/slot.h.m4: + * sigc++/macros/signal.h.m4: Use CALL_SIZE instead of + hard-coded 7s and 6s. + +2.0.14: + +2005-06-10 Murray Cumming + + * sigc++/visit_each.h: Make the + limit_derived_target::with_type inner class an outer class, + to satisfy the SUN CC 5.7 compiler, though I think it is a + compiler bug. Bug #302098 has the test case. + +2.0.13: + +2005-06-07 Murray Cumming + + * tests/test_compatibility.cc: Specify the actual class when + using test_int(), instead of the derived class, to fix the build + on SUN Forte CC 5.5. Patch from Friedemann Kleint in + Bug #305647 + +2005-06-07 Murray Cumming + + * sigc++/macros/signal.h.m4: signal_emit::emit(): Use scope to + ensure a certain order of destruction of the member variables, to + avoid a leak on MSVC++. Patch by Andreas Ames in Bug #306249. + +2005-06-07 Murray Cumming + + * sigc++/macros/signal.h.m4: Added comments about commenting-out + SIGC_TYPEDEF_REDEFINE_ALLOWED when using SUN Forte CC 5.7, + because I can not seem to create a test for it. + +2005-06-07 Murray Cumming + + * configure.ac: + * scripts/cxx_std.m4: + * sigc++/macros/signal.h.m4: + * sigc++config.h.in: Added check for + the non-standard SUN Forte reverse_iterator<>, + and used it. This is based on the same stuff in + gtkmm. + +2005-06-07 Murray Cumming + + * sigc++/visit_each.h: limit_derived_target(): Just some whitespace + changes. + +2005-05-16 Neal E. Coombes + + * sigc++/signal_base.h: Modified temp_slot_list to be a temporary view + into a slot list. Instead of emptying the original it now simply tacks + a placeholder to the end of the original. It then uses this as it's + 'end' iterator. This should allow for conscious recursiveness, as well + as inserting a slot to any position in the slot list during emittion. + See bug #303896. + +2005-06-04 Friedemann Kleint + + * sigc++/macros/limit_reference.h.m4: + visit_each() template specializations: + Mention the bool I_derives_trackable + template type, to fix the build on Solaris + Forte 5.5. + +2.0.12: + +2005-05-06 Régis Duchesne + + * sigc++/macros/limit_reference.h.m4 (added): + * sigc++/Makefile.am: + New class that just stores a reference, and makes sure that if the + reference derives from trackable, then the trackable reference will be + used instead of the derived reference in visit_each(). + * sigc++/functors/macros/mem_fun.h.m4: Better fix for bug #169225 by + Régis Duchesne and Christian Hammond, based on the new limit_reference + class. + * sigc++/adaptors/bound_argument.h (added): New class (built upon the + new limit_reference class) that handles all 3 kinds of bound arguments: + by value, by reference, and by constant reference. References are + unwrapped in the bound_argument's constructor. + * sigc++/adaptors/macros/bind.h.m4: Fix for bug #302327 by Régis + Duchesne. Bound arguments now need to know whether they are passed by + reference or not. So bind() now builds bind_functor instances using + 'reference_wrapper' types, instead of 'Foo &' types. The + bind_functor code is modified to compensate. + * sigc++/adaptors/macros/bind_return.h.m4: Similar fix for a similar + bug (unfiled) with bound return arguments. + * sigc++/reference_wrapper.h: + * sigc++/type_traits.h: + The reference_wrapper class is only used in bound_argument.h. Put + correct but unused code under #if 0. + * sigc++/adaptors/lambda/base.h: This file needs reference_wrapper.h, + but was incorrectly relying on type_traits.h to include it. + * tests/Makefile.am: + * tests/test_virtualbase_delete.cc (deleted): + * tests/test_virtualbase_delete_ref_param.cc (deleted): + * tests/test_limit_reference.cc (added): + Replaced test_virtualbase_delete*.cc with a simpler + test_limit_reference.cc which checks for all 3 aspects of the same bug + in one file. + * tests/test_bind_ref.cc: Slots must use 'Foo &' types. We were lucky + this broken usage worked before this change. The change in + type_traits.h made this bug obvious, by preventing the code to compile. + * tests/test_bind_return.cc: After my change, bind() and bind_return() + must use 'reference_wrapper' types. + * tests/test_custom.cc: Made this test a no-op (so it does not perturb + 'make check' on released versions of the library) and made it a + template ready to be modified by hackers. + +2005-05-01 Murray Cumming + + * sigc++/functors/slot_base.cc: + slot_base::slot_base(src): If the source + slot_base has a null rep->call_, meaning that the + slot is invalid, just return a default-constructed + slot, to prevent the crash shown in + tests/tests_copy_invalid_slot.cc. Bug #302515 by + Régis Duchesne. + +2005-05-01 Murray Cumming + + * sigc++/functors/macros/mem_fun.h.m4: bound_*<>: + Add a new is_base_and_derived + parameter to the template and thereby provide a + specialization for T_Obj types that derive from + sigc::trackable. This prevents a crash when casting + from the derived type to sigc::trackable after the + derived destructor has run. This cast can sometimes + fail when using multiple inheritance, at least with + g++. Bug #169225 by Régis Duchesne and Christian + Hammond. + * sigc++/type_traits.h: Add documenation for + the internal is_base_and_derived<> template, which + allows us to specialize other templates for certain + template types. + +2005-04-28 Murray Cumming + + * sigc++/type_traits.h: Added comments for users of + g++ 3.2. + +2005-04-28 Murray Cumming + + * tests/Makefile.am: + * tests/test_virtualbase_delete.cc: Added + simplified test case from bug #169225. We have a patch + to make this succeed but I am not ready to commit it + just yet. + +2005-04-27 Murray Cumming + + * tests/Makefile.am: + * tests/test_custom.cc: + Added a place to put extra test code, so I don't have + to keep installing my crazy libsigc++ versions. + +2005-04-27 Murray Cumming + + * sigc++/visit_each.h: Revert back to the non-explicit + template call, because we can not specify the + template specialization so easily, because the + specializations have different numbers of types. + * tests/Makefile/am: + * tests/test_bind_ref.cc: Add a simple test only for + sigc::ref disconnection. + +2005-04-26 Murray Cumming + + * sigc++/visit_each.h: Use the explicit template + specialization, needed for Tru64 and AIX compilers. + This causes a crash in some uses of sigc::ref() + (when using g++ 3.3.4 or 3.3.5 , but not with 3.4) but + seems to fix a crash in some uses of multiple inheritance + (bug #169225). + * tests/test_bind.cc: Comment out the crashing (not with + g++ 3.4) use of sigc::ref() with an explanatory comment. + +2.0.11: + +2005-03-09 Cedric Gustin + + * Makefile.am: Moved MSVC_Net2003 directory to SUBDIRS. + * MSVC_Net2003/Makefile.am: Added blank.cpp to EXTRA_DIST. + * MSVC_Net2003/libsigc++2_msvcNet2003.sln: Removed + test_accumulated and test_lambda projects as the tests are + disabled in the standard, configure-based build. + * MSVC_Net2003/MSVC_Net2003/libsigc++2_msvcNet2003.vcproj: + Generate a PDB file in the Debug target. + +2005-03-05 Murray Cumming + + * docs/website/stable.html: Mention actual supported compilers. + * docs/website/docs.html: Removed broken examples links. Change + reference link to the reference overview page. + +2005-02-23 Murray Cumming + + * sigc++/functors/slot_base.h: Make slot_base::operator=() public, to + fix the build with SUN Forte C++ 5.5 and Tru64. + +2.0.10: + +2005-02-20 Murray Cumming + + * tests/test_slot.cc, test_disconnect.cc: #included to avoid + an unresolved symbol error with the Tru64 compiler. Solution found by + Tim Mooney in bug #161503. + +2005-02-20 Martin Schulze + + * sigc++/signal_base.h: Add some documentation. + +2005-02-20 Martin Schulze + + * sigc++/signal_base.cc: Reset deferred_ flag to false in + signal_impl::sweep() (Neal E. Coombes). Partly fixes bug #167714. + +2005-02-11 Martin Schulze + + * docs/manual/Makefile.am: Set the correct group in post-html. + +2005-02-11 Murray Cumming + + * docs/website/doc.shtml: Fix typo in url for reference docs. Found by + James Lin. + +2005-02-06 Murray Cumming + + * sigc++/signal_base.h: temp_slot_list::begin(), end(): Actually + return the iterators. + +2005-02-03 Neal E. Coombes + + * sigc++/signal_base.h: Add temp_slot_list struct to facilitate + allowing new connections to a signal during an emittion without + affecting that emittion. + * sigc++/macros/signal.h.m4: Use the new struct temp_slot_list to + prevent connections made during an emittion from being called in the + same emittion (which has the potential of causing things like + infinite loops). This guarantees an emittion will be finite, as well + as maintaining any order of emittion guarantees that may have already + been in place. + +2.0.9: + +2005-02-02 Murray Cumming + + * sigc++/visit_each.h: visit_each_type(): Reverted the change, so that + we do not specify the template types ot visit_each<>(), because it + crashes on g++ 3.3.4 (but not g++ 3.4.2). Added a comment telling users + of AIX (and maybe IRIX MipsPro and Tru64) to use the alternative version + if they have compilation problems. + +2005-02-01 Murray Cumming + + * sigc++/adapators/macros/base.h.m4: Add sigc::var<>() documentation, + from Roger Ferrer Ibáñez in bug #149483. + +2005-02-01 Murray Cumming + + * sigc++/adaptors/macros/compose.h.m4: In the template specializations + of visit_each(): As before, specify the specific other template + specializations of visit_each that we use. Needed by AIX. + * tests/Makefile.am: Reenabled most tests, because AIX can now + build them. + +2005-02-01 Murray Cumming + + * sigc++/visit_each.h: visit_each_type(): Specify the specific + template specialization of visit_each<>() to use. The AIX compiler, + and possibly the Tru64 compiler, need this extra hint. + +2005-02-01 Murray Cumming + + * bind.h.m4: Define bind_functor::operator() inline because the AIX + compiler/linker sometimes fails to find it when it is defined + outside of the class. + +2.0.8: + +2005-01-30 Murray Cumming + + * sigc++/type_traits.h: is_base_and_derived: Added + avoid_gcc3_warning_(), to avoid an incorrect warning when using + g++ 3.3.5 + +2005-01-28 Liza Klerck + + * sigc++/functors/macros/mem_fun.h.m4: Add a sigc:: namespace + prefix to the nested use of visit_each(), to avoid ambiguity when + using 2 versions of the libsigc++ API inside different namespace. + +2005-01-27 Murray Cumming + + * sigc++/adaptors/macros/adaptor_trait.h.m4: Add a sigc:: namespace + prefix to the nested use of visit_each(), to avoid ambiguity when + using 2 versions of the libsigc++ API inside different namespace, + which is not very advisable anyway. Bug #165222 from + liza at trdlnk.com. + +2.0.7: + +2005-01-24 Cedric Gustin + + * sigc++config.h.in : Moved the SIGC_USING_STD macro definition + out of the SIGC_CONFIGURE section. We also need it for MSVC. + * MSVC_Net2003/.cvsignore : Added .def and .aps files + * MSVC_Net2003/Makefile.am: Rewrote rule for local copy of + sigc++config.h (required for 'make distcheck'). + * MSVC_Net2003/libsigc++2_msvcNet2003.sln: Added test_retype and + test_disconnect_during_emit tests. + * MSVC_Net2003/tests/test_disconnect_during_emit/*, + MSVC_Net2003/tests/test_retype/*: Initial commit. + +2005-01-21 Murray Cumming + + * tests/: Disabled the test_accumulator, test_bind, and test_compose + tests, and part of test_mem_fun because the AIX xlC compiler can not + build them, but it can still do most things, including the examples. + See the comments in tests/Makefile.am. + +2005-01-21 Murray Cumming + + * sigc++/adaptors/bind.h.m4: non-member operator()(): Specify the + extra nil arguments in the templated class name prefix. Oddly, the + AIX xlC compiler says that the type of the first parameter does not + match the template if you don't do this. + +2005-01-21 Murray Cumming + + * sigc++/type_traits.h: is_base_and_derived struct: Move the + is_base_class_() functions out of the inner class, because the AIX + xlC compiler does not like that - see the comments in the code. + * sigc++/adaptors/bind.h.m4: Add the extra nil template types to + the template specializations, as in slot and signal. + +2005-01-21 Murray Cumming + + * sigc++/functors/macros/slot.h.m4, sigc++/macros/signal.h.m4: + slot and signal template specialization for + various numbers of template args: In the class slot line, specify + all the remaining template types as null, instead of expecting the + compiler to guess them in itself. This partly fixes the build on + AIX with the xlC compiler. Bug #164685. + +2005-01-19 Murray Cumming + + * sigc++/type_traits: struct is_base_and_derived: Make the test inner + struct a friend, so that it can use the big inner struct. This is + required by the Tru64 compiler. + * sigc++/adaptors/lambda/base.h: Put the unwrap_lambda_value() + definitions at the top, because Tru64 (understandably) needs them to + be declared before use. + +2005-01-19 Murray Cumming + + * scripts/: Added cxx_std.m4, with a test copied from + glibmm/scripts/cxx_std.m4 to check if the compiler has the std:: + namespace. + * sigcconfig.h: #undef the new #define and add SIGC_USING_STD(), + like GLIBMM_USING_STD, to put stuff in the std:: namespace when it + is not there already, + * configure.in: Used the new test. + * tests/*: Uses SIG_USING_STD() for every std:: thing that we use. + This is needed by the Tru64 and HP-UX compilers when using their + defaults. + +2005-01-19 Murray Cumming + + * configure.in: AC_INIT(): Provide the extra tarball name parameter, + so that it does not create a libsigc--- tarball. + +2005-01-19 Murray Cumming + + * configure.in: AC_INIT(): Use libsigc++ instead of sigc++, attempting + to get the correct tarball name. + +2005-01-18 Murray Cumming + + * configure.in: Used the autoconf 2.93 and AM_INIT_AUTOMAKE() + technique to specify ustar format for the tarball, to prevent files + with long file names from appearing at the top of the tarball. + Based on the same fix in gtkmm 2.6. + +2005-01-18 Murray Cumming + + * sigc++/functors/macros/slot_h.m4: Specify the base class when + using the rep_ member variable. This stops the HP-UX aCC compiler + from saying that a Nonstatic member is referenced in a nested class, + local class or static member initializer. Bug #150719. + +2005-01-18 Murray Cumming + + * Bug #159597 - patch from e97_far at e.kth.se to replace C-style + casts with reinterpret_cast<> and static_cast<> to avoid warnings. + +2005-01-17 Murray Cumming + + * docs/manual/Makefile.am: Specifying html/index.html instead of + just the html directory as a target seems to fix distcheck problems. + I can also now confirm that the install works on solaris, when using + gmake, though not when using make. + +2005-01-17 Murray Cumming + + * MSVC_Net2004/Makefile.am: Add built files to DISTCLEANFILES to fix + the distcheck. + * docs/reference/Makefile.am, manual/Makefile.am: Specify $srcdir in + paths, to fix distcheck of the manual, and maybe fix install problems + on Solaris. + +2005-01-11 Murray Cumming + + * docs/website/stable.html: Updated the text about binary packages. + * docs/website/docs.html: Link to the 2.0 documentation instead of the + 1.2 documentation. + +2004-12-17 GregSchussman + + * glossary.shtml: Clean up punctuation, make definitions complete + sentences, and add clarifications for certain definitions according to + what Murray Cumming's suggestions and answers to my questions. + Bug #161580. + +2005-01-11 Murray Cumming + + * docs/: Added manual, copied from the libsigc++-1.2 cvs module, + and updated it for the new 2.0 API. + +2005-01-11 Murray Cumming + + * docs/: Added website, copied from the libsigc++-1.2 cvs module. + We will use it from here from now on. + +2004-12-11 Cedric Gustin + + * configure.ac : parse version tags at configure time (for + sigc-2.0.rc). + * MSVC_Net2003/sigc-2.0.rc.in : New resource file. + * MSVC_Net2003/Makefile.am: include sigc-2.0.rc in distribution. + +2004-12-08 Cedric Gustin + + * MSVC_Net2003/Makefile.am: get sigc++config.h from $(top_builddir) + instead of $(top_srcdir). + +2004-12-08 Cedric Gustin + + * MSVC_Net2003/*/*.vcproj: Renamed libsigc++ target to + sigc-2.0d.dll (Debug) and sigc-2.0.dll (Release). Added + $(SolutionDir) and $(SolutionDir)\.. to "Additional Include + Directories" in tests projects. + * sigc++config.h.in: Rewrote dllexport/dllimport macros for + MSVC, for better consistency with glibmm/gtkmm. + * MSVC_Net2003/Makefile.am: copy sigc++config.h from $(top_srcdir) + at build time. + +2004-11-27 Murray Cumming + + * configure.in: Revert the AC_PROG_LIBTOOL change, so that this builds + with actually released libtool versions, and in jhbuild, so that it + gets testing. + +2004-11-06 Martin Schulze + + * sigc++/adaptors/macros/exception_catch.h.m4: Make catcher_ member + public so that it can be accessed by visit_each() (bug reported on + ml by Philip Langdale ). + +2004-10-24 Martin Schulze + + * MSVC_Net2003/*/*.vcproj: Link with the "multithreaded DLL" runtime + libraries and enable RTTI for the MSVC build + (patch from Timothy M. Shead ). + * MSVC_Net2003/*/.cvsignore: Hide generated build files from cvs + (patch from Timothy M. Shead ). + +2.0.6: + 2004-10-12 Martin Schulze * MSVC_Net2003/*/*.vcproj, MSVC_Net2003/blank.cpp: Fix project files diff --git a/libs/sigc++2/Makefile.am b/libs/sigc++2/Makefile.am index 03d67389c6..64c25e5ea8 100644 --- a/libs/sigc++2/Makefile.am +++ b/libs/sigc++2/Makefile.am @@ -5,7 +5,7 @@ EXTRA_DIST = autogen.sh sigc++config.h.in libsigc++-2.0.spec.in # ACLOCAL_FLAGS = -I scripts SUBDIRS = sigc++ -DIST_SUBDIRS = $(SUBDIRS) +DIST_SUBDIRS = $(SUBDIRS) sigc_configdir = $(libdir)/sigc++-2.0/include sigc_config_DATA = sigc++config.h @@ -28,3 +28,4 @@ dist-hook: echo "**********************************************************"; \ echo; echo \ cp libsigc++-2.0.spec $(distdir) + diff --git a/libs/sigc++2/NEWS b/libs/sigc++2/NEWS index 83c29f5626..e13c7dda96 100644 --- a/libs/sigc++2/NEWS +++ b/libs/sigc++2/NEWS @@ -1,21 +1,107 @@ -*** libsigc++ 2.0: +2.0.17: -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. +* slot::disconnect(): Make this work. + sigc::connection::disconnect() already worked. + (James Lin, Murray Cumming) +* visit_each compilation problem fixed. + (Philipp Berndt) -libsigc++ is used by gtkmm to wrap the GTK+ signal system. It does not depend -on GTK or gtkmm. +2.0.16: -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. +* Fixed build for SUN Forte C++ 5.5 +* Fixed build for MSVC++ 7.1 +* Fixed crash when using --no-inline with g++. -This version of libsigc++ needs GNU g++ 3.2 or higher to compile. +2.0.15: +* g++ 3.2 (and Mac OS X g++ 3.3) build fix. + (Paul Pogonyshev) +* Compose: Fix slot lifetime regression introduced in + 2.0.9. (Philip Langdale) +* tests: Small ISO C++ correctness fix (Marek Rouchal) +* Don't specify unused function parameter names. + (Andris Pavenis) + +2.0.14: + +* SUN Forte 5.7 build fix for ambiguity when using + inner template class. However, you still need the + patch in bug #302098 to finish the build. + +2.0.13: + +* signal_emit::emit(): Ensure the correct order of + destruction of the member variables, to avoid a leak. + (Andreas Ames, bug #306249) +* Allow recursive signal emission again. + (Neal E. Coombes, bug #303896) +* SUN Forte CC 5.5 build fixes: + - test_compatibility minor fix. + - visit_each() template specializations: + Mention the bool I_derives_trackable template type, + (Friedemann Kleint, bug #305647) + - Check for the non-standard SUN reverse_iterator, + and use alternative code if necessary. + (Murray Cumming) + +2.0.12: + +* Fixes crashes when using virtual inheritance, particularly + with bound by-reference parameters, caused by casting + from derived to base when the derived destructor has run. + (Régis Duchesne) + This might affect non-g++ compilers, so do tell us about + any problems. + +2.0.11: + +* Build fixes for SUN Forte, Tru64 + (Murray Cumming), and MSVC++ (Cedric Gustin). + +2.0.10: + +* tests: Include to avoid unresolved symbols on Tru64. + (Tim Mooney) +* When signal handlers are connected made during an emit + of the same signal, prevent them from being called in the + same emit, to prevent infinite loops. + (Neal E. Coombes) +* Performance improvement in a corner case. + (Neal E. Coombes). + +2.0.9: + +* sigc::bind() now works with the AIX and Tru64 compilers. + See the comments in sigc++/visit_each.h: visit_each_type() + if you have compilation problems. + (Murray Cumming) +* sigc::var() is now documented. (Roger Ferrer Ibáñez) + +2.0.8: + +* Maybe avoid (incorrect) warning with g++ 3.3.5. + (Murray Cumming) +* Fix namespace ambiguity when using multiple + major versions of libsigc++. (Liza Klerck) + +2.0.7: + +* Now builds with the following compilers, in addition to +the existing GNU g++, SUN Forte CC 5.5, MSVC++ .Net 2003, +and Intel compilers: +- IBM AIX xlC v7 +- Tru64 C++ V6.5-042 +- IRIX MIPSpro 7.4.2m + (Older versions of all these compilers might also work.) + (Murray Cumming, www.thewrittenword.com) +* MSVC++ .Net 2003 build improvements. + (Cedric Gustin, Timothy M. Shead) +* Replace C-style casts with reinterpret_cast<> and + static_cast<>. (e97_far at e.kth.se). +* Documentation: Added manual, based on the manual in + libsigc++ 1.2, but updated for the new API. + (Murray Cumming) -*** ChangeLog summary: 2.0.6: diff --git a/libs/sigc++2/autogen.sh b/libs/sigc++2/autogen.sh index ebb519d373..09019ee536 100755 --- a/libs/sigc++2/autogen.sh +++ b/libs/sigc++2/autogen.sh @@ -3,12 +3,17 @@ srcdir=`dirname $0` test -z "$srcdir" && srcdir=. -#echo "Adding libtools." -#libtoolize --automake --copy --force +PKG_NAME="sigc++" + +echo "Adding libtools." +libtoolize --automake --copy --force echo "Building macros." aclocal -I "$srcdir/scripts" $ACLOCAL_FLAGS +#echo "Building config header." +#autoheader + echo "Building makefiles." automake --add-missing --copy diff --git a/libs/sigc++2/configure.ac b/libs/sigc++2/configure.ac index 3cb4724ba5..69ffddcd0e 100644 --- a/libs/sigc++2/configure.ac +++ b/libs/sigc++2/configure.ac @@ -3,27 +3,64 @@ 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++) +#We use pushdef here because we can't use shell variables before AC_INIT, but we want to use a variable with AC_INIT: +dnl thus make format_package-0.0.1.tar.gz +pushdef([FP_MAJOR_VERSION], [2]) +pushdef([FP_MINOR_VERSION], [0]) +pushdef([FP_MICRO_VERSION], [17]) +pushdef([FP_EXTRA_VERSION], []) +pushdef([FP_VERSION], FP_MAJOR_VERSION.FP_MINOR_VERSION.FP_MICRO_VERSION[]FP_EXTRA_VERSION) +# package name, version, support contact, tarball name. +AC_INIT([libsigc++], FP_VERSION, [libsigc-list@gnome.org], [libsigc++]) -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 AC_CONFIG_SRCDIR 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_CONFIG_SRCDIR([sigc++]) + +AC_PREREQ(2.59) + +######################################################################### +# Version and initialization +######################################################################### +[FP_MAJOR_VERSION]=FP_MAJOR_VERSION +[FP_MINOR_VERSION]=FP_MINOR_VERSION +[FP_MICRO_VERSION]=FP_MICRO_VERSION +[FP_EXTRA_VERSION]=FP_EXTRA_VERSION +[FP_VERSION]=FP_VERSION +popdef([FP_MAJOR_VERSION]) +popdef([FP_MINOR_VERSION]) +popdef([FP_MICRO_VERSION]) +popdef([FP_EXTRA_VERSION]) +popdef([FP_VERSION]) +FP_RELEASE=$FP_MAJOR_VERSION.$FP_MINOR_VERSION +AC_DEFINE_UNQUOTED(FP_MAJOR_VERSION, $FP_MAJOR_VERSION, [Major version of libsigc++]) +AC_DEFINE_UNQUOTED(FP_MINOR_VERSION, $FP_MINOR_VERSION, [Minor version of libsigc++]) +AC_DEFINE_UNQUOTED(FP_MICRO_VERSION, $FP_MICRO_VERSION, [Micro version of libsigc++]) +AC_SUBST(FP_VERSION) +AC_SUBST(FP_RELEASE) +AC_SUBST(FP_MAJOR_VERSION) +AC_SUBST(FP_MINOR_VERSION) +AC_SUBST(FP_MICRO_VERSION) dnl For automake. VERSION=$FP_VERSION PACKAGE=libsigc++ -dnl Initialize automake stuff -AM_INIT_AUTOMAKE($PACKAGE, $VERSION) +# Initialize automake stuff +# tar-ustar asks it to use a sensible tar format that can handle long filenames. +AM_INIT_AUTOMAKE([1.9 tar-ustar]) dnl Specify a configuration file: AC_CONFIG_HEADER(sigc++config.h) +dnl Macros to support windows platforms +AC_CYGWIN +#AC_MINGW32 +AC_EXEEXT + +dnl this package needs m4 +AC_CHECK_PROGS(M4, gm4 m4, m4) + dnl disable autoheader AUTOHEADER=':' @@ -34,16 +71,34 @@ dnl Using C compiler AC_PROG_CC AC_PROG_CPP +dnl Used for enabling the "-no-undefined" flag while generating DLLs +dnl Borrowed from the official gtk+-2 configure.in +AC_MSG_CHECKING([for some Win32 platform]) +case "$host" in + *-*-mingw*|*-*-cygwin*) + platform_win32=yes + ;; + *) + platform_win32=no + ;; +esac +AC_MSG_RESULT([$platform_win32]) +AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes") + dnl Using libtool AC_CONFIG_MACRO_DIR(scripts) -dnl LT_INIT -dnl AM_PROG_LIBTOOL +AC_LIBTOOL_WIN32_DLL +dnl: Use with libtool 1.5a instead of AM_PROG_LIBTOOL: LT_INIT +AM_PROG_LIBTOOL dnl Using C++ compiler AC_PROG_CXX AC_LANG_CPLUSPLUS SIGC_CXX_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD() +SIGC_CXX_SELF_REFERENCE_IN_MEMBER_INITIALIZATION() +SIGC_CXX_HAS_NAMESPACE_STD() +SIGC_CXX_HAS_SUN_REVERSE_ITERATOR() if test "X$config_error" = "Xyes" ; then AC_ERROR( @@ -61,4 +116,5 @@ AC_OUTPUT([ sigc++/Makefile libsigc++-2.0.spec + ]) diff --git a/libs/sigc++2/scripts/cxx.m4 b/libs/sigc++2/scripts/cxx.m4 index 8753b53827..11f1969399 100644 --- a/libs/sigc++2/scripts/cxx.m4 +++ b/libs/sigc++2/scripts/cxx.m4 @@ -47,6 +47,7 @@ AC_TRY_COMPILE( 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( @@ -92,3 +93,30 @@ AC_TRY_COMPILE( AC_MSG_RESULT([$sigcm_cxx_msvc_template_specialization_operator_overload]) ]) ]) + + +AC_DEFUN([SIGC_CXX_SELF_REFERENCE_IN_MEMBER_INITIALIZATION], [ +AC_MSG_CHECKING([if C++ compiler allows usage of member function in initialization of static member field.]) +AC_TRY_COMPILE( +[ + struct test + { + static char test_function(); + + // Doesn't work with e.g. GCC 3.2. However, if test_function() + // is wrapped in a nested structure, it works just fine. + static const bool test_value + = (sizeof(test_function()) == sizeof(char)); + }; +], +[], +[ + sigcm_cxx_self_reference_in_member_initialization=yes + AC_DEFINE([SIGC_SELF_REFERENCE_IN_MEMBER_INITIALIZATION],[1], + [does c++ compiler allows usage of member function in initialization of static member field.]) + AC_MSG_RESULT([$sigcm_cxx_self_reference_in_member_initialization]) +],[ + sigcm_cxx_self_reference_in_member_initialization=no + AC_MSG_RESULT([$sigcm_cxx_self_reference_in_member_initialization]) +]) +]) diff --git a/libs/sigc++2/scripts/cxx_std.m4 b/libs/sigc++2/scripts/cxx_std.m4 new file mode 100644 index 0000000000..b2ff03e385 --- /dev/null +++ b/libs/sigc++2/scripts/cxx_std.m4 @@ -0,0 +1,77 @@ +cv_cxx_has_namespace_std +## SIGC_CXX_HAS_NAMESPACE_STD() +## +## Test whether libstdc++ declares namespace std. For safety, +## also check whether several randomly selected STL symbols +## are available in namespace std. +## +## On success, #define SIGC_HAVE_NAMESPACE_STD to 1. +## +AC_DEFUN([SIGC_CXX_HAS_NAMESPACE_STD], +[ + AC_CACHE_CHECK( + [whether C++ library symbols are declared in namespace std], + [sigc_cv_cxx_has_namespace_std], + [ + AC_TRY_COMPILE( + [ + #include + #include + #include + #include + ],[ + using std::min; + using std::find; + using std::copy; + using std::bidirectional_iterator_tag; + using std::string; + using std::istream; + using std::cout; + ], + [sigc_cv_cxx_has_namespace_std="yes"], + [sigc_cv_cxx_has_namespace_std="no"] + ) + ]) + + if test "x${sigc_cv_cxx_has_namespace_std}" = "xyes"; then + { + AC_DEFINE([SIGC_HAVE_NAMESPACE_STD],[1], [Defined when the libstdc++ declares the std-namespace]) + } + fi +]) + +## SIGC_CXX_HAS_SUN_REVERSE_ITERATOR() +## +## Check for Sun libCstd style std::reverse_iterator, which demands more than just one template parameter. +## and #define SIGC_HAVE_SUN_REVERSE_ITERATOR if found. +## +AC_DEFUN([SIGC_CXX_HAS_SUN_REVERSE_ITERATOR], +[ + AC_REQUIRE([SIGC_CXX_HAS_NAMESPACE_STD]) + + AC_CACHE_CHECK( + [for non-standard Sun libCstd reverse_iterator], + [sigc_cv_cxx_has_sun_reverse_iterator], + [ + AC_TRY_COMPILE( + [ + #include + #ifdef SIGC_HAVE_NAMESPACE_STD + using namespace std; + #endif + ],[ + typedef reverse_iterator ReverseIter; + ], + [sigc_cv_cxx_has_sun_reverse_iterator="yes"], + [sigc_cv_cxx_has_sun_reverse_iterator="no"] + ) + ]) + + if test "x${sigc_cv_cxx_has_sun_reverse_iterator}" = "xyes"; then + { + AC_DEFINE([SIGC_HAVE_SUN_REVERSE_ITERATOR],[1]) + } + fi +]) + + diff --git a/libs/sigc++2/scripts/libtool.m4 b/libs/sigc++2/scripts/libtool.m4 deleted file mode 100644 index 1ceda32823..0000000000 --- a/libs/sigc++2/scripts/libtool.m4 +++ /dev/null @@ -1,5767 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 1996 -# -# 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 49 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_define([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# LT_INIT([OPTIONS]) -# -------------------------- -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([_LT_PROG_LTMAIN])dnl -AC_BEFORE([$0], [LT_LANG])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Set options -_LT_SET_OPTIONS([$1])dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# _LT_INIT - -# Old names: -AU_DEFUN([AC_PROG_LIBTOOL], [LT_INIT]) -AU_DEFUN([AM_PROG_LIBTOOL], [LT_INIT]) - - -# _LT_SETUP -# --------- -m4_define([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -AC_REQUIRE([AC_LIBTOOL_SYS_OLD_ARCHIVE])dnl -AC_REQUIRE([AC_LIBTOOL_SYS_MAX_CMD_LEN])dnl -AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl -AC_REQUIRE([AC_OBJEXT])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -AC_REQUIRE([AC_EXEEXT])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -AC_LIBTOOL_OBJDIR - -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -_LT_AC_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] - -# Same as above, but do not quote variable references. -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -ofile="$default_ofile" -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Use C for the default configuration in the libtool script -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PROG_LTMAIN -# --------------- -# In libtool itself `ltmain.sh' is in the build tree, but everything else -# ships it in the source tree, for completeness, if we find a copy in the -# build tree use that before falling back to auxdir. -# -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -AC_DEFUN([_LT_PROG_LTMAIN], -[_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -case $ac_aux_dir in - $srcdir) ltmain=./ltmain.sh ;; - $srcdir/*) ltmain=`expr "$ac_aux_dir" : "$srcdir/\(.*\)"`/ltmain.sh ;; -esac -test -f "$ltmain" || ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# --------------------------------------------------- -m4_define([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([$1], [^ *], [# ])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [[, ]], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------- -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# ---------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# ---------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_quote(m4_if([$2], [], - m4_quote(lt_decl_tag_varnames), - m4_quote(m4_shift($@)))), - m4_split(m4_normalize(m4_quote(_LT_TAGS))))]) -m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$echo "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$echo "X$" | $Xsed -e "$delay_single_quote_subst"`' -m4_define([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_define([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="[]_LT_TAGS[]"dnl -]) - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_define([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -# --------------------------------- -m4_define([_LT_AC_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_define([_LT_CONFIG_COMMANDS], -[AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=${ZSH_VERSION+.}:; export CDPATH; fi - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -compiler='$compiler_DEFAULT' - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ ]], lt_decl_quote_varnames); do - eval "lt_\$var=\\\\\\"\\\`\\\$echo \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ ]], lt_decl_dquote_varnames); do - eval "lt_\$var=\\\\\\"\\\`\\\$echo \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -done - -# Fix-up fallback echo if it was mangled by the above quoting rules. -case \$lt_echo in -*'\\\[$]0 --fallback-echo"')dnl " - lt_echo=\`\$echo "X\$lt_echo" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` - ;; -esac - -_LT_OUTPUT_LIBTOOL_INIT -]) -])#_LT_CONFIG_COMMANDS - - -# _LT_CONFIG(TAG) -# ---------------------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_define([_LT_CONFIG], -[_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - $rm -f "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by config.status (GNU $PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING - -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - rm='$rm' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - -# _LT_LANG(LANGNAME) -# ------------------ -m4_define([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_define([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java])]) - - -# _LT_AC_SYS_COMPILER -# ------------------- -AC_DEFUN([_LT_AC_SYS_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler]) -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU C compiler?]) - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_AC_SYS_LIBPATH_AIX -# ---------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -m4_define([_LT_AC_SYS_LIBPATH_AIX], -[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_AC_SYS_LIBPATH_AIX - - -# _LT_AC_SHELL_INIT(ARG) -# ---------------------- -m4_define([_LT_AC_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_AC_SHELL_INIT - - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -m4_define([_LT_AC_PROG_ECHO_BACKSLASH], -[_LT_AC_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<_LT_EOF -[$]* -_LT_EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -if test -z "$ECHO"; then -if test "X${echo_test_string+set}" != Xset; then -# find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -]) -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [echo], [1], - [An echo program that does not interpret backslashes]) -])# _LT_AC_PROG_ECHO_BACKSLASH - - -# _LT_AC_LOCK -# ----------- -AC_DEFUN([_LT_AC_LOCK], -[AC_REQUIRE([AC_OBJEXT])dnl -AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_AC_LOCK - - -# AC_LIBTOOL_SYS_OLD_ARCHIVE -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE], -[AC_CHECK_TOOL(AR, ar, false) -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1]) - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -])# AC_LIBTOOL_SYS_OLD_ARCHIVE - - -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - $2=yes - fi - fi - $rm conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# AC_LIBTOOL_COMPILER_OPTION - - -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ------------------------------------------------------------ -# Check whether the given compiler option works -m4_define([AC_LIBTOOL_LINKER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - else - $2=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# AC_LIBTOOL_LINKER_OPTION - - -# AC_LIBTOOL_SYS_MAX_CMD_LEN -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - *) - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ - = "XX$teststring$teststring") >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -_LT_DECL([max_cmd_len], [lt_cv_sys_max_cmd_len], [0], - [What is the maximum length of a command?]) -])# AC_LIBTOOL_SYS_MAX_CMD_LEN - - -# _LT_AC_CHECK_DLFCN -# -------------------- -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_AC_CHECK_DLFCN - - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line __oline__ "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - - -# AC_LIBTOOL_DLOPEN_SELF -# ------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# AC_LIBTOOL_DLOPEN_SELF - - -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -# --------------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -AC_REQUIRE([AC_OBJEXT])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* -]) -_LT_DECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# AC_LIBTOOL_PROG_CC_C_O - - -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -# ----------------------------------------- -# Check to see if we can do hard links to lock some files if needed -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -[AC_REQUIRE([AC_LIBTOOL_PROG_CC_C_O])dnl -AC_REQUIRE([_LT_AC_LOCK])dnl - -hard_links="nottested" -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS - - -# AC_LIBTOOL_OBJDIR -# ----------------- -AC_DEFUN([AC_LIBTOOL_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -])# AC_LIBTOOL_OBJDIR - - -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -# ---------------------------------------------- -# Check hardcoding attributes. -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_AC_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_AC_TAGVAR(runpath_var $1)" || - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_AC_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_AC_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_AC_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH - - -# AC_LIBTOOL_SYS_LIB_STRIP -# ------------------------ -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -[AC_REQUIRE([LT_AC_PROG_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) -fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# AC_LIBTOOL_SYS_LIB_STRIP - - -# AC_LIBTOOL_SYS_DYNAMIC_LINKER -# ----------------------------- -# PORTME Fill in your ld.so characteristics -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([LT_AC_PROG_EGREP]) -AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | $GREP ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - if test "$host_cpu" = m68k; then - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - else - dynamic_linker=no - fi - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | $GREP "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=yes - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]) -_LT_DECL([], [soname_spec], [1], - [The coded name of the library, if different from the real name]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [As "finish_cmds", except a single script fragment to be evaled but - not shown]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# AC_PATH_TOOL_PREFIX -# ------------------- -# find a file program which can recognise shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_REQUIRE([LT_AC_PROG_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins "file"])dnl -])# AC_PATH_TOOL_PREFIX - - -# AC_PATH_MAGIC -# ------------- -# find a file program which can recognise a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# AC_PATH_MAGIC - - -# AC_PROG_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH([gnu-ld], - [AC_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no]) -AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_REQUIRE([LT_AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` - while echo $ac_prog | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux*) - case $host_cpu in - alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' - else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method == "file_magic"]) -])# AC_DEPLIBS_CHECK_METHOD - - -# AC_PROG_NM -# ---------- -# find the pathname to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi - done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi]) -NM="$lt_cv_path_NM" -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD-compatible nm program])dnl -])# AC_PROG_NM - -# Old name: -AU_DEFUN([AM_PROG_NM], [AC_PROG_NM]) - - -# AC_CHECK_LIBM -# ------------- -# check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -])# AC_CHECK_LIBM - - -# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl convenience library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'m4_if($#, 1,[$1], ['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'m4_if($#, 1, [$1], ['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_CONVENIENCE - - -# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl installable library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided and an installed libltdl is not found, it is -# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_CHECK_LIB(ltdl, lt_dlinit, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'m4_if($#, 1, [$1], ['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'m4_if($#, 1, [$1], ['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_INSTALLABLE - - -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl - -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI - - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([LT_AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_NM])dnl -AC_REQUIRE([AC_OBJEXT])dnl -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris* | sysv5*) - symcode='[[BDRT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[[]] = -{ -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - - -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -# --------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - amigaos*) - if test "$host_cpu" = m68k; then - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - fi - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case "$cc_basename" in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | kfreebsd*-gnu) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC) - # KAI C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - icpc) - # Intel C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - cxx) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC) - # Rational C++ 2.4.1 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx) - # Digital/Compaq C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc) - # Lucid - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - if test "$host_cpu" = m68k; then - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - fi - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case "$cc_basename" in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - newsos6) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - linux*) - case $CC in - icc* | ecc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - ccc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sunos4*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - uts4*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then - AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1)], - [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# AC_LIBTOOL_PROG_COMPILER_PIC - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_REQUIRE([LT_AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_NM])dnl -AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)= - _LT_AC_TAGVAR(archive_expsym_cmds, $1)= - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_AC_TAGVAR(hardcode_automatic, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(inherit_rpath, $1)=no - _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown - _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_AC_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -_LT_EOF - fi - ;; - - amigaos*) - if test "$host_cpu" = m68k; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - fi - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sunos4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - linux*) - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test "x$supports_anon_versioning" = xyes; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~$echo "local: *; };" >> $output_objdir/$libname.ver~$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)=$_LT_AC_TAGVAR(archive_cmds, $1) - fi - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - if test "$host_cpu" = m68k; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - fi - # see comment about different semantics on the GNU ld section - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - bsdi4*) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${Wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case "$cc_basename" in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - dgux*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(inherit_rpath, $1)=yes - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_AC_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [fix_srcfile_path], [1], - [Fix the shell variable $srcfile for the compiler]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# AC_LIBTOOL_PROG_LD_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_define([_LT_LANG_C_CONFIG], -[AC_REQUIRE([LT_AC_PROG_EGREP]) -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' - -_LT_AC_SYS_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_AC_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | $GREP "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) - AC_LIBTOOL_PROG_COMPILER_PIC($1) - AC_LIBTOOL_PROG_CC_C_O($1) - AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) - AC_LIBTOOL_PROG_LD_SHLIBS($1) - AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) - AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) - AC_LIBTOOL_SYS_LIB_STRIP - AC_LIBTOOL_DLOPEN_SELF($1) - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case "$host_os" in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_define([_LT_LANG_CXX_CONFIG], -[AC_LANG_PUSH(C++) -AC_REQUIRE([LT_AC_PROG_EGREP]) -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(inherit_rpath, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cc - -# Object file extension for compiled C++ test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - AC_PROG_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${Wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes ; then - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | $GREP 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case "$cc_basename" in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - - dgux*) - case $cc_basename in - ec++) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - freebsd-elf*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - freebsd* | kfreebsd*-gnu) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - ;; - gnu*) - ;; - hpux9*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC) - # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(inherit_rpath, $1)=yes - ;; - linux*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc) - # Intel C++ - with_gnu_ld=yes - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - cxx) - # Compaq C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - mvs*) - case $cc_basename in - cxx) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - osf3*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ - $rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - lcc) - # Lucid - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. We must also pass each convience library through - # to the system linker between allextract/defaultextract. - # The C++ compiler will combine linker options so we - # cannot just pass the convience library names through - # without $wl. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP \"\-L\"" - fi - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) - test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_AC_TAGVAR(GCC, $1)="$GXX" - _LT_AC_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - AC_LIBTOOL_POSTDEP_PREDEP($1) - AC_LIBTOOL_PROG_COMPILER_PIC($1) - AC_LIBTOOL_PROG_CC_C_O($1) - AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) - AC_LIBTOOL_PROG_LD_SHLIBS($1) - AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) - AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) - AC_LIBTOOL_SYS_LIB_STRIP - AC_LIBTOOL_DLOPEN_SELF($1) - - _LT_CONFIG($1) -fi - -AC_LANG_POP -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -])# _LT_LANG_CXX_CONFIG - - -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------------------ -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ -# Dependencies to place before and after the object being linked: -_LT_AC_TAGVAR(predep_objects, $1)= -_LT_AC_TAGVAR(postdep_objects, $1)= -_LT_AC_TAGVAR(predeps, $1)= -_LT_AC_TAGVAR(postdeps, $1)= -_LT_AC_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - # The `*' in the case matches for architectures that use `case' in - # $output_verbose_cmd can trigger glob expansion during the loop - # eval without this substitution. - output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" - - for p in `eval $output_verbose_link_cmd`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then - _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then - _LT_AC_TAGVAR(predep_objects, $1)="$p" - else - _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then - _LT_AC_TAGVAR(postdep_objects, $1)="$p" - else - _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$rm -f confest.$objext - -case " $_LT_AC_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# AC_LIBTOOL_POSTDEP_PREDEP - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_define([_LT_LANG_F77_CONFIG], -[AC_REQUIRE([AC_PROG_F77]) -AC_LANG_PUSH(Fortran 77) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(inherit_rpath, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code=" subroutine t\n return\n end\n" - -# Code to be used in simple link tests -lt_simple_link_test_code=" program t\n end\n" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case "$host_os" in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix4* | aix5*) - test "$enable_shared" = yes && enable_static=no - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_AC_TAGVAR(GCC, $1)="$G77" - _LT_AC_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - AC_LIBTOOL_PROG_COMPILER_PIC($1) - AC_LIBTOOL_PROG_CC_C_O($1) - AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) - AC_LIBTOOL_PROG_LD_SHLIBS($1) - AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) - AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) - AC_LIBTOOL_SYS_LIB_STRIP - - _LT_CONFIG($1) -fi - -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_define([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ]) -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) - AC_LIBTOOL_PROG_COMPILER_PIC($1) - AC_LIBTOOL_PROG_CC_C_O($1) - AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) - AC_LIBTOOL_PROG_LD_SHLIBS($1) - AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) - AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) - AC_LIBTOOL_SYS_LIB_STRIP - AC_LIBTOOL_DLOPEN_SELF($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_define([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC]) -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${RC-"windres"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# _LT_LANG_RC_CONFIG - - -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])dnl -]) -AU_DEFUN([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) - -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) -AU_DEFUN([LT_AC_PROG_RC], [LT_PROG_RC]) - - -# LT_AC_PROG_EGREP -# ---------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -AC_DEFUN([LT_AC_PROG_EGREP], -[AC_REQUIRE([AC_PROG_EGREP]) -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long line]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -]) - - -# LT_AC_PROG_SED -# -------------- -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -AC_DEFUN([LT_AC_PROG_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# LT_AC_PROG_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_define([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -SED=$lt_cv_path_SED -AC_SUBST([SED]) -]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef diff --git a/libs/sigc++2/scripts/ltoptions.m4 b/libs/sigc++2/scripts/ltoptions.m4 deleted file mode 100644 index ea3089d330..0000000000 --- a/libs/sigc++2/scripts/ltoptions.m4 +++ /dev/null @@ -1,358 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# Written by Gary V. Vaughan - -# 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.]) -]) diff --git a/libs/sigc++2/scripts/ltsugar.m4 b/libs/sigc++2/scripts/ltsugar.m4 deleted file mode 100644 index c0f31aa63d..0000000000 --- a/libs/sigc++2/scripts/ltsugar.m4 +++ /dev/null @@ -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 -]) diff --git a/libs/sigc++2/scripts/ltversion.m4 b/libs/sigc++2/scripts/ltversion.m4 deleted file mode 100644 index 8b8db37ad4..0000000000 --- a/libs/sigc++2/scripts/ltversion.m4 +++ /dev/null @@ -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) -]) diff --git a/libs/sigc++2/sigc++/.cvsignore b/libs/sigc++2/sigc++/.cvsignore deleted file mode 100644 index 6f2fbbd6d8..0000000000 --- a/libs/sigc++2/sigc++/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -Makefile -Makefile.in -.deps -*.os diff --git a/libs/sigc++2/sigc++/Makefile.am b/libs/sigc++2/sigc++/Makefile.am index 6f9af23e0b..b5793f2fd8 100644 --- a/libs/sigc++2/sigc++/Makefile.am +++ b/libs/sigc++2/sigc++/Makefile.am @@ -1,9 +1,10 @@ # 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 + object_slot.h.m4 class_slot.h.m4 hide.h.m4 retype.h.m4 \ + limit_reference.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 + object_slot.h class_slot.h hide.h retype.h limit_reference.h signal.cc : signal.h signal_base.h functors/slot.h functors/slot_base.h functors/mem_fun.h functors/functor_trait.h @@ -57,15 +58,22 @@ nobase_library_include_HEADERS = $(sigc_m4) $(sigc_built_h) \ functors/functors.h \ functors/slot_base.h \ adaptors/adaptors.h \ + adaptors/bound_argument.h \ adaptors/lambda/lambda.h +# Support for DLL on cygwin/mingw using libtool > 1.4 +if PLATFORM_WIN32 +win32_dlls_ldflags = -no-undefined -Wl,--export-all-symbols +else +win32_dlls_ldflags = +endif + # build the library -#lib_LTLIBRARIES = libsigc-2.0.la -#libsigc_2_0_la_SOURCES = signal.cc signal_base.cc trackable.cc connection.cc \ +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 = - +libsigc_2_0_la_LDFLAGS = $(win32_dlls_ldflags) BUILT_SOURCES = $(sigc_built_h) $(sigc_built_cc) CLEANFILES = build-subdirs-stamp diff --git a/libs/sigc++2/sigc++/adaptors/adaptor_trait.h b/libs/sigc++2/sigc++/adaptors/adaptor_trait.h index 8b618d7450..b4ae6c5621 100644 --- a/libs/sigc++2/sigc++/adaptors/adaptor_trait.h +++ b/libs/sigc++2/sigc++/adaptors/adaptor_trait.h @@ -251,6 +251,7 @@ adaptor_functor::operator()() const { return functor_(); } +//template specialization of visit_each<>(action, 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. @@ -261,7 +262,9 @@ template void visit_each(const T_action& _A_action, const adaptor_functor& _A_target) { - visit_each(_A_action, _A_target.functor_); + //The extra sigc:: prefix avoids ambiguity in some strange + //situations. + sigc::visit_each(_A_action, _A_target.functor_); } diff --git a/libs/sigc++2/sigc++/adaptors/bind.h b/libs/sigc++2/sigc++/adaptors/bind.h index 81edaf7934..746ccee8d4 100644 --- a/libs/sigc++2/sigc++/adaptors/bind.h +++ b/libs/sigc++2/sigc++/adaptors/bind.h @@ -3,6 +3,7 @@ #ifndef _SIGC_ADAPTORS_MACROS_BINDHM4_ #define _SIGC_ADAPTORS_MACROS_BINDHM4_ #include +#include namespace sigc { @@ -140,20 +141,24 @@ struct bind_functor; * @ingroup bind */ template -struct bind_functor<0, T_functor, T_bound> : public adapts +struct bind_functor<0, T_functor, T_bound, nil,nil,nil,nil,nil,nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; template struct deduce_result_type - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; typedef typename adaptor_type::result_type result_type; /** Invokes the wrapped functor passing on the bound argument only. * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * bound_ is passed as the 1th argument. @@ -163,16 +168,16 @@ struct bind_functor<0, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> - (bound_, _A_arg1); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> - (bound_, _A_arg1); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1); } #endif @@ -185,16 +190,16 @@ struct bind_functor<0, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2); } #endif @@ -208,16 +213,16 @@ struct bind_functor<0, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3); } #endif @@ -232,16 +237,16 @@ struct bind_functor<0, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3, _A_arg4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3, _A_arg4); } #endif @@ -257,16 +262,16 @@ struct bind_functor<0, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5); } #endif @@ -283,16 +288,16 @@ struct bind_functor<0, T_functor, T_bound> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (bound_, _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (bound_.invoke(), _A_arg1, _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); } #endif @@ -305,34 +310,33 @@ struct bind_functor<0, T_functor, T_bound> : public adapts {} /// The argument bound to the functor. - T_bound bound_; + bound_argument bound_; }; -template -typename bind_functor<0, T_functor, T_bound>::result_type -bind_functor<0, T_functor, T_bound>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound_); } - /** Adaptor that binds an argument to the wrapped functor. * This template specialization fixes the 2th argument of the wrapped functor. * * @ingroup bind */ template -struct bind_functor<1, T_functor, T_bound> : public adapts +struct bind_functor<1, T_functor, T_bound, nil,nil,nil,nil,nil,nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; template struct deduce_result_type - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; typedef typename adaptor_type::result_type result_type; /** Invokes the wrapped functor passing on the bound argument only. * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * bound_ is passed as the 2th argument. @@ -342,16 +346,16 @@ struct bind_functor<1, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> - (_A_arg1, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass> + (_A_arg1, bound_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> - (_A_arg1, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass> + (_A_arg1, bound_.invoke()); } #endif @@ -364,16 +368,16 @@ struct bind_functor<1, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2); } #endif @@ -387,16 +391,16 @@ struct bind_functor<1, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3); } #endif @@ -411,16 +415,16 @@ struct bind_functor<1, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3, _A_arg4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3, _A_arg4); } #endif @@ -436,16 +440,16 @@ struct bind_functor<1, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3, _A_arg4, _A_arg5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3, _A_arg4, _A_arg5); } #endif @@ -462,16 +466,16 @@ struct bind_functor<1, T_functor, T_bound> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1, bound_, _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1, bound_.invoke(), _A_arg2, _A_arg3, _A_arg4, _A_arg5, _A_arg6); } #endif @@ -484,34 +488,33 @@ struct bind_functor<1, T_functor, T_bound> : public adapts {} /// The argument bound to the functor. - T_bound bound_; + bound_argument bound_; }; -template -typename bind_functor<1, T_functor, T_bound>::result_type -bind_functor<1, T_functor, T_bound>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound_); } - /** Adaptor that binds an argument to the wrapped functor. * This template specialization fixes the 3th argument of the wrapped functor. * * @ingroup bind */ template -struct bind_functor<2, T_functor, T_bound> : public adapts +struct bind_functor<2, T_functor, T_bound, nil,nil,nil,nil,nil,nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; template struct deduce_result_type - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; typedef typename adaptor_type::result_type result_type; /** Invokes the wrapped functor passing on the bound argument only. * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * bound_ is passed as the 3th argument. @@ -522,16 +525,16 @@ struct bind_functor<2, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound_.invoke()); } #endif @@ -545,16 +548,16 @@ struct bind_functor<2, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3); } #endif @@ -569,16 +572,16 @@ struct bind_functor<2, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3, _A_arg4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3, _A_arg4); } #endif @@ -594,16 +597,16 @@ struct bind_functor<2, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3, _A_arg4, _A_arg5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3, _A_arg4, _A_arg5); } #endif @@ -620,16 +623,16 @@ struct bind_functor<2, T_functor, T_bound> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3, _A_arg4, _A_arg5, _A_arg6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound_, _A_arg3, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2, bound_.invoke(), _A_arg3, _A_arg4, _A_arg5, _A_arg6); } #endif @@ -642,34 +645,33 @@ struct bind_functor<2, T_functor, T_bound> : public adapts {} /// The argument bound to the functor. - T_bound bound_; + bound_argument bound_; }; -template -typename bind_functor<2, T_functor, T_bound>::result_type -bind_functor<2, T_functor, T_bound>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound_); } - /** Adaptor that binds an argument to the wrapped functor. * This template specialization fixes the 4th argument of the wrapped functor. * * @ingroup bind */ template -struct bind_functor<3, T_functor, T_bound> : public adapts +struct bind_functor<3, T_functor, T_bound, nil,nil,nil,nil,nil,nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; template struct deduce_result_type - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; typedef typename adaptor_type::result_type result_type; /** Invokes the wrapped functor passing on the bound argument only. * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * bound_ is passed as the 4th argument. @@ -681,16 +683,16 @@ struct bind_functor<3, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke()); } #endif @@ -705,16 +707,16 @@ struct bind_functor<3, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke(), _A_arg4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_, _A_arg4); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke(), _A_arg4); } #endif @@ -730,16 +732,16 @@ struct bind_functor<3, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke(), _A_arg4, _A_arg5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_, _A_arg4, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke(), _A_arg4, _A_arg5); } #endif @@ -756,16 +758,16 @@ struct bind_functor<3, T_functor, T_bound> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke(), _A_arg4, _A_arg5, _A_arg6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound_, _A_arg4, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3, bound_.invoke(), _A_arg4, _A_arg5, _A_arg6); } #endif @@ -778,34 +780,33 @@ struct bind_functor<3, T_functor, T_bound> : public adapts {} /// The argument bound to the functor. - T_bound bound_; + bound_argument bound_; }; -template -typename bind_functor<3, T_functor, T_bound>::result_type -bind_functor<3, T_functor, T_bound>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound_); } - /** Adaptor that binds an argument to the wrapped functor. * This template specialization fixes the 5th argument of the wrapped functor. * * @ingroup bind */ template -struct bind_functor<4, T_functor, T_bound> : public adapts +struct bind_functor<4, T_functor, T_bound, nil,nil,nil,nil,nil,nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; template struct deduce_result_type - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; typedef typename adaptor_type::result_type result_type; /** Invokes the wrapped functor passing on the bound argument only. * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * bound_ is passed as the 5th argument. @@ -818,16 +819,16 @@ struct bind_functor<4, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_.invoke()); } #endif @@ -843,16 +844,16 @@ struct bind_functor<4, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_.invoke(), _A_arg5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_, _A_arg5); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_.invoke(), _A_arg5); } #endif @@ -869,16 +870,16 @@ struct bind_functor<4, T_functor, T_bound> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_.invoke(), _A_arg5, _A_arg6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_, _A_arg5, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound_.invoke(), _A_arg5, _A_arg6); } #endif @@ -891,34 +892,33 @@ struct bind_functor<4, T_functor, T_bound> : public adapts {} /// The argument bound to the functor. - T_bound bound_; + bound_argument bound_; }; -template -typename bind_functor<4, T_functor, T_bound>::result_type -bind_functor<4, T_functor, T_bound>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound_); } - /** Adaptor that binds an argument to the wrapped functor. * This template specialization fixes the 6th argument of the wrapped functor. * * @ingroup bind */ template -struct bind_functor<5, T_functor, T_bound> : public adapts +struct bind_functor<5, T_functor, T_bound, nil,nil,nil,nil,nil,nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; template struct deduce_result_type - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass>::type type; }; typedef typename adaptor_type::result_type result_type; /** Invokes the wrapped functor passing on the bound argument only. * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * bound_ is passed as the 6th argument. @@ -932,16 +932,16 @@ struct bind_functor<5, T_functor, T_bound> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_.invoke()); } #endif @@ -958,16 +958,16 @@ struct bind_functor<5, T_functor, T_bound> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_.invoke(), _A_arg6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_, _A_arg6); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass, typename type_trait::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound_.invoke(), _A_arg6); } #endif @@ -980,34 +980,33 @@ struct bind_functor<5, T_functor, T_bound> : public adapts {} /// The argument bound to the functor. - T_bound bound_; + bound_argument bound_; }; -template -typename bind_functor<5, T_functor, T_bound>::result_type -bind_functor<5, T_functor, T_bound>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound_); } - /** Adaptor that binds an argument to the wrapped functor. * This template specialization fixes the 7th argument of the wrapped functor. * * @ingroup bind */ template -struct bind_functor<6, T_functor, T_bound> : public adapts +struct bind_functor<6, T_functor, T_bound, nil,nil,nil,nil,nil,nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; template struct deduce_result_type - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass>::type type; }; typedef typename adaptor_type::result_type result_type; /** Invokes the wrapped functor passing on the bound argument only. * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * bound_ is passed as the 7th argument. @@ -1022,16 +1021,16 @@ struct bind_functor<6, T_functor, T_bound> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound_.invoke()); } #endif @@ -1044,14 +1043,11 @@ struct bind_functor<6, T_functor, T_bound> : public adapts {} /// The argument bound to the functor. - T_bound bound_; + bound_argument bound_; }; -template -typename bind_functor<6, T_functor, T_bound>::result_type -bind_functor<6, T_functor, T_bound>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -1072,29 +1068,29 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -struct bind_functor<-1, T_functor, T_type1> : public adapts +struct bind_functor<-1, T_functor, T_type1, nil, nil, nil, nil, nil, nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct deduce_result_type_internal - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<2, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<3, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<4, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<5, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<6, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::type>::pass>::type type; }; #endif /*DOXYGEN_SHOULD_SKIP_THIS*/ template @@ -1108,7 +1104,11 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass> (bound1_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * The last 1 argument(s) are fixed. @@ -1118,16 +1118,16 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> - (_A_arg1, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> - (_A_arg1, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke()); } #endif @@ -1140,16 +1140,16 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke()); } #endif @@ -1163,16 +1163,16 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke()); } #endif @@ -1187,16 +1187,16 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_.invoke()); } #endif @@ -1212,16 +1212,16 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_.invoke()); } #endif @@ -1238,16 +1238,16 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound1_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::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) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound1_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5,_A_arg6, bound1_.invoke()); } #endif @@ -1260,14 +1260,11 @@ struct bind_functor<-1, T_functor, T_type1> : public adapts {} /// The argument bound to the functor. - T_type1 bound1_; + bound_argument bound1_; }; -template -typename bind_functor<-1, T_functor, T_type1>::result_type -bind_functor<-1, T_functor, T_type1>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (bound1_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -1288,26 +1285,26 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts +struct bind_functor<-1, T_functor, T_type1, T_type2, nil, nil, nil, nil, nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct deduce_result_type_internal - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<3, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<4, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<5, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<6, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; #endif /*DOXYGEN_SHOULD_SKIP_THIS*/ template @@ -1321,7 +1318,11 @@ struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass,typename type_trait::type>::pass> (bound1_.invoke(),bound2_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * The last 2 argument(s) are fixed. @@ -1331,16 +1332,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke()); } #endif @@ -1353,16 +1354,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke()); } #endif @@ -1376,16 +1377,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke(),bound2_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke(),bound2_.invoke()); } #endif @@ -1400,16 +1401,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_.invoke(),bound2_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_.invoke(),bound2_.invoke()); } #endif @@ -1425,16 +1426,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_.invoke(),bound2_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4,T_arg5 _A_arg5) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_,bound2_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4,_A_arg5, bound1_.invoke(),bound2_.invoke()); } #endif @@ -1447,15 +1448,12 @@ struct bind_functor<-1, T_functor, T_type1,T_type2> : public adapts {} /// The argument bound to the functor. - T_type1 bound1_; - T_type2 bound2_; + bound_argument bound1_; + bound_argument bound2_; }; -template -typename bind_functor<-1, T_functor, T_type1,T_type2>::result_type -bind_functor<-1, T_functor, T_type1,T_type2>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass> (bound1_,bound2_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -1477,23 +1475,23 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3> : public adapts +struct bind_functor<-1, T_functor, T_type1, T_type2, T_type3, nil, nil, nil, nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct deduce_result_type_internal - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<4, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<5, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<6, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; #endif /*DOXYGEN_SHOULD_SKIP_THIS*/ template @@ -1507,7 +1505,11 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3> : public adaptsfunctor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> (bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * The last 3 argument(s) are fixed. @@ -1517,16 +1519,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3> : public adapts typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #endif @@ -1539,16 +1541,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3> : public adapts typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #endif @@ -1562,16 +1564,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3> : public adapts typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #endif @@ -1586,16 +1588,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3> : public adapts typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3,T_arg4 _A_arg4) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_,bound2_,bound3_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3,_A_arg4, bound1_.invoke(),bound2_.invoke(),bound3_.invoke()); } #endif @@ -1608,16 +1610,13 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3> : public adapts bound1_; + bound_argument bound2_; + bound_argument bound3_; }; -template -typename bind_functor<-1, T_functor, T_type1,T_type2,T_type3>::result_type -bind_functor<-1, T_functor, T_type1,T_type2,T_type3>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass> (bound1_,bound2_,bound3_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -1640,20 +1639,20 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4> : public adapts +struct bind_functor<-1, T_functor, T_type1, T_type2, T_type3, T_type4, nil, nil, nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct deduce_result_type_internal - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<5, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<6, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; #endif /*DOXYGEN_SHOULD_SKIP_THIS*/ template @@ -1667,7 +1666,11 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4> : public ada * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> (bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * The last 4 argument(s) are fixed. @@ -1677,16 +1680,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4> : public ada template typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_,bound4_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_,bound4_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke()); } #endif @@ -1699,16 +1702,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4> : public ada template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_,bound3_,bound4_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_,bound3_,bound4_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke()); } #endif @@ -1722,16 +1725,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4> : public ada template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_,bound2_,bound3_,bound4_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2,T_arg3 _A_arg3) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2,_A_arg3, bound1_,bound2_,bound3_,bound4_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2,_A_arg3, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke()); } #endif @@ -1744,17 +1747,14 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4> : public ada {} /// The argument bound to the functor. - T_type1 bound1_; - T_type2 bound2_; - T_type3 bound3_; - T_type4 bound4_; + bound_argument bound1_; + bound_argument bound2_; + bound_argument bound3_; + bound_argument bound4_; }; -template -typename bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4>::result_type -bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> (bound1_,bound2_,bound3_,bound4_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -1778,17 +1778,17 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5> : public adapts +struct bind_functor<-1, T_functor, T_type1, T_type2, T_type3, T_type4, T_type5, nil, nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct deduce_result_type_internal - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; template struct deduce_result_type_internal<6, T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; #endif /*DOXYGEN_SHOULD_SKIP_THIS*/ template @@ -1802,7 +1802,11 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5> : pu * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> (bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * The last 5 argument(s) are fixed. @@ -1812,16 +1816,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5> : pu template typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_,bound4_,bound5_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_,bound4_,bound5_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke()); } #endif @@ -1834,16 +1838,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5> : pu template typename deduce_result_type::type operator()(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_,bound3_,bound4_,bound5_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1,T_arg2 _A_arg2) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1,_A_arg2, bound1_,bound2_,bound3_,bound4_,bound5_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1,_A_arg2, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke()); } #endif @@ -1856,18 +1860,15 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5> : pu {} /// The argument bound to the functor. - T_type1 bound1_; - T_type2 bound2_; - T_type3 bound3_; - T_type4 bound4_; - T_type5 bound5_; + bound_argument bound1_; + bound_argument bound2_; + bound_argument bound3_; + bound_argument bound4_; + bound_argument bound5_; }; -template -typename bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5>::result_type -bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> (bound1_,bound2_,bound3_,bound4_,bound5_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -1892,14 +1893,14 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6> : public adapts +struct bind_functor<-1, T_functor, T_type1, T_type2, T_type3, T_type4, T_type5, T_type6, nil> : public adapts { typedef typename adapts::adaptor_type adaptor_type; #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct deduce_result_type_internal - { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; #endif /*DOXYGEN_SHOULD_SKIP_THIS*/ template @@ -1913,7 +1914,11 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_typ * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> (bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke(),bound6_.invoke()); + } /** Invokes the wrapped functor passing on the arguments. * The last 6 argument(s) are fixed. @@ -1923,16 +1928,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_typ template typename deduce_result_type::type operator()(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_,bound4_,bound5_,bound6_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke(),bound6_.invoke()); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_arg1) - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_arg1, bound1_,bound2_,bound3_,bound4_,bound5_,bound6_); + { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> + (_A_arg1, bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke(),bound6_.invoke()); } #endif @@ -1945,19 +1950,16 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_typ {} /// The argument bound to the functor. - T_type1 bound1_; - T_type2 bound2_; - T_type3 bound3_; - T_type4 bound4_; - T_type5 bound5_; - T_type6 bound6_; + bound_argument bound1_; + bound_argument bound2_; + bound_argument bound3_; + bound_argument bound4_; + bound_argument bound5_; + bound_argument bound6_; }; -template -typename bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6>::result_type -bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> (bound1_,bound2_,bound3_,bound4_,bound5_,bound6_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -1983,14 +1985,14 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7> : public adapts +struct bind_functor<-1, T_functor, T_type1, T_type2, T_type3, T_type4, T_type5, T_type6, T_type7> : public adapts { typedef typename adapts::adaptor_type adaptor_type; #ifndef DOXYGEN_SHOULD_SKIP_THIS template struct deduce_result_type_internal - { typedef typename adaptor_type::template deduce_result_type::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass>::type type; }; + { typedef typename adaptor_type::template deduce_result_type::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass>::type type; }; #endif /*DOXYGEN_SHOULD_SKIP_THIS*/ template @@ -2004,7 +2006,11 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_typ * @return The return value of the functor invocation. */ result_type - operator()(); + operator()() + { + //Note: The AIX compiler sometimes gives linker errors if we do not define this in the class. + return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass,typename type_trait::type>::pass> (bound1_.invoke(),bound2_.invoke(),bound3_.invoke(),bound4_.invoke(),bound5_.invoke(),bound6_.invoke(),bound7_.invoke()); + } /** Constructs a bind_functor object that binds an argument to the passed functor. * @param _A_functor Functor to invoke from operator()(). @@ -2015,20 +2021,17 @@ struct bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_typ {} /// The argument bound to the functor. - T_type1 bound1_; - T_type2 bound2_; - T_type3 bound3_; - T_type4 bound4_; - T_type5 bound5_; - T_type6 bound6_; - T_type7 bound7_; + bound_argument bound1_; + bound_argument bound2_; + bound_argument bound3_; + bound_argument bound4_; + bound_argument bound5_; + bound_argument bound6_; + bound_argument bound7_; }; -template -typename bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>::result_type -bind_functor<-1, T_functor, T_type1,T_type2,T_type3,T_type4,T_type5,T_type6,T_type7>::operator()() - { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> (bound1_,bound2_,bound3_,bound4_,bound5_,bound6_,bound7_); } +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bind_functor performs a functor on the * functor and on the object instances stored in the sigc::bind_functor object. @@ -2061,10 +2064,10 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -inline bind_functor::type> +inline bind_functor bind(const T_functor& _A_func, T_bound1 _A_b1) { - return bind_functor::type> + return bind_functor (_A_func, _A_b1); } @@ -2079,10 +2082,10 @@ bind(const T_functor& _A_func, T_bound1 _A_b1) */ template inline bind_functor<-1, T_functor, - typename unwrap_reference::type> + T_type1> bind(const T_functor& _A_func, T_type1 _A_b1) { return bind_functor<-1, T_functor, - typename unwrap_reference::type> + T_type1> (_A_func, _A_b1); } @@ -2098,12 +2101,12 @@ bind(const T_functor& _A_func, T_type1 _A_b1) */ template inline bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2> bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2) { return bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2> (_A_func, _A_b1,_A_b2); } @@ -2120,14 +2123,14 @@ bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2) */ template inline bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3> bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3) { return bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3> (_A_func, _A_b1,_A_b2,_A_b3); } @@ -2145,16 +2148,16 @@ bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3) */ template inline bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4> bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3,T_type4 _A_b4) { return bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4> (_A_func, _A_b1,_A_b2,_A_b3,_A_b4); } @@ -2173,18 +2176,18 @@ bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3,T_type4 */ template inline bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4, + T_type5> bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3,T_type4 _A_b4,T_type5 _A_b5) { return bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4, + T_type5> (_A_func, _A_b1,_A_b2,_A_b3,_A_b4,_A_b5); } @@ -2204,20 +2207,20 @@ bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3,T_type4 */ template inline bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4, + T_type5, + T_type6> bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3,T_type4 _A_b4,T_type5 _A_b5,T_type6 _A_b6) { return bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4, + T_type5, + T_type6> (_A_func, _A_b1,_A_b2,_A_b3,_A_b4,_A_b5,_A_b6); } @@ -2238,22 +2241,22 @@ bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3,T_type4 */ template inline bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4, + T_type5, + T_type6, + T_type7> bind(const T_functor& _A_func, T_type1 _A_b1,T_type2 _A_b2,T_type3 _A_b3,T_type4 _A_b4,T_type5 _A_b5,T_type6 _A_b6,T_type7 _A_b7) { return bind_functor<-1, T_functor, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type, - typename unwrap_reference::type> + T_type1, + T_type2, + T_type3, + T_type4, + T_type5, + T_type6, + T_type7> (_A_func, _A_b1,_A_b2,_A_b3,_A_b4,_A_b5,_A_b6,_A_b7); } diff --git a/libs/sigc++2/sigc++/adaptors/bind_return.h b/libs/sigc++2/sigc++/adaptors/bind_return.h index 40e3524090..e330d78d19 100644 --- a/libs/sigc++2/sigc++/adaptors/bind_return.h +++ b/libs/sigc++2/sigc++/adaptors/bind_return.h @@ -3,6 +3,7 @@ #ifndef _SIGC_ADAPTORS_MACROS_BIND_RETURNHM4_ #define _SIGC_ADAPTORS_MACROS_BIND_RETURNHM4_ #include +#include namespace sigc { @@ -20,29 +21,29 @@ struct bind_return_functor : public adapts { template struct deduce_result_type - { typedef T_return type; }; - typedef T_return result_type; + { typedef typename unwrap_reference::type type; }; + typedef typename unwrap_reference::type result_type; /** Invokes the wrapped functor dropping its return value. * @return The fixed return value. */ - T_return operator()(); + typename unwrap_reference::type 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 - inline T_return operator()(T_arg1 _A_a1) + inline typename unwrap_reference::type operator()(T_arg1 _A_a1) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> - (_A_a1); return ret_value_; + (_A_a1); return ret_value_.invoke(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - inline T_return sun_forte_workaround(T_arg1 _A_a1) + inline typename unwrap_reference::type sun_forte_workaround(T_arg1 _A_a1) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> - (_A_a1); return ret_value_; + (_A_a1); return ret_value_.invoke(); } #endif @@ -51,16 +52,16 @@ struct bind_return_functor : public adapts * @return The fixed return value. */ template - inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2) + inline typename unwrap_reference::type operator()(T_arg1 _A_a1,T_arg2 _A_a2) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass> - (_A_a1,_A_a2); return ret_value_; + (_A_a1,_A_a2); return ret_value_.invoke(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) + inline typename unwrap_reference::type sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass> - (_A_a1,_A_a2); return ret_value_; + (_A_a1,_A_a2); return ret_value_.invoke(); } #endif @@ -69,16 +70,16 @@ struct bind_return_functor : public adapts * @return The fixed return value. */ template - inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + inline typename unwrap_reference::type operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3); return ret_value_; + (_A_a1,_A_a2,_A_a3); return ret_value_.invoke(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + inline typename unwrap_reference::type sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3); return ret_value_; + (_A_a1,_A_a2,_A_a3); return ret_value_.invoke(); } #endif @@ -87,16 +88,16 @@ struct bind_return_functor : public adapts * @return The fixed return value. */ template - inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + inline typename unwrap_reference::type operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4); return ret_value_.invoke(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + inline typename unwrap_reference::type 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::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4); return ret_value_.invoke(); } #endif @@ -105,16 +106,16 @@ struct bind_return_functor : public adapts * @return The fixed return value. */ template - inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + inline typename unwrap_reference::type 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::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); return ret_value_.invoke(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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) + inline typename unwrap_reference::type 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::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); return ret_value_.invoke(); } #endif @@ -123,16 +124,16 @@ struct bind_return_functor : public adapts * @return The fixed return value. */ template - 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) + inline typename unwrap_reference::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) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); return ret_value_.invoke(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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) + inline typename unwrap_reference::type 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::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); return ret_value_.invoke(); } #endif @@ -141,16 +142,16 @@ struct bind_return_functor : public adapts * @return The fixed return value. */ template - 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) + inline typename unwrap_reference::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) { this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); return ret_value_.invoke(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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) + inline typename unwrap_reference::type 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::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass,typename type_trait::pass> - (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); return ret_value_; + (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); return ret_value_.invoke(); } #endif @@ -164,14 +165,15 @@ struct bind_return_functor : public adapts {} /// The fixed return value. - T_return ret_value_; // public, so that visit_each() can access it + bound_argument ret_value_; // public, so that visit_each() can access it }; template -T_return bind_return_functor::operator()() - { this->functor_(); return ret_value_; } +typename unwrap_reference::type bind_return_functor::operator()() + { this->functor_(); return ret_value_.invoke(); } +//template specialization of visit_each<>(action, functor): /** 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. @@ -196,9 +198,9 @@ void visit_each(const T_action& _A_action, * @ingroup bind */ template -inline bind_return_functor::type, T_functor> +inline bind_return_functor bind_return(const T_functor& _A_functor, T_return _A_ret_value) -{ return bind_return_functor::type, T_functor>(_A_functor, _A_ret_value); } +{ return bind_return_functor(_A_functor, _A_ret_value); } } /* namespace sigc */ #endif /* _SIGC_ADAPTORS_MACROS_BIND_RETURNHM4_ */ diff --git a/libs/sigc++2/sigc++/adaptors/bound_argument.h b/libs/sigc++2/sigc++/adaptors/bound_argument.h new file mode 100644 index 0000000000..f6c65afe76 --- /dev/null +++ b/libs/sigc++2/sigc++/adaptors/bound_argument.h @@ -0,0 +1,165 @@ +/* + * Copyright 2005, 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_BOUND_ARGUMENT_H_ +#define _SIGC_BOUND_ARGUMENT_H_ + + +#include +#include + + +namespace sigc { + +/** A bound_argument object stores a bound (for instance, with sigc::bind(), or sigc::bind_return()) argument. + * + * If Foo is a wrapped reference to a class Bar (reference_wrapper) then this + * object is implemented on top of a limit_reference. When the slot is + * invoked, the limit_reference::invoke() method provides the argument (a Bar&). + * When the slot is visited (e.g. visit_each<>()), we simply visit the limit_reference, + * which will visit the derived type, or a sigc::trackable base if necessary. + * + * Likewise, If Foo is a wrapped const reference to a class Bar (const_reference_wrapper) + * then this object is implemented on top of a const_limit_reference. + * + * If Foo is something else (such as an argument that is bound by value) bound_argument just + * stores a cop of that value, and both invoke() and visit() simply return it. + * + * This object is used by the bind_functor<> and bind_return_functor<> objects, + * depending on whether the argument is bound as a parameter or as a return value. + * + * The general template implementation is used for parameters that are passed by value. + * @e T_type The type of the bound argument. + */ +template +class bound_argument +{ +public: + /** Constructor. + * @param _A_argument The argument to bind. + */ + bound_argument(const T_type& _A_argument) + : visited_(_A_argument) + {} + + /** Retrieve the entity to visit in visit_each(). + * @return The bound argument. + */ + inline const T_type& visit() const + { return visited_; } + + /** Retrieve the entity to pass to the bound functor or return. + * @return The bound argument. + */ + inline T_type& invoke() + { return visited_; } + +private: + /** The value of the argument. + */ + T_type visited_; +}; + +//Template specialization: +/** bound_argument object for a bound argument that is passed by bind() or + * returned by bind_return() by reference, specialized for reference_wrapper<> types. + * @e T_wrapped The type of the bound argument. + */ +template +class bound_argument< reference_wrapper > +{ +public: + /** Constructor. + * @param _A_argument The argument to bind. + */ + bound_argument(const reference_wrapper& _A_argument) + : visited_(unwrap(_A_argument)) + {} + + /** Retrieve the entity to visit in visit_each(). + * @return The limited_reference to the bound argument. + */ + inline const limit_reference& visit() const + { return visited_; } + + /** Retrieve the entity to pass to the bound functor or return. + * @return The bound argument. + */ + inline T_wrapped& invoke() + { return visited_.invoke(); } + +private: + /** The limited_reference to the bound argument. + */ + limit_reference visited_; +}; + +/** bound_argument object for a bound argument that is passed by bind() or + * returned by bind_return() by const reference, specialized for const reference_wrapper<> types. + * - @e T_wrapped The type of the bound argument. + */ +template +class bound_argument< const_reference_wrapper > +{ +public: + /** Constructor. + * @param _A_argument The argument to bind. + */ + bound_argument(const const_reference_wrapper& _A_argument) + : visited_(unwrap(_A_argument)) + {} + + /** Retrieve the entity to visit in visit_each(). + * @return The const_limited_reference to the bound argument. + */ + inline const const_limit_reference& visit() const + { return visited_; } + + /** Retrieve the entity to pass to the bound functor or return. + * @return The bound argument. + */ + inline const T_wrapped& invoke() + { return visited_.invoke(); } + +private: + /** The const_limited_reference to the bound argument. + */ + const_limit_reference visited_; +}; + +/** Implementation of visit_each() specialized for the bound_argument class. + * Call visit_each() on the entity returned by the bound_argument's visit() + * method. + * @e T_action The type of functor to invoke. + * @e T_type The type of bound_argument. + * @param _A_action The functor to invoke. + * @param _A_argument The visited instance. + */ +template +void +visit_each(const T_action& _A_action, + const bound_argument& _A_argument) +{ + visit_each(_A_action, _A_argument.visit()); +} + + +} /* namespace sigc */ + + +#endif /* _SIGC_BOUND_ARGUMENT_H_ */ diff --git a/libs/sigc++2/sigc++/adaptors/compose.h b/libs/sigc++2/sigc++/adaptors/compose.h index 0f098ff2df..2308c8de5e 100644 --- a/libs/sigc++2/sigc++/adaptors/compose.h +++ b/libs/sigc++2/sigc++/adaptors/compose.h @@ -51,8 +51,10 @@ template struct compose1_functor : public adapts { typedef typename adapts::adaptor_type adaptor_type; + typedef T_setter setter_type; + typedef T_getter getter_type; - template + template struct deduce_result_type { typedef typename adaptor_type::template deduce_result_type< typename sigc::deduce_result_type::type @@ -121,7 +123,7 @@ struct compose1_functor : public adapts : adapts(_A_setter), get_(_A_getter) {} - T_getter get_; // public, so that visit_each() can access it + getter_type get_; // public, so that visit_each() can access it }; template @@ -143,7 +145,10 @@ template struct compose2_functor : public adapts { typedef typename adapts::adaptor_type adaptor_type; - + typedef T_setter setter_type; + typedef T_getter1 getter1_type; + typedef T_getter2 getter2_type; + template struct deduce_result_type { typedef typename adaptor_type::template deduce_result_type< @@ -223,8 +228,8 @@ struct compose2_functor : public adapts : adapts(_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 + getter1_type get1_; // public, so that visit_each() can access it + getter2_type get2_; // public, so that visit_each() can access it }; template @@ -232,7 +237,7 @@ typename compose2_functor::result_type compose2_functor::operator()() { return this->functor_(get1_(), get2_()); } - +//template specialization of visit_each<>(action, functor): /** 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. @@ -243,10 +248,17 @@ template void visit_each(const T_action& _A_action, const compose1_functor& _A_target) { - visit_each(_A_action, _A_target.functor_); - visit_each(_A_action, _A_target.get_); + typedef compose1_functor type_functor; + + //Note that the AIX compiler needs the actual template types of visit_each to be specified: + typedef typename type_functor::setter_type type_functor1; + visit_each(_A_action, _A_target.functor_); + + typedef typename type_functor::getter_type type_functor_getter; + visit_each(_A_action, _A_target.get_); } +//template specialization of visit_each<>(action, functor): /** 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. @@ -257,9 +269,17 @@ template void visit_each(const T_action& _A_action, const compose2_functor& _A_target) { - visit_each(_A_action, _A_target.functor_); - visit_each(_A_action, _A_target.get1_); - visit_each(_A_action, _A_target.get2_); + typedef compose2_functor type_functor; + + //Note that the AIX compiler needs the actual template types of visit_each to be specified: + typedef typename type_functor::setter_type type_functor1; + visit_each(_A_action, _A_target.functor_); + + typedef typename type_functor::getter1_type type_functor_getter1; + visit_each(_A_action, _A_target.get1_); + + typedef typename type_functor::getter2_type type_functor_getter2; + visit_each(_A_action, _A_target.get2_); } diff --git a/libs/sigc++2/sigc++/adaptors/exception_catch.h b/libs/sigc++2/sigc++/adaptors/exception_catch.h index cd7c41e67d..0303e07c37 100644 --- a/libs/sigc++2/sigc++/adaptors/exception_catch.h +++ b/libs/sigc++2/sigc++/adaptors/exception_catch.h @@ -165,8 +165,7 @@ struct exception_catch_functor : public adapts : adapts(_A_func), catcher_(_A_catcher) {} - protected: - T_catcher catcher_; + T_catcher catcher_; }; template @@ -287,7 +286,6 @@ struct exception_catch_functor : public adapts::operator()() { this->catcher_(); } } - + +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const exception_catch_functor& _A_target) diff --git a/libs/sigc++2/sigc++/adaptors/hide.h b/libs/sigc++2/sigc++/adaptors/hide.h index 1b820fea6b..7a9f096407 100644 --- a/libs/sigc++2/sigc++/adaptors/hide.h +++ b/libs/sigc++2/sigc++/adaptors/hide.h @@ -87,7 +87,7 @@ struct hide_functor <-1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1) + operator()(T_arg1) { return this->functor_(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -104,14 +104,14 @@ struct hide_functor <-1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2) + operator()(T_arg1 _A_a1, T_arg2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (_A_a1); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) + sun_forte_workaround(T_arg1 _A_a1, T_arg2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (_A_a1); } #endif @@ -124,14 +124,14 @@ struct hide_functor <-1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + operator()(T_arg1 _A_a1,T_arg2 _A_a2, T_arg3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a1, _A_a2); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2, T_arg3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a1, _A_a2); } #endif @@ -145,14 +145,14 @@ struct hide_functor <-1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3, T_arg4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3, T_arg4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3); } #endif @@ -167,14 +167,14 @@ struct hide_functor <-1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4, T_arg5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4, T_arg5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4); } #endif @@ -190,14 +190,14 @@ struct hide_functor <-1, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5, T_arg6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + 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) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5); } #endif @@ -214,14 +214,14 @@ struct hide_functor <-1, T_functor> : public adapts */ template typename deduce_result_type::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) + 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) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + 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) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6); } #endif @@ -256,7 +256,7 @@ struct hide_functor <0, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1) + operator()(T_arg1) { return this->functor_(); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -273,14 +273,14 @@ struct hide_functor <0, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2) + operator()(T_arg1, T_arg2 _A_a2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (_A_a2); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) + sun_forte_workaround(T_arg1, T_arg2 _A_a2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (_A_a2); } #endif @@ -293,14 +293,14 @@ struct hide_functor <0, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + operator()(T_arg1, T_arg2 _A_a2, T_arg3 _A_a3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a2, _A_a3); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + sun_forte_workaround(T_arg1, T_arg2 _A_a2, T_arg3 _A_a3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a2, _A_a3); } #endif @@ -314,14 +314,14 @@ struct hide_functor <0, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + operator()(T_arg1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + sun_forte_workaround(T_arg1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4); } #endif @@ -336,14 +336,14 @@ struct hide_functor <0, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + operator()(T_arg1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4, _A_a5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + sun_forte_workaround(T_arg1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4, _A_a5); } #endif @@ -359,14 +359,14 @@ struct hide_functor <0, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1, 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::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4, _A_a5, _A_a6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1, 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::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4, _A_a5, _A_a6); } #endif @@ -383,14 +383,14 @@ struct hide_functor <0, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1, 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::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1, 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::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a2, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7); } #endif @@ -426,14 +426,14 @@ struct hide_functor <1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2) + operator()(T_arg1 _A_a1, T_arg2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (_A_a1); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) + sun_forte_workaround(T_arg1 _A_a1, T_arg2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass> (_A_a1); } #endif @@ -446,14 +446,14 @@ struct hide_functor <1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + operator()(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a1, _A_a3); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + sun_forte_workaround(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a1, _A_a3); } #endif @@ -467,14 +467,14 @@ struct hide_functor <1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + operator()(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3, T_arg4 _A_a4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + sun_forte_workaround(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3, T_arg4 _A_a4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4); } #endif @@ -489,14 +489,14 @@ struct hide_functor <1, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + operator()(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4, _A_a5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + sun_forte_workaround(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4, _A_a5); } #endif @@ -512,14 +512,14 @@ struct hide_functor <1, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4, _A_a5, _A_a6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4, _A_a5, _A_a6); } #endif @@ -536,14 +536,14 @@ struct hide_functor <1, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2, 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::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2, 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::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a3, _A_a4, _A_a5, _A_a6, _A_a7); } #endif @@ -580,14 +580,14 @@ struct hide_functor <2, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a1, _A_a2); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass> (_A_a1, _A_a2); } #endif @@ -601,14 +601,14 @@ struct hide_functor <2, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4); } #endif @@ -623,14 +623,14 @@ struct hide_functor <2, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4, _A_a5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4, _A_a5); } #endif @@ -646,14 +646,14 @@ struct hide_functor <2, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4, _A_a5, _A_a6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4, _A_a5, _A_a6); } #endif @@ -670,14 +670,14 @@ struct hide_functor <2, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6 _A_a6, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4, _A_a5, _A_a6, _A_a7); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6 _A_a6, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a4, _A_a5, _A_a6, _A_a7); } #endif @@ -715,14 +715,14 @@ struct hide_functor <3, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3); } #endif @@ -737,14 +737,14 @@ struct hide_functor <3, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4, T_arg5 _A_a5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a5); } #endif @@ -760,14 +760,14 @@ struct hide_functor <3, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4, T_arg5 _A_a5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a5, _A_a6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4, T_arg5 _A_a5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a5, _A_a6); } #endif @@ -784,14 +784,14 @@ struct hide_functor <3, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4, T_arg5 _A_a5, T_arg6 _A_a6, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a5, _A_a6, _A_a7); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4, T_arg5 _A_a5, T_arg6 _A_a6, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a5, _A_a6, _A_a7); } #endif @@ -830,14 +830,14 @@ struct hide_functor <4, T_functor> : public adapts */ template typename deduce_result_type::type - operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4,T_arg5 _A_a5) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4); } #endif @@ -853,14 +853,14 @@ struct hide_functor <4, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5, T_arg6 _A_a6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a6); } #endif @@ -877,14 +877,14 @@ struct hide_functor <4, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5, T_arg6 _A_a6, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a6, _A_a7); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + sun_forte_workaround(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5, T_arg6 _A_a6, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a6, _A_a7); } #endif @@ -924,14 +924,14 @@ struct hide_functor <5, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + 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) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5); } #endif @@ -948,14 +948,14 @@ struct hide_functor <5, T_functor> : public adapts */ template typename deduce_result_type::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) + operator()(T_arg1 _A_a1, T_arg2 _A_a2, T_arg3 _A_a3, T_arg4 _A_a4, T_arg5 _A_a5, T_arg6, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a7); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + 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, T_arg7 _A_a7) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a7); } #endif @@ -996,14 +996,14 @@ struct hide_functor <6, T_functor> : public adapts */ template typename deduce_result_type::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) + 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) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template typename deduce_result_type::type - 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) + 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) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass, typename type_trait::pass> (_A_a1, _A_a2, _A_a3, _A_a4, _A_a5, _A_a6); } #endif @@ -1018,6 +1018,7 @@ struct hide_functor <6, T_functor> : public adapts }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::hide_functor performs a functor on the * functor stored in the sigc::hide_functor object. diff --git a/libs/sigc++2/sigc++/adaptors/lambda/base.h b/libs/sigc++2/sigc++/adaptors/lambda/base.h index 6a2c402c89..a45594c2f6 100644 --- a/libs/sigc++2/sigc++/adaptors/lambda/base.h +++ b/libs/sigc++2/sigc++/adaptors/lambda/base.h @@ -3,6 +3,7 @@ #ifndef _SIGC_LAMBDA_BASE_HPP_ #define _SIGC_LAMBDA_BASE_HPP_ #include +#include namespace sigc { @@ -201,72 +202,72 @@ struct lambda_core : public lambda_base result_type operator()() const; template - result_type operator ()(T_arg1 _A_1) const + result_type operator ()(T_arg1) const { return value_; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type sun_forte_workaround(T_arg1 _A_1) const + result_type sun_forte_workaround(T_arg1) const { return value_; } #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type operator ()(T_arg1 _A_1,T_arg2 _A_2) const + result_type operator ()(T_arg1,T_arg2) const { return value_; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const + result_type sun_forte_workaround(T_arg1,T_arg2) const { return value_; } #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const + result_type operator ()(T_arg1,T_arg2,T_arg3) const { return value_; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const + result_type sun_forte_workaround(T_arg1,T_arg2,T_arg3) const { return value_; } #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const + result_type operator ()(T_arg1,T_arg2,T_arg3,T_arg4) const { return value_; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const + result_type sun_forte_workaround(T_arg1,T_arg2,T_arg3,T_arg4) const { return value_; } #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const + result_type operator ()(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const { return value_; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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 + result_type sun_forte_workaround(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5) const { return value_; } #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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 + result_type operator ()(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const { return value_; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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 + result_type sun_forte_workaround(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6) const { return value_; } #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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 + result_type operator ()(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) const { return value_; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template - 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 + result_type sun_forte_workaround(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) const { return value_; } #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -283,6 +284,7 @@ typename lambda_core::result_type lambda_core::ope } /* namespace internal */ +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const internal::lambda_core& _A_target) @@ -340,6 +342,7 @@ struct lambda : public internal::lambda_core }; +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const lambda& _A_target) @@ -348,12 +351,32 @@ void visit_each(const T_action& _A_action, } -/// Converts a reference into a lambda object. +/** Converts a reference into a lambda object. + * sigc::var creates a 0-ary functor, returning the value of a referenced variable. + * + * @par Example: + * @code + * int main(int argc, char* argv) + * { + * int data; + * sigc::signal readValue; + * + * readValue.connect(sigc::var(data)); + * + * data = 3; + * std::cout << readValue() << std::endl; //Prints 3. + * + * data = 5; + * std::cout << readValue() << std::endl; //Prints 5. + * } + * @endcode + */ template lambda var(T_type& v) { return lambda(v); } -/// Converts a constant reference into a lambda object. +/** Converts a constant reference into a lambda object. + */ template lambda var(const T_type& v) { return lambda(v); } diff --git a/libs/sigc++2/sigc++/adaptors/lambda/group.h b/libs/sigc++2/sigc++/adaptors/lambda/group.h index 7b7525dc41..ef778df81d 100644 --- a/libs/sigc++2/sigc++/adaptors/lambda/group.h +++ b/libs/sigc++2/sigc++/adaptors/lambda/group.h @@ -223,6 +223,7 @@ lambda_group1::operator ()() const { return func_(value1_()); } +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const lambda_group1& _A_target) @@ -434,6 +435,7 @@ lambda_group2::operator ()() const { return func_(value1_(),value2_()); } +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const lambda_group2& _A_target) @@ -692,6 +694,7 @@ lambda_group3::operator ()() const { return func_(value1_(),value2_(),value3_()); } +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const lambda_group3& _A_target) diff --git a/libs/sigc++2/sigc++/adaptors/lambda/operator.h b/libs/sigc++2/sigc++/adaptors/lambda/operator.h index 5d9e00bcde..ca74e6271f 100644 --- a/libs/sigc++2/sigc++/adaptors/lambda/operator.h +++ b/libs/sigc++2/sigc++/adaptors/lambda/operator.h @@ -750,6 +750,7 @@ lambda_operator::operator ()() const typename arg2_type::result_type> (arg1_(), arg2_()); } +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const lambda_operator& _A_target) @@ -944,6 +945,7 @@ lambda_operator_unary::operator ()() const typename arg_type::result_type> (arg_()); } +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const lambda_operator_unary& _A_target) @@ -1137,6 +1139,7 @@ lambda_operator_convert::operator ()() const typename arg_type::result_type> (arg_()); } +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const lambda_operator_convert& _A_target) diff --git a/libs/sigc++2/sigc++/adaptors/lambda/select.h b/libs/sigc++2/sigc++/adaptors/lambda/select.h index 7cbf3eccfb..2fbe97b626 100644 --- a/libs/sigc++2/sigc++/adaptors/lambda/select.h +++ b/libs/sigc++2/sigc++/adaptors/lambda/select.h @@ -25,57 +25,57 @@ struct lambda_select1 : public lambda_base #endif template - T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2) const { return _A_1; } + T_arg1 operator ()(T_arg1 _A_1, T_arg2) const { return _A_1; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg1 sun_forte_workaround(T_arg1 _A_1, T_arg2) const { return _A_1; } #endif template - T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_1; } + T_arg1 operator ()(T_arg1 _A_1, T_arg2, T_arg3) const { return _A_1; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg1 sun_forte_workaround(T_arg1 _A_1, T_arg2, T_arg3) const { return _A_1; } #endif template - T_arg1 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_1; } + T_arg1 operator ()(T_arg1 _A_1, T_arg2, T_arg3, T_arg4) const { return _A_1; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg1 sun_forte_workaround(T_arg1 _A_1, T_arg2, T_arg3, T_arg4) const { return _A_1; } #endif template - 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; } + T_arg1 operator ()(T_arg1 _A_1, T_arg2, T_arg3, T_arg4, T_arg5) const { return _A_1; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg1 sun_forte_workaround(T_arg1 _A_1, T_arg2, T_arg3, T_arg4, T_arg5) const { return _A_1; } #endif template - 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; } + T_arg1 operator ()(T_arg1 _A_1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6) const { return _A_1; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg1 sun_forte_workaround(T_arg1 _A_1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6) const { return _A_1; } #endif template - 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; } + T_arg1 operator ()(T_arg1 _A_1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7) const { return _A_1; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg1 sun_forte_workaround(T_arg1 _A_1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7) const { return _A_1; } #endif }; @@ -89,57 +89,57 @@ struct lambda_select2 : public lambda_base void operator ()() const; // not implemented template - T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2) const { return _A_2; } + T_arg2 operator ()(T_arg1, T_arg2 _A_2) const { return _A_2; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg2 sun_forte_workaround(T_arg1, T_arg2 _A_2) const { return _A_2; } #endif template - T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_2; } + T_arg2 operator ()(T_arg1, T_arg2 _A_2, T_arg3) const { return _A_2; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg2 sun_forte_workaround(T_arg1, T_arg2 _A_2, T_arg3) const { return _A_2; } #endif template - T_arg2 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_2; } + T_arg2 operator ()(T_arg1, T_arg2 _A_2, T_arg3, T_arg4) const { return _A_2; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg2 sun_forte_workaround(T_arg1, T_arg2 _A_2, T_arg3, T_arg4) const { return _A_2; } #endif template - 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; } + T_arg2 operator ()(T_arg1, T_arg2 _A_2, T_arg3, T_arg4, T_arg5) const { return _A_2; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg2 sun_forte_workaround(T_arg1, T_arg2 _A_2, T_arg3, T_arg4, T_arg5) const { return _A_2; } #endif template - 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; } + T_arg2 operator ()(T_arg1, T_arg2 _A_2, T_arg3, T_arg4, T_arg5, T_arg6) const { return _A_2; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg2 sun_forte_workaround(T_arg1, T_arg2 _A_2, T_arg3, T_arg4, T_arg5, T_arg6) const { return _A_2; } #endif template - 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; } + T_arg2 operator ()(T_arg1, T_arg2 _A_2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7) const { return _A_2; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg2 sun_forte_workaround(T_arg1, T_arg2 _A_2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7) const { return _A_2; } #endif }; @@ -153,48 +153,48 @@ struct lambda_select3 : public lambda_base void operator ()() const; // not implemented template - T_arg3 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return _A_3; } + T_arg3 operator ()(T_arg1, T_arg2, T_arg3 _A_3) const { return _A_3; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg3 sun_forte_workaround(T_arg1, T_arg2, T_arg3 _A_3) const { return _A_3; } #endif template - T_arg3 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_3; } + T_arg3 operator ()(T_arg1, T_arg2, T_arg3 _A_3, T_arg4) const { return _A_3; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg3 sun_forte_workaround(T_arg1, T_arg2, T_arg3 _A_3, T_arg4) const { return _A_3; } #endif template - 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; } + T_arg3 operator ()(T_arg1, T_arg2, T_arg3 _A_3, T_arg4, T_arg5) const { return _A_3; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg3 sun_forte_workaround(T_arg1, T_arg2, T_arg3 _A_3, T_arg4, T_arg5) const { return _A_3; } #endif template - 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; } + T_arg3 operator ()(T_arg1, T_arg2, T_arg3 _A_3, T_arg4, T_arg5, T_arg6) const { return _A_3; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg3 sun_forte_workaround(T_arg1, T_arg2, T_arg3 _A_3, T_arg4, T_arg5, T_arg6) const { return _A_3; } #endif template - 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; } + T_arg3 operator ()(T_arg1, T_arg2, T_arg3 _A_3, T_arg4, T_arg5, T_arg6, T_arg7) const { return _A_3; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg3 sun_forte_workaround(T_arg1, T_arg2, T_arg3 _A_3, T_arg4, T_arg5, T_arg6, T_arg7) const { return _A_3; } #endif }; @@ -208,39 +208,39 @@ struct lambda_select4 : public lambda_base void operator ()() const; // not implemented template - T_arg4 operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return _A_4; } + T_arg4 operator ()(T_arg1, T_arg2, T_arg3, T_arg4 _A_4) const { return _A_4; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg4 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4 _A_4) const { return _A_4; } #endif template - 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; } + T_arg4 operator ()(T_arg1, T_arg2, T_arg3, T_arg4 _A_4, T_arg5) const { return _A_4; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg4 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4 _A_4, T_arg5) const { return _A_4; } #endif template - 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; } + T_arg4 operator ()(T_arg1, T_arg2, T_arg3, T_arg4 _A_4, T_arg5, T_arg6) const { return _A_4; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg4 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4 _A_4, T_arg5, T_arg6) const { return _A_4; } #endif template - 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; } + T_arg4 operator ()(T_arg1, T_arg2, T_arg3, T_arg4 _A_4, T_arg5, T_arg6, T_arg7) const { return _A_4; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg4 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4 _A_4, T_arg5, T_arg6, T_arg7) const { return _A_4; } #endif }; @@ -254,30 +254,30 @@ struct lambda_select5 : public lambda_base void operator ()() const; // not implemented template - 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; } + T_arg5 operator ()(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5 _A_5) const { return _A_5; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg5 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5 _A_5) const { return _A_5; } #endif template - 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; } + T_arg5 operator ()(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5 _A_5, T_arg6) const { return _A_5; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg5 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5 _A_5, T_arg6) const { return _A_5; } #endif template - 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; } + T_arg5 operator ()(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5 _A_5, T_arg6, T_arg7) const { return _A_5; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg5 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5 _A_5, T_arg6, T_arg7) const { return _A_5; } #endif }; @@ -291,21 +291,21 @@ struct lambda_select6 : public lambda_base void operator ()() const; // not implemented template - 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; } + T_arg6 operator ()(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6 _A_6) const { return _A_6; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg6 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6 _A_6) const { return _A_6; } #endif template - 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; } + T_arg6 operator ()(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6 _A_6, T_arg7) const { return _A_6; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg6 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6 _A_6, T_arg7) const { return _A_6; } #endif }; @@ -319,12 +319,12 @@ struct lambda_select7 : public lambda_base void operator ()() const; // not implemented template - 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; } + T_arg7 operator ()(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 _A_7) const { return _A_7; } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template //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; } + T_arg7 sun_forte_workaround(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 _A_7) const { return _A_7; } #endif }; diff --git a/libs/sigc++2/sigc++/adaptors/retype.h b/libs/sigc++2/sigc++/adaptors/retype.h index 502959d3cd..58f86306fc 100644 --- a/libs/sigc++2/sigc++/adaptors/retype.h +++ b/libs/sigc++2/sigc++/adaptors/retype.h @@ -81,7 +81,7 @@ struct retype_functor typename deduce_result_type::type operator()(T_arg1 _A_a1) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take> - ((T_type1)_A_a1); + (static_cast(_A_a1)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -89,7 +89,7 @@ struct retype_functor typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_a1) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take> - ((T_type1)_A_a1); + (static_cast(_A_a1)); } #endif @@ -97,7 +97,7 @@ struct retype_functor typename deduce_result_type::type operator()(T_arg1 _A_a1,T_arg2 _A_a2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2); + (static_cast(_A_a1),static_cast(_A_a2)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -105,7 +105,7 @@ struct retype_functor typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2); + (static_cast(_A_a1),static_cast(_A_a2)); } #endif @@ -113,7 +113,7 @@ struct retype_functor typename deduce_result_type::type operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename type_trait::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -121,7 +121,7 @@ struct retype_functor typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename type_trait::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3)); } #endif @@ -129,7 +129,7 @@ struct retype_functor typename deduce_result_type::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::take,typename type_trait::take,typename type_trait::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -137,7 +137,7 @@ struct retype_functor typename deduce_result_type::type sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3,T_arg4 _A_a4) { return this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename type_trait::take,typename type_trait::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4)); } #endif @@ -145,7 +145,7 @@ struct retype_functor typename deduce_result_type::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::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -153,7 +153,7 @@ struct retype_functor typename deduce_result_type::type sun_forte_workaround(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::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5)); } #endif @@ -161,7 +161,7 @@ struct retype_functor typename deduce_result_type::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::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::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); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -169,7 +169,7 @@ struct retype_functor typename deduce_result_type::type 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 this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::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); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6)); } #endif @@ -177,7 +177,7 @@ struct retype_functor typename deduce_result_type::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::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::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); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6),static_cast(_A_a7)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD @@ -185,7 +185,7 @@ struct retype_functor typename deduce_result_type::type 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 this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::take,typename type_trait::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); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6),static_cast(_A_a7)); } #endif @@ -203,7 +203,8 @@ typename retype_functor::operator()() { return this->functor_(); } - + +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::retype_functor performs a functor on the * functor stored in the sigc::retype_functor object. diff --git a/libs/sigc++2/sigc++/adaptors/retype_return.h b/libs/sigc++2/sigc++/adaptors/retype_return.h index ea413a0b30..16d557ca72 100644 --- a/libs/sigc++2/sigc++/adaptors/retype_return.h +++ b/libs/sigc++2/sigc++/adaptors/retype_return.h @@ -264,7 +264,8 @@ template void retype_return_functor::operator()() { this->functor_(); } - + +//template specialization of visit_each<>(action, 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. diff --git a/libs/sigc++2/sigc++/connection.cc b/libs/sigc++2/sigc++/connection.cc index 8f4363482f..ff785e5e63 100644 --- a/libs/sigc++2/sigc++/connection.cc +++ b/libs/sigc++2/sigc++/connection.cc @@ -103,7 +103,7 @@ void connection::set_slot(slot_base* sl) void* connection::notify(void* data) { - connection* self = (connection*)data; + connection* self = reinterpret_cast(data); self->slot_ = 0; return 0; } diff --git a/libs/sigc++2/sigc++/functors/mem_fun.h b/libs/sigc++2/sigc++/functors/mem_fun.h index 2bd7cde67f..e652b7cf4b 100644 --- a/libs/sigc++2/sigc++/functors/mem_fun.h +++ b/libs/sigc++2/sigc++/functors/mem_fun.h @@ -10,6 +10,7 @@ #define _SIGC_FUNCTORS_MACROS_MEM_FUNHM4_ #include #include +#include namespace sigc { @@ -1743,6 +1744,7 @@ protected: function_type func_ptr_; }; + /** bound_mem_functor0 encapsulates a method with 0 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor0. * @@ -1765,26 +1767,32 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor0( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor0 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor0( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @return The return value of the method invocation. */ T_return operator()() const - { return (obj_ptr_->*(this->func_ptr_))(); } + { return (obj_.invoke().*(this->func_ptr_))(); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -1795,9 +1803,10 @@ template void visit_each(const T_action& _A_action, const bound_mem_functor0& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_mem_functor1 encapsulates a method with 1 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor1. * @@ -1821,27 +1830,33 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor1( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor1 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor1( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -1852,9 +1867,10 @@ template void visit_each(const T_action& _A_action, const bound_mem_functor1& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_mem_functor2 encapsulates a method with 2 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor2. * @@ -1879,14 +1895,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor2( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor2 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor2( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -1894,13 +1914,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -1911,9 +1933,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_mem_functor3 encapsulates a method with 3 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor3. * @@ -1939,14 +1962,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor3( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor3 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor3( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -1955,13 +1982,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -1972,9 +2001,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_mem_functor4 encapsulates a method with 4 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor4. * @@ -2001,14 +2031,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor4( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor4 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor4( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2018,13 +2052,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -2035,9 +2071,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_mem_functor5 encapsulates a method with 5 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor5. * @@ -2065,14 +2102,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor5( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor5 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor5( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2083,13 +2124,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -2100,9 +2143,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_mem_functor6 encapsulates a method with 6 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor6. * @@ -2131,14 +2175,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor6( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor6 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor6( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2150,13 +2198,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -2167,9 +2217,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_mem_functor7 encapsulates a method with 7 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_mem_functor7. * @@ -2199,14 +2250,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor7( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_mem_functor7 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_mem_functor7( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2219,13 +2274,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6,typename type_trait::take _A_a7) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_mem_functor performs a functor * on the object instance stored in the sigc::bound_mem_functor object. @@ -2236,9 +2293,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor0 encapsulates a const method with 0 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor0. * @@ -2261,26 +2319,32 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor0(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor0 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor0(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @return The return value of the method invocation. */ T_return operator()() const - { return (obj_ptr_->*(this->func_ptr_))(); } + { return (obj_.invoke().*(this->func_ptr_))(); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2291,9 +2355,10 @@ template void visit_each(const T_action& _A_action, const bound_const_mem_functor0& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor1 encapsulates a const method with 1 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor1. * @@ -2317,27 +2382,33 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor1(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor1 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor1(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2348,9 +2419,10 @@ template void visit_each(const T_action& _A_action, const bound_const_mem_functor1& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor2 encapsulates a const method with 2 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor2. * @@ -2375,14 +2447,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor2(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor2 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor2(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2390,13 +2466,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2407,9 +2485,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor3 encapsulates a const method with 3 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor3. * @@ -2435,14 +2514,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor3(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor3 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor3(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2451,13 +2534,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2468,9 +2553,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor4 encapsulates a const method with 4 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor4. * @@ -2497,14 +2583,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor4(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor4 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor4(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2514,13 +2604,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2531,9 +2623,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor5 encapsulates a const method with 5 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor5. * @@ -2561,14 +2654,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor5(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor5 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor5(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2579,13 +2676,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2596,9 +2695,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor6 encapsulates a const method with 6 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor6. * @@ -2627,14 +2727,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor6(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor6 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor6(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2646,13 +2750,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2663,9 +2769,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_mem_functor7 encapsulates a const method with 7 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_mem_functor7. * @@ -2695,14 +2802,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor7(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_mem_functor7 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_mem_functor7(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2715,13 +2826,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6,typename type_trait::take _A_a7) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_mem_functor object. @@ -2732,9 +2845,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor0 encapsulates a volatile method with 0 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor0. * @@ -2757,26 +2871,32 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor0( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor0 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor0( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @return The return value of the method invocation. */ T_return operator()() const - { return (obj_ptr_->*(this->func_ptr_))(); } + { return (obj_.invoke().*(this->func_ptr_))(); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -2787,9 +2907,10 @@ template void visit_each(const T_action& _A_action, const bound_volatile_mem_functor0& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor1 encapsulates a volatile method with 1 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor1. * @@ -2813,27 +2934,33 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor1( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor1 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor1( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -2844,9 +2971,10 @@ template void visit_each(const T_action& _A_action, const bound_volatile_mem_functor1& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor2 encapsulates a volatile method with 2 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor2. * @@ -2871,14 +2999,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor2( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor2 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor2( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2886,13 +3018,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -2903,9 +3037,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor3 encapsulates a volatile method with 3 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor3. * @@ -2931,14 +3066,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor3( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor3 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor3( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -2947,13 +3086,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -2964,9 +3105,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor4 encapsulates a volatile method with 4 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor4. * @@ -2993,14 +3135,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor4( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor4 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor4( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3010,13 +3156,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -3027,9 +3175,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor5 encapsulates a volatile method with 5 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor5. * @@ -3057,14 +3206,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor5( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor5 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor5( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3075,13 +3228,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -3092,9 +3247,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor6 encapsulates a volatile method with 6 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor6. * @@ -3123,14 +3279,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor6( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor6 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor6( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3142,13 +3302,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -3159,9 +3321,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_volatile_mem_functor7 encapsulates a volatile method with 7 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_volatile_mem_functor7. * @@ -3191,14 +3354,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor7( T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_volatile_mem_functor7 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_volatile_mem_functor7( T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3211,13 +3378,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6,typename type_trait::take _A_a7) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } //protected: - /// Pointer to stored object instance. - T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_volatile_mem_functor object. @@ -3228,9 +3397,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor0 encapsulates a const volatile method with 0 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor0. * @@ -3253,26 +3423,32 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor0(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor0 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor0(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @return The return value of the method invocation. */ T_return operator()() const - { return (obj_ptr_->*(this->func_ptr_))(); } + { return (obj_.invoke().*(this->func_ptr_))(); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3283,9 +3459,10 @@ template void visit_each(const T_action& _A_action, const bound_const_volatile_mem_functor0& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor1 encapsulates a const volatile method with 1 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor1. * @@ -3309,27 +3486,33 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor1(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor1 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor1(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3340,9 +3523,10 @@ template void visit_each(const T_action& _A_action, const bound_const_volatile_mem_functor1& _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor2 encapsulates a const volatile method with 2 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor2. * @@ -3367,14 +3551,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor2(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor2 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor2(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3382,13 +3570,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3399,9 +3589,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor3 encapsulates a const volatile method with 3 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor3. * @@ -3427,14 +3618,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor3(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor3 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor3(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3443,13 +3638,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3460,9 +3657,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor4 encapsulates a const volatile method with 4 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor4. * @@ -3489,14 +3687,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor4(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor4 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor4(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3506,13 +3708,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3523,9 +3727,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor5 encapsulates a const volatile method with 5 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor5. * @@ -3553,14 +3758,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor5(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor5 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor5(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3571,13 +3780,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3588,9 +3799,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor6 encapsulates a const volatile method with 6 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor6. * @@ -3619,14 +3831,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor6(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor6 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor6(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3638,13 +3854,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3655,9 +3873,10 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } + /** bound_const_volatile_mem_functor7 encapsulates a const volatile method with 7 arguments and an object instance. * Use the convenience function mem_fun() to create an instance of bound_const_volatile_mem_functor7. * @@ -3687,14 +3906,18 @@ public: * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor7(const T_obj* _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(_A_obj) {} + : base_type_(_A_func), + obj_(*_A_obj) + {} /** Constructs a bound_const_volatile_mem_functor7 object that wraps the passed method. * @param _A_obj Reference to instance the method will operate on. * @param _A_func Pointer to method will be invoked from operator()(). */ bound_const_volatile_mem_functor7(const T_obj& _A_obj, function_type _A_func) - : base_type_(_A_func), obj_ptr_(&_A_obj) {} + : base_type_(_A_func), + obj_(_A_obj) + {} /** Execute the wrapped method operating on the stored instance. * @param _A_a1 Argument to be passed on to the method. @@ -3707,13 +3930,15 @@ public: * @return The return value of the method invocation. */ T_return operator()(typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6,typename type_trait::take _A_a7) const - { return (obj_ptr_->*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } + { return (obj_.invoke().*(this->func_ptr_))(_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); } //protected: - /// Pointer to stored object instance. - const T_obj *obj_ptr_; + // Reference to stored object instance. + // This is the handler object, such as TheObject in void TheObject::signal_handler(). + const_volatile_limit_reference obj_; }; +//template specialization of visit_each<>(action, functor): /** Performs a functor on each of the targets of a functor. * The function overload for sigc::bound_const_volatile_mem_functor performs a functor * on the object instance stored in the sigc::bound_const_volatile_mem_functor object. @@ -3724,7 +3949,7 @@ template & _A_target) { - visit_each(_A_action, *_A_target.obj_ptr_); + sigc::visit_each(_A_action, _A_target.obj_); } diff --git a/libs/sigc++2/sigc++/functors/slot.h b/libs/sigc++2/sigc++/functors/slot.h index 51294fe4d8..712940a7f5 100644 --- a/libs/sigc++2/sigc++/functors/slot.h +++ b/libs/sigc++2/sigc++/functors/slot.h @@ -54,7 +54,7 @@ struct typed_slot_rep : public slot_rep */ static void* destroy(void* data) { - self* self_ = static_cast((slot_rep*)data); + self* self_ = static_cast(reinterpret_cast(data)); self_->call_ = 0; self_->destroy_ = 0; visit_each_type(slot_do_unbind(self_), self_->functor_); @@ -73,8 +73,8 @@ struct typed_slot_rep : public slot_rep */ static void* dup(void* data) { - slot_rep* rep_ = (slot_rep*)data; - return static_cast(new self(*static_cast(rep_))); + slot_rep* a_rep = reinterpret_cast(data); + return static_cast(new self(*static_cast(a_rep))); } }; @@ -437,7 +437,7 @@ public: inline T_return operator()() const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_); return T_return(); } @@ -449,7 +449,10 @@ public: template slot0(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call0::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call0::address(); + } slot0(const slot0& src) : slot_base(src) {} @@ -509,7 +512,7 @@ public: inline T_return operator()(arg1_type_ _A_a1) const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_, _A_a1); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_, _A_a1); return T_return(); } @@ -521,7 +524,10 @@ public: template slot1(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call1::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call1::address(); + } slot1(const slot1& src) : slot_base(src) {} @@ -584,7 +590,7 @@ public: inline T_return operator()(arg1_type_ _A_a1,arg2_type_ _A_a2) const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_, _A_a1,_A_a2); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_, _A_a1,_A_a2); return T_return(); } @@ -596,7 +602,10 @@ public: template slot2(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call2::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call2::address(); + } slot2(const slot2& src) : slot_base(src) {} @@ -662,7 +671,7 @@ public: inline T_return operator()(arg1_type_ _A_a1,arg2_type_ _A_a2,arg3_type_ _A_a3) const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_, _A_a1,_A_a2,_A_a3); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_, _A_a1,_A_a2,_A_a3); return T_return(); } @@ -674,7 +683,10 @@ public: template slot3(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call3::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call3::address(); + } slot3(const slot3& src) : slot_base(src) {} @@ -743,7 +755,7 @@ public: inline T_return operator()(arg1_type_ _A_a1,arg2_type_ _A_a2,arg3_type_ _A_a3,arg4_type_ _A_a4) const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_, _A_a1,_A_a2,_A_a3,_A_a4); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_, _A_a1,_A_a2,_A_a3,_A_a4); return T_return(); } @@ -755,7 +767,10 @@ public: template slot4(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call4::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call4::address(); + } slot4(const slot4& src) : slot_base(src) {} @@ -827,7 +842,7 @@ public: inline T_return operator()(arg1_type_ _A_a1,arg2_type_ _A_a2,arg3_type_ _A_a3,arg4_type_ _A_a4,arg5_type_ _A_a5) const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5); return T_return(); } @@ -839,7 +854,10 @@ public: template slot5(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call5::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call5::address(); + } slot5(const slot5& src) : slot_base(src) {} @@ -914,7 +932,7 @@ public: inline T_return operator()(arg1_type_ _A_a1,arg2_type_ _A_a2,arg3_type_ _A_a3,arg4_type_ _A_a4,arg5_type_ _A_a5,arg6_type_ _A_a6) const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); return T_return(); } @@ -926,7 +944,10 @@ public: template slot6(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call6::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call6::address(); + } slot6(const slot6& src) : slot_base(src) {} @@ -1004,7 +1025,7 @@ public: inline T_return operator()(arg1_type_ _A_a1,arg2_type_ _A_a2,arg3_type_ _A_a3,arg4_type_ _A_a4,arg5_type_ _A_a5,arg6_type_ _A_a6,arg7_type_ _A_a7) const { if (!empty() && !blocked()) - return (reinterpret_cast(rep_->call_))(rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); + return (reinterpret_cast(slot_base::rep_->call_))(slot_base::rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); return T_return(); } @@ -1016,7 +1037,10 @@ public: template slot7(const T_functor& _A_func) : slot_base(new internal::typed_slot_rep(_A_func)) - { rep_->call_ = internal::slot_call7::address(); } + { + //The slot_base:: is necessary to stop the HP-UX aCC compiler from being confused. murrayc. + slot_base::rep_->call_ = internal::slot_call7::address(); + } slot7(const slot7& src) : slot_base(src) {} @@ -1078,17 +1102,19 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; + /** Convenience wrapper for the numbered sigc::slot0 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::slot - * template for 0 argument(s). + * template for 0 argument(s), specialized for different numbers of arguments + * This is possible because the template has default (nil) template types. */ template -class slot +class slot : public slot0 { public: @@ -1104,16 +1130,18 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; + /** Convenience wrapper for the numbered sigc::slot1 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::slot - * template for 1 argument(s). + * template for 1 argument(s), specialized for different numbers of arguments + * This is possible because the template has default (nil) template types. */ template -class slot +class slot : public slot1 { public: @@ -1129,16 +1157,18 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; + /** Convenience wrapper for the numbered sigc::slot2 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::slot - * template for 2 argument(s). + * template for 2 argument(s), specialized for different numbers of arguments + * This is possible because the template has default (nil) template types. */ template -class slot +class slot : public slot2 { public: @@ -1154,16 +1184,18 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; + /** Convenience wrapper for the numbered sigc::slot3 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::slot - * template for 3 argument(s). + * template for 3 argument(s), specialized for different numbers of arguments + * This is possible because the template has default (nil) template types. */ template -class slot +class slot : public slot3 { public: @@ -1179,16 +1211,18 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; + /** Convenience wrapper for the numbered sigc::slot4 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::slot - * template for 4 argument(s). + * template for 4 argument(s), specialized for different numbers of arguments + * This is possible because the template has default (nil) template types. */ template -class slot +class slot : public slot4 { public: @@ -1204,16 +1238,18 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; + /** Convenience wrapper for the numbered sigc::slot5 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::slot - * template for 5 argument(s). + * template for 5 argument(s), specialized for different numbers of arguments + * This is possible because the template has default (nil) template types. */ template -class slot +class slot : public slot5 { public: @@ -1229,16 +1265,18 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; + /** Convenience wrapper for the numbered sigc::slot6 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::slot - * template for 6 argument(s). + * template for 6 argument(s), specialized for different numbers of arguments + * This is possible because the template has default (nil) template types. */ template -class slot +class slot : public slot6 { public: @@ -1254,7 +1292,7 @@ public: : parent_type(_A_func) {} slot(const slot& src) - : parent_type((const parent_type&)src) {} + : parent_type(reinterpret_cast(src)) {} }; diff --git a/libs/sigc++2/sigc++/functors/slot_base.cc b/libs/sigc++2/sigc++/functors/slot_base.cc index bc0f173f22..896276bd1b 100644 --- a/libs/sigc++2/sigc++/functors/slot_base.cc +++ b/libs/sigc++2/sigc++/functors/slot_base.cc @@ -49,15 +49,19 @@ void slot_rep::disconnect() parent_ = 0; // Just a precaution. (cleanup_)(data_); // Notify the parent (might lead to destruction of this!). } + else + call_ = 0; } //static void* slot_rep::notify(void* data) { - slot_rep* self_ = (slot_rep*)data; + slot_rep* self_ = reinterpret_cast(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; } @@ -78,7 +82,17 @@ slot_base::slot_base(const slot_base& src) blocked_(src.blocked_) { if (src.rep_) - rep_ = src.rep_->dup(); + { + //Check call_ so we can ignore invalidated slots. + //Otherwise, destroyed bound reference parameters (whose destruction caused the slot's invalidation) may be used during dup(). + //Note: I'd prefer to check somewhere during dup(). murrayc. + if (src.rep_->call_) + rep_ = src.rep_->dup(); + else + { + *this = slot_base(); //Return the default invalid slot. + } + } } slot_base::~slot_base() diff --git a/libs/sigc++2/sigc++/functors/slot_base.h b/libs/sigc++2/sigc++/functors/slot_base.h index bb2ed343f3..a91c75db89 100644 --- a/libs/sigc++2/sigc++/functors/slot_base.h +++ b/libs/sigc++2/sigc++/functors/slot_base.h @@ -101,7 +101,7 @@ struct SIGC_API slot_rep : public trackable * @return A deep copy of the slot_rep object. */ inline slot_rep* dup() const - { return (slot_rep*)(*dup_)(const_cast(this)); } + { return reinterpret_cast((*dup_)(const_cast(this))); } /** Set the parent with a callback. * slots have one parent exclusively. @@ -298,7 +298,9 @@ public: */ void disconnect(); -protected: +//The Tru64 and Solaris Forte 5.5 compilers needs this operator=() to be public. I'm not sure why, or why it needs to be protected usually. murrayc. +//See bug #168265. +//protected: /** Overrides this slot making a copy from another slot. * @param src The slot from which to make a copy. * @return @p this. diff --git a/libs/sigc++2/sigc++/limit_reference.h b/libs/sigc++2/sigc++/limit_reference.h new file mode 100644 index 0000000000..0425429235 --- /dev/null +++ b/libs/sigc++2/sigc++/limit_reference.h @@ -0,0 +1,455 @@ +// -*- c++ -*- +/* Do not edit! -- generated file */ + + +#ifndef _SIGC_MACROS_LIMIT_REFERENCEHM4_ +#define _SIGC_MACROS_LIMIT_REFERENCEHM4_ + + +#include +#include + + +namespace sigc { + + +/** A limit_reference object stores a reference (Foo&), but make sure that, + * if Foo inherits from sigc::trackable, then visit_each<>() will "limit" itself to the + * sigc::trackable reference instead of the derived reference. This avoids use of + * a reference to the derived type when the derived destructor has run. That can be + * a problem when using virtual inheritance. + * + * If Foo inherits from trackable then both the derived reference and the + * sigc::trackable reference are stored, so we can later retrieve the sigc::trackable + * reference without doing an implicit conversion. To retrieve the derived reference + * (so that you invoke methods or members of it), use invoke(). To retrieve the trackable + * reference (so that you can call visit_each() on it), you use visit(). + * + * If Foo does not inherit from sigc::trackable then invoke() and visit() just return the + * derived reference. + * + * This is used for bound (sigc::bind) slot parameters (via bound_argument), bound return values, + * and, with mem_fun(), the reference to the handling object. + * + * - @e T_type The type of the reference. + */ +template ::value> +class limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + limit_reference(T_type& _A_target) + : visited(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const T_type& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline T_type& invoke() const + { return visited; } + +private: + /** The reference. + */ + T_type& visited; +}; + +/** limit_reference object for a class that derives from trackable. + * - @e T_type The type of the reference. + */ +template +class limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + limit_reference(T_type& _A_target) + : visited(_A_target), + invoked(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const trackable& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline T_type& invoke() const + { return invoked; } + +private: + /** The trackable reference. + */ + trackable& visited; + + /** The reference. + */ + T_type& invoked; +}; + +/** Implementation of visit_each() specialized for the limit_reference + * class, to call visit_each() on the entity returned by the limit_reference's + * visit() method. + * - @e T_action The type of functor to invoke. + * - @e T_type The type of the reference. + * @param _A_action The functor to invoke. + * @param _A_argument The visited instance. + */ +template +void +visit_each(const T_action& _A_action, + const limit_reference& _A_target) +{ + visit_each(_A_action, _A_target.visit()); +} + + +/** A const_limit_reference object stores a reference (Foo&), but make sure that, + * if Foo inherits from sigc::trackable, then visit_each<>() will "limit" itself to the + * sigc::trackable reference instead of the derived reference. This avoids use of + * a reference to the derived type when the derived destructor has run. That can be + * a problem when using virtual inheritance. + * + * If Foo inherits from trackable then both the derived reference and the + * sigc::trackable reference are stored, so we can later retrieve the sigc::trackable + * reference without doing an implicit conversion. To retrieve the derived reference + * (so that you invoke methods or members of it), use invoke(). To retrieve the trackable + * reference (so that you can call visit_each() on it), you use visit(). + * + * If Foo does not inherit from sigc::trackable then invoke() and visit() just return the + * derived reference. + * + * This is used for bound (sigc::bind) slot parameters (via bound_argument), bound return values, + * and, with mem_fun(), the reference to the handling object. + * + * - @e T_type The type of the reference. + */ +template ::value> +class const_limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + const_limit_reference(const T_type& _A_target) + : visited(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const T_type& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline const T_type& invoke() const + { return visited; } + +private: + /** The reference. + */ + const T_type& visited; +}; + +/** const_limit_reference object for a class that derives from trackable. + * - @e T_type The type of the reference. + */ +template +class const_limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + const_limit_reference(const T_type& _A_target) + : visited(_A_target), + invoked(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const trackable& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline const T_type& invoke() const + { return invoked; } + +private: + /** The trackable reference. + */ + const trackable& visited; + + /** The reference. + */ + const T_type& invoked; +}; + +/** Implementation of visit_each() specialized for the const_limit_reference + * class, to call visit_each() on the entity returned by the const_limit_reference's + * visit() method. + * - @e T_action The type of functor to invoke. + * - @e T_type The type of the reference. + * @param _A_action The functor to invoke. + * @param _A_argument The visited instance. + */ +template +void +visit_each(const T_action& _A_action, + const const_limit_reference& _A_target) +{ + visit_each(_A_action, _A_target.visit()); +} + + +/** A volatile_limit_reference object stores a reference (Foo&), but make sure that, + * if Foo inherits from sigc::trackable, then visit_each<>() will "limit" itself to the + * sigc::trackable reference instead of the derived reference. This avoids use of + * a reference to the derived type when the derived destructor has run. That can be + * a problem when using virtual inheritance. + * + * If Foo inherits from trackable then both the derived reference and the + * sigc::trackable reference are stored, so we can later retrieve the sigc::trackable + * reference without doing an implicit conversion. To retrieve the derived reference + * (so that you invoke methods or members of it), use invoke(). To retrieve the trackable + * reference (so that you can call visit_each() on it), you use visit(). + * + * If Foo does not inherit from sigc::trackable then invoke() and visit() just return the + * derived reference. + * + * This is used for bound (sigc::bind) slot parameters (via bound_argument), bound return values, + * and, with mem_fun(), the reference to the handling object. + * + * - @e T_type The type of the reference. + */ +template ::value> +class volatile_limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + volatile_limit_reference(T_type& _A_target) + : visited(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const T_type& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline volatile T_type& invoke() const + { return visited; } + +private: + /** The reference. + */ + T_type& visited; +}; + +/** volatile_limit_reference object for a class that derives from trackable. + * - @e T_type The type of the reference. + */ +template +class volatile_limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + volatile_limit_reference(T_type& _A_target) + : visited(_A_target), + invoked(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const trackable& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline volatile T_type& invoke() const + { return invoked; } + +private: + /** The trackable reference. + */ + trackable& visited; + + /** The reference. + */ + T_type& invoked; +}; + +/** Implementation of visit_each() specialized for the volatile_limit_reference + * class, to call visit_each() on the entity returned by the volatile_limit_reference's + * visit() method. + * - @e T_action The type of functor to invoke. + * - @e T_type The type of the reference. + * @param _A_action The functor to invoke. + * @param _A_argument The visited instance. + */ +template +void +visit_each(const T_action& _A_action, + const volatile_limit_reference& _A_target) +{ + visit_each(_A_action, _A_target.visit()); +} + + +/** A const_volatile_limit_reference object stores a reference (Foo&), but make sure that, + * if Foo inherits from sigc::trackable, then visit_each<>() will "limit" itself to the + * sigc::trackable reference instead of the derived reference. This avoids use of + * a reference to the derived type when the derived destructor has run. That can be + * a problem when using virtual inheritance. + * + * If Foo inherits from trackable then both the derived reference and the + * sigc::trackable reference are stored, so we can later retrieve the sigc::trackable + * reference without doing an implicit conversion. To retrieve the derived reference + * (so that you invoke methods or members of it), use invoke(). To retrieve the trackable + * reference (so that you can call visit_each() on it), you use visit(). + * + * If Foo does not inherit from sigc::trackable then invoke() and visit() just return the + * derived reference. + * + * This is used for bound (sigc::bind) slot parameters (via bound_argument), bound return values, + * and, with mem_fun(), the reference to the handling object. + * + * - @e T_type The type of the reference. + */ +template ::value> +class const_volatile_limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + const_volatile_limit_reference(const T_type& _A_target) + : visited(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const T_type& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline const volatile T_type& invoke() const + { return visited; } + +private: + /** The reference. + */ + const T_type& visited; +}; + +/** const_volatile_limit_reference object for a class that derives from trackable. + * - @e T_type The type of the reference. + */ +template +class const_volatile_limit_reference +{ +public: + /** Constructor. + * @param _A_target The reference to limit. + */ + const_volatile_limit_reference(const T_type& _A_target) + : visited(_A_target), + invoked(_A_target) + {} + + /** Retrieve the entity to visit for visit_each(). + * Depending on the template specialization, this is either a derived reference, or sigc::trackable& if T_type derives from sigc::trackable. + * @return The reference. + */ + inline const trackable& visit() const + { return visited; } + + /** Retrieve the reference. + * This is always a reference to the derived instance. + * @return The reference. + */ + inline const volatile T_type& invoke() const + { return invoked; } + +private: + /** The trackable reference. + */ + const trackable& visited; + + /** The reference. + */ + const T_type& invoked; +}; + +/** Implementation of visit_each() specialized for the const_volatile_limit_reference + * class, to call visit_each() on the entity returned by the const_volatile_limit_reference's + * visit() method. + * - @e T_action The type of functor to invoke. + * - @e T_type The type of the reference. + * @param _A_action The functor to invoke. + * @param _A_argument The visited instance. + */ +template +void +visit_each(const T_action& _A_action, + const const_volatile_limit_reference& _A_target) +{ + visit_each(_A_action, _A_target.visit()); +} + + +} /* namespace sigc */ + + +#endif /* _SIGC_MACROS_LIMIT_REFERENCEHM4_ */ diff --git a/libs/sigc++2/sigc++/reference_wrapper.h b/libs/sigc++2/sigc++/reference_wrapper.h index 436e02f9bb..5a57e91679 100644 --- a/libs/sigc++2/sigc++/reference_wrapper.h +++ b/libs/sigc++2/sigc++/reference_wrapper.h @@ -97,14 +97,6 @@ struct unwrap_reference > typedef const T_type& type; }; -template -T_type& unwrap(T_type& v) -{ return v; } - -template -const T_type& unwrap(const T_type& v) -{ return v; } - template T_type& unwrap(const reference_wrapper& v) { return v; } diff --git a/libs/sigc++2/sigc++/retype.h b/libs/sigc++2/sigc++/retype.h index 5df6622f84..cad2c97111 100644 --- a/libs/sigc++2/sigc++/retype.h +++ b/libs/sigc++2/sigc++/retype.h @@ -23,98 +23,98 @@ struct retype_slot_functor template inline T_return operator()(T_arg1 _A_a1) { return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take> - ((T_type1)_A_a1)); + (static_cast(_A_a1))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template inline T_return sun_forte_workaround(T_arg1 _A_a1) { return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take> - ((T_type1)_A_a1)); + (static_cast(_A_a1))); } #endif template inline T_return operator()(T_arg1 _A_a1,T_arg2 _A_a2) { return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2)); + (static_cast(_A_a1),static_cast(_A_a2))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template inline T_return sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) { return T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2)); + (static_cast(_A_a1),static_cast(_A_a2))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6),static_cast(_A_a7))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6),static_cast(_A_a7))); } #endif @@ -144,98 +144,98 @@ struct retype_slot_functor inline void operator()(T_arg1 _A_a1) { T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take> - ((T_type1)_A_a1)); + (static_cast(_A_a1))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template inline void sun_forte_workaround(T_arg1 _A_a1) { T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take> - ((T_type1)_A_a1)); + (static_cast(_A_a1))); } #endif template inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2) { T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2)); + (static_cast(_A_a1),static_cast(_A_a2))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template inline void sun_forte_workaround(T_arg1 _A_a1,T_arg2 _A_a2) { T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2)); + (static_cast(_A_a1),static_cast(_A_a2))); } #endif template inline void operator()(T_arg1 _A_a1,T_arg2 _A_a2,T_arg3 _A_a3) { T_return(this->functor_.SIGC_WORKAROUND_OPERATOR_PARENTHESES::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take> - ((T_type1)_A_a1,(T_type2)_A_a2,(T_type3)_A_a3,(T_type4)_A_a4,(T_type5)_A_a5)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6))); } #endif template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6),static_cast(_A_a7))); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template 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::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::take,typename ::sigc::type_trait::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)); + (static_cast(_A_a1),static_cast(_A_a2),static_cast(_A_a3),static_cast(_A_a4),static_cast(_A_a5),static_cast(_A_a6),static_cast(_A_a7))); } #endif @@ -250,6 +250,7 @@ void retype_slot_functorfunctor_(); } +//template specialization of visit_each<>(action, functor): template void visit_each(const T_action& _A_action, const retype_slot_functor& _A_target) diff --git a/libs/sigc++2/sigc++/signal.h b/libs/sigc++2/sigc++/signal.h index a89112cf9e..282a5b1503 100644 --- a/libs/sigc++2/sigc++/signal.h +++ b/libs/sigc++2/sigc++/signal.h @@ -11,11 +11,13 @@ #include #include -// TODO: This should have its own test. +//SIGC_TYPEDEF_REDEFINE_ALLOWED: +// TODO: This should have its own test, but I can not create one that gives the error instead of just a warning. murrayc. // I have just used this because there is a correlation between these two problems. #ifdef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD - //Compilers, such as SUN Forte C++, that do not allow this also often + //Compilers, such as older versions of SUN Forte C++, that do not allow this also often //do not allow a typedef to have the same name as a class in the typedef's definition. + //For Sun Forte CC 5.7 (SUN Workshop 10), comment this out to fix the build. #define SIGC_TYPEDEF_REDEFINE_ALLOWED 1 #endif @@ -71,7 +73,7 @@ struct slot_iterator return *this; } - slot_iterator& operator--(int) + slot_iterator operator--(int) { slot_iterator __tmp(*this); --i_; @@ -137,7 +139,7 @@ struct slot_const_iterator return *this; } - slot_const_iterator& operator--(int) + slot_const_iterator operator--(int) { slot_const_iterator __tmp(*this); --i_; @@ -171,8 +173,20 @@ struct slot_list typedef slot_iterator iterator; typedef slot_const_iterator const_iterator; + + #ifndef SIGC_HAVE_SUN_REVERSE_ITERATOR typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; + #else + typedef std::reverse_iterator reverse_iterator; + + typedef std::reverse_iterator const_reverse_iterator; + #endif /* SIGC_HAVE_SUN_REVERSE_ITERATOR */ + + + slot_list() : list_(0) {} @@ -307,7 +321,7 @@ struct slot_iterator_buf return *this; } - slot_iterator_buf& operator--(int) + slot_iterator_buf operator--(int) { slot_iterator_buf __tmp(*this); --i_; @@ -383,7 +397,7 @@ struct slot_iterator_buf return *this; } - slot_iterator_buf& operator--(int) + slot_iterator_buf operator--(int) { slot_iterator_buf __tmp(*this); --i_; @@ -439,10 +453,11 @@ struct signal_emit0 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self ; - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } }; @@ -468,21 +483,32 @@ struct signal_emit0 */ static result_type emit(signal_impl* impl) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_); + } + } + return r_; } }; @@ -509,8 +535,9 @@ struct signal_emit0 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -563,10 +590,11 @@ struct signal_emit1 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self (_A_a1); - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } typename type_trait::take _A_a1_; @@ -595,21 +623,32 @@ struct signal_emit1 */ static result_type emit(signal_impl* impl, typename type_trait::take _A_a1) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1); + } + } + return r_; } }; @@ -638,8 +677,9 @@ struct signal_emit1 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -693,10 +733,11 @@ struct signal_emit2 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self (_A_a1,_A_a2); - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } typename type_trait::take _A_a1_; @@ -727,21 +768,32 @@ struct signal_emit2 */ static result_type emit(signal_impl* impl, typename type_trait::take _A_a1,typename type_trait::take _A_a2) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2); + } + } + return r_; } }; @@ -771,8 +823,9 @@ struct signal_emit2 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -827,10 +880,11 @@ struct signal_emit3 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self (_A_a1,_A_a2,_A_a3); - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } typename type_trait::take _A_a1_; @@ -863,21 +917,32 @@ struct signal_emit3 */ static result_type emit(signal_impl* impl, typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3); + } + } + return r_; } }; @@ -908,8 +973,9 @@ struct signal_emit3 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -965,10 +1031,11 @@ struct signal_emit4 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self (_A_a1,_A_a2,_A_a3,_A_a4); - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } typename type_trait::take _A_a1_; @@ -1003,21 +1070,32 @@ struct signal_emit4 */ static result_type emit(signal_impl* impl, typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4); + } + } + return r_; } }; @@ -1049,8 +1127,9 @@ struct signal_emit4 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -1107,10 +1186,11 @@ struct signal_emit5 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5); - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } typename type_trait::take _A_a1_; @@ -1147,21 +1227,32 @@ struct signal_emit5 */ static result_type emit(signal_impl* impl, typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5); + } + } + return r_; } }; @@ -1194,8 +1285,9 @@ struct signal_emit5 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -1253,10 +1345,11 @@ struct signal_emit6 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } typename type_trait::take _A_a1_; @@ -1295,21 +1388,32 @@ struct signal_emit6 */ static result_type emit(signal_impl* impl, typename type_trait::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6); + } + } + return r_; } }; @@ -1343,8 +1447,9 @@ struct signal_emit6 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -1403,10 +1508,11 @@ struct signal_emit7 return accumulator(slot_iterator_buf_type(), slot_iterator_buf_type()); signal_exec exec(impl); + temp_slot_list slots(impl->slots_); self_type self (_A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); - return accumulator(slot_iterator_buf_type(impl->slots_.begin(), &self), - slot_iterator_buf_type(impl->slots_.end(), &self)); + return accumulator(slot_iterator_buf_type(slots.begin(), &self), + slot_iterator_buf_type(slots.end(), &self)); } typename type_trait::take _A_a1_; @@ -1447,21 +1553,32 @@ struct signal_emit7::take _A_a1,typename type_trait::take _A_a2,typename type_trait::take _A_a3,typename type_trait::take _A_a4,typename type_trait::take _A_a5,typename type_trait::take _A_a6,typename type_trait::take _A_a7) { - if (!impl || impl->slots_.empty()) return T_return(); - iterator_type it = impl->slots_.begin(); - for (; it != impl->slots_.end(); ++it) - if (!it->empty() && !it->blocked()) break; - if (it == impl->slots_.end()) return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: - + if (!impl || impl->slots_.empty()) + return T_return(); + signal_exec exec(impl); - - T_return r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); - for (++it; it != impl->slots_.end(); ++it) - { - if (it->empty() || it->blocked()) - continue; - r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); - } + T_return r_ = T_return(); + + //Use this scope to make sure that "slots" is destroyed before "exec" is destroyed. + //This avoids a leak on MSVC++ - see http://bugzilla.gnome.org/show_bug.cgi?id=306249 + { + temp_slot_list slots(impl->slots_); + iterator_type it = slots.begin(); + for (; it != slots.end(); ++it) + if (!it->empty() && !it->blocked()) break; + + if (it == slots.end()) + return T_return(); // note that 'T_return r_();' doesn't work => define 'r_' after this line and initialize as follows: + + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); + for (++it; it != slots.end(); ++it) + { + if (it->empty() || it->blocked()) + continue; + r_ = (reinterpret_cast(it->rep_->call_))(it->rep_, _A_a1,_A_a2,_A_a3,_A_a4,_A_a5,_A_a6,_A_a7); + } + } + return r_; } }; @@ -1496,8 +1613,9 @@ struct signal_emit7 { if (!impl || impl->slots_.empty()) return; signal_exec exec(impl); + temp_slot_list slots(impl->slots_); - for (iterator_type it = impl->slots_.begin(); it != impl->slots_.end(); ++it) + for (iterator_type it = slots.begin(); it != slots.end(); ++it) { if (it->empty() || it->blocked()) continue; @@ -2540,13 +2658,14 @@ public: }; + /** Convenience wrapper for the numbered sigc::signal0 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::signal * template for 0 argument(s). */ template -class signal +class signal : public signal0 { public: @@ -2570,13 +2689,14 @@ public: : signal0(src) {} }; + /** Convenience wrapper for the numbered sigc::signal1 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::signal * template for 1 argument(s). */ template -class signal +class signal : public signal1 { public: @@ -2600,13 +2720,14 @@ public: : signal1(src) {} }; + /** Convenience wrapper for the numbered sigc::signal2 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::signal * template for 2 argument(s). */ template -class signal +class signal : public signal2 { public: @@ -2630,13 +2751,14 @@ public: : signal2(src) {} }; + /** Convenience wrapper for the numbered sigc::signal3 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::signal * template for 3 argument(s). */ template -class signal +class signal : public signal3 { public: @@ -2660,13 +2782,14 @@ public: : signal3(src) {} }; + /** Convenience wrapper for the numbered sigc::signal4 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::signal * template for 4 argument(s). */ template -class signal +class signal : public signal4 { public: @@ -2690,13 +2813,14 @@ public: : signal4(src) {} }; + /** Convenience wrapper for the numbered sigc::signal5 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::signal * template for 5 argument(s). */ template -class signal +class signal : public signal5 { public: @@ -2720,13 +2844,14 @@ public: : signal5(src) {} }; + /** Convenience wrapper for the numbered sigc::signal6 template. * See the base class for useful methods. * This is the template specialization of the unnumbered sigc::signal * template for 6 argument(s). */ template -class signal +class signal : public signal6 { public: diff --git a/libs/sigc++2/sigc++/signal_base.cc b/libs/sigc++2/sigc++/signal_base.cc index 568cf061c8..e22017f10b 100644 --- a/libs/sigc++2/sigc++/signal_base.cc +++ b/libs/sigc++2/sigc++/signal_base.cc @@ -68,6 +68,7 @@ signal_impl::iterator_type signal_impl::insert(signal_impl::iterator_type i, con void signal_impl::sweep() { + deferred_ = false; iterator_type i = slots_.begin(); while (i != slots_.end()) if ((*i).empty()) @@ -78,7 +79,7 @@ void signal_impl::sweep() void* signal_impl::notify(void* d) { - signal_impl* self = (signal_impl*)d; + signal_impl* self = reinterpret_cast(d); if (self->exec_count_ == 0) self->sweep(); else // This is occuring during signal emission. diff --git a/libs/sigc++2/sigc++/signal_base.h b/libs/sigc++2/sigc++/signal_base.h index 3af33d3e99..582a8f4943 100644 --- a/libs/sigc++2/sigc++/signal_base.h +++ b/libs/sigc++2/sigc++/signal_base.h @@ -44,8 +44,9 @@ namespace internal struct SIGC_API signal_impl { typedef size_t size_type; - typedef std::list::iterator iterator_type; - typedef std::list::const_iterator const_iterator_type; + typedef std::list slot_list; + typedef slot_list::iterator iterator_type; + typedef slot_list::const_iterator const_iterator_type; signal_impl(); @@ -160,6 +161,40 @@ struct SIGC_API signal_exec { sig_->unreference_exec(); } }; +/** Temporary slot list used during signal emission. + * Through evolution this class is slightly misnamed. It is now + * an index into the slot_list passed into it. It simply keeps track + * of where the end of this list was at construction, and pretends that's + * the end of your list. This way you may connect during emittion without + * inadvertently entering an infinite loop, as well as make other + * modifications to the slot_list at your own risk. + */ +struct temp_slot_list +{ + typedef signal_impl::slot_list slot_list; + typedef signal_impl::iterator_type iterator; + typedef signal_impl::const_iterator_type const_iterator; + + temp_slot_list(slot_list &slots) : slots_(slots) + { + placeholder = slots_.insert(slots_.end(), slot_base()); + } + + ~temp_slot_list() + { + slots_.erase(placeholder); + } + + iterator begin() { return slots_.begin(); } + iterator end() { return placeholder; } + const_iterator begin() const { return slots_.begin(); } + const_iterator end() const { return placeholder; } + +private: + slot_list &slots_; + slot_list::iterator placeholder; +}; + } /* namespace internal */ @@ -228,13 +263,16 @@ struct SIGC_API signal_base : public trackable protected: typedef internal::signal_impl::iterator_type iterator_type; - /** Adds a slot at the bottom of the list of slots. + /** Adds a slot at the end of the list of slots. + * With connect(), slots can also be added during signal emission. + * In this case, they won't be executed until the next emission occurs. * @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. + * Note that this function does not work during signal emission! * @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. @@ -242,6 +280,7 @@ protected: iterator_type insert(iterator_type i, const slot_base& slot_); /** Removes the slot at the given position from the list of slots. + * Note that this function does not work during signal emission! * @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. */ diff --git a/libs/sigc++2/sigc++/trackable.cc b/libs/sigc++2/sigc++/trackable.cc index 46e2592ffb..a4f1f54e18 100644 --- a/libs/sigc++2/sigc++/trackable.cc +++ b/libs/sigc++2/sigc++/trackable.cc @@ -20,6 +20,9 @@ #include #include + +SIGC_USING_STD(ostream) + using namespace std; namespace sigc diff --git a/libs/sigc++2/sigc++/type_traits.h b/libs/sigc++2/sigc++/type_traits.h index c6d6dbbc81..b2c1a7eb2d 100644 --- a/libs/sigc++2/sigc++/type_traits.h +++ b/libs/sigc++2/sigc++/type_traits.h @@ -19,7 +19,8 @@ #ifndef _SIGC_TYPE_TRAIT_H_ #define _SIGC_TYPE_TRAIT_H_ -#include +#include //To get SIGC_SELF_REFERENCE_IN_MEMBER_INITIALIZATION + namespace sigc { @@ -59,24 +60,6 @@ struct type_trait typedef const T_type* pointer; }; -template -struct type_trait > -{ - typedef T_type type; - typedef T_type& pass; - typedef T_type& take; - typedef T_type* pointer; -}; - -template -struct type_trait > -{ - typedef T_type type; - typedef T_type& pass; - typedef const T_type& take; - typedef T_type* pointer; -}; - template<> struct type_trait { @@ -87,9 +70,27 @@ struct type_trait }; -/** From Esa Pulkkin: +// From Esa Pulkkin: +/** * Compile-time determination of base-class relationship in C++ * (adapted to match the syntax of boost's type_traits library). + * + * Use this to provide a template specialization for a set of types. + * For instance, + * + * template < class T_thing, bool Tval_derives_from_something = sigc::is_base_and_derived::value > + * class TheTemplate + * { + * //Standard implementation. + * } + * + * //Specialization for T_things that derive from Something (Tval_derives_from_something is true) + * template + * class TheTemplate + * { + * T_thing thing; + thing.method_that_is_in_something(); + * } */ template struct is_base_and_derived @@ -99,15 +100,40 @@ private: char memory[64]; }; - struct test { +#ifndef SIGC_SELF_REFERENCE_IN_MEMBER_INITIALIZATION + + //Allow the internal inner class to access the other (big) inner + //class. The Tru64 compiler needs this. murrayc. + friend struct internal_class; + + //Certain compilers, notably GCC 3.2, require these functions to be inside an inner class. + struct internal_class + { static big is_base_class_(...); static char is_base_class_(typename type_trait::pointer); }; public: static const bool value = - sizeof(test::is_base_class_((typename type_trait::pointer)0)) == + sizeof(internal_class::is_base_class_(reinterpret_cast::pointer>(0))) == sizeof(char); + +#else //SIGC_SELF_REFERENCE_IN_MEMBER_INITIALIZATION + + //The AIX xlC compiler does not like these 2 functions being in the inner class. + //It says "The incomplete type "test" must not be used as a qualifier. + //It does not seem necessary anyway. murrayc. + static big is_base_class_(...); + static char is_base_class_(typename type_trait::pointer); + +public: + static const bool value = + sizeof(is_base_class_(reinterpret_cast::pointer>(0))) == + sizeof(char); + +#endif //SIGC_SELF_REFERENCE_IN_MEMBER_INITIALIZATION + + void avoid_gcc3_warning_(); //Not implemented. g++ 3.3.5 (but not 3.3.4, and not 3.4) warn that there are no public methods, even though there is a public variable. }; template diff --git a/libs/sigc++2/sigc++/visit_each.h b/libs/sigc++2/sigc++/visit_each.h index 7b7978531f..cff27ba28b 100644 --- a/libs/sigc++2/sigc++/visit_each.h +++ b/libs/sigc++2/sigc++/visit_each.h @@ -26,52 +26,83 @@ namespace sigc { namespace internal { +//This should really be an inner class of limit_derived_target, without the T_limit template type, +//But the SUN CC 5.7 (not earlier versions) compiler finds it ambiguous when we specify a particular specialization of it. +//and does not seem to allow us to tell it explicitly that it's an inner class. +template +struct with_type; + +//Specialization for I_derived = false +template struct +with_type +{ + static void execute_(const T_type&, const T_limit&) {} +}; + +//Specialization for I_derived = true +template +struct with_type +{ + static void execute_(const T_type& _A_type, const T_limit& _A_action) + { _A_action.action_(_A_type); } +}; + + /// Helper struct for visit_each_type(). template struct limit_derived_target { typedef limit_derived_target T_self; - template struct with_type; - - template struct with_type - { static void execute_(const T_type&, const T_self&) {} }; - - template struct with_type - { static void execute_(const T_type& _A_type, const T_self& _A_action) - { _A_action.action_(_A_type); } - }; - + template void operator()(const T_type& _A_type) const - { with_type::value,T_type>::execute_(_A_type,*this); } + { + with_type::value, T_type, T_self>::execute_(_A_type, *this); + } - limit_derived_target(const T_action& _A_action): action_(_A_action) {} + limit_derived_target(const T_action& _A_action) + : action_(_A_action) + {} T_action action_; }; -/// Helper struct for visit_each_type(). +// Specialization for T_target pointer types, to provide a slightly different execute_() implementation. + +template +struct with_type_pointer; + +//Specialization for I_derived = false +template +struct with_type_pointer +{ + static void execute_(const T_type&, const T_limit&) {} +}; + +//Specialization for I_derived = true +template +struct with_type_pointer +{ + static void execute_(const T_type& _A_type, const T_limit& _A_action) + { _A_action.action_(&_A_type); } +}; + template struct limit_derived_target { typedef limit_derived_target T_self; - template struct with_type; - - template struct with_type - { static void execute_(const T_type&, const T_self&) {} }; - - template struct with_type - { static void execute_(const T_type& _A_type, const T_self& _A_action) - { _A_action.action_(&_A_type); } - }; template void operator()(const T_type& _A_type) const - { with_type::value,T_type>::execute_(_A_type,*this); } + { + with_type_pointer::value, T_type, T_self>::execute_(_A_type, *this); + } - limit_derived_target(const T_action& _A_action): action_(_A_action) {} + limit_derived_target(const T_action& _A_action) + : action_(_A_action) + {} T_action action_; }; @@ -120,8 +151,23 @@ void visit_each(const T_action& _A_action, const T_functor& _A_functor) template void visit_each_type(const T_action& _A_action, const T_functor& _A_functor) { - internal::limit_derived_target limited_action(_A_action); - visit_each(limited_action,_A_functor); + typedef internal::limit_derived_target type_limited_action; + + type_limited_action limited_action(_A_action); + + //specifying the types of the template specialization prevents disconnection of bound trackable references (such as with sigc::ref()), + //probably because the visit_each<> specializations take various different template types, + //in various sequences, and we are probably specifying only a subset of them with this. + // + //But this is required by the AIX (and maybe IRIX MipsPro and Tru64) compilers. + //I guess that sigc::ref() therefore does not work on those platforms. murrayc + //visit_each(limited_action, _A_functor); + + //g++ (even slightly old ones) is our primary platform, so we could use the non-crashing version. + //However, the expliict version also fixes a crash in a slightl more common case: http://bugzilla.gnome.org/show_bug.cgi?id=169225 + //Users (and distributors) of libsigc++ on AIX (and maybe IRIX MipsPro and Tru64) do + //need to use the version above instead, to allow compilation. + visit_each(limited_action, _A_functor); } } /* namespace sigc */ diff --git a/libs/sigc++2/sigc++config.h.in b/libs/sigc++2/sigc++config.h.in index 357873fae6..1cd8c3e2e0 100644 --- a/libs/sigc++2/sigc++config.h.in +++ b/libs/sigc++2/sigc++config.h.in @@ -1,10 +1,80 @@ -/* sigc++config.h.in. (Generated manually.) */ -/* configure checks */ -#undef SIGC_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD -#undef SIGC_MSVC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD +#ifndef _SIGCXX_CONFIG_H +#define _SIGCXX_CONFIG_H -/* 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 +// Detect common platforms +#if defined(_WIN32) + // Win32 compilers have a lot of variation + #if defined(_MSC_VER) + #define SIGC_MSC + #define SIGC_WIN32 + #define SIGC_DLL + #elif defined(__CYGWIN__) + #define SIGC_CONFIGURE + #elif defined(__MINGW32__) + #define SIGC_WIN32 + #define SIGC_CONFIGURE + #else + //The Tru64 compiler complains about this "unrecognized preprocessing directive", but it should never get this far anyway. + //#warning "libsigc++ config: Unknown win32 architecture (send me gcc --dumpspecs or equiv)" + #endif +#else + #define SIGC_CONFIGURE +#endif /* _WIN32 */ + +#ifdef SIGC_CONFIGURE + // configure checks + #undef SIGC_GCC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD + #undef SIGC_MSVC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD + #undef SIGC_SELF_REFERENCE_IN_MEMBER_INITIALIZATION + + #undef SIGC_HAVE_NAMESPACE_STD + #undef SIGC_HAVE_SUN_REVERSE_ITERATOR + #undef SIGC_TYPEDEF_REDEFINE_ALLOWED + + // platform specific macros + // #define LIBSIGC_DISABLE_DEPRECATED + // #define SIGC_NEW_DELETE_IN_LIBRARY_ONLY +#endif /* SIGC_CONFIGURE */ + +#ifdef SIGC_MSC + + // MS VC7 Warning 4251 says that the classes to any member objects in an + // exported class must be also be exported. Some of the libsigc++ + // template classes contain std::list members. MS KB article 168958 says + // that it's not possible to export a std::list instantiation due to some + // wacky class nesting issues, so our only options are to ignore the + // warning or to modify libsigc++ to remove the std::list dependency. + // AFAICT, the std::list members are used internally by the library code + // and don't need to be used from the outside, and ignoring the warning + // seems to have no adverse effects, so that seems like a good enough + // solution for now. + // + #pragma warning(disable:4251) + + #define SIGC_MSVC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD + #define SIGC_NEW_DELETE_IN_LIBRARY_ONLY // To keep ABI compatibility + #define SIGC_HAVE_NAMESPACE_STD 1 + +#endif /* SIGC_MSC */ + +//Put things in the std namespace, if they should be there. +#ifndef SIGC_HAVE_NAMESPACE_STD + # define SIGC_USING_STD(Symbol) namespace std { using ::Symbol; } +#else + # define SIGC_USING_STD(Symbol) /* empty */ +#endif + +#ifdef SIGC_DLL + #if defined(SIGC_BUILD) && defined(_WINDLL) + #define SIGC_API __declspec(dllexport) + #elif !defined(SIGC_BUILD) + #define SIGC_API __declspec(dllimport) + #else + #define SIGC_API + #endif /* SIGC_BUILD - _WINDLL */ +#else + #define SIGC_API +#endif /* SIGC_DLL */ + +#endif /* _SIGCXX_CONFIG_H */