grasp_input_preloader.h
Go to the documentation of this file.
1 /*
2  * Copyright 2016 CNRS & Universite Lille 1. All rights reserved.
3  *
4  * Licensed under the GRASP Open Source License V1.0 (see LICENSE file)
5  */
6 
7 /*
8  * File: grasp_input_preloader.h
9  * Author: fuertes
10  *
11  * Created on 16 de julio de 2014, 9:37
12  */
13 
14 #ifndef GRASP_INPUT_PRELOADER_H
15 #define GRASP_INPUT_PRELOADER_H
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 #include <stdbool.h>
22 #include "grasp_input.h"
23 #include "../settings/grasp_settings.h"
24 #include "../input/grasp_input.h"
25 
26 typedef struct grasp_input_preloader_t_{
27  int nsubtilecols; // number of subtiles in cols
28  int nsubtilerows; // number of subtiles in rows
29  int nsubtiletimes; // number of subtiles in times
30  int nsegmentspercol; // number of segments that it has each col
31  int nsegmentsperrow; // number of segments that it has each row
32  int nsegmentspertime; // number of segments that it has each times
33  int nsegmentcols; // Number of total segment in X range
34  int nsegmentrows; // Number of total segment in Y range
35  int nsegmenttimes; // Number of total segment in T range
36  bool *subtiles; // matrix of subtiles where false means without load (t,x,y)
37  bool *segment_read; // matrix of segments where false means that segment in position (t,x,y) is not read yet
39 
40 // Initilize current grasp_input_preloader_t *preload with settings an tile
42 
43 // This function will return true if the segment in the position (segment_t_position, segment_x_position, segment_y_position) is already allocated
44 bool grasp_input_preload_is_allocated(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position);
45 
46 // This function set a subtile like loaded (ready in memory)
47 void grasp_input_preload_allocate(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position);
48 
49 // This funtion set a subtile like deallocated
50 void grasp_input_preload_deallocate(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position);
51 
52 // This function mark a segment like read
53 void grasp_input_preload_set_read(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position);
54 
55 // Return true if all segments in the subtile where the segment is placed is read.
56 bool grasp_input_preload_is_read(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position);
57 
58 // Deallocate preloader
60 
61 
62 
63 /* Example of use in a bridge:
64  *
65 records_type *records;
66 grasp_input_preloader_t preload;
67 
68 
69 int grasp_input_aeronet_get_segment(grasp_settings *settings, grasp_segment_t *segment, int col, int row, int itime){
70  if(grasp_input_preload_is_allocate(&preload, itime, row, col)==FALSE){ // If the segment is not allocate, we'll allocate a block of segments
71  // Allocate records ...
72 
73  // Set subtile like allocate
74  grasp_input_preload_allocate(&preload, itime, row, col);
75  }
76 
77  // Set the segment as read
78  grasp_input_preload_set_read(&preload, itime, row, col);
79 
80  // Get and set segment information ...
81 
82  if(grasp_input_preload_is_read(&preload, itime, row, col)==TRUE){ // If the block os segments is completely read we'll deallocate it
83  // Deallocate the subtile...
84 
85  // Marking it like deallocated
86  grasp_input_preload_deallocate(&preload, itime, row, col);
87  }
88 
89  return ipixel;
90 }
91 
92 int grasp_input_aeronet_close_driver(void){
93  trackmem_free(records);
94  grasp_input_preloader_destroy (&preload);
95  return 0;
96 }
97 
98 int grasp_input_aeronet_driver(grasp_settings *settings, input_tile_t *input_tile){
99  // Some validations...
100 
101  // Set tile information...
102 
103  // Init preload
104  grasp_input_preloader_init(&preload, settings, tile);
105 
106  // Return iterator
107  return 0;
108 }
109 
110 */
111 
112 #ifdef __cplusplus
113 }
114 #endif
115 
116 #endif /* GRASP_INPUT_PRELOADER_H */
117 
struct grasp_input_preloader_t_ grasp_input_preloader_t
void grasp_input_preload_allocate(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position)
Definition: grasp_input_preloader.c:104
int nsegmentspertime
Definition: grasp_input_preloader.h:32
int nsegmentrows
Definition: grasp_input_preloader.h:34
Definition: grasp_input_tile_description.h:32
void grasp_input_preloader_destroy(grasp_input_preloader_t *preload)
Definition: grasp_input_preloader.c:180
bool * segment_read
Definition: grasp_input_preloader.h:37
int nsegmentspercol
Definition: grasp_input_preloader.h:30
int nsubtilecols
Definition: grasp_input_preloader.h:27
Definition: grasp_input_preloader.h:26
bool * subtiles
Definition: grasp_input_preloader.h:36
void grasp_input_preload_deallocate(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position)
Definition: grasp_input_preloader.c:117
int nsegmenttimes
Definition: grasp_input_preloader.h:35
void grasp_input_preloader_init(grasp_input_preloader_t *preload, grasp_settings *settings, grasp_tile_description_t *tile_description)
Definition: grasp_input_preloader.c:13
bool grasp_input_preload_is_read(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position)
Definition: grasp_input_preloader.c:138
int nsegmentcols
Definition: grasp_input_preloader.h:33
void grasp_input_preload_set_read(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position)
Definition: grasp_input_preloader.c:130
int nsegmentsperrow
Definition: grasp_input_preloader.h:31
Definition: grasp_settings_t.h:409
int nsubtiletimes
Definition: grasp_input_preloader.h:29
bool grasp_input_preload_is_allocated(grasp_input_preloader_t *preload, int segment_t_position, int segment_x_position, int segment_y_position)
Definition: grasp_input_preloader.c:91
int nsubtilerows
Definition: grasp_input_preloader.h:28