Class: PG::TypeMapInRuby
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           TypeMap | |
| Instance Chain: | |
| Inherits: | PG::TypeMap 
 | 
| Defined in: | ext/pg_type_map_in_ruby.c | 
Overview
This class can be used to implement a type map in ruby, typically as a #default_type_map in a type map chain.
This API is EXPERIMENTAL and could change in the future.
Instance Attribute Summary
TypeMap::DefaultTypeMappable - Included
| #default_type_map | Returns the default  | 
| #default_type_map= | Set the default  | 
Instance Method Summary
- 
    
      #typecast_copy_get(field_str, fieldno, format, encoding)  
    
    Cast a field string received by Connection#get_copy_data. 
- 
    
      #typecast_query_param(param_value, field)  
    
    Cast a field string for transmission to the server. 
- 
    
      #typecast_result_value(result, tuple, field)  
    
    Retrieve and cast a field of the given result. 
TypeMap::DefaultTypeMappable - Included
| #with_default_type_map | Set the default  | 
Instance Method Details
#typecast_copy_get(field_str, fieldno, format, encoding)
Cast a field string received by Connection#get_copy_data.
This method implementation uses the #default_type_map to cast field_str. It can be derived to change this behaviour.
Parameters:
- 
field_str: The String received from the server.
- 
fieldno: The field number from left to right.
- 
format: The format code (0 = text, 1 = binary)
- 
encoding: The encoding of the connection and encoding the returned value should get.
# File 'ext/pg_type_map_in_ruby.c', line 273
static VALUE
pg_tmir_typecast_copy_get( VALUE self, VALUE field_str, VALUE fieldno, VALUE format, VALUE enc )
{
	t_tmir *this = RTYPEDDATA_DATA( self );
	t_typemap *default_tm = RTYPEDDATA_DATA( this->typemap.default_typemap );
	int enc_idx = rb_to_encoding_index( enc );
	return default_tm->funcs.typecast_copy_get( default_tm, field_str, NUM2INT(fieldno), NUM2INT(format), enc_idx );
}
  #typecast_query_param(param_value, field)
Cast a field string for transmission to the server.
This method implementation uses the #default_type_map to cast param_value. It can be derived to change this behaviour.
Parameters:
- 
param_value: The value from the user.
- 
field: The field number from left to right.
# File 'ext/pg_type_map_in_ruby.c', line 192
static VALUE
pg_tmir_typecast_query_param( VALUE self, VALUE param_value, VALUE field )
{
	t_tmir *this = RTYPEDDATA_DATA( self );
	t_typemap *default_tm = RTYPEDDATA_DATA( this->typemap.default_typemap );
	t_pg_coder *p_coder = default_tm->funcs.typecast_query_param( default_tm, param_value, NUM2INT(field) );
	return p_coder ? p_coder->coder_obj : Qnil;
}
  #typecast_result_value(result, tuple, field)
Retrieve and cast a field of the given result.
This method implementation uses the #default_type_map to get the field value. It can be derived to change this behaviour.
Parameters:
- 
result: TheResultreceived from the database.
- 
tuple: The row number to retrieve.
- 
field: The column number to retrieve.
Note: Calling any value retrieving methods of result will result in an (endless) recursion. Instead super() can be used to retrieve the value using the default_typemap.
# File 'ext/pg_type_map_in_ruby.c', line 126
static VALUE
pg_tmir_typecast_result_value( VALUE self, VALUE result, VALUE tuple, VALUE field )
{
	t_tmir *this = RTYPEDDATA_DATA( self );
	t_typemap *default_tm = RTYPEDDATA_DATA( this->typemap.default_typemap );
	return default_tm->funcs.typecast_result_value( default_tm, result, NUM2INT(tuple), NUM2INT(field) );
}