Gtkmm-forge Digest, Vol 19, Issue 4



Send Gtkmm-forge mailing list submissions to
	gtkmm-forge lists sourceforge net

To subscribe or unsubscribe via the World Wide Web, visit
	https://lists.sourceforge.net/lists/listinfo/gtkmm-forge
or, via email, send a message with subject or body 'help' to
	gtkmm-forge-request lists sourceforge net

You can reach the person managing the list at
	gtkmm-forge-owner lists sourceforge net

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Gtkmm-forge digest..."


gtkmm-forge is the mailing list that receives gtkmm bug reports from bugzilla.  A daily digest is sent to gtkmm-main, to encourage people to help fixing the bugs. Do not try to unsubscribe gtkmm-forge from gtkmm-list.


Today's Topics:

   1. [Bug 505766] Gtk::RecentAction must derive from
      Gtk::RecentChooser (gtkmm (bugzilla.gnome.org))
   2. [Bug 506394] New: Compose without format string
      (glibmm (bugzilla.gnome.org))
   3. [Bug 505766] Gtk::RecentAction must derive from
      Gtk::RecentChooser (gtkmm (bugzilla.gnome.org))
   4. [Bug 506410] New: Call of overloaded Stringify is	ambiguous
      (glibmm (bugzilla.gnome.org))
   5. [Bug 506415] New: Compose with more than 9	parameters
      (glibmm (bugzilla.gnome.org))


----------------------------------------------------------------------

Message: 1
Date: Sat, 29 Dec 2007 22:04:40 +0000 (UTC)
From: "gtkmm (bugzilla.gnome.org)"
	<bugzilla-daemon bugzilla gnome org>
Subject: [gtkmm bugzilla] [Bug 505766] Gtk::RecentAction must derive
	from	Gtk::RecentChooser
To: gtkmm-forge lists sourceforge net
Message-ID: <20071229220440 945B223F51C label gnome org>
Content-Type: text/plain; charset=utf-8

If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=505766

  gtkmm | general | Ver: 2.12.x

Murray Cumming changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |murrayc murrayc com




------- Comment #1 from Murray Cumming  2007-12-29 22:04 UTC -------
That is an unfortunate mistake. I wonder if anybody can be using this. If it's
impossible to use it now then we can safely break ABI by adding the extra base
class.


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=505766.



------------------------------

Message: 2
Date: Sun, 30 Dec 2007 10:31:35 +0000 (UTC)
From: "glibmm (bugzilla.gnome.org)"
	<bugzilla-daemon bugzilla gnome org>
Subject: [gtkmm bugzilla] [Bug 506394] New: Compose without format
	string
To: gtkmm-forge lists sourceforge net
Message-ID: <bug-506394-5595 http bugzilla gnome org/>
Content-Type: text/plain; charset=utf-8

If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=506394

  glibmm | strings | Ver: 2.15.x
           Summary: Compose without format string
           Product: glibmm
           Version: 2.15.x
          Platform: Other
        OS/Version: All
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: Normal
         Component: strings
        AssignedTo: gtkmm-forge lists sourceforge net
        ReportedBy: szilard pfeiffer gmail com
         QAContact: gtkmm-forge lists sourceforge net
     GNOME version: Unversioned Enhancement
   GNOME milestone: Unspecified


It is not possible to compose without format string. Error occurs if only a
literal string or numeric constant or variable is given.

In my humble opinion it would be easier to use the compose API if it was
possible. I'd suggest something like the following:


Index: glib/glibmm/ustring.h
===================================================================
--- glib/glibmm/ustring.h       (revision 490)
+++ glib/glibmm/ustring.h       (working copy)
@@ -609,6 +609,15 @@
 //! @name Message formatting.
 //! @{

