aspell-devel
[Top][All Lists]
Advanced

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

Re: [aspell-devel] IRIX compile problem aspell-0.60.2


From: Frank Everdij
Subject: Re: [aspell-devel] IRIX compile problem aspell-0.60.2
Date: Fri, 18 Mar 2005 16:27:26 +0100
User-agent: Internet Messaging Program (IMP) 3.1

Quoting Gary Setter <address@hidden>:

> <snip>
> I'm not sure I can solve the problem, but since you made some
> changes to the source, would you post the definition of the
> QuoteChars please.
> Best regards,
> Gary Setter
 
I have made no changes to the source, trust me. This is a plain vanilla
aspell-0.60.2.
But i have found a solution to the 4 errors in modules/filter/email.cpp:

>From an old KDE-development discussion on porting to IRIX i remembered 
>something
about code not belonging in c++ source code files, but in header files.
Aapparently the namespace section in email.cpp should belong in a header,
atleast according to the MIPSPro compiler, so i spliced the source file into a
header part and code part:

--- modules/filter/email.cpp.save       Fri Dec  3 03:22:16 2004
+++ modules/filter/email.cpp    Fri Mar 18 15:27:19 2005
@@ -6,59 +6,9 @@
 
 #include "settings.h"
 
-#include "indiv_filter.hpp"
-#include "convert.hpp"
-#include "config.hpp"
-#include "indiv_filter.hpp"
-#include "mutable_container.hpp"
-
-namespace {
-
-  using namespace acommon;
-
-  class EmailFilter : public IndividualFilter 
-  {
-    bool prev_newline;
-    bool in_quote;
-    int margin;
-    int n;
-
-    class QuoteChars : public MutableContainer {
-    public:
-      typedef FilterChar::Chr Value;
-      Vector<Value> data;
-      Conv conv;
-      bool have(Value c) {
-        Value * i = data.pbegin();
-        Value * end = data.pend();
-        for (; i != end && *i != c; ++i);
-        return i != end;
-      }
-      PosibErr<bool> add(ParmStr s) {
-        Value c = *(Value *)conv(s);
-        if (!have(c)) data.push_back(c);
-        return true;
-      }
-      PosibErr<bool> remove(ParmStr s) {
-        Value c = *(Value *)conv(s);
-        Vector<Value>::iterator i = data.begin();
-        Vector<Value>::iterator end = data.end();
-        for (; i != end && *i != c; ++i);
-        if (i != end) data.erase(i);
-        return true;
-      }
-      PosibErr<void> clear() {
-        data.clear();
-       return no_err;
-      }
-    };
-    QuoteChars is_quote_char;
+#include "email.hpp"
     
-  public:
-    PosibErr<bool> setup(Config *);
-    void reset();
-    void process(FilterChar * &, FilterChar * &);
-  };
+using namespace acommon;
 
   PosibErr<bool> EmailFilter::setup(Config * opts) 
   {
@@ -105,7 +55,6 @@
       for (FilterChar * i = line_begin; i != cur; ++i)
        *i = ' ';
   }
-}
 
 C_EXPORT 
 IndividualFilter * new_aspell_email_filter() {
--- modules/filter/email.hpp.save       Fri Mar 18 15:46:58 2005
+++ modules/filter/email.hpp    Fri Mar 18 09:54:05 2005
@@ -0,0 +1,59 @@
+// This file is part of The New Aspell
+// Copyright (C) 2001 by Kevin Atkinson under the GNU LGPL license
+// version 2.0 or 2.1.  You should have received a copy of the LGPL
+// license along with this library if you did not you can find
+// it at http://www.gnu.org/.
+
+#include "settings.h"
+
+#include "indiv_filter.hpp"
+#include "convert.hpp"
+#include "config.hpp"
+#include "indiv_filter.hpp"
+#include "mutable_container.hpp"
+
+using namespace acommon;
+
+  class EmailFilter : public IndividualFilter 
+  {
+    bool prev_newline;
+    bool in_quote;
+    int margin;
+    int n;
+
+    class QuoteChars : public MutableContainer {
+    public:
+      typedef FilterChar::Chr Value;
+      Vector<Value> data;
+      Conv conv;
+      bool have(Value c) {
+        Value * i = data.pbegin();
+        Value * end = data.pend();
+        for (; i != end && *i != c; ++i);
+        return i != end;
+      }
+      PosibErr<bool> add(ParmStr s) {
+        Value c = *(Value *)conv(s);
+        if (!have(c)) data.push_back(c);
+        return true;
+      }
+      PosibErr<bool> remove(ParmStr s) {
+        Value c = *(Value *)conv(s);
+        Vector<Value>::iterator i = data.begin();
+        Vector<Value>::iterator end = data.end();
+        for (; i != end && *i != c; ++i);
+        if (i != end) data.erase(i);
+        return true;
+      }
+      PosibErr<void> clear() {
+        data.clear();
+       return no_err;
+      }
+    };
+    QuoteChars is_quote_char;
+    
+  public:
+    PosibErr<bool> setup(Config *);
+    void reset();
+    void process(FilterChar * &, FilterChar * &);
+  };

And now the compiler is happy and so am i :) Similarly, the namespace portions
of tex.cpp and sgml.cpp in modules/filter need to be split into a header file as
well.
Since this is not detrimental for compiling to other architectures, may i vote
for an inclusion of this in aspell-0.60.3?

