예제 #1
0
        //============================================================================
        /// <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
            }
        }
예제 #2
0
        //============================================================================
        /// <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
        }