Generating runtime type information.
[Thread Prev] | [Thread Next]
- Subject: Generating runtime type information.
- From: Ori Bernstein <ori@xxxxxxxxxxxxxx>
- Date: Thu, 26 Mar 2015 23:19:24 -0700
- To: myrddin-dev@xxxxxxxxxxxxxx
Congratulations everyone! you get to rebuild as we break ABI again! We now generate type descriptions for variadic types, and push a pointer to the variadic arguments on to the stack when we call. The valist code currently ignores this, and does nothing useful with it -- this should be fixed. In other words, if you have a variadic function f: const f : (a : int, b : byte[:], ... -> void) and you call it like this: f(1, "asdf", 'c', "blah", false) you will get, on the stack: [ 1 : int, "asdf" : byte[:], argtype : byte# 'c' : char, "blah" : byte[:], false : bool ] The argtype will be a binary encoded description of the types of the tuple (char, byte[:], bool) This means that you can write (admittedly, slightly hairy) code to parse out the types passed in for variadics, and write code that looks like: const pack : (vals : ... -> byte[:]) One goal that I would like to support is making std.fmt() callable as such: std.fmt("%: list contains %\n", 1, [1,2,3][:]) -- Ori Bernstein <ori@xxxxxxxxxxxxxx>
Re: Generating runtime type information. | Ryan Gonzalez <rymg19@xxxxxxxxx> |
Re: Generating runtime type information. | Ryan Gonzalez <rymg19@xxxxxxxxx> |
- Prev by Date: Re: Iterator APIs?
- Next by Date: Re: Generating runtime type information.
- Previous by thread: Re: Iterator APIs?
- Next by thread: Re: Generating runtime type information.
- Index(es):