current patch set can be found in
http://www.mechanics.citg.tudelft.nl/~everdij/papa/aspellirix.patch if someone
needs the gutsy details.

I have also found other code issues, which are in my patch file as well. The
first one is a patch by Albert Chin, mentioned in:
http://www.mail-archive.com/address@hidden/msg00581.html
Removing the "static" works for me as well.
The second one is a duplicate variable-name new_aff in affix.hpp function
expand_suffix, so i underscored the second occurence. If anyone can check if
this is supposed to be like that, be my guest. AFAIK one needs only one
occurence of new_aff in expand_suffix, but who am i.

--- common/string.hpp.save      Mon Nov 29 18:50:05 2004
+++ common/string.hpp   Fri Mar 18 15:54:12 2005
@@ -492,7 +492,7 @@
 
 namespace std
 {
-  template<> static inline void swap(acommon::String & x, acommon::String & y)
{return x.swap(y);}
+  template<> inline void swap(acommon::String & x, acommon::String & y) {return
x.swap(y);}
 }
 
 #endif
--- modules/speller/default/affix.hpp.save      Fri Mar 18 09:58:10 2005
+++ modules/speller/default/affix.hpp   Fri Mar 18 09:58:39 2005
@@ -109,7 +109,7 @@
     }
     WordAff * expand_suffix(ParmString word, const unsigned char * new_aff,
                             ObjStack &, int limit = INT_MAX,
-                            unsigned char * new_aff = 0, WordAff * * * l = 0,
+                            unsigned char * new_aff_ = 0, WordAff * * * l = 0,
                             ParmString orig_word = 0) const;
     
   private:


Last error i found is that when compiling i get an error in
gen/static-filters.src.cpp:
..
cc-1070 CC: ERROR File = ./gen/static_filters.src.cpp, Line = 76
  The indicated type is incomplete.

    static KeyInfo nroff_options[] = {
                   ^

cc-1070 CC: ERROR File = ./gen/static_filters.src.cpp, Line = 103
  The indicated type is incomplete.

    static KeyInfo url_options[] = {
                   ^

2 errors detected in the compilation of "lib/new_filter.cpp".

Probably the perl scripts in directory gen got confused and decided to refrain
from putting an option in there, which the MIPSPro compiler rejects. modifying
them to:

  static KeyInfo nroff_options[] = {
        NULL
  };

and

  static KeyInfo url_options[] = {
        NULL
  };

causes the aspell compile to finish succesfully up to the end and links.
Executing "Aspell --help" segfaults right after the nroff option list, so
anybody who can make these two options work is most welcome. :)

Oh and before i forget: Enjoy the weekend :)

Yours

Frank

-- 
drs Frank Everdij  Email:address@hidden  Tel:01527-88202  Room:6.08
System Administrator for Structural Mechanics
Dept. of Civil Engineering TU Delft




reply via email to

[Prev in Thread] Current Thread [Next in Thread]