FbpagerPatch

From Fluxbox-wiki

Jump to: navigation, search


If you are under Debian ETCH (or other Debian based like Ubuntu), there is a problem compiling FbPager 0.1.4.

The problem lies around namespace declaration, something like this. G++ compiler is too strict and won't compile.


I found a patch on the debian bug list. This patch was made by Ben Hutchings :



Forwarded message from Ben Hutchings <[EMAIL PROTECTED]> -----

Subject: Bug#357774: FTBFS with G++ 4.1: namespace problems From: Ben Hutchings <[EMAIL PROTECTED]> To: [EMAIL PROTECTED], [EMAIL PROTECTED] Date: Sun, 19 Mar 2006 14:50:17 +0000

tags 357774 +patch thanks

See <http://womble.decadentplace.org.uk/c++/template-faq.html#specialise-ns> for an explanation of the error message.

Here's a patch:

diff -ur fbpager-0.1.4.orig/src/Resources.hh fbpager-0.1.4/src/Resources.hh
--- fbpager-0.1.4.orig/src/Resources.hh 2004-03-02 16:49:51.000000000 +0000
+++ fbpager-0.1.4/src/Resources.hh      2006-03-19 14:40:58.000000000 +0000
@@ -8,8 +8,10 @@
#include <cstdio>
#include <cstring>

+namespace FbTk {
+
template<>
-void FbTk::Resource<bool>::
+void Resource<bool>::
setFromString(char const *strval) {
    if (strcasecmp(strval, "true") == 0 ||
        strcasecmp(strval, "yes") == 0)
@@ -19,38 +21,37 @@
}

template<>
-std::string FbTk::Resource<bool>::
+std::string Resource<bool>::
getString() {                          
    return std::string(**this == true ? "true" : "false");
}

template <>
-void FbTk::Resource<std::string>::setFromString(const char *str) {
+void Resource<std::string>::setFromString(const char *str) {
    *(*this) = (str ?  str : "");
}

template <>
-std::string FbTk::Resource<std::string>::getString() {
+std::string Resource<std::string>::getString() {
    return *(*this);
}

template <>
-void FbTk::Resource<int>::setFromString(const char *str) {
+void Resource<int>::setFromString(const char *str) {
    if (str == 0)
        return;
    sscanf(str, "%d", &(*(*this)));
}

template <>
-std::string FbTk::Resource<int>::getString() {
+std::string Resource<int>::getString() {
    char buff[16];
    sprintf(buff, "%d", (*(*this)));
    return std::string(buff);
}

-namespace FbPager {
template <>
-void FbTk::Resource<FbPager::Alignment>::setFromString(const char *str) {
+void Resource<FbPager::FbPager::Alignment>::setFromString(const char *str) {
    if (strcmp("TopToBottom", str) == 0)
        *(*this) = FbPager::FbPager::TOP_TO_BOTTOM;
    else
@@ -58,7 +59,7 @@
}

template <>
-std::string FbTk::Resource<FbPager::Alignment>::getString() {
+std::string Resource<FbPager::FbPager::Alignment>::getString() {
    switch (*(*this)) {
    case FbPager::FbPager::LEFT_TO_RIGHT:
        return "LeftToRight";
@@ -67,6 +68,6 @@
    }
}

-} // end namespace FbPager
+} // end namespace FbTk

#endif // RESOURCES
-- END --
Personal tools
Google Ads