Пример #1
0
        private static GraceObject objectFromElement(XElement root)
        {
            GraceObject obj      = GraceObject.Done;
            var         stringEl = root.XPathSelectElement("//string");

            if (stringEl != null)
            {
                obj = GraceString.Create(stringEl.Value);
            }
            var numberEl = root.XPathSelectElement("//number");

            if (numberEl != null)
            {
                double d;
                if (double.TryParse(numberEl.Value, out d))
                {
                    obj = GraceNumber.Create(d);
                }
            }
            var objectEl = root.XPathSelectElement("//object");

            if (objectEl != null)
            {
                int objKey;
                if (int.TryParse(objectEl.Value, out objKey))
                {
                    obj = new GraceForeignObject(objKey);
                }
            }
            return(obj);
        }
Пример #2
0
        /// <summary>
        /// Load extensions to builtins from traits in an
        /// existing object.
        /// </summary>
        /// <param name="ext">Object containing extension traits.</param>
        public void LoadExtensionsFromObject(GraceObject ext)
        {
            var req = MethodRequest.Nullary("ObjectExtension");

            req.IsInherits = true;
            if (ext.RespondsTo(req))
            {
                var uo = new UserObject();
                req.InheritingObject = uo;
                ext.Request(this, req);
                GraceObject.ExtendDefaultMethods(req.InheritedMethods);
            }
            req            = MethodRequest.Nullary("NumberExtension");
            req.IsInherits = true;
            if (ext.RespondsTo(req))
            {
                var uo = new UserObject();
                req.InheritingObject = uo;
                ext.Request(this, req);
                GraceNumber.ExtendWith(req.InheritedMethods);
            }
            req            = MethodRequest.Nullary("StringExtension");
            req.IsInherits = true;
            if (ext.RespondsTo(req))
            {
                var uo = new UserObject();
                req.InheritingObject = uo;
                ext.Request(this, req);
                GraceString.ExtendWith(req.InheritedMethods);
            }
        }
Пример #3
0
 private GraceObject mSize()
 {
     return(GraceNumber.Create(data.Length));
 }