#include <iostream>
#include "QtRunContext.h"
#include "QtDLManager.h"
#include "UIDocument.h"
#include <string>
#include "ParameterSet.h"
#include "ObjectRef.h"
#include "Network.h"
#include "Exception.h"
#include <sstream>
#include "iextensions.h"
using namespace FD;
using namespace std;
int main (int argc, char* argv[])
{
if (argc < 2)
{
cout<<"Usage : "<<argv[0]<<" <document> [arguments]"<<endl;
return -1;
}
try
{
//Scan for toolboxes (dll)
QtDLManager::scanDL();
//Scan for toolboxes (def)
UINodeRepository::Scan();
//Useful?
IExtensions::detect();
//Parse command line parameters
ParameterSet params;
//TODO
//PARSING ADDITIONAL ARGUMENTS
/*
for (int arg = 2; arg<argc; arg++)
{
char arg_name[100];
sprintf (arg_name, "ARG%d", arg-1);
params.add(arg_name, ObjectRef (new String (argv[arg])));
sprintf (arg_name, "string:ARG%d", arg-1);
params.add(arg_name, ObjectRef (new String (argv[arg])));
sprintf (arg_name, "int:ARG%d", arg-1);
params.add(arg_name, ObjectRef (Int::alloc (atoi(argv[arg]))));
sprintf (arg_name, "float:ARG%d", arg-1);
params.add(arg_name, ObjectRef (Float::alloc (atof(argv[arg]))));
if (strlen(argv[arg]) > 2 && argv[arg][0]=='<' && argv[arg][strlen(argv[arg])-1]=='>')
{
sprintf (arg_name, "object:ARG%d", arg-1);
try
{
string val(argv[arg]);
ParameterSet p;
ObjectRef obj = ObjectParam::stringParam("object", val, p);
if (!obj.isNil())
{
params.add(arg_name, obj);
}
} catch (...)
{
//WHAT DO WE DO ?
}
}
}
*/
//Loading document
UIDocument *doc;
//ARE WE RECEIVING RAW DATA FROM FLOWDESIGNER
//IN XML FORMAT.
if (string(argv[1]) == "/dev/stdin")
{
//Initial version forks
//we will read from
}
else
{
doc = new UIDocument(argv[1]);
doc->load();
}
//Running document
QtRunContext *ctx = new QtRunContext(doc, params);
ctx->run();
delete ctx;
}
catch (BaseException *e)
{
e->print(cerr);
delete e;
return -1;
}
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1