//============================================================================ /// <summary> /// Adds an item to the list of user-specified outputs /// </summary> /// <param name="sName"></param> /// <param name="sAlias"></param> /// <param name="iDecPl"></param> /// <param name="Aggreg"></param> //============================================================================ public void addVariable(string sName, string sAlias, int iDecPl, TGenericReporter.AggregType Aggreg) { if (sName.Length > 0) { TMainOutputSpecifier Specifier = new TMainOutputSpecifier(sName); // Make up the specifier Specifier.iDecPl = iDecPl; Specifier.Aggreg = Aggreg; if (sAlias.Length > 0) { Specifier.sAlias = sAlias; } else { Specifier.sAlias = sName; } //add the name of the variable to the FRequests list Specifier.iReqIdx = FRequestNames.IndexOf(Specifier.sName); if (Specifier.iReqIdx == -1) { // If the main variable name is new, Specifier.iReqIdx = FRequestNames.Count; // add it to the list of variables to request FRequestNames.Add(Specifier.sName); FRequests.Add(null); //keep an item parallel to it } Specifier.valTree = new TValTree(null, Specifier); Specifier.valTree.columnName = Specifier.sAlias; FOutputs.Add(Specifier); // Store the output specifier in FOutputs } }
//============================================================================ /// <summary> /// /// </summary> /// <param name="baseValue"></param> /// <param name="Agg"></param> /// <param name="decplaces"></param> //============================================================================ public TOutputScalar(TTypedValue baseValue, TGenericReporter.AggregType Agg, int decplaces) { // None Sum Mean Max Min COLUMNTYPES = new TTypedValue.TBaseType[12, 5] { { TTypedValue.TBaseType.ITYPE_EMPTY, TTypedValue.TBaseType.ITYPE_EMPTY, TTypedValue.TBaseType.ITYPE_EMPTY, TTypedValue.TBaseType.ITYPE_EMPTY, TTypedValue.TBaseType.ITYPE_EMPTY }, { TTypedValue.TBaseType.ITYPE_INT1, TTypedValue.TBaseType.ITYPE_INT4, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_INT1, TTypedValue.TBaseType.ITYPE_INT1 }, { TTypedValue.TBaseType.ITYPE_INT2, TTypedValue.TBaseType.ITYPE_INT4, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_INT2, TTypedValue.TBaseType.ITYPE_INT2 }, { TTypedValue.TBaseType.ITYPE_INT4, TTypedValue.TBaseType.ITYPE_INT4, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_INT4, TTypedValue.TBaseType.ITYPE_INT4 }, { TTypedValue.TBaseType.ITYPE_INT8, TTypedValue.TBaseType.ITYPE_INT8, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_INT8, TTypedValue.TBaseType.ITYPE_INT8 }, { TTypedValue.TBaseType.ITYPE_SINGLE, TTypedValue.TBaseType.ITYPE_SINGLE, TTypedValue.TBaseType.ITYPE_SINGLE, TTypedValue.TBaseType.ITYPE_SINGLE, TTypedValue.TBaseType.ITYPE_SINGLE }, { TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_DOUBLE }, { TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR }, //char { TTypedValue.TBaseType.ITYPE_BOOL, TTypedValue.TBaseType.ITYPE_INT4, TTypedValue.TBaseType.ITYPE_DOUBLE, TTypedValue.TBaseType.ITYPE_BOOL, TTypedValue.TBaseType.ITYPE_BOOL }, //boolean { TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR, TTypedValue.TBaseType.ITYPE_CHAR }, //wchar { TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR }, //string { TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR, TTypedValue.TBaseType.ITYPE_STR } }; //wstring if (!baseValue.isScalar()) { throw (new ApplicationException("Cannot create non-scalar output columns")); } baseType = COLUMNTYPES[(int)baseValue.baseType(), (int)Agg]; //Note that the type of the output can depend on the aggregation Units = baseValue.units(); Aggreg = Agg; decPl = decplaces; Clear(); //init values }