GetNames() public method

public GetNames ( ) : ReadOnlyCollection
return ReadOnlyCollection
Example #1
0
            private RubyStruct /*!*/ ReadStruct()
            {
                RubyStruct obj = (UnmarshalNewObject() as RubyStruct);

                if (obj == null)
                {
                    throw RubyExceptions.CreateArgumentError("non-initialized struct");
                }

                var names = obj.GetNames();
                int count = ReadInt32();

                if (count != names.Count)
                {
                    throw RubyExceptions.CreateArgumentError("struct size differs");
                }

                for (int i = 0; i < count; i++)
                {
                    string name = ReadIdentifier();
                    if (name != names[i])
                    {
                        RubyClass theClass = Context.GetClassOf(obj);
                        throw RubyExceptions.CreateTypeError("struct {0} not compatible ({1} for {2})", theClass.Name, name, names[i]);
                    }
                    obj[i] = ReadAnObject(false);
                }

                return(obj);
            }
Example #2
0
        public static MutableString /*!*/ Inspect(RubyStruct /*!*/ self)
        {
            RubyContext context = self.Class.Context;

            using (IDisposable handle = RubyUtils.InfiniteInspectTracker.TrackObject(self)) {
                // #<struct Struct::Foo name=nil, val=nil>
                MutableString str = MutableString.Create("#<struct ");
                str.Append(RubySites.Inspect(context, context.GetClassOf(self)));

                if (handle == null)
                {
                    return(str.Append(":...>"));
                }
                str.Append(' ');

                object[] data    = self.Values;
                var      members = self.GetNames();
                for (int i = 0; i < data.Length; i++)
                {
                    if (i != 0)
                    {
                        str.Append(", ");
                    }
                    str.Append(members[i]);
                    str.Append("=");
                    str.Append(RubySites.Inspect(context, data[i]));
                }
                str.Append('>');
                return(str);
            }
        }
Example #3
0
        public static MutableString /*!*/ Inspect(RubyStruct /*!*/ self)
        {
            RubyContext context = self.ImmediateClass.Context;

            using (IDisposable handle = RubyUtils.InfiniteInspectTracker.TrackObject(self)) {
                // #<struct Struct::Foo name=nil, val=nil>
                var result = MutableString.CreateMutable(RubyEncoding.Binary);
                result.Append("#<struct ");
                result.Append(context.Inspect(context.GetClassOf(self)));

                if (handle == null)
                {
                    return(result.Append(":...>"));
                }
                result.Append(' ');

                object[] data    = self.Values;
                var      members = self.GetNames();
                for (int i = 0; i < data.Length; i++)
                {
                    if (i != 0)
                    {
                        result.Append(", ");
                    }
                    // TODO (encoding):
                    result.Append(members[i]);
                    result.Append('=');
                    result.Append(context.Inspect(data[i]));
                }
                result.Append('>');
                return(result);
            }
        }
Example #4
0
            private void WriteStruct(RubyStruct /*!*/ obj)
            {
                WriteSubclassData(obj, typeof(RubyStruct));
                _writer.Write((byte)'S');
                RubyClass theClass = _context.GetClassOf(obj);

                TestForAnonymous(theClass);
                WriteModuleName(theClass);
                var names = obj.GetNames();

                WriteInt32(names.Count);
                foreach (string name in names)
                {
                    int index = obj.GetIndex(name);
                    // TODO (encoding):
                    WriteSymbol(name, _context.GetIdentifierEncoding());
                    WriteAnObject(obj[index]);
                }
            }
Example #5
0
            private void WriteStruct(RubyStruct /*!*/ obj)
            {
                SubclassData instanceWriter = new SubclassData(this, obj, typeof(RubyStruct));

                _writer.Write((byte)'S');
                RubyClass theClass = _context.GetClassOf(obj);

                TestForAnonymous(theClass);
                WriteSymbol(theClass.Name);
                var names = obj.GetNames();

                WriteInt32(names.Count);
                foreach (string name in names)
                {
                    int index = obj.GetIndex(name);
                    WriteSymbol(name);
                    WriteAnObject(obj[index]);
                }
            }
