#!/bin/bash

file=${1%.java}
class=`basename ${file}`

cat $1 | sed -e "1i /* DO NOT EDIT! This file was automatically generated by cls_java2c++. */" \
-e '1i #include <limits>' \
-e '1i #include <wekacls.hh>' \
-e '1i CLICK_DECLS' \
-e "/class $class {/ a public:" \
-e "/class $class {/ a \\  $class() {}" \
-e "/class $class {/ a \\  ~$class() {}" \
-e "/class $class {/ a \\  const char* class_name() const { return \"$class\"; }" \
-e "/class $class {/ a \\  void* cast(const char* n);" \
-e "s/class $class {/class $class: public WekaCls {/" \
-e 's/public static/static/' \
-e 's/static double classify/double classify/' \
-e 's/throws Exception//' \
-e '10i private:' \
-e 's/Object/double/' \
-e 's/((Double) i\[\([0-9]\+\)\])\.doubleValue()/i[\1]/' \
-e 's/== null/== Double.NaN/' \
-e "s/$class\./$class::/" \
-e 's/\[\].\?i/i[]/' \
-e 's/doublei/double i/' \
-e 's/double i\[\]/const double i[]/' \
-e 's/^}/};/' \
-e 's/Double.NaN/WekaCls::quietNaN/' \
-e '$a CLICK_ENDDECLS' \
-e '$a \\' > $file.hh

echo '/* DO NOT EDIT! This file was automatically generated by cls_java2c++. */
#include <click/config.h>
#include <click/error.hh>
#include "@CLASS@.hh"
CLICK_DECLS
void* @CLASS@::cast(const char* n)
{
    if (strcmp(n, "@CLASS@") == 0)
        return static_cast<@CLASS@*>(this);
    else if (strcmp(n, "WekaCls") == 0)
        return static_cast<WekaCls*>(this);
    else
        return Element::cast(n);
}
CLICK_ENDDECLS
ELEMENT_REQUIRES(userlevel)
EXPORT_ELEMENT(@CLASS@)
' | sed -e "s/@CLASS@/$class/g" > $file.cc

exit 0
