Exemplo n.º 1
0
def build_tbl_message(fobj, table, key_array, field, dt_array):
	'build table message'
	tbl_name = table[0]
	tbl_name_low = string.lower(table[0])
	tbl_name_low_key = tbl_name_low + '_key'
	global glb_field_index
	required_str = "required"
	is_key = 0
	bypass = 0
	is_repeated = 0

	if ('key' == field[1]):
		is_key = 1
		key = key_array[0]
		dt_type = cdb_util.check_data_dt_type(table, key, dt_array)
		required_str = "required"
		if (1 == cdb_util.is_typedef_key(key_array)):
			key_pb_type = 'compose_' + key_array[0][0]
		else:
			key_pb_type = tbl_name_low_key
	else:
		is_key = 0
		required_str = "optional"
		if (len(field) > 4):
			dt_type = field[6]
		else:
			dt_type = field[3]

	if ('FLAGS8' == dt_type[1] or 'FLAGS32' == dt_type[1]):
		field_name = cdb_util.format_field_name(field[3])
	else:
		field_name = cdb_util.format_field_name(field[1])

	pb_type = cdb_util.pb_get_pb_type(dt_type, dt_array)
	if (2 == len(pb_type)):
		is_repeated = 1
		pb_type = pb_type[1]
		required_str = "repeated"
	else:
		if ('compose' == pb_type):
			compose_type = dt_type[1]
			pb_type = 'compose_' + compose_type
		elif ('none' == pb_type):
			bypass = 1
		elif ('todo' == pb_type):
			bypass = 1

	if (bypass and 0 == is_key):
		return

	if (is_key):
		print >> fobj, "    %s %s %s = %d;" % (required_str, key_pb_type, field_name, glb_field_index)
	else:
		print >> fobj, "    %s %s %s = %d;" % (required_str, pb_type, field_name, glb_field_index)
	glb_field_index += 1
Exemplo n.º 2
0
def gen_format_ds_c_one_field(file_output, ds_param, field):
    field_type = field[0]
    field_str = field[1]
    if (field_str.find('*') == 0):
        format_field_str = cdb_util.format_field_name(field_str)
        print >> file_output, "    %s->%s = NULL;" % (ds_param,
                                                      format_field_str)
    if (field_type.find('REFERLIST_') == 0):
        format_field_str = cdb_util.format_field_name(field_str)
        print >> file_output, "    %s->%s.obj_list = NULL;" % (
            ds_param, format_field_str)
Exemplo n.º 3
0
def build_tbl_field_id(fobj, tbl_name, field_array):
	'build table field id'
	print >> fobj, "/* %s field defines */" % (tbl_name)
	print >> fobj, "typedef enum"
	print >> fobj, "{"
	for i, field in enumerate(field_array):
		if (len(field) > 5):
			field_name = string.upper(cdb_util.format_field_name(field[3]))
			access_type = field[5]
		else:
			field_name = string.upper(cdb_util.format_field_name(field[1]))
			access_type = field[2]
		print >> fobj, "    %s_FLD_%-20s = %-2d,  /* %s */" % (tbl_name, field_name, i, access_type)
	print >> fobj, "    %s_FLD_%-20s = %-2d" % (tbl_name, 'MAX', i+1)
	print >> fobj, "} %s_field_id_t;" % (string.lower(tbl_name))
	print >> fobj, ""
Exemplo n.º 4
0
def build_tbl_key_message(fobj, table, key_array, field, dt_array):
	'build table key message'
	tbl_name = table[0]
	tbl_name_low = string.lower(table[0])
	key = key_array[0]
	global glb_field_index

	dt_type = cdb_util.check_data_dt_type(table, key, dt_array)
	if (1 != len(key_array)):
		print "%s key num %d" % (tbl_name, len(key_array))

	for i, key in enumerate(key_array):
		bypass = 0
		field_name = cdb_util.format_field_name(key[1])
		pb_type = cdb_util.pb_get_pb_type(dt_type, dt_array)
		if (2 == len(pb_type)):
			bypass = 1
		else:
			if ('compose' == pb_type):
				compose_type = dt_type[1]
				compose_type = 'compose_' + compose_type
			elif ('none' == pb_type):
				bypass = 1
			elif ('todo' == pb_type):
				bypass = 1

		if (bypass):
			return

		if ('compose' == pb_type):
			print >> fobj, "    required %s %s = %d;" % (compose_type, field_name, glb_field_index)
		else:
			print >> fobj, "    required %s %s = %d;" % (pb_type, field_name, glb_field_index)
		glb_field_index += 1
