function pointer bug?
Kapps via Digitalmars-d
digitalmars-d at puremagic.com
Tue Oct 28 00:53:03 PDT 2014
On Tuesday, 28 October 2014 at 02:34:14 UTC, ketmar via
Digitalmars-d wrote:
> On Tue, 28 Oct 2014 01:36:01 +0000
> bitwise via Digitalmars-d <digitalmars-d at puremagic.com> wrote:
>
>> I have actually found a work around as well, which was to wrap
>> the actual retrieval of the function address in a lambda, and
>> pass the lambda by template parameter instead:
> it's not a "workaround", it's almost exactly what i did in my
> sample,
> just not that hairy.
>
> you can't get address of anything in compile time, 'cause there
> is no
> such address. but you can do it in runtime, of course. that's
> what you
> doing: postponing "&" to runtime.
>
>> as far as I could google, no one has attempted this yet.
> no one published it yet, not "no one attempted". i desperately
> need
> runtime reflection for my (still private) component builder
> project, so
> i'm slowly writing that mechanics. and my "command console"
> using
> similar technique to allow user inspect variables and classes,
> and call
> function/methods in runtime.
I do something possibly similar for generating console help text
using runtime reflection. It could have used compile-time
reflection, but it gets annoying to use.
Using
https://shardsoft.com/stash/projects/SHARD/repos/dap/browse/source/dap/Standalone.d
(with
https://shardsoft.com/stash/projects/SHARD/repos/shardtools/browse/source/ShardTools/CommandLine.d
and
https://shardsoft.com/stash/projects/SHARD/repos/shardtools/browse/source/ShardTools/Reflection.d?until=45ded3019f3f05d7b68e5746d34da1de7433ccf6),
it generates something like:
D Asset Pipeline
Converts assets into an intermediate post-processed format more
efficiently loaded at runtime.
Commands:
[-h|--help]: Displays the help string.
[-a|--add]: Adds the given raw asset to the asset store
using the default processor and default settings.
[-r|--remove]: Removes the asset with the specified
qualified name from the asset store.
[-l|--list]: Lists all assets currently stored.
[-b|--build]: Builds all dirty assets using current
settings.
[-i|--inspect]: Shows all properties of the given asset.
[-m|--modify]: Modifies a property of a processor on an
asset, or the processor used to build the asset.
Options:
[--input-folder]: The folder that assets should be read
from and settings stored in. Default: Content\Input
[--output-folder]: The folder that generated assets
should be saved to. Default: Content\Output
[--log-level]: The minimum severity for a message to be
logged. Default: info
The command lines then invoke methods registered through runtime
reflection, which allow the user to change individual properties
on the set processor using --modify, again using runtime
reflection to find the setting that the user wants and converting
their input to the appropriate type.
More information about the Digitalmars-d
mailing list