source: tools/tracertstats/output.c @ 130a0e4

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 130a0e4 was 9c13ab0, checked in by Perry Lorier <perry@…>, 16 years ago

Add a txt output format (and make it the default)

  • Property mode set to 100644
File size: 1.6 KB
Line 
1#include <inttypes.h>
2#include <stdio.h>
3#include <assert.h>
4#include <stdlib.h>
5#include <string.h>
6
7#include "output.h"
8#include "config.h"
9
10struct output_type_t *output_formats[] = {
11        &output_txt,
12        &output_csv,
13        &output_html,
14#if HAVE_GDC_H
15        &output_png,
16#endif
17        NULL
18};
19
20struct output_data_t *output_init(char *title,char *type)
21{
22        output_data_t *data = malloc(sizeof(output_data_t));
23        int i=0;
24        data->title=strdup(title);
25        data->labels=NULL;
26        data->columns=0;
27        data->data=NULL;
28        while(output_formats[i]) {
29                if (strcmp(output_formats[i]->name,type)==0) {
30                        data->format = output_formats[i];
31                        return data;
32                }
33                ++i;
34        }
35        /* Not found */
36        free(data);
37        return NULL;
38}
39
40void output_add_column(struct output_data_t *out,char *col)
41{
42        ++out->columns;
43        out->labels=realloc(out->labels,out->columns*sizeof(char *));
44        out->labels[out->columns-1]=strdup(col);
45        out->data=realloc(out->data,out->columns*sizeof(struct data_t));
46}
47
48void output_flush_headings(struct output_data_t *out)
49{
50        out->format->init(out);
51}
52
53#define output_set_data(type_) \
54        void output_set_data_ ## type_(struct output_data_t *out,       \
55                        int col,TYPE__ ## type_ data)\
56        {       \
57                assert(col>=0 && col<out->columns); \
58                out->data[col].type=TYPE_ ## type_; \
59                out->data[col].d_ ## type_ = data; \
60        }
61
62output_set_data(str)
63output_set_data(int)
64output_set_data(float)
65output_set_data(time)
66#undef output_set_data
67
68void output_flush_row(struct output_data_t *out)
69{
70        out->format->flush(out);
71}
72
73void output_destroy(struct output_data_t *out)
74{
75        int i;
76        out->format->destroy(out);
77        for(i=0;i<out->columns;++i) {
78                free(out->labels[i]);
79        }
80        free(out->data);
81        free(out->labels);
82        free(out);
83}
84
Note: See TracBrowser for help on using the repository browser.