aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/sql/CallableStatement.h
blob: 143184e5c8be5a43ba740db5a96e4619be61dcc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203

// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_sql_CallableStatement__
#define __java_sql_CallableStatement__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace math
    {
        class BigDecimal;
    }
    namespace net
    {
        class URL;
    }
    namespace sql
    {
        class Array;
        class Blob;
        class CallableStatement;
        class Clob;
        class Connection;
        class Date;
        class ParameterMetaData;
        class Ref;
        class ResultSet;
        class ResultSetMetaData;
        class SQLWarning;
        class Time;
        class Timestamp;
    }
  }
}

class java::sql::CallableStatement : public ::java::lang::Object
{

public:
  virtual void registerOutParameter(jint, jint) = 0;
  virtual void registerOutParameter(jint, jint, jint) = 0;
  virtual jboolean wasNull() = 0;
  virtual ::java::lang::String * getString(jint) = 0;
  virtual jboolean getBoolean(jint) = 0;
  virtual jbyte getByte(jint) = 0;
  virtual jshort getShort(jint) = 0;
  virtual jint getInt(jint) = 0;
  virtual jlong getLong(jint) = 0;
  virtual jfloat getFloat(jint) = 0;
  virtual jdouble getDouble(jint) = 0;
  virtual ::java::math::BigDecimal * getBigDecimal(jint, jint) = 0;
  virtual JArray< jbyte > * getBytes(jint) = 0;
  virtual ::java::sql::Date * getDate(jint) = 0;
  virtual ::java::sql::Time * getTime(jint) = 0;
  virtual ::java::sql::Timestamp * getTimestamp(jint) = 0;
  virtual ::java::lang::Object * getObject(jint) = 0;
  virtual ::java::math::BigDecimal * getBigDecimal(jint) = 0;
  virtual ::java::lang::Object * getObject(jint, ::java::util::Map *) = 0;
  virtual ::java::sql::Ref * getRef(jint) = 0;
  virtual ::java::sql::Blob * getBlob(jint) = 0;
  virtual ::java::sql::Clob * getClob(jint) = 0;
  virtual ::java::sql::Array * getArray(jint) = 0;
  virtual ::java::sql::Date * getDate(jint, ::java::util::Calendar *) = 0;
  virtual ::java::sql::Time * getTime(jint, ::java::util::Calendar *) = 0;
  virtual ::java::sql::Timestamp * getTimestamp(jint, ::java::util::Calendar *) = 0;
  virtual void registerOutParameter(jint, jint, ::java::lang::String *) = 0;
  virtual void registerOutParameter(::java::lang::String *, jint) = 0;
  virtual void registerOutParameter(::java::lang::String *, jint, jint) = 0;
  virtual void registerOutParameter(::java::lang::String *, jint, ::java::lang::String *) = 0;
  virtual ::java::net::URL * getURL(jint) = 0;
  virtual void setURL(::java::lang::String *, ::java::net::URL *) = 0;
  virtual void setNull(::java::lang::String *, jint) = 0;
  virtual void setBoolean(::java::lang::String *, jboolean) = 0;
  virtual void setByte(::java::lang::String *, jbyte) = 0;
  virtual void setShort(::java::lang::String *, jshort) = 0;
  virtual void setInt(::java::lang::String *, jint) = 0;
  virtual void setLong(::java::lang::String *, jlong) = 0;
  virtual void setFloat(::java::lang::String *, jfloat) = 0;
  virtual void setDouble(::java::lang::String *, jdouble) = 0;
  virtual void setBigDecimal(::java::lang::String *, ::java::math::BigDecimal *) = 0;
  virtual void setString(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void setBytes(::java::lang::String *, JArray< jbyte > *) = 0;
  virtual void setDate(::java::lang::String *, ::java::sql::Date *) = 0;
  virtual void setTime(::java::lang::String *, ::java::sql::Time *) = 0;
  virtual void setTimestamp(::java::lang::String *, ::java::sql::Timestamp *) = 0;
  virtual void setAsciiStream(::java::lang::String *, ::java::io::InputStream *, jint) = 0;
  virtual void setBinaryStream(::java::lang::String *, ::java::io::InputStream *, jint) = 0;
  virtual void setObject(::java::lang::String *, ::java::lang::Object *, jint, jint) = 0;
  virtual void setObject(::java::lang::String *, ::java::lang::Object *, jint) = 0;
  virtual void setObject(::java::lang::String *, ::java::lang::Object *) = 0;
  virtual void setCharacterStream(::java::lang::String *, ::java::io::Reader *, jint) = 0;
  virtual void setDate(::java::lang::String *, ::java::sql::Date *, ::java::util::Calendar *) = 0;
  virtual void setTime(::java::lang::String *, ::java::sql::Time *, ::java::util::Calendar *) = 0;
  virtual void setTimestamp(::java::lang::String *, ::java::sql::Timestamp *, ::java::util::Calendar *) = 0;
  virtual void setNull(::java::lang::String *, jint, ::java::lang::String *) = 0;
  virtual ::java::lang::String * getString(::java::lang::String *) = 0;
  virtual jboolean getBoolean(::java::lang::String *) = 0;
  virtual jbyte getByte(::java::lang::String *) = 0;
  virtual jshort getShort(::java::lang::String *) = 0;
  virtual jint getInt(::java::lang::String *) = 0;
  virtual jlong getLong(::java::lang::String *) = 0;
  virtual jfloat getFloat(::java::lang::String *) = 0;
  virtual jdouble getDouble(::java::lang::String *) = 0;
  virtual JArray< jbyte > * getBytes(::java::lang::String *) = 0;
  virtual ::java::sql::Date * getDate(::java::lang::String *) = 0;
  virtual ::java::sql::Time * getTime(::java::lang::String *) = 0;
  virtual ::java::sql::Timestamp * getTimestamp(::java::lang::String *) = 0;
  virtual ::java::lang::Object * getObject(::java::lang::String *) = 0;
  virtual ::java::math::BigDecimal * getBigDecimal(::java::lang::String *) = 0;
  virtual ::java::lang::Object * getObject(::java::lang::String *, ::java::util::Map *) = 0;
  virtual ::java::sql::Ref * getRef(::java::lang::String *) = 0;
  virtual ::java::sql::Blob * getBlob(::java::lang::String *) = 0;
  virtual ::java::sql::Clob * getClob(::java::lang::String *) = 0;
  virtual ::java::sql::Array * getArray(::java::lang::String *) = 0;
  virtual ::java::sql::Date * getDate(::java::lang::String *, ::java::util::Calendar *) = 0;
  virtual ::java::sql::Time * getTime(::java::lang::String *, ::java::util::Calendar *) = 0;
  virtual ::java::sql::Timestamp * getTimestamp(::java::lang::String *, ::java::util::Calendar *) = 0;
  virtual ::java::net::URL * getURL(::java::lang::String *) = 0;
  virtual ::java::sql::ResultSet * executeQuery() = 0;
  virtual jint executeUpdate() = 0;
  virtual void setNull(jint, jint) = 0;
  virtual void setBoolean(jint, jboolean) = 0;
  virtual void setByte(jint, jbyte) = 0;
  virtual void setShort(jint, jshort) = 0;
  virtual void setInt(jint, jint) = 0;
  virtual void setLong(jint, jlong) = 0;
  virtual void setFloat(jint, jfloat) = 0;
  virtual void setDouble(jint, jdouble) = 0;
  virtual void setBigDecimal(jint, ::java::math::BigDecimal *) = 0;
  virtual void setString(jint, ::java::lang::String *) = 0;
  virtual void setBytes(jint, JArray< jbyte > *) = 0;
  virtual void setDate(jint, ::java::sql::Date *) = 0;
  virtual void setTime(jint, ::java::sql::Time *) = 0;
  virtual void setTimestamp(jint, ::java::sql::Timestamp *) = 0;
  virtual void setAsciiStream(jint, ::java::io::InputStream *, jint) = 0;
  virtual void setUnicodeStream(jint, ::java::io::InputStream *, jint) = 0;
  virtual void setBinaryStream(jint, ::java::io::InputStream *, jint) = 0;
  virtual void clearParameters() = 0;
  virtual void setObject(jint, ::java::lang::Object *, jint, jint) = 0;
  virtual void setObject(jint, ::java::lang::Object *, jint) = 0;
  virtual void setObject(jint, ::java::lang::Object *) = 0;
  virtual jboolean execute() = 0;
  virtual void addBatch() = 0;
  virtual void setCharacterStream(jint, ::java::io::Reader *, jint) = 0;
  virtual void setRef(jint, ::java::sql::Ref *) = 0;
  virtual void setBlob(jint, ::java::sql::Blob *) = 0;
  virtual void setClob(jint, ::java::sql::Clob *) = 0;
  virtual void setArray(jint, ::java::sql::Array *) = 0;
  virtual ::java::sql::ResultSetMetaData * getMetaData() = 0;
  virtual void setDate(jint, ::java::sql::Date *, ::java::util::Calendar *) = 0;
  virtual void setTime(jint, ::java::sql::Time *, ::java::util::Calendar *) = 0;
  virtual void setTimestamp(jint, ::java::sql::Timestamp *, ::java::util::Calendar *) = 0;
  virtual void setNull(jint, jint, ::java::lang::String *) = 0;
  virtual void setURL(jint, ::java::net::URL *) = 0;
  virtual ::java::sql::ParameterMetaData * getParameterMetaData() = 0;
  virtual ::java::sql::ResultSet * executeQuery(::java::lang::String *) = 0;
  virtual jint executeUpdate(::java::lang::String *) = 0;
  virtual void close() = 0;
  virtual jint getMaxFieldSize() = 0;
  virtual void setMaxFieldSize(jint) = 0;
  virtual jint getMaxRows() = 0;
  virtual void setMaxRows(jint) = 0;
  virtual void setEscapeProcessing(jboolean) = 0;
  virtual jint getQueryTimeout() = 0;
  virtual void setQueryTimeout(jint) = 0;
  virtual void cancel() = 0;
  virtual ::java::sql::SQLWarning * getWarnings() = 0;
  virtual void clearWarnings() = 0;
  virtual void setCursorName(::java::lang::String *) = 0;
  virtual jboolean execute(::java::lang::String *) = 0;
  virtual ::java::sql::ResultSet * getResultSet() = 0;
  virtual jint getUpdateCount() = 0;
  virtual jboolean getMoreResults() = 0;
  virtual void setFetchDirection(jint) = 0;
  virtual jint getFetchDirection() = 0;
  virtual void setFetchSize(jint) = 0;
  virtual jint getFetchSize() = 0;
  virtual jint getResultSetConcurrency() = 0;
  virtual jint getResultSetType() = 0;
  virtual void addBatch(::java::lang::String *) = 0;
  virtual void clearBatch() = 0;
  virtual JArray< jint > * executeBatch() = 0;
  virtual ::java::sql::Connection * getConnection() = 0;
  virtual jboolean getMoreResults(jint) = 0;
  virtual ::java::sql::ResultSet * getGeneratedKeys() = 0;
  virtual jint executeUpdate(::java::lang::String *, jint) = 0;
  virtual jint executeUpdate(::java::lang::String *, JArray< jint > *) = 0;
  virtual jint executeUpdate(::java::lang::String *, JArray< ::java::lang::String * > *) = 0;
  virtual jboolean execute(::java::lang::String *, jint) = 0;
  virtual jboolean execute(::java::lang::String *, JArray< jint > *) = 0;
  virtual jboolean execute(::java::lang::String *, JArray< ::java::lang::String * > *) = 0;
  virtual jint getResultSetHoldability() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_sql_CallableStatement__
} return ERROR_OK; } #endif /* BUILD_PRESTO_LIBFTDI == 1 */ static int presto_open(char *req_serial) { presto->buff_out_pos = 0; presto->buff_in_pos = 0; presto->buff_in_len = 0; presto->buff_in_exp = 0; presto->total_out = 0; presto->total_in = 0; presto->jtag_tms = 0; presto->jtag_tck = 0; presto->jtag_rst = 0; presto->jtag_tdi_data = 0; presto->jtag_tdi_count = 0; presto->jtag_speed = 0; #if BUILD_PRESTO_FTD2XX == 1 return presto_open_ftd2xx(req_serial); #elif BUILD_PRESTO_LIBFTDI == 1 return presto_open_libftdi(req_serial); #endif } static int presto_close(void) { int result = ERROR_OK; #if BUILD_PRESTO_FTD2XX == 1 unsigned long ftbytes; if (presto->handle == (FT_HANDLE)INVALID_HANDLE_VALUE) return result; presto->status = FT_Purge(presto->handle, FT_PURGE_TX | FT_PURGE_RX); if (presto->status != FT_OK) result = ERROR_JTAG_DEVICE_ERROR; presto->status = FT_Write(presto->handle, &presto_init_seq, sizeof(presto_init_seq), &ftbytes); if (presto->status != FT_OK || ftbytes != sizeof(presto_init_seq)) result = ERROR_JTAG_DEVICE_ERROR; if ((presto->status = FT_SetLatencyTimer(presto->handle, 16)) != FT_OK) result = ERROR_JTAG_DEVICE_ERROR; if ((presto->status = FT_Close(presto->handle)) != FT_OK) result = ERROR_JTAG_DEVICE_ERROR; else presto->handle = (FT_HANDLE)INVALID_HANDLE_VALUE; #elif BUILD_PRESTO_LIBFTDI == 1 if ((presto->retval = ftdi_write_data(&presto->ftdic, presto_init_seq, sizeof(presto_init_seq))) != sizeof(presto_init_seq)) result = ERROR_JTAG_DEVICE_ERROR; if ((presto->retval = ftdi_set_latency_timer(&presto->ftdic, 16)) < 0) result = ERROR_JTAG_DEVICE_ERROR; if ((presto->retval = ftdi_usb_close(&presto->ftdic)) < 0) result = ERROR_JTAG_DEVICE_ERROR; else ftdi_deinit(&presto->ftdic); #endif return result; } static int presto_flush(void) { if (presto->buff_out_pos == 0) return ERROR_OK; #if BUILD_PRESTO_FTD2XX == 1 if (presto->status != FT_OK) #elif BUILD_PRESTO_LIBFTDI == 1 if (presto->retval < 0) #endif { LOG_DEBUG("error in previous communication, canceling I/O operation"); return ERROR_JTAG_DEVICE_ERROR; } if (presto_write(presto->buff_out, presto->buff_out_pos) != ERROR_OK) { presto->buff_out_pos = 0; return ERROR_JTAG_DEVICE_ERROR; } presto->total_out += presto->buff_out_pos; presto->buff_out_pos = 0; if (presto->buff_in_exp == 0) return ERROR_OK; presto->buff_in_pos = 0; presto->buff_in_len = 0; if (presto_read(presto->buff_in, presto->buff_in_exp) != ERROR_OK) { presto->buff_in_exp = 0; return ERROR_JTAG_DEVICE_ERROR; } presto->total_in += presto->buff_in_exp; presto->buff_in_len = presto->buff_in_exp; presto->buff_in_exp = 0; return ERROR_OK; } static int presto_sendbyte(int data) { if (data == EOF) return presto_flush(); if (presto->buff_out_pos < BUFFER_SIZE) { presto->buff_out[presto->buff_out_pos++] = (uint8_t)data; if (((data & 0xC0) == 0x40) || ((data & 0xD0)== 0xD0)) presto->buff_in_exp++; } else return ERROR_JTAG_DEVICE_ERROR; #if BUILD_PRESTO_FTD2XX == 1 if (presto->buff_out_pos >= BUFFER_SIZE) #elif BUILD_PRESTO_LIBFTDI == 1 /* libftdi does not do background read, be sure that USB IN buffer does not overflow (128 bytes only!) */ if (presto->buff_out_pos >= BUFFER_SIZE || presto->buff_in_exp == 128) #endif return presto_flush(); return ERROR_OK; } #if 0 static int presto_getbyte(void) { if (presto->buff_in_pos < presto->buff_in_len) return presto->buff_in[presto->buff_in_pos++]; if (presto->buff_in_exp == 0) return -1; if (presto_flush() != ERROR_OK) return -1; if (presto->buff_in_pos < presto->buff_in_len) return presto->buff_in[presto->buff_in_pos++]; return -1; } #endif /* -------------------------------------------------------------------------- */ static int presto_tdi_flush(void) { if (presto->jtag_tdi_count == 0) return 0; if (presto->jtag_tck == 0) { LOG_ERROR("BUG: unexpected TAP condition, TCK low"); return -1; } presto->jtag_tdi_data |= (presto->jtag_tdi_count - 1) << 4; presto_sendbyte(presto->jtag_tdi_data); presto->jtag_tdi_count = 0; presto->jtag_tdi_data = 0; return 0; } static int presto_tck_idle(void) { if (presto->jtag_tck == 1) { presto_sendbyte(0xCA); presto->jtag_tck = 0; } return 0; } /* -------------------------------------------------------------------------- */ static int presto_bitq_out(int tms, int tdi, int tdo_req) { int i; unsigned char cmd; if (presto->jtag_tck == 0) { presto_sendbyte(0xA4); /* LED idicator - JTAG active */ } else if (presto->jtag_speed == 0 && !tdo_req && tms == presto->jtag_tms) { presto->jtag_tdi_data |= (tdi != 0) << presto->jtag_tdi_count; if (++presto->jtag_tdi_count == 4) presto_tdi_flush(); return 0; } presto_tdi_flush(); cmd = tdi ? 0xCB : 0xCA; presto_sendbyte(cmd); if (tms != presto->jtag_tms) { presto_sendbyte((tms ? 0xEC : 0xE8) | (presto->jtag_rst ? 0x02 : 0)); presto->jtag_tms = tms; } /* delay with TCK low */ for (i = presto->jtag_speed; i > 1; i--) presto_sendbyte(cmd); cmd |= 0x04; presto_sendbyte(cmd | (tdo_req ? 0x10 : 0)); /* delay with TCK high */ for (i = presto->jtag_speed; i > 1; i--) presto_sendbyte(cmd); presto->jtag_tck = 1; return 0; } static int presto_bitq_flush(void) { presto_tdi_flush(); presto_tck_idle(); presto_sendbyte(0xA0); /* LED idicator - JTAG idle */ return presto_flush(); } static int presto_bitq_in_rdy(void) { if (presto->buff_in_pos >= presto->buff_in_len) return 0; return presto->buff_in_len-presto->buff_in_pos; } static int presto_bitq_in(void) { if (presto->buff_in_pos >= presto->buff_in_len) return -1; if (presto->buff_in[presto->buff_in_pos++]&0x08) return 1; return 0; } static int presto_bitq_sleep(unsigned long us) { long waits; presto_tdi_flush(); presto_tck_idle(); if (us > 100000) { presto_bitq_flush(); jtag_sleep(us); return 0; } waits = us / 170 + 2; while (waits--) presto_sendbyte(0x80); return 0; } static int presto_bitq_reset(int trst, int srst) { presto_tdi_flush(); presto_tck_idle(); /* add a delay after possible TCK transition */ presto_sendbyte(0x80); presto_sendbyte(0x80); presto->jtag_rst = trst || srst; presto_sendbyte((presto->jtag_rst ? 0xEA : 0xE8) | (presto->jtag_tms ? 0x04 : 0)); return 0; } /* -------------------------------------------------------------------------- */ static int presto_jtag_khz(int khz, int *jtag_speed) { if (khz < 0) { *jtag_speed = 0; return ERROR_INVALID_ARGUMENTS; } if (khz >= 3000) *jtag_speed = 0; else *jtag_speed = (1000 + khz-1)/khz; return 0; } static int presto_jtag_speed_div(int speed, int *khz) { if ((speed < 0) || (speed > 1000)) { *khz = 0; return ERROR_INVALID_ARGUMENTS; } if (speed == 0) *khz = 3000; else *khz = 1000/speed; return 0; } static int presto_jtag_speed(int speed) { int khz; if (presto_jtag_speed_div(speed, &khz)) { return ERROR_INVALID_ARGUMENTS; } presto->jtag_speed = speed; if (khz%1000 == 0) LOG_INFO("setting speed to %d, max. TCK freq. is %d MHz", speed, khz/1000); else LOG_INFO("setting speed to %d, max. TCK freq. is %d kHz", speed, khz); return 0; } static char *presto_serial; static int presto_handle_serial_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { if (argc == 1) { if (presto_serial) free(presto_serial); presto_serial = strdup(args[0]); } else { LOG_ERROR("expected exactly one argument to presto_serial <serial-number>"); } return ERROR_OK; } static int presto_jtag_register_commands(struct command_context_s *cmd_ctx) { register_command(cmd_ctx, NULL, "presto_serial", presto_handle_serial_command, COMMAND_CONFIG, NULL); return ERROR_OK; } static int presto_jtag_init(void) { if (presto_open(presto_serial) != ERROR_OK) { presto_close(); if (presto_serial != NULL) LOG_ERROR("Cannot open PRESTO, serial number '%s'", presto_serial); else LOG_ERROR("Cannot open PRESTO"); return ERROR_JTAG_INIT_FAILED; } LOG_INFO("PRESTO open, serial number '%s'", presto->serial); /* use JTAG speed setting from configuration file */ presto_jtag_speed(jtag_get_speed()); bitq_interface = &presto_bitq; return ERROR_OK; } static int presto_jtag_quit(void) { bitq_cleanup(); presto_close(); LOG_INFO("PRESTO closed"); if (presto_serial) { free(presto_serial); presto_serial = NULL; } return ERROR_OK; }