April 19, 2007 Compile Time Scope Object? | ||||
---|---|---|---|---|
| ||||
Consider the following coding style class AveryveryLongClassName { void BuggyFunc() { debug writefln(`AveryveryLongClassName.BuggyFunc`); // please note this is trouble some } } and consider the following forward reference of labels void func() { asm { mov EAX, label1; //currently it's impossible like for some hot patch } label1: } what i think is bringing a new Compile Time Object for each scope the scope compiletime object should give users the following : scope { char[] name; //name for the scope, like in the previous mentioned BuggyFunc,it would be somemodule.AveryveryLongClassName.BuggyFunc void* Labels(arg) //? perhaps it looks like AST macro for its argument // coz i want to feed scope.Labels(label1) // maybe it's foreachable ? scope parent; // give the parent scope ocmpile time structure scope[] child; // give the child scopes void delegate() exit; // with this we can do the scope(exit) in a cleaner way // scope.exit = {writefln("asdkfj");} // perhaps scope.exit should only work with ~= operator // then scope.exit ~= {writefln("asdkf"); would append to scope.exit list } void delegate() failure; void delegate() success; int BeginLine,EndLine; // maybe provide the line numbers for the current scope? } I think the way of scope.exit ~= {writefln("adsfj");} is better than scope(exit) and more D like and scope.name would be useful for log |
April 19, 2007 Re: Compile Time Scope Object? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Davidl | and the idea is used to replace the __LINE__ __FUNCTION__
i think scope.line would be much nicer than __LINE__
and I don't see any good to bring a language with those
tokens. I'm quite sure they are just designed without
consideration of possible compile time object solution
> Consider the following coding style
>
> class AveryveryLongClassName
> {
>
> void BuggyFunc()
> {
> debug writefln(`AveryveryLongClassName.BuggyFunc`); // please note this is trouble some
> }
> }
>
> and consider the following forward reference of labels
> void func()
> {
> asm
> {
> mov EAX, label1; //currently it's impossible like for some hot patch
> }
> label1:
>
> }
>
>
> what i think is bringing a new Compile Time Object for each scope
> the scope compiletime object should give users the following :
>
> scope
> {
> char[] name; //name for the scope, like in the previous mentioned BuggyFunc,it would be somemodule.AveryveryLongClassName.BuggyFunc
> void* Labels(arg) //? perhaps it looks like AST macro for its argument
> // coz i want to feed scope.Labels(label1)
> // maybe it's foreachable ?
> scope parent; // give the parent scope ocmpile time structure
> scope[] child; // give the child scopes
> void delegate() exit;
> // with this we can do the scope(exit) in a cleaner way
> // scope.exit = {writefln("asdkfj");}
> // perhaps scope.exit should only work with ~= operator
> // then scope.exit ~= {writefln("asdkf"); would append to scope.exit list }
> void delegate() failure;
> void delegate() success;
> int BeginLine,EndLine; // maybe provide the line numbers for the current scope?
> }
>
> I think the way of scope.exit ~= {writefln("adsfj");} is better than scope(exit) and more D like
>
> and scope.name would be useful for log
|
Copyright © 1999-2021 by the D Language Foundation