Exemplo n.º 5
0
def build_one_ds_field(fobj, ds, key_array, field_array):
	'generate ds field structure'
	ds_name = ds[0]
	ds_name_low = string.lower(ds_name)
	ds_name_field = ds_name_low + '_fields'

	print >> fobj, "static sdb_field_t %s[] = " % (ds_name_field)
	print >> fobj, "{"
	for i, field in enumerate(field_array):
		if (len(field) > 4):
			field_name = cdb_util.format_field_name(field[3])
		else:
			field_name = cdb_util.format_field_name(field[1])
		field_access_enum = get_field_access_enum(field)
		[dt_type_type, ds_name] = get_dt_type_type(field)
		print >> fobj, "    { %-15s %-18s %-20s \"%s\" }," % (field_access_enum + ',', dt_type_type + ',', ds_name + ',', field_name)
	print >> fobj, "};"
	print >> fobj, ""
Exemplo n.º 6
0
def build_one_tbl_field(fobj, table, field_array):
    'generate table field structure'
    tbl_name = table[0]
    tbl_name_low = string.lower(tbl_name)
    tbl_name_field = tbl_name_low + '_fields'

    print >> fobj, "static cdb_field_t %s[] = " % (tbl_name_field)
    print >> fobj, "{"
    for i, field in enumerate(field_array):
        if (len(field) > 4):
            field_name = cdb_util.format_field_name(field[3])
        else:
            field_name = cdb_util.format_field_name(field[1])
        field_access_enum = get_field_access_enum(field)
        [dt_type_type, ds_name] = get_dt_type_type(field)
        print >> fobj, "    { %-15s %-18s %-20s \"%s\" }," % (
            field_access_enum + ',', dt_type_type + ',', ds_name + ',',
            field_name)
    print >> fobj, "};"
    print >> fobj, ""
Exemplo n.º 7
0
def get_compose_field_array(fobj, table, key_array, data_array, master_array, field_array, dt_array):
	compose_array = []
	for i, field in enumerate(field_array):
		tbl_name = table[0]
		tbl_name_low = string.lower(table[0])
		tbl_name_low_key = tbl_name_low + '_key'
		tbl_value_name = table[1]
		cdb_paramvalue = 'p_' + tbl_value_name
		pb_paramvalue = 'p_pb_' + tbl_value_name
		bypass = 0
		key_field_name = ""

		if ('key' == field[1]):
			continue

		if (len(field) > 4):
			dt_type = field[6]
		else:
			dt_type = field[3]

		if ('FLAGS8' == dt_type[1] or 'FLAGS32' == dt_type[1]):
			field_name = cdb_util.format_field_name(field[3])
		else:
			field_name = cdb_util.format_field_name(field[1])

		if ('static' == field_name):
			field_name += '_'
		field_name_low = string.lower(field_name)

		pb_type = cdb_util.pb_get_pb_type(dt_type, dt_array)
		if ('compose' == pb_type):
			compose_type = dt_type[1]
			compose_item = []
			compose_item.append(compose_type)
			compose_item.append(field_name_low)
			compose_array.append(compose_item)
	return compose_array
Exemplo n.º 8
0
def build_one_act_field(fobj, act, field_array):
	'generate act field structure'
	act_name = act[0]
	act_name_low = string.lower(act_name)
	act_name_field = act_name_low + '_fields'

	print >> fobj, "static sdb_field_t %s[] = " % (act_name_field)
	print >> fobj, "{"
	for i, field in enumerate(field_array):
		field_name = cdb_util.format_field_name(field[1])
		field_access_enum = get_field_access_enum(field)
		[dt_type_type, ds_name] = ['SDB_DT_NONE', '-1']
		print >> fobj, "    { %-15s %-18s %-20s \"%s\" }," % (field_access_enum + ',', dt_type_type + ',', ds_name + ',', field_name)
	print >> fobj, "};"
	print >> fobj, ""
