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

#ifndef __gnu_classpath_debug_Simple1LineFormatter__
#define __gnu_classpath_debug_Simple1LineFormatter__

#pragma interface

#include <java/util/logging/Formatter.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace debug
      {
          class Simple1LineFormatter;
      }
    }
  }
  namespace java
  {
    namespace text
    {
        class DateFormat;
        class NumberFormat;
    }
  }
}

class gnu::classpath::debug::Simple1LineFormatter : public ::java::util::logging::Formatter
{

public:
  Simple1LineFormatter();
  virtual ::java::lang::String * format(::java::util::logging::LogRecord *);
private:
  static ::java::lang::String * DAT_PATTERN;
  static ::java::lang::String * THREAD_PATTERN;
  static ::java::lang::String * SPACES_32;
  static ::java::lang::String * SPACES_6;
  static ::java::lang::String * LS;
  ::java::text::DateFormat * __attribute__((aligned(__alignof__( ::java::util::logging::Formatter)))) dateFormat;
  ::java::text::NumberFormat * threadFormat;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_debug_Simple1LineFormatter__
