Ejemplo n.º 1
0
        private bool TestFloatValue(QLPart part, Node secondNode, ParserParts parserParts)
        {
            var floatValue = (secondNode as CFloatNode).FloatValue;

            //int schema to float query
            if (part.QLNumber != null)
            {
                var intPropValue = part.QLNumber.Value;
                if (Compare(intPropValue, floatValue, parserParts))
                {
                    return(true);
                }
            }
            //float schema to float query
            if (part.QLFloat != null)
            {
                var floatPropValue = part.QLFloat.Value;
                if (Compare(floatPropValue, floatValue, parserParts))
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 2
0
        public void MaximumRelAtt(RelationSymbol parameterSym1, string exAttribute, RelationSymbol returnSym)
        {
            Console.WriteLine("Maximum'ing...");

            var index = parameterSym1.Index.Value;

            QLPart partForTypeExtraction = null; //first present attribute provides type info
            var    tuples = parameterSym1.Tuples.ToArray();

            foreach (var tuple in tuples)
            {
                var part = tuple[index].GetPropertyValue(exAttribute);
                if (part != null)
                {
                    partForTypeExtraction = part;
                    break;
                }
            }

            if (partForTypeExtraction == null)
            {
                return;
            }

            IEnumerable <QLEntity[]> tuplesOut = null;

            if (partForTypeExtraction.QLNumber != null)
            {
                var max = tuples.Max(t => t[index].GetPropertyValue(exAttribute).QLNumber.Value);
                tuplesOut = tuples.Where(t => t[index].GetPropertyValue(exAttribute).QLNumber.Value == max);
            }

            returnSym.SetTuples(tuplesOut);
        }
Ejemplo n.º 3
0
        private bool TestStringValue(QLPart part, Node secondNode)
        {
            var stringValue = (secondNode as CStringNode).Value;

            if (part.QLString != null)
            {
                var strPropValue = part.QLString.QLStr;
                if (string.Compare(strPropValue, stringValue, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    return(true);
                }
            }
            //enum case
            else if (part.QLEnum != null)
            {
                var enumPropValue = part.QLEnum.QLStr;
                if (string.Compare(enumPropValue, stringValue, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 4
0
        private IEnumerable <QLEntity> EntitesFromRefs(QLPart referenceValue)
        {
            if (referenceValue == null || (referenceValue.QLEntityId == null && referenceValue.QLList == null))
            {
                return(new List <QLEntity>());
            }

            if (referenceValue.QLEntityId != null)
            {
                var referencedEntity = interpreterRepository.GlobalEntityDictionary[referenceValue.QLEntityId.Id];
                return(new List <QLEntity>()
                {
                    referencedEntity
                });
            }

            if (referenceValue.QLList != null && referenceValue.QLList.HasRef)
            {
                return(referenceValue.QLList.List.Where(r => r.QLEntityId != null).Select(r =>
                                                                                          interpreterRepository.GlobalEntityDictionary[r.QLEntityId.Id]).ToList());
            }

            throw new ArgumentException();
        }
Ejemplo n.º 5
0
        void part(out QLPart QLPart)
        {
            QLPart = new QLPart();
            QLClass QLClass;
            QLList  QLList;
            string  QLstring;
            string  enumstring;

            switch (la.kind)
            {
            case 12: {
                myenum(out enumstring);
                QLPart.QLEnum = new QLEnum(enumstring);
                break;
            }

            case 1: {
                mystring(out QLstring);
                QLPart.QLString = new QLString(QLstring);
                break;
            }

            case 13: {
                Get();
                QLPart.IsNull = true;
                break;
            }

            case 2: {
                Get();
                QLPart.QLEntityId = new QLEntityId(t.val);
                break;
            }

            case 4: {
                list(out QLList);
                QLPart.QLList = QLList;
                break;
            }

            case 6: {
                Get();
                QLPart.SetFloat(t.val);
                break;
            }

            case 7: {
                Get();
                QLPart.SetNumber(t.val);
                break;
            }

            case 9: {
                Get();
                QLPart.IsNull = true;
                break;
            }

            case 8: {
                myclass(out QLClass);
                QLPart.QLClass = QLClass;
                break;
            }

            case 14: {
                Get();
                QLPart.IsEmptyList = true;
                break;
            }

            default: SynErr(16); break;
            }
        }