Exemplo n.º 9
0
def gen_func_pb_c_pb_key(fobj, table, key_array, field, dt_array):
	tbl_name = table[0]
	tbl_name_low = string.lower(table[0])
	tbl_name_low_key = tbl_name_low + '_key'
	tbl_value_name = table[1]
	cdb_paramvalue = 'p_' + tbl_value_name
	pb_paramvalue = 'p_pb_' + tbl_value_name
	bypass = 0
	key_field_name = ""

	key = key_array[0]
	dt_type = cdb_util.check_data_dt_type(table, key, dt_array)
	key_field_name = cdb_util.format_field_name(key[1])
	field_name = key_field_name
	field_name_low = string.lower(field_name)
	
	pb_type = cdb_util.pb_get_pb_type(dt_type, dt_array)
	if ('string' == pb_type):
		print >> fobj, '    %s->key->%s = XCALLOC(MEM_LIB_PROTOBUF, sal_strlen(%s->key.%s)+1);' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
		print >> fobj, '    sal_strcpy(%s->key->%s, %s->key.%s);' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
	elif ('uint32' == pb_type):
		if ('FLAGS8' == dt_type[1] or 'FLAGS32' == dt_type[1]):			
			data_value = field[1]
			field_value = field[3]
			flag_value = field[4]
			print >> fobj, '    %s->key->%s = GLB_FLAG_ISSET(%s->key.%s, %s) ? TRUE : FALSE;' % (pb_paramvalue, field_name_low, cdb_paramvalue, data_value, flag_value)
		else:
			print >> fobj, '    %s->key->%s = %s->key.%s;' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
	elif ('uint64' == pb_type or 'int32' == pb_type or 'int64' == pb_type or 'double' == pb_type):
		print >> fobj, '    %s->key->%s = %s->key.%s;' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
	elif ('bytes' == pb_type):
		pass
	elif ('compose' == pb_type):
		if (1 == cdb_util.is_typedef_key(key_array)):
			compose_type = dt_type[1]
			compose_func = 'pb_compose_' + compose_type + '_to_pb'
			print >> fobj, '    %s(&%s->key, %s->key);' % (compose_func, cdb_paramvalue, pb_paramvalue)
		else:
			compose_type = dt_type[1]
			compose_func = 'pb_compose_' + compose_type + '_to_pb'
			compose_refer = cdb_util.pb_get_cdb_compose_reference(compose_type)
			print >> fobj, '    %s(%s%s->key.%s, %s->key->%s);' % (compose_func, compose_refer, cdb_paramvalue, key_field_name, pb_paramvalue, key_field_name)

	elif ('none' == pb_type):
		pass
	else:
		pass
	print >> fobj, ''
