Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.jruby.internal.runtime.methods.CallConfiguration Maven / Gradle / Ivy
package org.jruby.internal.runtime.methods;
import org.jruby.RubyModule;
import org.jruby.anno.JRubyMethod;
import org.jruby.parser.StaticScope;
import org.jruby.runtime.Block;
import org.jruby.runtime.ThreadContext;
import org.jruby.runtime.builtin.IRubyObject;
public enum CallConfiguration {
FrameFullScopeFull(Framing.Full, Scoping.Full) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodFrameAndScope(implementer, name, self, block, scope);
}
void post (ThreadContext context) {
context.postMethodFrameAndScope();
}
},
FrameFullScopeDummy(Framing.Full, Scoping.Dummy) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodFrameAndDummyScope(implementer, name, self, block, scope);
}
void post (ThreadContext context) {
context.postMethodFrameAndScope();
}
},
FrameFullScopeNone (Framing.Full, Scoping.None) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodFrameOnly(implementer, name, self, block);
}
void post (ThreadContext context) {
context.postMethodFrameOnly();
}
},
FrameBacktraceScopeFull (Framing.Backtrace, Scoping.Full) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodBacktraceAndScope(name, implementer, scope);
}
void post (ThreadContext context) {
context.postMethodBacktraceAndScope();
}
},
FrameBacktraceScopeDummy (Framing.Backtrace, Scoping.Dummy) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodBacktraceDummyScope(implementer, name, scope);
}
void post (ThreadContext context) {
context.postMethodBacktraceDummyScope();
}
},
FrameBacktraceScopeNone (Framing.Backtrace, Scoping.None) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodBacktraceOnly(name);
}
void post (ThreadContext context) {
context.postMethodBacktraceOnly();
}
},
FrameNoneScopeFull(Framing.None, Scoping.Full) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodScopeOnly(implementer, scope);
}
void post (ThreadContext context) {
context.postMethodScopeOnly();
}
},
FrameNoneScopeDummy(Framing.None, Scoping.Dummy) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
context.preMethodNoFrameAndDummyScope(implementer, scope);
}
void post (ThreadContext context) {
context.postMethodScopeOnly();
}
},
FrameNoneScopeNone(Framing.None, Scoping.None) {
void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) {
}
void post (ThreadContext context) {
}
};
@Deprecated
public static final CallConfiguration FRAME_AND_SCOPE = FrameFullScopeFull;
@Deprecated
public static final CallConfiguration FRAME_AND_DUMMY_SCOPE = FrameFullScopeDummy;
@Deprecated
public static final CallConfiguration FRAME_ONLY = FrameFullScopeNone;
@Deprecated
public static final CallConfiguration BACKTRACE_AND_SCOPE = FrameBacktraceScopeFull;
@Deprecated
public static final CallConfiguration BACKTRACE_DUMMY_SCOPE = FrameBacktraceScopeNone;
@Deprecated
public static final CallConfiguration BACKTRACE_ONLY = FrameBacktraceScopeNone;
@Deprecated
public static final CallConfiguration SCOPE_ONLY = FrameNoneScopeFull;
@Deprecated
public static final CallConfiguration NO_FRAME_DUMMY_SCOPE = FrameNoneScopeDummy;
@Deprecated
public static final CallConfiguration NO_FRAME_NO_SCOPE = FrameNoneScopeNone;
public static CallConfiguration getCallConfigByAnno (JRubyMethod anno) {
return getCallConfig(anno.frame(), anno.scope());
}
@Deprecated
public static CallConfiguration getCallConfig (boolean frame, boolean scope, boolean backtrace) {
return getCallConfig(frame, scope);
}
public static CallConfiguration getCallConfig (boolean frame, boolean scope) {
if (frame) {
if (scope) {
return FrameFullScopeFull;
} else {
return FrameFullScopeNone;
}
} else if (scope) {
return FrameNoneScopeFull;
} else {
return FrameNoneScopeNone;
}
}
private final Framing framing;
private final Scoping scoping;
CallConfiguration(Framing framing, Scoping scoping) {
this .framing = framing;
this .scoping = scoping;
}
public final Framing framing () {return framing;}
public final Scoping scoping () {return scoping;}
abstract void pre (ThreadContext context, IRubyObject self, RubyModule implementer, String name, Block block, StaticScope scope) ;
abstract void post (ThreadContext context) ;
boolean isNoop () { return framing == Framing.None && scoping == Scoping.None; }
}