1 /* $Log: datagrid.C,v $
2 /* Revision 1.4 1994/03/26 04:19:46 newhall
3 /* changed all floats to double
4 /* fix problem with null string returned for first resource name
6 * Revision 1.3 1994/03/17 05:19:59 newhall
7 * changed bucket width and time value's type to double
9 * Revision 1.2 1994/03/14 20:28:44 newhall
10 * changed visi subdirectory structure
12 #include "visi/h/datagrid.h"
14 Metric::Metric(char *metricUnits,char *metricName,int id,int foldMethod){
15 units = new char[strlen(metricUnits) + 1];
16 strcpy(units,metricUnits);
17 name = new char[strlen(metricName) + 1];
18 strcpy(name,metricName);
21 aggregate = foldMethod;
26 ///////////////////////////////////////////
28 * Resource constructor
30 Resource::Resource(char *resourceName,int id){
32 if(resourceName != NULL){
33 name = new char[strlen(resourceName) + 1];
34 strcpy(name,resourceName);
45 ///////////////////////////////////////////
46 visi_GridCellHisto::visi_GridCellHisto(int numElements){
51 value = new double[numElements];
52 for(i = 0; i < numElements; i++)
58 lastBucketFilled = -1;
61 ///////////////////////////////////////////
63 * constructor for class GridHistoArray
65 visi_GridHistoArray::visi_GridHistoArray(int numElements){
68 values = new visi_GridCellHisto[numElements];
76 * destructor for class GridHistoArray
78 visi_GridHistoArray::~visi_GridHistoArray(){
86 int visi_GridHistoArray::Valid(int i){
88 if ((i< 0) || (i>= size)){
89 visi_ErrorHandler(ERROR_SUBSCRIPT,"visi_GridHistoArray::Valid");
90 return(ERROR_SUBSCRIPT);
92 return(values[i].Valid());
100 int visi_GridHistoArray::Invalidate(int i){
102 if ((i< 0) || (i>= size)){
103 visi_ErrorHandler(ERROR_SUBSCRIPT,"visi_GridHistoArray::Invalidate");
104 return(ERROR_SUBSCRIPT);
106 values[i].Invalidate();
112 ///////////////////////////////////////////
114 * DataGrid constructor
116 visi_DataGrid::visi_DataGrid(int noMetrics,int noResources,Metric *metricList,
117 Resource *resourceList,int noBins,double width){
120 numMetrics = noMetrics;
121 numResources = noResources;
122 metrics = new Metric[noMetrics];
123 resources = new Resource[noResources];
125 for(i = 0; i < noMetrics; i++){
126 metrics[i].Metric(metricList[i].Units(),metricList[i].Name(),
127 metricList[i].Identifier(),metricList[i].Aggregate());
129 for(i = 0; i < noResources; i++){
130 resources[i].Resource(resourceList[i].Name(),resourceList[i].Identifier());
133 data_values = new visi_GridHistoArray[noMetrics];
134 for (i = 0; i < noMetrics; i++)
135 data_values[i].visi_GridHistoArray(noResources);
143 * DataGrid constructor
145 visi_DataGrid::visi_DataGrid(int noMetrics,int noResources,metricType *metricList,resourceType *resourceList,int noBins,double width){
148 numMetrics = noMetrics;
149 numResources = noResources;
150 metrics = new Metric[noMetrics];
151 resources = new Resource[noResources];
153 for(i = 0; i < noMetrics; i++){
154 metrics[i].Metric(metricList[i].units,metricList[i].name,
155 metricList[i].Id,metricList[i].aggregate);
157 for(i = 0; i < noResources; i++){
158 resources[i].Resource(resourceList[i].name,resourceList[i].Id);
160 data_values = new visi_GridHistoArray[noMetrics];
161 for (i = 0; i < noMetrics; i++)
162 data_values[i].visi_GridHistoArray(noResources);
174 * DataGrid destructor
176 visi_DataGrid::~visi_DataGrid(){
180 delete[] data_values;
184 * returns metric name for metric number i
186 char *visi_DataGrid::MetricName(int i){
187 if((i < numMetrics) && (i>=0))
188 return(metrics[i].Name());
193 * returns metric units for metric number i
195 char *visi_DataGrid::MetricUnits(int i){
197 if((i < numMetrics) && (i>=0))
198 return(metrics[i].Units());
204 * returns resource name for resource number j
206 char *visi_DataGrid::ResourceName(int j){
208 if((j < numResources) && (j>=0))
209 return(resources[j].Name());
214 * returns list of metrics for current visualization
216 char *visi_DataGrid::MetricList(){
222 * returns list of objects for current visualization
224 char *visi_DataGrid::ObjectList(){
230 * returns fold method for metric i
232 int visi_DataGrid::FoldMethod(int i){
234 if((i < numMetrics) && (i >= 0))
235 return(metrics[i].Aggregate());
236 visi_ErrorHandler(ERROR_SUBSCRIPT,"visi_DataGrid::FoldMethod");
237 return(ERROR_SUBSCRIPT);
242 * returns metric identifier associated with metric number i
244 int visi_DataGrid::MetricId(int i){
246 if((i < numMetrics) && (i >= 0))
247 return(metrics[i].Identifier());
248 visi_ErrorHandler(ERROR_SUBSCRIPT,"visi_DataGrid::MetricId");
249 return(ERROR_SUBSCRIPT);
253 * returns resource identifier associated with resource number j
255 int visi_DataGrid::ResourceId(int j){
257 if((j < numResources) && (j >= 0))
258 return(resources[j].Identifier());
259 visi_ErrorHandler(ERROR_SUBSCRIPT,"visi_DataGrid::ResourceId");
260 return(ERROR_SUBSCRIPT);
264 * returns 1 if datagrid element indicated by metric#, resource#
265 * contains histogram values, otherwise returns false
267 int visi_DataGrid::Valid(int metric,int resource){
269 if((metric < 0) || (metric >= numMetrics)){
270 visi_ErrorHandler(ERROR_SUBSCRIPT,"visi_HistoDataGrid::Valid");
271 return(ERROR_SUBSCRIPT);
273 return(data_values[metric].Valid(resource));
278 * invalidates data_grid element indicated by metric#, resource#
279 * sets valid to 0 and frees histogram space
281 int visi_DataGrid::Invalidate(int metric,int resource){
283 if((metric < 0) || (metric >= numMetrics)){
284 visi_ErrorHandler(ERROR_SUBSCRIPT,"visi_HistoDataGrid::Invalidate");
285 return(ERROR_SUBSCRIPT);
287 return(data_values[metric].Invalidate(resource));