Exemplo n.º 1
0
        /// <summary>
        /// Builds a row limit specification.
        /// </summary>
        /// <returns>row limit spec</returns>
        public static RowLimitSpec BuildRowLimitSpec(EsperEPL2GrammarParser.RowLimitContext ctx)
        {
            Object numRows;
            Object offset;

            if (ctx.o != null)      // format "rows offset offsetcount"
            {
                numRows = ParseNumOrVariableIdent(ctx.n1, ctx.i1);
                offset  = ParseNumOrVariableIdent(ctx.n2, ctx.i2);
            }
            else if (ctx.c != null)     // format "offsetcount, rows"
            {
                offset  = ParseNumOrVariableIdent(ctx.n1, ctx.i1);
                numRows = ParseNumOrVariableIdent(ctx.n2, ctx.i2);
            }
            else
            {
                numRows = ParseNumOrVariableIdent(ctx.n1, ctx.i1);
                offset  = null;
            }

            int?   numRowsInt      = null;
            String numRowsVariable = null;

            if (numRows is String)
            {
                numRowsVariable = (String)numRows;
            }
            else
            {
                numRowsInt = (int?)numRows;
            }

            int?   offsetInt      = null;
            String offsetVariable = null;

            if (offset is String)
            {
                offsetVariable = (String)offset;
            }
            else
            {
                offsetInt = (int?)offset;
            }

            return(new RowLimitSpec(numRowsInt, offsetInt, numRowsVariable, offsetVariable));
        }
Exemplo n.º 2
0
        public static RowLimitSpec BuildRowLimitSpec(EsperEPL2GrammarParser.RowLimitContext ctx)
        {
            object numRows;
            object offset;
            if (ctx.o != null)
            { // format "rows offset offsetcount"
                numRows = ParseNumOrVariableIdent(ctx.n1, ctx.i1);
                offset = ParseNumOrVariableIdent(ctx.n2, ctx.i2);
            }
            else if (ctx.c != null)
            { // format "offsetcount, rows"
                offset = ParseNumOrVariableIdent(ctx.n1, ctx.i1);
                numRows = ParseNumOrVariableIdent(ctx.n2, ctx.i2);
            }
            else
            {
                numRows = ParseNumOrVariableIdent(ctx.n1, ctx.i1);
                offset = null;
            }

            int? numRowsInt = null;
            string numRowsVariable = null;
            if (numRows is string)
            {
                numRowsVariable = (string) numRows;
            }
            else
            {
                numRowsInt = numRows.AsInt32();
            }

            int? offsetInt = null;
            string offsetVariable = null;
            if (offset is string)
            {
                offsetVariable = (string) offset;
            }
            else
            {
                offsetInt = offset.AsBoxedInt32();
            }

            return new RowLimitSpec(numRowsInt, offsetInt, numRowsVariable, offsetVariable);
        }