package xtc.lang.blink; import java.util.List; import xtc.lang.blink.CallStack.NativeCallFrame; import xtc.lang.blink.CallStack.LocalVariable; import xtc.lang.blink.Event.BlinkEventSource; import xtc.lang.blink.SymbolMapper.SourceFileAndLine; /** * The exported feature from the native debugger controlled under the Blink. */ public interface NativeDebugger extends BlinkEventSource { /** Transition type between Java and native code. */ static enum LanguageTransitionEventType { J2C_CALL, J2C_RETURN, C2J_CALL, C2J_RETURN; } /** attaching and detaching. */ public void attach(int pid) ; public void detach() ; public void quit() ; /** user level breakpoint and continuing. */ public int createBreakpoint(String sourceFile, int line) ; public int createBreakpoint(String symbol) ; public void enableBreakpoint(int bpid) ; public void disableBreakpoint(int bpid) ; public void deleteBreakpoint(int bpid) ; /** Enable and disable the internal transition break point. */ public int getLanguageTransitionCount() ; public void setTransitionBreakPoint(LanguageTransitionEventType bptype, int transitionCount) ; public void clearTransitionBreakPoint(LanguageTransitionEventType bptype) ; /** For transitions */ public void callNative2Java() ; /** Continue the debuggee's execution. */ public void cont() ; public void callJavaDummy() ; /** Calling context. */ public List<NativeCallFrame> getFrames() ; /** Get current location. */ public SourceFileAndLine getCurrentLocation() ; public String getSourceLines(String filename, int line, int count) ; public List <LocalVariable> getLocals(NativeCallFrame f) ; /** Stepping */ public void step() ; public void next() ; /** Inspecting the memory. */ public String eval(NativeCallFrame f, String expr) ; public void setVariable(NativeCallFrame f, String name, String expr) ; public String getNewCTmpVarIdentifier(); public void resetConvenienceVariables(); /** Obtain the type of the C expression including convenience variable. */ public String whatis(NativeCallFrame f, String expr) ; /** Run the native debugger specific raw command line, and return the response. */ public String runCommand(String command) ; /** Perform debugger's internal event handling. */ public void dispatch(Event e); public boolean isDead(); }