示例#1
0
文件: print.c 项目: BIC-MNI/minc
VIOAPI  void  pop_print_function( void )
{
    if( top_of_stack > 0 )
        --top_of_stack;
    else
        handle_internal_error( "Stack underflow in pop_print_function" );
}
示例#2
0
文件: skiplist.c 项目: BIC-MNI/bicpl
static  BOOLEAN  test_skiplist_integrity(
    skiplist_struct  *skiplist )
{
    int            i;
    update_struct  update;
    BOOLEAN        okay;

    for_less( i, 0, skiplist->level )
        update.update[i] = skiplist->header->forward[i];

    while( update.update[0] != NULL )
    {
        i = 1;
        while( i < skiplist->level && update.update[0] == update.update[i] )
        {
            update.update[i] = update.update[i]->forward[i];
            ++i;
        }
        update.update[0] = update.update[0]->forward[0];
    }

    okay = TRUE;

    for_less( i, 0, skiplist->level )
        if( update.update[i] != NULL )
            okay = FALSE;

    if( !okay )
        handle_internal_error( "Skiplist integrity" );

    return( okay );
}
示例#3
0
文件: print.c 项目: BIC-MNI/minc
VIOAPI  void  push_print_function( void )
{
    if( top_of_stack < MAX_PRINT_STACK - 1 )
    {
        ++top_of_stack;
        print_function[top_of_stack] = NULL;
    }
    else
        handle_internal_error( "Stack overflow in push_print_function" );
}
示例#4
0
static  int  get_current_sequence_number( void )
{
    static   int  current_sequence_number = 0;

    ++current_sequence_number;

    if( current_sequence_number == get_stop_sequence_number() )
        handle_internal_error( "get_current_sequence_number" );

    return( current_sequence_number );
}
示例#5
0
void stream_on_read(uv_stream_t* stream, ssize_t nread, const uv_buf_t* buf) {
    connection* conn = stream->data;

    if (nread > 0) {
        if (conn->request_length == 0) {
            // We need to seek the first request to find out how many characters each request is.
            for (int i = 1; i < nread; i++) {
                if (buf->base[i] == '\r' && buf->base[i - 1] == '\n') {
                    conn->request_length = i + 2;
                    break;
                }
            }
        }

        ssize_t requests = (nread + conn->bytes_remaining) / conn->request_length;
        conn->bytes_remaining = conn->bytes_remaining + (nread % conn->request_length);

        stream_on_read_func(conn, requests, stream, nread, buf);
    }
    else if (nread == UV_ENOBUFS) {
        handle_buffer_exceeded_error(conn);
    }
    else if (nread == UV_EOF){
        uv_shutdown_t* req = malloc(sizeof(uv_shutdown_t));
        req->data = conn;
        uv_shutdown(req, &conn->stream, stream_on_shutdown);
    }
    else if (nread == UV_ECONNRESET || nread == UV_ECONNABORTED) {
        /* Let's close the connection as the other peer just disappeared */
        stream_close_connection(conn);
    } else {
        /* We didn't see this coming, but an unexpected UV error code was passed in, so we'll
         * respond with a blanket 500 error if we can */
        handle_internal_error(conn);
    }
    free(buf->base);
}
示例#6
0
static void transform_or_inverse_point_in_trans_plane(VIO_General_transform *transform,
                                          VIO_BOOL           inverse_flag,
                                          VIO_Real              x, 
                                          VIO_Real              y, 
                                          VIO_Real              z,
                                          VIO_Real              *x_transformed,  
                                          VIO_Real              *y_transformed,  
                                          VIO_Real              *z_transformed) {
  
  int      trans;
  
  switch( transform->type )
    {
    case LINEAR:
      if( inverse_flag )
        transform_point( transform->inverse_linear_transform,
                        x, y, z,
                        x_transformed, y_transformed, z_transformed );
      else
        transform_point( transform->linear_transform,
                        x, y, z,
                        x_transformed, y_transformed, z_transformed );
      break;
      
    case THIN_PLATE_SPLINE:
      if( inverse_flag )
        {
          thin_plate_spline_inverse_transform( transform->n_dimensions,
                                              transform->n_points,
                                              transform->points,
                                              transform->displacements,
                                              x, y, z,
                                              x_transformed, y_transformed,
                                              z_transformed );
        }
      else
        {
          thin_plate_spline_transform( transform->n_dimensions,
                                      transform->n_points,
                                      transform->points,
                                      transform->displacements,
                                      x, y, z,
                                      x_transformed, y_transformed,
                                      z_transformed );
        }
      break;
      
    case GRID_TRANSFORM:
      if( inverse_flag )
        {
          grid_inverse_transform_point_in_trans_plane( transform,
                                          x, y, z,
                                          x_transformed, y_transformed,
                                          z_transformed );
        }
      else
        {
          grid_transform_point_in_trans_plane( transform,
                                  x, y, z,
                                  x_transformed, y_transformed,
                                  z_transformed );
        }
      break;
      
    case USER_TRANSFORM:
      if( inverse_flag )
        {
          transform->user_inverse_transform_function(
                transform->user_data, x, y, z,
                x_transformed, y_transformed, z_transformed );
        }
      else
        {
          transform->user_transform_function(
                transform->user_data, x, y, z,
                x_transformed, y_transformed, z_transformed );
        }
      break;
      
    case CONCATENATED_TRANSFORM:
      *x_transformed = x;
      *y_transformed = y;
      *z_transformed = z;
      
      if( transform->inverse_flag )
        inverse_flag = !inverse_flag;
      
      if( inverse_flag )
        {
          for( trans = transform->n_transforms-1;  trans >= 0;  --trans )
            {
              general_inverse_transform_point_in_trans_plane(&transform->transforms[trans],
                  *x_transformed, *y_transformed, *z_transformed,
                  x_transformed, y_transformed, z_transformed );
            }
        }
      else
        {
          for(trans=0; trans<transform->n_transforms; trans++)
            {
              general_transform_point_in_trans_plane( &transform->transforms[trans],
                  *x_transformed, *y_transformed, *z_transformed,
                  x_transformed, y_transformed, z_transformed );
            }
        }
      break;
      
    default:
      handle_internal_error( "transform_or_invert_point" );
      break;
    }
}