1# $Id: Gbcli.pm,v 1.1 2008/04/04 11:02:30 knizhnik Exp $
2package Gbcli;
3require Exporter;
4use vars qw($VERSION @ISA @EXPORT);
5@ISA=qw(Exporter);
6$VERSION=1.0;
7use strict;
8@EXPORT=
9qw(
10    cli_cmd_close_session
11    cli_cmd_prepare_and_execute
12    cli_cmd_execute
13    cli_cmd_get_first
14    cli_cmd_get_last
15    cli_cmd_get_next
16    cli_cmd_get_prev
17    cli_cmd_free_statement
18    cli_cmd_abort
19    cli_cmd_commit
20    cli_cmd_precommit
21    cli_cmd_update
22    cli_cmd_remove
23    cli_cmd_insert
24    cli_cmd_prepare_and_insert
25    cli_cmd_describe_table
26    cli_cmd_show_tables
27    cli_cmd_login
28    cli_ok
29    cli_bad_address
30    cli_connection_refused
31    cli_database_not_found
32    cli_bad_statement
33    cli_parameter_not_found
34    cli_unbound_parameter
35    cli_column_not_found
36    cli_incompatible_type
37    cli_network_error
38    cli_runtime_error
39    cli_closed_statement
40    cli_unsupported_type
41    cli_not_found
42    cli_not_update_mode
43    cli_table_not_found
44    cli_not_all_columns_specified
45    cli_not_fetched
46    cli_already_updated
47    cli_login_failed
48    cli_empty_parameter
49    cli_closed_connection
50    cli_oid
51    cli_bool
52    cli_int1
53    cli_int2
54    cli_int4
55    cli_int8
56    cli_real4
57    cli_real8
58    cli_decimal
59    cli_asciiz
60    cli_pasciiz
61    cli_cstring
62    cli_array_of_oid
63    cli_array_of_bool
64    cli_array_of_int1
65    cli_array_of_int2
66    cli_array_of_int4
67    cli_array_of_int8
68    cli_array_of_real4
69    cli_array_of_real8
70    cli_array_of_decimal
71    cli_array_of_string
72    cli_any
73    cli_datetime
74    cli_undefined
75    cli_tuple_mode
76    cli_object_mode
77    cli_array_mode
78    cli_hash_mode
79    pack_int
80    pack_short
81    pack_byte
82    unpack_int
83    unpack_short
84    unpack_byte
85);
86
87# packing
88sub pack_int($){
89 my $val=shift;
90 if (! defined $val ) { $val=0;}
91 return pack ("N",unpack("i",pack "I",$val));
92}
93sub unpack_int($) {
94 return unpack("i",pack ("I",unpack "N",$_[0]));
95}
96sub pack_short($){
97 my $val=shift;
98 if (! defined $val ) { $val=0;}
99 return pack ("n",unpack("s",pack "S",$val));
100}
101sub unpack_short($){
102 return unpack ("s",pack ("S",unpack ("n",$_[0])));
103}
104sub pack_byte($){
105 my $val=shift;
106 if (! defined $val ) { $val=0;}
107 return pack "c",$val;
108}
109sub unpack_byte($){
110 return unpack "c",$_[0];
111}
112
113
114# command codes
115sub cli_cmd_close_session { 0; }
116sub cli_cmd_prepare_and_execute { 1; }
117sub cli_cmd_execute { 2; }
118sub cli_cmd_get_first { 3; }
119sub cli_cmd_get_last { 4; }
120sub cli_cmd_get_next { 5; }
121sub cli_cmd_get_prev { 6; }
122sub cli_cmd_free_statement { 7; }
123sub cli_cmd_abort { 8; }
124sub cli_cmd_commit { 9; }
125sub cli_cmd_update { 10; }
126sub cli_cmd_remove { 11; }
127sub cli_cmd_insert { 12; }
128sub cli_cmd_prepare_and_insert { 13; }
129sub cli_cmd_describe_table { 14; }
130sub cli_cmd_show_tables { 15; }
131sub cli_cmd_login { 16; }
132sub cli_cmd_precommit { 17; }
133
134# status codes
135sub cli_ok { 0; }
136sub cli_bad_address { -1; }
137sub cli_connection_refused { -2; }
138sub cli_database_not_found { -3; }
139sub cli_bad_statement { -4; }
140sub cli_parameter_not_found { -5; }
141sub cli_unbound_parameter { -6; }
142sub cli_column_not_found { -7; }
143sub cli_incompatible_type { -8; }
144sub cli_network_error { -9; }
145sub cli_runtime_error { -10; }
146sub cli_closed_statement { -11; }
147sub cli_unsupported_type { -12; }
148sub cli_not_found { -13; }
149sub cli_not_update_mode { -14; }
150sub cli_table_not_found { -15; }
151sub cli_not_all_columns_specified { -16; }
152sub cli_not_fetched { -17; }
153sub cli_already_updated { -18; }
154sub cli_table_already_exists { -19; }
155sub cli_not_implemented { -20; }
156sub cli_login_failed { -21; }
157sub cli_empty_parameter { -22; }
158sub cli_closed_connection { -23; }
159
160# CLI types
161sub cli_oid { 0; }
162sub cli_bool { 1; }
163sub cli_int1 { 2; }
164sub cli_int2 { 3; }
165sub cli_int4 { 4; }
166sub cli_int8 { 5; }
167sub cli_real4 { 6; }
168sub cli_real8 { 7; }
169sub cli_decimal { 8; }
170sub cli_asciiz { 9; }
171sub cli_pasciiz { 10; }
172sub cli_cstring { 11; }
173sub cli_array_of_oid { 12; }
174sub cli_array_of_bool { 13; }
175sub cli_array_of_int1 { 14; }
176sub cli_array_of_int2 { 15; }
177sub cli_array_of_int4 { 16; }
178sub cli_array_of_int8 { 17; }
179sub cli_array_of_real4 { 18; }
180sub cli_array_of_real8 { 19; }
181sub cli_array_of_decimal { 20; }
182sub cli_array_of_string { 21; }
183sub cli_any { 22; }
184sub cli_datetime { 23; }
185sub cli_undefined { 24; }
186
187# Binding mode
188sub cli_tuple_mode { 0; }
189sub cli_object_mode { 1; }
190sub cli_array_mode { 2; }
191sub cli_hash_mode { 2; }
192
1931;
194