def _write_data_pair()

in src/python/qpid_interop_test/amqp_complex_types_test_generator.py [0:0]


    def _write_data_pair(self, data_pair, instance_name_list=None, trailing_comma_flag=True):
        """
        Write a JOSN pair ['amqp_type', value]. If amqp_type is complex or a proton type, pop instance name from
        intance_name_list (which has been previously declared).
        """
        trailing_comma_string = ', ' if trailing_comma_flag else ''
        amqp_type, value = data_pair
        if amqp_type == 'null':
            self.target_file.write('nullptr%s' % trailing_comma_string)
        elif amqp_type == 'boolean':
            self.target_file.write('%s%s' % (str(value).lower(), trailing_comma_string))
        elif amqp_type == 'ubyte':
            self.target_file.write('uint8_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'byte':
            self.target_file.write('int8_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'ushort':
            self.target_file.write('uint16_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'short':
            self.target_file.write('int16_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'uint':
            self.target_file.write('uint32_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'int':
            self.target_file.write('int32_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'ulong':
            self.target_file.write('uint64_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'long':
            self.target_file.write('int64_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'float':
            if isinstance(value, str):
                if value == 'inf':
                    self.target_file.write('std::numeric_limits<float>::infinity()%s' % trailing_comma_string)
                elif value == '-inf':
                    self.target_file.write('-std::numeric_limits<float>::infinity()%s' % trailing_comma_string)
                elif value == 'NaN':
                    self.target_file.write('std::numeric_limits<float>::quiet_NaN()%s' % trailing_comma_string)
                else:
                    self.target_file.write('float(%s)%s' % (value, trailing_comma_string))
            else:
                self.target_file.write('float(%s)%s' % (str(value), trailing_comma_string))
        elif amqp_type == 'double':
            if isinstance(value, str):
                if value == 'inf':
                    self.target_file.write('std::numeric_limits<double>::infinity()%s' % trailing_comma_string)
                elif value == '-inf':
                    self.target_file.write('-std::numeric_limits<double>::infinity()%s' % trailing_comma_string)
                elif value == 'NaN':
                    self.target_file.write('std::numeric_limits<double>::quiet_NaN()%s' % trailing_comma_string)
                else:
                    self.target_file.write('double(%s)%s' % (value, trailing_comma_string))
            else:
                self.target_file.write('double(%s)%s' % (str(value), trailing_comma_string))
        elif amqp_type == 'decimal32':
            if instance_name_list is not None:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'decimal64':
            if instance_name_list is not None:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'decimal128':
            if instance_name_list is not None:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'char':
            if len(value) == 1: # single char
                self.target_file.write('wchar_t(\'%s\')%s' % (value, trailing_comma_string))
            else:
                self.target_file.write('wchar_t(%s)%s' % (value, trailing_comma_string))
        elif amqp_type == 'timestamp':
            if instance_name_list is not None:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'uuid':
            if instance_name_list is not None:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'binary':
            if instance_name_list is not None:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'string':
            self.target_file.write('std::string("')
            for char_ in value:
                if char_ in ('\'', '"'):
                    self.target_file.write('\\')
                self.target_file.write(char_)
            self.target_file.write('")%s' % trailing_comma_string)
        elif amqp_type == 'symbol':
            if instance_name_list is not None:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'array':
            if instance_name_list is not None and instance_name_list:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'list':
            if instance_name_list is not None and instance_name_list:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))
        elif amqp_type == 'map':
            if instance_name_list is not None and instance_name_list:
                self.target_file.write('%s%s' % (instance_name_list.pop(0), trailing_comma_string))