+  /*
+   * @param a1 The argument to substitute for "%1".
+   * @return The substituted message string.
+   * @throw Glib::ConvertError
+   */ 
+  template <class T1>
+  static inline
+  ustring compose(const T1& a1);
+
   /*! Substitute placeholders in a format string with the referenced
arguments.
    * The template string should be in <tt>qt-format</tt>, that is
    * <tt>"%1"</tt>, <tt>"%2"</tt>, ..., <tt>"%9"</tt> are used as placeholders
@@ -1240,7 +1249,6 @@

 public:
   explicit inline Stringify(const T& arg) : string_ (ustring::format(arg)) {}
-  explicit inline Stringify(const char* arg) : string_ (arg) {}
   inline const ustring* ptr() const { return &string_; }
 };

@@ -1261,6 +1269,16 @@

 template <class T1>
 inline // static
+ustring ustring::compose(const T1& a1)
+{
+  const ustring::Stringify<T1> s0 (a1);
+
+  const ustring *const argv[] = { s0.ptr() };
+  return ustring::compose_argv("%1", G_N_ELEMENTS(argv), argv);
+}
+
+template <class T1>
+inline // static
 ustring ustring::compose(const ustring& fmt, const T1& a1)
 {
   const ustring::Stringify<T1> s1 (a1);
Index: examples/compose/main.cc
===================================================================
--- examples/compose/main.cc    (revision 490)
+++ examples/compose/main.cc    (working copy)
@@ -32,7 +32,7 @@
   const int    i = int(a / (a + b) * 40.0);

   std::cout
-    << ustring::compose("%1 is lower than %2.", a, b)
+    << ustring::compose(a) << ustring::compose(" is lower than ") <<
ustring::compose(b) << ustring::compose('.')
     << std::endl
     << ustring::compose("%2 is greater than %1.", a, b)
     << std::endl


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=506394.



------------------------------

Message: 3
Date: Sun, 30 Dec 2007 12:02:46 +0000 (UTC)
From: "gtkmm (bugzilla.gnome.org)"
	<bugzilla-daemon bugzilla gnome org>
Subject: [gtkmm bugzilla] [Bug 505766] Gtk::RecentAction must derive
	from	Gtk::RecentChooser
To: gtkmm-forge lists sourceforge net
Message-ID: <20071230120246 DB91223F58D label gnome org>
Content-Type: text/plain; charset=utf-8

If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=505766

  gtkmm | general | Ver: 2.12.x




------- Comment #2 from denes faluvegi hotmail com  2007-12-30 12:02 UTC -------
Yes, this class is useless without Gtk::RecentChooser base. I suggest you to
release the fix now and hint distributions to update ASAP.


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=505766.



------------------------------

Message: 4
Date: Sun, 30 Dec 2007 13:10:28 +0000 (UTC)
From: "glibmm (bugzilla.gnome.org)"
	<bugzilla-daemon bugzilla gnome org>
Subject: [gtkmm bugzilla] [Bug 506410] New: Call of overloaded
	Stringify is	ambiguous
To: gtkmm-forge lists sourceforge net
Message-ID: <bug-506410-5595 http bugzilla gnome org/>
Content-Type: text/plain; charset=utf-8

If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=506410

  glibmm | strings | Ver: 2.15.x
           Summary: Call of overloaded Stringify is ambiguous
           Product: glibmm
           Version: 2.15.x
          Platform: Other
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: strings
        AssignedTo: gtkmm-forge lists sourceforge net
        ReportedBy: szilard pfeiffer gmail com
         QAContact: gtkmm-forge lists sourceforge net
     GNOME version: 2.19/2.20
   GNOME milestone: Unspecified


Please describe the problem:
In case of string literals or character pointers cause compilation problem.

Steps to reproduce:
Test case:

#include <glibmm.h>

#include <iostream>

int main(int, char**)
{
  Glib::init();

  using Glib::ustring;

  const char *constant_string = "constant string";

  std::cout
    << ustring::compose("Compose strings: %1, %2.", constant_string, "literal
string")
    << std::endl;

  return 0;
}


Actual results:
Compiler error message:

/usr/local/include/glibmm-2.4/glibmm/ustring.h: In static member function
?static Glib::ustring Glib::ustring::compose(const Glib::ustring&, const T1&,
const T2&) [with T1 = const char*, T2 = char [15]]?:
test.cc:14:   instantiated from here
/usr/local/include/glibmm-2.4/glibmm/ustring.h:1276: error: call of overloaded
?Stringify(const char* const&)? is ambiguous
/usr/local/include/glibmm-2.4/glibmm/ustring.h:1243: note: candidates are:
Glib::ustring::Stringify<T>::Stringify(const char*) [with T = const char*]
/usr/local/include/glibmm-2.4/glibmm/ustring.h:1242: note:                
Glib::ustring::Stringify<T>::Stringify(const T&) [with T = const char*]
test.cc:14:   instantiated from here
/usr/local/include/glibmm-2.4/glibmm/ustring.h:1277: error: call of overloaded
?Stringify(const char [15])? is ambiguous
/usr/local/include/glibmm-2.4/glibmm/ustring.h:1243: note: candidates are:
Glib::ustring::Stringify<T>::Stringify(const char*) [with T = char [15]]
/usr/local/include/glibmm-2.4/glibmm/ustring.h:1242: note:                
Glib::ustring::Stringify<T>::Stringify(const T&) [with T = char [15]]


Expected results:


Does this happen every time?


Other information:
The following patch or the patch in bug 506394 comment 0 may solve the problem.

Index: glib/glibmm/ustring.h
===================================================================
--- glib/glibmm/ustring.h       (revision 490)
+++ glib/glibmm/ustring.h       (working copy)
@@ -1240,7 +1240,6 @@

 public:
   explicit inline Stringify(const T& arg) : string_ (ustring::format(arg)) {}
-  explicit inline Stringify(const char* arg) : string_ (arg) {}
   inline const ustring* ptr() const { return &string_; }
 };


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=506410.



------------------------------

Message: 5
Date: Sun, 30 Dec 2007 13:44:22 +0000 (UTC)
From: "glibmm (bugzilla.gnome.org)"
	<bugzilla-daemon bugzilla gnome org>
Subject: [gtkmm bugzilla] [Bug 506415] New: Compose with more than 9
	parameters
To: gtkmm-forge lists sourceforge net
Message-ID: <bug-506415-5595 http bugzilla gnome org/>
Content-Type: text/plain; charset=utf-8

If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=506415

  glibmm | strings | Ver: 2.15.x
           Summary: Compose with more than 9 parameters
           Product: glibmm
           Version: 2.15.x
          Platform: Other
        OS/Version: All
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: Normal
         Component: strings
        AssignedTo: gtkmm-forge lists sourceforge net
        ReportedBy: szilard pfeiffer gmail com
         QAContact: gtkmm-forge lists sourceforge net
     GNOME version: Unversioned Enhancement
   GNOME milestone: Unspecified


In some infrequent cases you must use the compose template function with more
than 9 parameters. The following patch may solve these situations:


Index: glib/glibmm/ustring.h
===================================================================
--- glib/glibmm/ustring.h       (revision 490)
+++ glib/glibmm/ustring.h       (working copy)
@@ -705,6 +705,86 @@
                   const T4& a4, const T5& a5, const T6& a6,
                   const T7& a7, const T8& a8, const T9& a9);

+  /* See the documentation for compose(const ustring& fmt, const T1& a1).
+   * @newin2p16
+   */
+  template <class T1, class T2, class T3, class T4, class T5,
+            class T6, class T7, class T8, class T9, class T10>
+  static inline
+  ustring compose(const ustring& fmt,
+                  const T1& a1, const T2& a2, const T3& a3,
+                  const T4& a4, const T5& a5, const T6& a6,
+                  const T7& a7, const T8& a8, const T9& a9,
+                  const T10& a10);
+
+  /* See the documentation for compose(const ustring& fmt, const T1& a1).
+   * @newin2p16
+   */
+  template <class T1, class T2, class T3, class T4, class T5,
+            class T6, class T7, class T8, class T9, class T10,
+            class T11>
+  static inline
+  ustring compose(const ustring& fmt,
+                  const T1& a1, const T2& a2, const T3& a3,
+                  const T4& a4, const T5& a5, const T6& a6,
+                  const T7& a7, const T8& a8, const T9& a9,
+                  const T10& a10, const T11& a11);
+
+  /* See the documentation for compose(const ustring& fmt, const T1& a1).
+   * @newin2p16
+   */
+  template <class T1, class T2, class T3, class T4, class T5,
+            class T6, class T7, class T8, class T9, class T10,
+            class T11, class T12>
+  static inline
+  ustring compose(const ustring& fmt,
+                  const T1& a1, const T2& a2, const T3& a3,
+                  const T4& a4, const T5& a5, const T6& a6,
+                  const T7& a7, const T8& a8, const T9& a9,
+                  const T10& a10, const T11& a11, const T12& a12);
+
+  /* See the documentation for compose(const ustring& fmt, const T1& a1).
+   * @newin2p16
+   */
+  template <class T1, class T2, class T3, class T4, class T5,
+            class T6, class T7, class T8, class T9, class T10,
+            class T11, class T12, class T13>
+  static inline
+  ustring compose(const ustring& fmt,
+                  const T1& a1, const T2& a2, const T3& a3,
+                  const T4& a4, const T5& a5, const T6& a6,
+                  const T7& a7, const T8& a8, const T9& a9,
+                  const T10& a10, const T11& a11, const T12& a12,
+                  const T13& a13);
+
+  /* See the documentation for compose(const ustring& fmt, const T1& a1).
+   * @newin2p16
+   */
+  template <class T1, class T2, class T3, class T4, class T5,
+            class T6, class T7, class T8, class T9, class T10,
+            class T11, class T12, class T13, class T14>
+  static inline
+  ustring compose(const ustring& fmt,
+                  const T1& a1, const T2& a2, const T3& a3,
+                  const T4& a4, const T5& a5, const T6& a6,
+                  const T7& a7, const T8& a8, const T9& a9,
+                  const T10& a10, const T11& a11, const T12& a12,
+                  const T13& a13, const T14& a14);
+
+  /* See the documentation for compose(const ustring& fmt, const T1& a1).
+   * @newin2p16
+   */
+  template <class T1, class T2, class T3, class T4, class T5,
+            class T6, class T7, class T8, class T9, class T10,
+            class T11, class T12, class T13, class T14, class T15>
+  static inline
+  ustring compose(const ustring& fmt,
+                  const T1& a1, const T2& a2, const T3& a3,
+                  const T4& a4, const T5& a5, const T6& a6,
+                  const T7& a7, const T8& a8, const T9& a9,
+                  const T10& a10, const T11& a11, const T12& a12,
+                  const T13& a13, const T14& a14, const T15& a15);
+
   /*! Format the argument to its string representation.
    * Applies the arguments in order to an std::wostringstream and returns the
    * resulting string.  I/O manipulators may also be used as arguments.  This
@@ -1405,6 +1484,185 @@
   return ustring::compose_argv(fmt, G_N_ELEMENTS(argv), argv);
 }

+template <class T1, class T2, class T3, class T4, class T5,
+          class T6, class T7, class T8, class T9, class T10>
+inline // static
+ustring ustring::compose(const ustring& fmt,
+                         const T1& a1, const T2& a2, const T3& a3,
+                         const T4& a4, const T5& a5, const T6& a6,
+                         const T7& a7, const T8& a8, const T9& a9,
+                         const T10& a10)
+{
+  const ustring::Stringify<T1> s1 (a1);
+  const ustring::Stringify<T2> s2 (a2);
+  const ustring::Stringify<T3> s3 (a3);
+  const ustring::Stringify<T4> s4 (a4);
+  const ustring::Stringify<T5> s5 (a5);
+  const ustring::Stringify<T6> s6 (a6);
+  const ustring::Stringify<T7> s7 (a7);
+  const ustring::Stringify<T8> s8 (a8);
+  const ustring::Stringify<T9> s9 (a9);
+  const ustring::Stringify<T10> s10 (a10);
+
+  const ustring *const argv[] = { s1.ptr(), s2.ptr(), s3.ptr(), s4.ptr(),
+                                  s5.ptr(), s6.ptr(), s7.ptr(), s8.ptr(),
s9.ptr(),
+                                  s10.ptr() };
+  return ustring::compose_argv(fmt, G_N_ELEMENTS(argv), argv);
+}
+
+template <class T1, class T2, class T3, class T4, class T5,
+          class T6, class T7, class T8, class T9, class T10,
+          class T11>
+inline // static
+ustring ustring::compose(const ustring& fmt,
+                         const T1& a1, const T2& a2, const T3& a3,
+                         const T4& a4, const T5& a5, const T6& a6,
+                         const T7& a7, const T8& a8, const T9& a9,
+                         const T10& a10, const T11& a11)
+{
+  const ustring::Stringify<T1> s1 (a1);
+  const ustring::Stringify<T2> s2 (a2);
+  const ustring::Stringify<T3> s3 (a3);
+  const ustring::Stringify<T4> s4 (a4);
+  const ustring::Stringify<T5> s5 (a5);
+  const ustring::Stringify<T6> s6 (a6);
+  const ustring::Stringify<T7> s7 (a7);
+  const ustring::Stringify<T8> s8 (a8);
+  const ustring::Stringify<T9> s9 (a9);
+  const ustring::Stringify<T10> s10 (a10);
+  const ustring::Stringify<T11> s11 (a11);
+
+  const ustring *const argv[] = { s1.ptr(), s2.ptr(), s3.ptr(), s4.ptr(),
+                                  s5.ptr(), s6.ptr(), s7.ptr(), s8.ptr(),
s9.ptr(),
+                                  s10.ptr(), s11.ptr() };
+  return ustring::compose_argv(fmt, G_N_ELEMENTS(argv), argv);
+}
+
+template <class T1, class T2, class T3, class T4, class T5,
+          class T6, class T7, class T8, class T9, class T10,
+          class T11, class T12>
+inline // static
+ustring ustring::compose(const ustring& fmt,
+                         const T1& a1, const T2& a2, const T3& a3,
+                         const T4& a4, const T5& a5, const T6& a6,
+                         const T7& a7, const T8& a8, const T9& a9,
+                         const T10& a10, const T11& a11, const T12& a12)
+{
+  const ustring::Stringify<T1> s1 (a1);
+  const ustring::Stringify<T2> s2 (a2);
+  const ustring::Stringify<T3> s3 (a3);
+  const ustring::Stringify<T4> s4 (a4);
+  const ustring::Stringify<T5> s5 (a5);
+  const ustring::Stringify<T6> s6 (a6);
+  const ustring::Stringify<T7> s7 (a7);
+  const ustring::Stringify<T8> s8 (a8);
+  const ustring::Stringify<T9> s9 (a9);
+  const ustring::Stringify<T10> s10 (a10);
+  const ustring::Stringify<T11> s11 (a11);
+  const ustring::Stringify<T12> s12 (a12);
+
+  const ustring *const argv[] = { s1.ptr(), s2.ptr(), s3.ptr(), s4.ptr(),
+                                  s5.ptr(), s6.ptr(), s7.ptr(), s8.ptr(),
s9.ptr(),
+                                  s10.ptr(), s11.ptr(), s12.ptr() };
+  return ustring::compose_argv(fmt, G_N_ELEMENTS(argv), argv);
+}
+
+template <class T1, class T2, class T3, class T4, class T5,
+          class T6, class T7, class T8, class T9, class T10,
+          class T11, class T12, class T13>
+inline // static
+ustring ustring::compose(const ustring& fmt,
+                         const T1& a1, const T2& a2, const T3& a3,
+                         const T4& a4, const T5& a5, const T6& a6,
+                         const T7& a7, const T8& a8, const T9& a9,
+                         const T10& a10, const T11& a11, const T12& a12,
+                         const T13& a13)
+{
+  const ustring::Stringify<T1> s1 (a1);
+  const ustring::Stringify<T2> s2 (a2);
+  const ustring::Stringify<T3> s3 (a3);
+  const ustring::Stringify<T4> s4 (a4);
+  const ustring::Stringify<T5> s5 (a5);
+  const ustring::Stringify<T6> s6 (a6);
+  const ustring::Stringify<T7> s7 (a7);
+  const ustring::Stringify<T8> s8 (a8);
+  const ustring::Stringify<T9> s9 (a9);
+  const ustring::Stringify<T10> s10 (a10);
+  const ustring::Stringify<T11> s11 (a11);
+  const ustring::Stringify<T12> s12 (a12);
+  const ustring::Stringify<T13> s13 (a13);
+
+  const ustring *const argv[] = { s1.ptr(), s2.ptr(), s3.ptr(), s4.ptr(),
+                                  s5.ptr(), s6.ptr(), s7.ptr(), s8.ptr(),
s9.ptr(),
+                                  s10.ptr(), s11.ptr(), s12.ptr(), s13.ptr()
};
+  return ustring::compose_argv(fmt, G_N_ELEMENTS(argv), argv);
+}
+
+template <class T1, class T2, class T3, class T4, class T5,
+          class T6, class T7, class T8, class T9, class T10,
+          class T11, class T12, class T13, class T14>
+inline // static
+ustring ustring::compose(const ustring& fmt,
+                         const T1& a1, const T2& a2, const T3& a3,
+                         const T4& a4, const T5& a5, const T6& a6,
+                         const T7& a7, const T8& a8, const T9& a9,
+                         const T10& a10, const T11& a11, const T12& a12,
+                         const T13& a13, const T14& a14)
+{
+  const ustring::Stringify<T1> s1 (a1);
+  const ustring::Stringify<T2> s2 (a2);
+  const ustring::Stringify<T3> s3 (a3);
+  const ustring::Stringify<T4> s4 (a4);
+  const ustring::Stringify<T5> s5 (a5);
+  const ustring::Stringify<T6> s6 (a6);
+  const ustring::Stringify<T7> s7 (a7);
+  const ustring::Stringify<T8> s8 (a8);
+  const ustring::Stringify<T9> s9 (a9);
+  const ustring::Stringify<T10> s10 (a10);
+  const ustring::Stringify<T11> s11 (a11);
+  const ustring::Stringify<T12> s12 (a12);
+  const ustring::Stringify<T13> s13 (a13);
+  const ustring::Stringify<T14> s14 (a14);
+
+  const ustring *const argv[] = { s1.ptr(), s2.ptr(), s3.ptr(), s4.ptr(),
+                                  s5.ptr(), s6.ptr(), s7.ptr(), s8.ptr(),
s9.ptr(),
+                                  s10.ptr(), s11.ptr(), s12.ptr(), s13.ptr(),
s14.ptr() };
+  return ustring::compose_argv(fmt, G_N_ELEMENTS(argv), argv);
+}
+
+template <class T1, class T2, class T3, class T4, class T5,
+          class T6, class T7, class T8, class T9, class T10,
+          class T11, class T12, class T13, class T14, class T15>
+inline // static
+ustring ustring::compose(const ustring& fmt,
+                         const T1& a1, const T2& a2, const T3& a3,
+                         const T4& a4, const T5& a5, const T6& a6,
+                         const T7& a7, const T8& a8, const T9& a9,
+                         const T10& a10, const T11& a11, const T12& a12,
+                         const T13& a13, const T14& a14, const T15& a15)
+{
+  const ustring::Stringify<T1> s1 (a1);
+  const ustring::Stringify<T2> s2 (a2);
+  const ustring::Stringify<T3> s3 (a3);
+  const ustring::Stringify<T4> s4 (a4);
+  const ustring::Stringify<T5> s5 (a5);
+  const ustring::Stringify<T6> s6 (a6);
+  const ustring::Stringify<T7> s7 (a7);
+  const ustring::Stringify<T8> s8 (a8);
+  const ustring::Stringify<T9> s9 (a9);
+  const ustring::Stringify<T10> s10 (a10);
+  const ustring::Stringify<T11> s11 (a11);
+  const ustring::Stringify<T12> s12 (a12);
+  const ustring::Stringify<T13> s13 (a13);
+  const ustring::Stringify<T14> s14 (a14);
+  const ustring::Stringify<T15> s15 (a15);
+
+  const ustring *const argv[] = { s1.ptr(), s2.ptr(), s3.ptr(), s4.ptr(),
+                                  s5.ptr(), s6.ptr(), s7.ptr(), s8.ptr(),
s9.ptr(),
+                                  s10.ptr(), s11.ptr(), s12.ptr(), s13.ptr(),
s14.ptr(), s15.ptr() };
+  return ustring::compose_argv(fmt, G_N_ELEMENTS(argv), argv);
+}
+
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */


-- 
See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received
this email, why you can't respond via email, how to stop receiving
emails (or reduce the number you receive), and how to contact someone
if you are having problems with the system.

You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=506415.



------------------------------

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

------------------------------

_______________________________________________
Gtkmm-forge mailing list
Gtkmm-forge lists sourceforge net
https://lists.sourceforge.net/lists/listinfo/gtkmm-forge


End of Gtkmm-forge Digest, Vol 19, Issue 4
******************************************


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]