Example #1
0
        // Create a new Code type for a particular heading
        public static DataTypeCode Create(string name, DataHeading heading, TypeFlags flags, ConvertDelegate converter = null, DefaultDelegate defaulter = null)
        {
            var dt = new DataTypeCode {
                Name    = name,
                Heading = heading,
                Flags   = flags,
            };

            dt.NativeType = TypeMaker.CreateType(dt);
            return(dt);
        }
Example #2
0
        // Get type from dictionary, or create and add
        public static DataTypeTuple Get(DataHeading heading)
        {
            if (_headings.ContainsKey(heading))
            {
                return(_headings[heading]);
            }
            var dt = DataTypeTuple.Create("tuple", heading, TypeFlags.Variable | TypeFlags.Generated | TypeFlags.HasHeading);

            dt.Ordinal         = _headings.Count + 1;
            dt.NativeType      = TypeMaker.CreateType(dt);
            _headings[heading] = dt;
            return(dt);
        }
Example #3
0
        // Get type from dictionary, or create and add
        // Every relation needs a row type, so make sure they use the same heading
        public static DataTypeRelation Get(DataHeading heading)
        {
            if (_headings.ContainsKey(heading))
            {
                return(_headings[heading]);
            }
            var tupletype = DataTypeTuple.Get(heading);
            var dt        = DataTypeRelation.Create("relation", tupletype.Heading, TypeFlags.Variable | TypeFlags.Generated | TypeFlags.HasHeading);

            dt.Ordinal         = _headings.Count + 1;
            dt.ChildTupleType  = tupletype;
            dt.NativeType      = TypeMaker.CreateType(dt);
            _headings[heading] = dt;
            var x = Activator.CreateInstance(dt.NativeType);

            return(dt);
        }