// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_gcj_runtime_NameFinder__
#define __gnu_gcj_runtime_NameFinder__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace gcj
    {
      namespace runtime
      {
        class NameFinder;
      }
      class RawData;
    }
  }
}

class gnu::gcj::runtime::NameFinder : public ::java::lang::Object
{
public:
  NameFinder ();
private:
  static ::java::lang::String *getExecutable ();
  ::java::lang::StackTraceElement *dladdrLookup (::gnu::gcj::RawData *, jint);
  ::java::lang::String *getAddrAsString (::gnu::gcj::RawData *, jint);
  ::java::lang::String *getExternalLabel (::java::lang::String *);
  ::java::lang::StackTraceElement *lookupInterp (::gnu::gcj::RawData *, jint);
  ::java::lang::StackTraceElement *lookup (::gnu::gcj::RawData *, jint);
public:
  virtual JArray< ::java::lang::StackTraceElement *> *lookup (::java::lang::Throwable *, ::gnu::gcj::RawData *, jint);
private:
  static JArray< ::java::lang::StackTraceElement *> *sanitizeStack (JArray< ::java::lang::StackTraceElement *> *, ::java::lang::Throwable *);
  ::java::lang::StackTraceElement *createStackTraceElement (::java::lang::String *, ::java::lang::String *);
  ::java::lang::String *demangleName (::java::lang::String *);
public:
  static ::java::lang::String *demangleInterpreterMethod (::java::lang::String *, ::java::lang::String *);
  virtual void close ();
public:  // actually protected
  virtual void finalize ();
private:
  static jboolean demangle;
  static jboolean sanitize;
  static jboolean remove_unknown;
  static jboolean remove_interpreter;
  static jboolean use_addr2line;
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object )))) executable;
  ::java::lang::Process *cppfilt;
  ::java::io::BufferedWriter *cppfiltOut;
  ::java::io::BufferedReader *cppfiltIn;
  ::java::lang::Process *addr2line;
  ::java::io::BufferedWriter *addr2lineOut;
  ::java::io::BufferedReader *addr2lineIn;
  jboolean usingAddr2name;
public:

  static ::java::lang::Class class$;
};

#endif /* __gnu_gcj_runtime_NameFinder__ */
