xref: /aosp_15_r20/external/javasqlite/src/main/java/SQLite/Vm.java (revision fd76c71b147b98c03334ec0945352cee0b39aab1)
1*fd76c71bSTreehugger Robot package SQLite;
2*fd76c71bSTreehugger Robot 
3*fd76c71bSTreehugger Robot /**
4*fd76c71bSTreehugger Robot  * Class to represent compiled SQLite VM.
5*fd76c71bSTreehugger Robot  */
6*fd76c71bSTreehugger Robot 
7*fd76c71bSTreehugger Robot public class Vm {
8*fd76c71bSTreehugger Robot 
9*fd76c71bSTreehugger Robot     /**
10*fd76c71bSTreehugger Robot      * Internal handle for the compiled SQLite VM.
11*fd76c71bSTreehugger Robot      */
12*fd76c71bSTreehugger Robot 
13*fd76c71bSTreehugger Robot     private long handle = 0;
14*fd76c71bSTreehugger Robot 
15*fd76c71bSTreehugger Robot     /**
16*fd76c71bSTreehugger Robot      * Internal last error code for compile()/step() methods.
17*fd76c71bSTreehugger Robot      */
18*fd76c71bSTreehugger Robot 
19*fd76c71bSTreehugger Robot     protected int error_code = 0;
20*fd76c71bSTreehugger Robot 
21*fd76c71bSTreehugger Robot     /**
22*fd76c71bSTreehugger Robot      * Perform one step on compiled SQLite VM.
23*fd76c71bSTreehugger Robot      * The result row is passed to the given callback interface.<BR><BR>
24*fd76c71bSTreehugger Robot      *
25*fd76c71bSTreehugger Robot      * Example:<BR>
26*fd76c71bSTreehugger Robot      * <PRE>
27*fd76c71bSTreehugger Robot      *   ...
28*fd76c71bSTreehugger Robot      *   try {
29*fd76c71bSTreehugger Robot      *     Vm vm = db.compile("select * from x; select * from y;");
30*fd76c71bSTreehugger Robot      *     while (vm.step(cb)) {
31*fd76c71bSTreehugger Robot      *       ...
32*fd76c71bSTreehugger Robot      *     }
33*fd76c71bSTreehugger Robot      *     while (vm.compile()) {
34*fd76c71bSTreehugger Robot      *       while (vm.step(cb)) {
35*fd76c71bSTreehugger Robot      *         ...
36*fd76c71bSTreehugger Robot      *       }
37*fd76c71bSTreehugger Robot      *     }
38*fd76c71bSTreehugger Robot      *   } catch (SQLite.Exception e) {
39*fd76c71bSTreehugger Robot      *   }
40*fd76c71bSTreehugger Robot      * </PRE>
41*fd76c71bSTreehugger Robot      *
42*fd76c71bSTreehugger Robot      * @param cb the object implementing the callback methods.
43*fd76c71bSTreehugger Robot      * @return true as long as more row data can be retrieved,
44*fd76c71bSTreehugger Robot      * false, otherwise.
45*fd76c71bSTreehugger Robot      */
46*fd76c71bSTreehugger Robot 
step(Callback cb)47*fd76c71bSTreehugger Robot     public native boolean step(Callback cb) throws SQLite.Exception;
48*fd76c71bSTreehugger Robot 
49*fd76c71bSTreehugger Robot     /**
50*fd76c71bSTreehugger Robot      * Compile the next SQL statement for the SQLite VM instance.
51*fd76c71bSTreehugger Robot      * @return true when SQL statement has been compiled, false
52*fd76c71bSTreehugger Robot      * on end of statement sequence.
53*fd76c71bSTreehugger Robot      */
54*fd76c71bSTreehugger Robot 
compile()55*fd76c71bSTreehugger Robot     public native boolean compile() throws SQLite.Exception;
56*fd76c71bSTreehugger Robot 
57*fd76c71bSTreehugger Robot     /**
58*fd76c71bSTreehugger Robot      * Abort the compiled SQLite VM.
59*fd76c71bSTreehugger Robot      */
60*fd76c71bSTreehugger Robot 
stop()61*fd76c71bSTreehugger Robot     public native void stop() throws SQLite.Exception;
62*fd76c71bSTreehugger Robot 
63*fd76c71bSTreehugger Robot     /**
64*fd76c71bSTreehugger Robot      * Destructor for object.
65*fd76c71bSTreehugger Robot      */
66*fd76c71bSTreehugger Robot 
finalize()67*fd76c71bSTreehugger Robot     protected native void finalize();
68*fd76c71bSTreehugger Robot 
69*fd76c71bSTreehugger Robot     /**
70*fd76c71bSTreehugger Robot      * Internal native initializer.
71*fd76c71bSTreehugger Robot      */
72*fd76c71bSTreehugger Robot 
internal_init()73*fd76c71bSTreehugger Robot     private static native void internal_init();
74*fd76c71bSTreehugger Robot 
75*fd76c71bSTreehugger Robot     static {
internal_init()76*fd76c71bSTreehugger Robot 	internal_init();
77*fd76c71bSTreehugger Robot     }
78*fd76c71bSTreehugger Robot }
79