1 /*!
2   \file lib/db/dbmi_base/xdrcolumn.c
3 
4   \brief DBMI Library (base) - external data representation (column)
5 
6   (C) 1999-2009, 2011 by the GRASS Development Team
7 
8   This program is free software under the GNU General Public License
9   (>=v2). Read the file COPYING that comes with GRASS for details.
10 
11   \author Joel Jones (CERL/UIUC), Radim Blazek, Brad Douglas, Markus Neteler
12   \author Doxygenized by Martin Landa <landa.martin gmail.com> (2011)
13 */
14 
15 #include <grass/dbmi.h>
16 #include "macros.h"
17 
18 /*!
19   \brief Send column definition
20 
21   \param column pointer to dbColumn
22 
23   \return DB_OK
24 */
db__send_column_definition(dbColumn * column)25 int db__send_column_definition(dbColumn * column)
26 {
27     DB_SEND_STRING(&column->columnName);
28     DB_SEND_STRING(&column->description);
29     DB_SEND_INT(column->sqlDataType);
30     DB_SEND_INT(column->hostDataType);
31     DB_SEND_INT(column->precision);
32     DB_SEND_INT(column->scale);
33     DB_SEND_INT(column->dataLen);
34     DB_SEND_INT(column->select);
35     DB_SEND_INT(column->update);
36     DB_SEND_CHAR(column->nullAllowed);
37     DB_SEND_CHAR(column->useDefaultValue);
38     DB_SEND_CHAR(column->hasDefaultValue);
39     if (column->hasDefaultValue) {
40 	DB_SEND_COLUMN_DEFAULT_VALUE(column);
41     }
42 
43     return DB_OK;
44 }
45 
46 /*!
47   \brief Receive column definition
48 
49   \param column pointer to dbColumn
50 
51   \return DB_OK
52 */
db__recv_column_definition(dbColumn * column)53 int db__recv_column_definition(dbColumn * column)
54 {
55     DB_RECV_STRING(&column->columnName);
56     DB_RECV_STRING(&column->description);
57     DB_RECV_INT(&column->sqlDataType);
58     DB_RECV_INT(&column->hostDataType);
59     DB_RECV_INT(&column->precision);
60     DB_RECV_INT(&column->scale);
61     DB_RECV_INT(&column->dataLen);
62     DB_RECV_INT(&column->select);
63     DB_RECV_INT(&column->update);
64     DB_RECV_CHAR(&column->nullAllowed);
65     DB_RECV_CHAR(&column->useDefaultValue);
66     DB_RECV_CHAR(&column->hasDefaultValue);
67     if (column->hasDefaultValue) {
68 	DB_RECV_COLUMN_DEFAULT_VALUE(column);
69     }
70 
71     return DB_OK;
72 }
73 
74 /*!
75   \brief Send column value
76 
77   \param column pointer to dbColumn
78 
79   \return
80 */
db__send_column_value(dbColumn * column)81 int db__send_column_value(dbColumn * column)
82 {
83     return db__send_value(db_get_column_value(column),
84 			  db_sqltype_to_Ctype(db_get_column_sqltype(column)));
85 }
86 
87 /*!
88   \brief Receive column value
89 
90   \param column pointer to dbColumn
91 
92   \return
93 */
db__recv_column_value(dbColumn * column)94 int db__recv_column_value(dbColumn * column)
95 {
96     return db__recv_value(db_get_column_value(column),
97 			  db_sqltype_to_Ctype(db_get_column_sqltype(column)));
98 }
99 
100 /*!
101   \brief Send column default value
102 
103   \param column pointer to dbColumn
104 
105   \return
106 */
db__send_column_default_value(dbColumn * column)107 int db__send_column_default_value(dbColumn * column)
108 {
109     return db__send_value(db_get_column_default_value(column),
110 			  db_sqltype_to_Ctype(db_get_column_sqltype(column)));
111 }
112 
113 /*!
114   \brief Receive column default value
115 
116   \param column pointer to dbColumn
117 
118   \return
119 */
db__recv_column_default_value(dbColumn * column)120 int db__recv_column_default_value(dbColumn * column)
121 {
122     return db__recv_value(db_get_column_default_value(column),
123 			  db_sqltype_to_Ctype(db_get_column_sqltype(column)));
124 }
125