private RecordTypeInfo(string name, StructTypeID stid) { /* * private constructor */ this.sTid = stid; this.name = name; }
/// <summary>Create an empty RecordTypeInfo object.</summary> public RecordTypeInfo() { // A RecordTypeInfo is really just a wrapper around StructTypeID // A RecordTypeInfo object is just a collection of TypeInfo objects for each of its fields. //private ArrayList<FieldTypeInfo> typeInfos = new ArrayList<FieldTypeInfo>(); // we keep a hashmap of struct/record names and their type information, as we need it to // set filters when reading nested structs. This map is used during deserialization. //private Map<String, RecordTypeInfo> structRTIs = new HashMap<String, RecordTypeInfo>(); sTid = new StructTypeID(); }
/// <summary>Return the type info of a nested record.</summary> /// <remarks> /// Return the type info of a nested record. We only consider nesting /// to one level. /// </remarks> /// <param name="name">Name of the nested record</param> public virtual Org.Apache.Hadoop.Record.Meta.RecordTypeInfo GetNestedStructTypeInfo (string name) { StructTypeID stid = sTid.FindStruct(name); if (null == stid) { return(null); } return(new Org.Apache.Hadoop.Record.Meta.RecordTypeInfo(name, stid)); }
/// <summary>read/skip bytes from stream based on a type</summary> /// <exception cref="System.IO.IOException"/> public static void Skip(RecordInput rin, string tag, TypeID typeID) { switch (typeID.typeVal) { case TypeID.RIOType.Bool: { rin.ReadBool(tag); break; } case TypeID.RIOType.Buffer: { rin.ReadBuffer(tag); break; } case TypeID.RIOType.Byte: { rin.ReadByte(tag); break; } case TypeID.RIOType.Double: { rin.ReadDouble(tag); break; } case TypeID.RIOType.Float: { rin.ReadFloat(tag); break; } case TypeID.RIOType.Int: { rin.ReadInt(tag); break; } case TypeID.RIOType.Long: { rin.ReadLong(tag); break; } case TypeID.RIOType.Map: { Index midx1 = rin.StartMap(tag); MapTypeID mtID = (MapTypeID)typeID; for (; !midx1.Done(); midx1.Incr()) { Skip(rin, tag, mtID.GetKeyTypeID()); Skip(rin, tag, mtID.GetValueTypeID()); } rin.EndMap(tag); break; } case TypeID.RIOType.String: { rin.ReadString(tag); break; } case TypeID.RIOType.Struct: { rin.StartRecord(tag); // read past each field in the struct StructTypeID stID = (StructTypeID)typeID; IEnumerator <FieldTypeInfo> it = stID.GetFieldTypeInfos().GetEnumerator(); while (it.HasNext()) { FieldTypeInfo tInfo = it.Next(); Skip(rin, tag, tInfo.GetTypeID()); } rin.EndRecord(tag); break; } case TypeID.RIOType.Vector: { Index vidx1 = rin.StartVector(tag); VectorTypeID vtID = (VectorTypeID)typeID; for (; !vidx1.Done(); vidx1.Incr()) { Skip(rin, tag, vtID.GetElementTypeID()); } rin.EndVector(tag); break; } default: { // shouldn't be here throw new IOException("Unknown typeID when skipping bytes"); } } }
/// <summary>Create a RecordTypeInfo object representing a record with the given name /// </summary> /// <param name="name">Name of the record</param> public RecordTypeInfo(string name) { this.name = name; sTid = new StructTypeID(); }