lucene-pylucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bill Janssen <jans...@parc.com>
Subject issue with C++ namespace paths
Date Sat, 26 Feb 2011 11:54:15 GMT
Think I've found an issue.  The class
com.parc.goodstuff.simple.HelloWorldService extends
simple.http.load.BasicService, and my JCC (2.7) chokes on it thusly:

build/_PPD/com/parc/goodstuff/simple/HelloWorld/HelloWorldService.h: At global scope:
build/_PPD/com/parc/goodstuff/simple/HelloWorld/HelloWorldService.h:22: error: ‘com::parc::goodstuff::simple::http’
has not been declared

Looks like namespace confusion.  Toplevel 'simple' clashes with the
package 'com.parc.goodstuff.simple'.  Shouldn't line 22 say something
like
 
         class HelloWorldService : public ::simple::http::load::BasicService {

instead of

         class HelloWorldService : public simple::http::load::BasicService {

?  (Not sure that's valid C++, though :-).

Here's the header file:

#ifndef com_parc_goodstuff_simple_HelloWorld_HelloWorldService_H
#define com_parc_goodstuff_simple_HelloWorld_HelloWorldService_H

#include "simple/http/load/BasicService.h"

namespace java {
    namespace lang {
        class Exception;
        class String;
        class Class;
    }
}
template<class T> class JArray;

namespace com {
  namespace parc {
    namespace goodstuff {
      namespace simple {
        namespace HelloWorld {

          class HelloWorldService : public simple::http::load::BasicService {
          public:
            enum {
              mid_main_4dd4540c,
              max_mid
            };
            
            static java::lang::Class *class$;
            static jmethodID *mids$;
            static jclass initializeClass();
            
            explicit HelloWorldService(jobject obj) : simple::http::load::BasicService(obj)
{
              if (obj != NULL)
                initializeClass();
            }
            HelloWorldService(const HelloWorldService& obj) : simple::http::load::BasicService(obj)
{}
            
            static void main(const JArray<java::lang::String>&);
          };
        }
      }
    }
  }
}

#include <Python.h>

namespace com {
  namespace parc {
    namespace goodstuff {
      namespace simple {
        namespace HelloWorld {
          extern PyTypeObject PY_TYPE(HelloWorldService);

          class t_HelloWorldService {
          public:
            PyObject_HEAD
              HelloWorldService object;
            static PyObject *wrap_Object(const HelloWorldService&);
            static PyObject *wrap_jobject(const jobject&);
            static void install(PyObject *module);
            static void initialize(PyObject *module);
          };
        }
      }
    }
  }
}

#endif

Mime
View raw message