Example #6
0
 public static Node ToYamlNode(RubyStruct/*!*/ self, [NotNull]RubyRepresenter/*!*/ rep) {
     var fieldNames = self.GetNames();
     var map = new Dictionary<MutableString, object>(fieldNames.Count);
     for (int i = 0; i < fieldNames.Count; i++) {
         map[MutableString.Create(fieldNames[i])] = self.GetValue(i);
     }
     rep.AddYamlProperties(self, map);
     return rep.Map(self, map);
 }
Example #7
0
 private void WriteStruct(RubyStruct/*!*/ obj) {
     WriteSubclassData(obj, typeof(RubyStruct));
     _writer.Write((byte)'S');
     RubyClass theClass = _context.GetClassOf(obj);
     TestForAnonymous(theClass);
     WriteModuleName(theClass);
     var names = obj.GetNames();
     WriteInt32(names.Count);
     foreach (string name in names) {
         int index = obj.GetIndex(name);
         // TODO (encoding):
         WriteSymbol(name, _context.GetIdentifierEncoding());
         WriteAnObject(obj[index]);
     }
 }
Example #8
0
        public static MutableString/*!*/ Inspect(RubyStruct/*!*/ self) {
            RubyContext context = self.ImmediateClass.Context;

            using (IDisposable handle = RubyUtils.InfiniteInspectTracker.TrackObject(self)) {
                // #<struct Struct::Foo name=nil, val=nil>
                var result = MutableString.CreateMutable(RubyEncoding.Binary);
                result.Append("#<struct ");
                result.Append(context.Inspect(context.GetClassOf(self)));

                if (handle == null) {
                    return result.Append(":...>");
                }
                result.Append(' ');

                object[] data = self.Values;
                var members = self.GetNames();
                for (int i = 0; i < data.Length; i++) {
                    if (i != 0) {
                        result.Append(", ");
                    }
                    // TODO (encoding):
                    result.Append(members[i]);
                    result.Append('=');
                    result.Append(context.Inspect(data[i]));
                }
                result.Append('>');
                return result;
            }
        }
Example #9
0
 private void WriteStruct(RubyStruct/*!*/ obj) {
     SubclassData instanceWriter = new SubclassData(this, obj, typeof(RubyStruct));
     _writer.Write((byte)'S');
     RubyClass theClass = _context.GetClassOf(obj);
     TestForAnonymous(theClass);
     WriteSymbol(theClass.Name);
     var names = obj.GetNames();
     WriteInt32(names.Count);
     foreach (string name in names) {
         int index = obj.GetIndex(name);
         WriteSymbol(name);
         WriteAnObject(obj[index]);
     }
 }
Example #10
0
        public static MutableString/*!*/ Inspect(RubyStruct/*!*/ self) {
            RubyContext context = self.Class.Context;

            using (IDisposable handle = RubyUtils.InfiniteInspectTracker.TrackObject(self)) {
                // #<struct Struct::Foo name=nil, val=nil>
                MutableString str = MutableString.Create("#<struct ");
                str.Append(RubySites.Inspect(context, context.GetClassOf(self)));

                if (handle == null) {
                    return str.Append(":...>");
                }
                str.Append(' ');

                object[] data = self.Values;
                var members = self.GetNames();
                for (int i = 0; i < data.Length; i++) {
                    if (i != 0) {
                        str.Append(", ");
                    }
                    str.Append(members[i]);
                    str.Append("=");
                    str.Append(RubySites.Inspect(context, data[i]));
                }
                str.Append('>');
                return str;
            }
        }
Example #11
0
        public static Node ToYamlNode(RubyStruct/*!*/ self, [NotNull]RubyRepresenter/*!*/ rep)
        {
            var fieldNames = self.GetNames();

            var fields = new Dictionary<Node, Node>(fieldNames.Count);
            for (int i = 0; i < fieldNames.Count; i++) {
                fields[rep.Scalar(null, fieldNames[i], ScalarQuotingStyle.None)] = rep.RepresentItem(self.Values[i]);
            }

            var map = new Dictionary<object, object>();
            rep.AddYamlProperties(map, self, false);
            return rep.Map(fields, rep.GetTagUri(self), map, FlowStyle.Block);
        }