Spec* VectorFileEffector::createSpec() { Spec *ns = new Spec; ns->description = "VectorFileEffector is a node that simply writes its\n" "input vectors to a text file. The target filename is specified\n" "using the 'outputFile' parameter at run time. On each\n" "compute, the current input vector is written (but not flushed)\n" "to the file.\n"; ns->inputs.add( "dataIn", InputSpec("Data to be written to file", NTA_BasicType_Real32, 0, // count false, // required? false, // isRegionLevel true // isDefaultInput )); ns->parameters.add( "outputFile", ParameterSpec( "Writes output vectors to this file on each compute. Will append to any\n" "existing data in the file. This parameter must be set at runtime before\n" "the first compute is called. Throws an exception if it is not set or\n" "the file cannot be written to.\n", NTA_BasicType_Byte, 0, // elementCount "", // constraints "", // defaultValue ParameterSpec::ReadWriteAccess )); ns->commands.add( "flushFile", CommandSpec("Flush file data to disk")); ns->commands.add( "closeFile", CommandSpec("Close the current file, if open.")); return ns; }
Spec *TestNode::createSpec() { auto ns = new Spec; ns->description = "TestNode. Used as a plain simple plugin Region for unit tests only. " "This is not useful for any real applicaton."; /* ---- parameters ------ */ ns->parameters.add( "count", ParameterSpec( "Buffer size for bottomUpOut Output. " "Syntax: {count: 64}", // description NTA_BasicType_UInt32, 1, // elementCount (an array of unknown size) "", // constraints "2", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("int32Param", ParameterSpec("Int32 scalar parameter", // description NTA_BasicType_Int32, 1, // elementCount "", // constraints "32", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("uint32Param", ParameterSpec("UInt32 scalar parameter", // description NTA_BasicType_UInt32, 1, // elementCount "", // constraints "33", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("int64Param", ParameterSpec("Int64 scalar parameter", // description NTA_BasicType_Int64, 1, // elementCount "", // constraints "64", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("uint64Param", ParameterSpec("UInt64 scalar parameter", // description NTA_BasicType_UInt64, 1, // elementCount "", // constraints "65", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("real32Param", ParameterSpec("Real32 scalar parameter", // description NTA_BasicType_Real32, 1, // elementCount "", // constraints "32.1", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("real64Param", ParameterSpec("Real64 scalar parameter", // description NTA_BasicType_Real64, 1, // elementCount "", // constraints "64.1", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("boolParam", ParameterSpec("bool scalar parameter", // description NTA_BasicType_Bool, 1, // elementCount "", // constraints "false", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("real32ArrayParam", ParameterSpec("int32 array parameter", NTA_BasicType_Real32, 0, // array "", "", ParameterSpec::ReadWriteAccess)); ns->parameters.add("int64ArrayParam", ParameterSpec("int64 array parameter", // description NTA_BasicType_Int64, 0, // array "", // constraints "", // default Value ParameterSpec::ReadWriteAccess)); ns->parameters.add("boolArrayParam", ParameterSpec("bool array parameter", // description NTA_BasicType_Bool, 0, // array "", // constraints "", // default Value ParameterSpec::ReadWriteAccess)); ns->parameters.add("computeCallback", ParameterSpec("address of a function that is called at every compute()", NTA_BasicType_UInt64, 1, // element count "", // constraints "", // handles must not have a default value ParameterSpec::ReadWriteAccess)); ns->parameters.add("stringParam", ParameterSpec("string parameter", NTA_BasicType_Byte, 0, // length=0 required for strings "", "nodespec value", ParameterSpec::ReadWriteAccess)); ns->parameters.add("unclonedParam", ParameterSpec("has a separate value for each node", // description NTA_BasicType_UInt32, 1, // elementCount "", // constraints "", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("shouldCloneParam", ParameterSpec("whether possiblyUnclonedParam should clone", // description NTA_BasicType_UInt32, 1, // elementCount "enum: 0, 1", // constraints "1", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("possiblyUnclonedParam", ParameterSpec("cloned if shouldCloneParam is true", // description NTA_BasicType_UInt32, 1, // elementCount "", // constraints "", // defaultValue ParameterSpec::ReadWriteAccess)); ns->parameters.add("unclonedInt64ArrayParam", ParameterSpec("has a separate array for each node", // description NTA_BasicType_Int64, 0, // array //elementCount "", // constraints "", // defaultValue ParameterSpec::ReadWriteAccess)); /* ----- inputs ------- */ ns->inputs.add("bottomUpIn", InputSpec("Primary input for the node", NTA_BasicType_Real64, 0, // count. omit? true, // required? true, // isRegionLevel, true // isDefaultInput )); /* ----- outputs ------ */ ns->outputs.add("bottomUpOut", OutputSpec("Primary output for the node", NTA_BasicType_Real64, 0, // count is dynamic true, // isRegionLevel true // isDefaultOutput )); /* ----- commands ------ */ // commands TBD return ns; }