Public Member Functions | Protected Member Functions
CurveReader Class Reference

Brief description of class still missing. More...

#include <CurveReader.h>

Inheritance diagram for CurveReader:
QGpCoreTools::ArgumentStdinReader

List of all members.

Public Member Functions

 CurveReader ()
void generateFunction () const
bool isFunctionMode () const
bool setOptions (int &argc, char **argv)
bool terminate ()

Protected Member Functions

virtual bool parse (QTextStream &s)

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

References QGpCoreTools::L2_Normalized, QGpCoreTools::LinearScale, and TRACE.

    : ArgumentStdinReader()
{
  TRACE;
  _mode=None;
  _nResample=100;
  _minX=-1e99;
  _maxX=1e99;
  _dx=1;
  _xValue=0.0;
  _columnIndex=1;
  _samplingType=LinearScale;
  _misfitType=L2_Normalized;
  _misfitMin=0.0;
  _misfitDof=1;
  _logBase=10.0;
  _multiplyFactor=1.0;
}

Member Function Documentation

References QGpCoreTools::endl(), QGpCoreTools::flush(), sOut(), and TRACE.

Referenced by main().

{
  TRACE;
  QTextStream sOut(stdout);
  QScriptEngine engine;
  QScriptValue global=engine.globalObject();
  engine.evaluate("function f(x) {return "+_functionText+";}");
  if(engine.hasUncaughtException()) {
    App::stream() << engine.uncaughtException().toString() << endl;
    App::stream() << engine.uncaughtExceptionBacktrace().join("\n") << endl;
    return;
  }
  QScriptValue f=global.property("f");
  for(double x=_minX;x<=_maxX;x+=_dx) {
    QScriptValueList args;
    args << x;
    sOut << QString("%1 %2\n").arg(x, 0, 'g', 16).arg(f.call(QScriptValue(), args).toNumber(), 0, 'g', 16);
  }
  sOut << flush;
}
bool CurveReader::isFunctionMode ( ) const [inline]

Referenced by main().

{return _mode==ParseFunction;}
bool CurveReader::parse ( QTextStream &  s) [protected, virtual]

Implements QGpCoreTools::ArgumentStdinReader.

References QGpCoreTools::Curve< pointType >::append(), QGpCoreTools::Curve< pointType >::clear(), QGpCoreTools::endl(), QGpCoreTools::PointND::fromString(), sOut(), and TRACE.

{
  TRACE;
  QTextStream sOut(stdout);
  Curve<PointND> curve;
  PointND p;
  QString buf;
  while(!s.atEnd()) {
    buf=s.readLine();
    if(buf.isEmpty() || buf[0]=='\n' || buf[0]=='#') {
      if(!exec(curve)) {
        return false;
      }
      curve.clear();
      if(buf[0]=='#') sOut << buf << endl;
    } else {
      p.fromString(buf);
      curve.append(p);
    }
  }
  return exec(curve);
}
bool CurveReader::setOptions ( int &  argc,
char **  argv 
)

References QGpCoreTools::endl(), QGpCoreTools::InversedScale, QGpCoreTools::LinearScale, QGpCoreTools::LogScale, QGpCoreTools::tr(), and TRACE.

Referenced by main().

{
  TRACE;
  int i, j=1;
  for(i=1; i<argc; i++) {
    QByteArray arg=argv[i];
    if(arg[0]=='-') {
      if(arg=="-resample") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=Resample;
        _nResample=atoi(argv[i]);
      } else if(arg=="-resample-ext") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=ResampleExtrapole;
        _nResample=atoi(argv[i]);
      } else if(arg=="-cut") {
        _mode=Cut;
      } else if(arg=="-cut-int") {
        _mode=CutInterpole;
      } else if(arg=="-column") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _columnIndex=atoi(argv[i]);
      } else if(arg=="-swap") {
        _mode=Swap;
      } else if(arg=="-max-index") {
        _mode=MaxIndex;
      } else if(arg=="-max-value") {
        _mode=MaxValue;
      } else if(arg=="-value") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=FunctionValue;
        _xValue=atof(argv[i]);
      } else if(arg=="-merge-replace") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=MergeReplace;
        _referenceFile=argv[i];
      } else if(arg=="-merge-interpolate") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=MergeInterpolate;
        _referenceFile=argv[i];
      } else if(arg=="-minmax") {
        _mode=MinMax;
      } else if(arg=="-misfit") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=Misfit;
        _referenceFile=argv[i];
      } else if(arg=="-regression") {
        _mode=Regression;
      } else if(arg=="-derivative") {
        _mode=Derivative;
      } else if(arg=="-pow") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=Power;
        _logBase=atof(argv[i]);
      } else if(arg=="-log") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=Log;
        _logBase=atof(argv[i]);
      } else if(arg=="-multiply") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=Multiply;
        _multiplyFactor=atof(argv[i]);
      } else if(arg=="-function") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _mode=ParseFunction;
        _functionText=argv[i];
      } else if(arg=="-misfit-type") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _misfitType=RealStatisticalValue::misfitType(argv[i] );
      } else if(arg=="-misfit-min") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _misfitMin=atof(argv[i] );
      } else if(arg=="-misfit-dof") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _misfitDof=atoi(argv[i] );
      } else if(arg=="-min") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _minX=atof(argv[i]);
      } else if(arg=="-max") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _maxX=atof(argv[i]);
      } else if(arg=="-dx") {
        CoreApplication::checkOptionArg(i, argc, argv);
        _dx=atof(argv[i]);
      } else if(arg=="-sampling") {
        CoreApplication::checkOptionArg(i, argc, argv);
        if(strcmp(argv[i],"inversed")==0) {
          _samplingType=InversedScale;
        } else if(strcmp(argv[i],"linear")==0) {
          _samplingType=LinearScale;
        } else {
          _samplingType=LogScale;
        }
      } else {
        App::stream() << tr("gpcurve: bad option %1, see -help").arg(argv[i]) << endl;
        return false;
      }
    } else {
      argv[j++]=argv[i];
    }
  }
  if(j < argc) {
    argv[j]=0;
    argc=j;
  }
  return true;
}

References sOut(), QGpCoreTools::Curve< pointType >::toString(), and TRACE.

Referenced by main().

{
  TRACE;
  QTextStream sOut(stdout);
  switch(_mode) {
  case MinMax:
    sOut << "# Min\n"
         << _minCurve.toString()
         << "# Max\n"
         << _maxCurve.toString();
    break;
  default:
    break;
  }
  return true;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines