- max = type.max
- print " {\"%s\", {OVSDB_TYPE_%s, OVSDB_TYPE_%s, %d, %s}}," % (
- columnName, type.key.upper(), valueTypeName,
- type.min, max)
- print "};"
+ print " size_t i;"
+ print
+ print " assert(inited);"
+ print " datum.n = %s;" % nVar
+ print " datum.keys = xmalloc(%s * sizeof *datum.keys);" % nVar
+ if type.value:
+ print " datum.values = xmalloc(%s * sizeof *datum.values);" % nVar
+ else:
+ print " datum.values = NULL;"
+ print " for (i = 0; i < %s; i++) {" % nVar
+ print " " + type.key.copyCValue("datum.keys[i].%s" % type.key.type, "%s[i]" % keyVar)
+ if type.value:
+ print " " + type.value.copyCValue("datum.values[i].%s" % type.value.type, "%s[i]" % valueVar)
+ print " }"
+ print " ovsdb_idl_txn_write(&row->header_, &%(s)s_columns[%(S)s_COL_%(C)s], &datum);" \
+ % {'s': structName,
+ 'S': structName.upper(),
+ 'C': columnName.upper()}
+ print "}"
+
+ # Table columns.
+ print "\nstruct ovsdb_idl_column %s_columns[%s_N_COLUMNS];" % (
+ structName, structName.upper())
+ print """
+static void\n%s_columns_init(void)
+{
+ struct ovsdb_idl_column *c;\
+""" % structName
+ for columnName, column in sorted(table.columns.iteritems()):
+ cs = "%s_col_%s" % (structName, columnName)
+ d = {'cs': cs, 'c': columnName, 's': structName}
+ print
+ print " /* Initialize %(cs)s. */" % d
+ print " c = &%(cs)s;" % d
+ print " c->name = \"%(c)s\";" % d
+ print column.type.cInitType(" ", "c->type")
+ print " c->parse = %(s)s_parse_%(c)s;" % d
+ print " c->unparse = %(s)s_unparse_%(c)s;" % d
+ print "}"