fcf.module({
  name: "fcf:NFSQL/NFunction/Function.js",
  dependencies: [],
  module: function() {
    var NFunction = fcf.prepareObject(fcf, "NFSQL.NFunction");

    NFunction._functions = {};


    NFunction.setFunction = function(a_type, a_module) {
      NFunction._functions[a_type] = { module: a_module, function: new a_module()};
    }

    NFunction.getFunction = function(a_type) {
      return a_type in NFunction._functions ? NFunction._functions[a_type].function
                                            : undefined;
    }

    NFunction.Function = function(a_options) {
      this.aggregate = false;

      this.processFunction = function(a_taskInfo, a_info){
      }
    }

    NFunction.Function.getFunction = NFunction.getFunction;
    NFunction.Function.setFunction = NFunction.setFunction;

    return NFunction.Function;
  }
});