Exemplo n.º 10
0
def gen_func_pb_c_pb_dump_field(fobj, table, key_array, field, dt_array):
	tbl_name = table[0]
	tbl_name_low = string.lower(table[0])
	tbl_name_low_key = tbl_name_low + '_key'
	tbl_value_name = table[1]
	cdb_paramvalue = 'p_' + tbl_value_name
	pb_paramvalue = 'p_pb_' + tbl_value_name
	bypass = 0
	key_field_name = ""

	if ('key' == field[1]):
		is_key = 1
		key = key_array[0]
		dt_type = cdb_util.check_data_dt_type(table, key, dt_array)
		key_field_name = cdb_util.format_field_name(key[1])
	else:
		is_key = 0
		if (len(field) > 4):
			dt_type = field[6]
		else:
			dt_type = field[3]

	if ('FLAGS8' == dt_type[1] or 'FLAGS32' == dt_type[1]):
		field_name = cdb_util.format_field_name(field[3])
	else:
		field_name = cdb_util.format_field_name(field[1])

	if (is_key):
		field_name = field_name + '->' + key_field_name

	if ('static' == field_name):
		field_name += '_'
	field_name_low = string.lower(field_name)

	pb_type = cdb_util.pb_get_pb_type(dt_type, dt_array)

	if (2 == len(pb_type)):
		print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=");' % (field_name)
		pb_type = pb_type[1]
		is_repeated = 1
		if ('string' == pb_type):
			print >> fobj, '    offset += %s(%s->%s, %s->n_%s, (out + offset));' % ('pb_string_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
		elif ('int8' == pb_type):
			print >> fobj, '    offset += %s(%s->%s, sizeof(%s->%s), (out + offset));' % ('pb_int8_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
		elif ('uint8' == pb_type):
			print >> fobj, '    offset += %s(%s->%s, sizeof(%s->%s), (out + offset));' % ('pb_uint8_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
		elif ('int32' == pb_type):
			print >> fobj, '    offset += %s(%s->%s, sizeof(%s->%s), (out + offset));' % ('pb_int32_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
		elif ('uint32' == pb_type):
			print >> fobj, '    offset += %s(%s->%s, sizeof(%s->%s), (out + offset));' % ('pb_uint32_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
		elif ('double' == pb_type):
			print >> fobj, '    offset += %s(%s->%s, sizeof(%s->%s), (out + offset));' % ('pb_double_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
	else:
		if ('string' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=%s", %s->%s);' % (field_name, "%s", pb_paramvalue, field_name_low)
		elif ('uint32' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=%s", %s->%s);' % (field_name, "%u", pb_paramvalue, field_name_low)
		elif ('uint64' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=%%"%s, %s->%s);' % (field_name, "PRIu64", pb_paramvalue, field_name_low)
		elif ('int32' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=%s", %s->%s);' % (field_name, "%d", pb_paramvalue, field_name_low)
		elif ('int64' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=%%"%s, %s->%s);' % (field_name, "PRId64", pb_paramvalue, field_name_low)
		elif ('double' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=%s", %s->%s);' % (field_name, "%f", pb_paramvalue, field_name_low)
		elif ('bytes' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=");' % (field_name)
			if ('INT8ARRAY' == dt_type[1]):
				print >> fobj, '    offset += %s(%s->%s.data, %s->%s.len, (out + offset));' % ('pb_int8_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
			elif ('UINT8ARRAY' == dt_type[1]):
				print >> fobj, '    offset += %s(%s->%s.data, %s->%s.len, (out + offset));' % ('pb_uint8_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
			else:
				print >> fobj, '    offset += %s(%s->%s.data, %s->%s.len, (out + offset));' % ('pb_bitmap_array_dump', pb_paramvalue, field_name_low, pb_paramvalue, field_name_low)
		elif ('compose' == pb_type):
			if (is_key):
				if (1 == cdb_util.is_typedef_key(key_array)):
					field_name_low = 'key'
				else:
					field_name_low = 'key->' + key_field_name

			compose_type = dt_type[1]
			compose_func = 'pb_compose_' + compose_type + '_dump'
			print >> fobj, '    offset += %s(%s->%s, (out + offset));' % (compose_func, pb_paramvalue, field_name_low)
		elif ('none' == pb_type):
			pass
		elif ('todo' == pb_type):
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=todo");' % (field_name)
		else:
			print >> fobj, '    offset += sal_sprintf(out + offset, "/%s=unknown");' % (field_name)

	if (is_key):
		print >> fobj, '    if (only_key)'
		print >> fobj, '    {'
		print >> fobj, '        offset += sal_sprintf(out + offset, "\\n");'
		print >> fobj, '        return PM_E_NONE;'
		print >> fobj, '    }'
		print >> fobj, '    '
Exemplo n.º 11
0
def gen_func_pb_c_pb_free_field(fobj, table, key_array, field, dt_array):
	tbl_name = table[0]
	tbl_name_low = string.lower(table[0])
	tbl_name_low_key = tbl_name_low + '_key'
	tbl_value_name = table[1]
	cdb_paramvalue = 'p_' + tbl_value_name
	pb_paramvalue = 'p_pb_' + tbl_value_name
	bypass = 0
	key_field_name = ""

	if ('key' == field[1]):
		is_key = 1
		key = key_array[0]
		dt_type = cdb_util.check_data_dt_type(table, key, dt_array)
		key_field_name = cdb_util.format_field_name(key[1])
	else:
		is_key = 0
		if (len(field) > 4):
			dt_type = field[6]
		else:
			dt_type = field[3]

	if ('FLAGS8' == dt_type[1] or 'FLAGS32' == dt_type[1]):
		field_name = cdb_util.format_field_name(field[3])
	else:
		field_name = cdb_util.format_field_name(field[1])

	if (is_key):
		field_name = field_name + '->' + key_field_name

	if ('static' == field_name):
		field_name += '_'
	field_name_low = string.lower(field_name)

	pb_type = cdb_util.pb_get_pb_type(dt_type, dt_array)
	if (2 == len(pb_type)):
		pb_type = pb_type[1]
		if ('string' == pb_type):
			print >> fobj, "    if (%s->%s)" % (pb_paramvalue, field_name_low)
			print >> fobj, "    {"
			print >> fobj, "        for (i = 0; i < %s->n_%s; i++)" % (pb_paramvalue, field_name_low)
			print >> fobj, "        {"
			print >> fobj, "            if (%s->%s[i])" % (pb_paramvalue, field_name_low)
			print >> fobj, "            {"
			print >> fobj, "                XFREE(MEM_LIB_PROTOBUF, %s->%s[i]);" % (pb_paramvalue, field_name_low)
			print >> fobj, "                %s->%s[i] = NULL;" % (pb_paramvalue, field_name_low)
			print >> fobj, "            }"
			print >> fobj, "        }"
			print >> fobj, "        XFREE(MEM_LIB_PROTOBUF, %s->%s);" % (pb_paramvalue, field_name_low)
			print >> fobj, "        %s->%s = NULL;" % (pb_paramvalue, field_name_low)
			print >> fobj, "    }"
			print >> fobj, ""
		elif ('uint32' == pb_type or 'uint64' == pb_type or 'int32' == pb_type or 'int64' == pb_type or 'double' == pb_type):
			print >> fobj, "    if (%s->%s)" % (pb_paramvalue, field_name_low)
			print >> fobj, "    {"
			print >> fobj, "        XFREE(MEM_LIB_PROTOBUF, %s->%s);" % (pb_paramvalue, field_name_low)
			print >> fobj, "        %s->%s = NULL;" % (pb_paramvalue, field_name_low)
			print >> fobj, "    }"
			print >> fobj, ""
	else:
		if ('string' == pb_type):
			print >> fobj, "    if (%s->%s)" % (pb_paramvalue, field_name_low)
			print >> fobj, "    {"
			print >> fobj, "        XFREE(MEM_LIB_PROTOBUF, %s->%s);" % (pb_paramvalue, field_name_low)
			print >> fobj, "        %s->%s = NULL;" % (pb_paramvalue, field_name_low)
			print >> fobj, "    }"
			print >> fobj, ""
		elif ('compose' == pb_type):
			if (is_key):
				if (1 == cdb_util.is_typedef_key(key_array)):
					field_name = 'key'
				else:
					field_name = 'key->' + key_field_name
			field_name_low = string.lower(field_name)

			compose_type = dt_type[1]
			compose_func = 'pb_compose_' + compose_type + '_to_pb_free_packed'

			print >> fobj, '    %s(%s->%s);' % (compose_func, pb_paramvalue, field_name_low)
		elif ('bytes' == pb_type):
			print >> fobj, "    if (%s->%s.data)" % (pb_paramvalue, field_name)
			print >> fobj, "    {"
			print >> fobj, "        XFREE(MEM_LIB_PROTOBUF, %s->%s.data);" % (pb_paramvalue, field_name_low)
			print >> fobj, "        %s->%s.data = NULL;" % (pb_paramvalue, field_name_low)
			print >> fobj, "    }"
			print >> fobj, ""
Exemplo n.º 12
0
def gen_func_pb_c_pb_field(fobj, table, key_array, field, dt_array):
	tbl_name = table[0]
	tbl_name_low = string.lower(table[0])
	tbl_name_low_key = tbl_name_low + '_key'
	tbl_value_name = table[1]
	cdb_paramvalue = 'p_' + tbl_value_name
	pb_paramvalue = 'p_pb_' + tbl_value_name
	bypass = 0
	key_field_name = ""
	is_repeated = 0

	if ('key' == field[1]):
		return

	if (len(field) > 4):
		dt_type = field[6]
	else:
		dt_type = field[3]

	if ('FLAGS8' == dt_type[1] or 'FLAGS32' == dt_type[1]):
		field_name = cdb_util.format_field_name(field[3])
	else:
		field_name = cdb_util.format_field_name(field[1])

	field_name_low = string.lower(field_name)
	if ('static' == field_name_low):
		field_name_low += '_'

	pb_type = cdb_util.pb_get_pb_type(dt_type, dt_array)

	if (2 == len(pb_type)):
		pb_type = pb_type[1]
		is_repeated = 1
		repeat_number = cdb_util.get_array_number(field[1])

		if ('string' == pb_type):
			print >> fobj, "    %s->%s = XCALLOC(MEM_LIB_PROTOBUF, sizeof(char*)*%s);" % (pb_paramvalue, field_name_low, repeat_number)
			print >> fobj, '    %s->n_%s = %s;' % (pb_paramvalue, field_name_low, repeat_number)
			print >> fobj, '    for (i = 0; i < %s; i++)' % (repeat_number)
			print >> fobj, '    {'
			print >> fobj, '        %s->%s[i] = XCALLOC(MEM_LIB_PROTOBUF, sal_strlen(%s->%s[i])+1);'  % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
			print >> fobj, '        sal_strcpy(%s->%s[i], %s->%s[i]);'  % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
			print >> fobj, '    }'
		elif ('uint32' == pb_type or 'uint64' == pb_type or 'int32' == pb_type or 'int64' == pb_type or 'double' == pb_type):
			if ('uint32' == pb_type):
				data_type = "uint32_t"
			elif ('int32' == pb_type):
				data_type = "int32_t"
			elif ('uint64' == pb_type):
				data_type = "uint64_t"
			elif ('int64' == pb_type):
				data_type = "int64_t"
			elif ('double' == pb_type):
				data_type = "double"
			print >> fobj, "    %s->%s = XCALLOC(MEM_LIB_PROTOBUF, sizeof(%s)*%s);" % (pb_paramvalue, field_name_low, data_type, repeat_number)
			print >> fobj, '    %s->n_%s = %s;' % (pb_paramvalue, field_name_low, repeat_number)
			print >> fobj, '    for (i = 0; i < %s; i++)' % (repeat_number)
			print >> fobj, '    {'
			print >> fobj, '        %s->%s[i] = %s->%s[i];' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
			print >> fobj, '    }'
	else:
		if ('string' == pb_type):
			print >> fobj, '    %s->%s = XCALLOC(MEM_LIB_PROTOBUF, sal_strlen(%s->%s)+1);' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
			print >> fobj, '    sal_strcpy(%s->%s, %s->%s);' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
		elif ('uint32' == pb_type):
			print >> fobj, '    %s->has_%s = TRUE;' % (pb_paramvalue, field_name_low)
			if ('FLAGS8' == dt_type[1] or 'FLAGS32' == dt_type[1]):			
				data_value = field[1]
				field_value = field[3]
				flag_value = field[4]
				print >> fobj, '    %s->%s = GLB_FLAG_ISSET(%s->%s, %s) ? TRUE : FALSE;' % (pb_paramvalue, field_name_low, cdb_paramvalue, data_value, flag_value)
			else:
				print >> fobj, '    %s->%s = %s->%s;' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
		elif ('uint64' == pb_type or 'int32' == pb_type or 'int64' == pb_type or 'double' == pb_type):
			print >> fobj, '    %s->has_%s = TRUE;' % (pb_paramvalue, field_name_low)
			print >> fobj, '    %s->%s = %s->%s;' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
		elif ('bytes' == pb_type):
			print >> fobj, '    %s->has_%s = TRUE;' % (pb_paramvalue, field_name_low)
			print >> fobj, '    %s->%s.len = sizeof(%s->%s);' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
			print >> fobj, '    %s->%s.data = XCALLOC(MEM_LIB_PROTOBUF, sizeof(%s->%s));' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name)
			print >> fobj, '    sal_memcpy(%s->%s.data, %s->%s, sizeof(%s->%s));' % (pb_paramvalue, field_name_low, cdb_paramvalue, field_name, cdb_paramvalue, field_name)
		elif ('compose' == pb_type):
			compose_type = dt_type[1]
			compose_func = 'pb_compose_' + compose_type + '_to_pb'
			compose_refer = cdb_util.pb_get_cdb_compose_reference(compose_type)
			print >> fobj, '    %s(%s%s->%s, %s->%s);' % (compose_func, compose_refer, cdb_paramvalue, field_name, pb_paramvalue, field_name_low)
		elif ('none' == pb_type):
			pass
		else:
			pass