ftp.nice.ch/pub/next/science/mathematics/hippoplotamus.2.0.s.tar.gz#/hippo2.0/hstat.c

This is hstat.c in view mode; [Download] [Up]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "hippo.h"

#ifdef sun
#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0
#endif

extern int getopt(int, char **, char *);

int main(int argc, char **argv)
{
     extern char *optarg;
     extern int optind;

     int c;
     int i,j,n;
     int i_appnt=0, i_thisnt=0;
     
     int append = 0;
     int verbose = 0;
     
     char infilenm[80] = "";

     ntuple *nt_list;		/* hippo objects */
     ntuple appnt=NULL;
     display *d_list;

     const float *ntlow, *nthigh;
     
     while ((c = getopt( argc, argv, "f:i:")) != -1)
     {
	  
	  switch (c)
	  {
	  case 'i':
	  case 'f':
	       sscanf(optarg,"%s",infilenm);
	       if (verbose) fprintf(stderr,"Input text file = %s\n",infilenm);
	       break;
	       
	  default:
	  case '?':
	       fprintf(stderr,"Usage: [-f <inputfile>]\n");
	       fprintf(stderr,"[<inputfile> | stdin]\n");
	       exit(EXIT_FAILURE);
	  }
     }
     
     /*
      * input file not in option form.
      */
     if (optind < argc)
     {
	  sscanf(argv[optind],"%s",infilenm);
	  if (verbose) fprintf(stderr,"Input text file = %s\n",infilenm);
	  optind++;
     }


     /*
      * read in file.
      */
     if (strlen(infilenm) == 0) 
	  i = h_readStream(stdin,&d_list,&nt_list);
     else
	  i = h_read(infilenm,&d_list,&nt_list);
     
     if (i != 0)
     {
	  fprintf(stderr,"Could not read file\n");
	  exit(EXIT_FAILURE);
     }
     
     n = 0;
     while (nt_list[n] != NULL) n++;
     
     printf("%d ntuple",n);
     if (n != 1) printf("s");
     printf(" in file\n");
     for (i=0; i<n; i++)
     {
	  printf("Ntuple %d: Dim %d, Title \"%s\"\n",i,h_getNtDim(nt_list[i]),
		 h_getNtTitle(nt_list[i]));
	  nthigh = h_getNtHigh(nt_list[i]);
	  ntlow = h_getNtLow(nt_list[i]);
	  for (j=0; j<h_getNtDim(nt_list[i]); j++)
	  {
	       int k;
	       
	       printf("   Column %2d \"%s\"",j,h_getNtLabel(nt_list[i],j));
	       for (k=20-strlen(h_getNtLabel(nt_list[i],j));k>0;k--)
		    printf(" ");
	       printf("  range: %g to %g\n",ntlow[j],nthigh[j]);
	  }
	  printf("  Number of rows %d\n", h_getNtNdata(nt_list[i]));
	  printf("\n");
     }
     
     n = 0;
     while (d_list[n] != NULL) n++;
     
     printf("%d display",n);
     if (n != 1) printf("s");
     printf(" in file\n");
     for (i=0; i<n; i++)
     {
	  printf("Display %d: Title \"%s\"\n",i,h_getTitle(d_list[i]));
	  printf("   Bound to ntuple with title \"%s\"\n",
		 h_getNtTitle(h_getNtuple(d_list[i])) );
	  printf("   Plot type is ");
	  switch(h_getDrawType(d_list[i]))
	  {
	  case HISTOGRAM:
	       printf("Histogram\n");
	       break;
	  case XYPLOT:
	       printf("x-y Plot\n");
	       break;
	  case STRIPCHART:
	       printf("Stripchart\n");
	       break;
	  case LEGOPLOT:
	       printf("Legoplot\n");
	       break;
	  case COLORPLOT:
	       printf("Greyscale/color plot\n");
	       break;
	  case SCATTERPLOT:
	       printf("Scatterplot\n");
	       break;
	  case THREEDSCATTER:
	       printf("3D Scatterplot\n");
	       break;
	  }
	  
	  printf("   x-axis -> ntuple column %d\n",
		 h_getBinding(d_list[i],XAXIS));
	  if (h_getBinding(d_list[i],YAXIS) >= 0)
	       printf("   y-axis -> ntuple column %d\n",
		      h_getBinding(d_list[i],YAXIS));
	  if (h_getBinding(d_list[i],ZAXIS) >= 0)
	       printf("   z-axis -> ntuple column %d\n",
		      h_getBinding(d_list[i],ZAXIS));
	  if (h_getBinding(d_list[i],WEIGHT) >= 0)
	       printf("   weight -> ntuple column %d\n",
		      h_getBinding(d_list[i],WEIGHT));
	  if (h_getBinding(d_list[i],XERROR) >= 0)
	       printf("   x-error -> ntuple column %d\n",
		      h_getBinding(d_list[i],XERROR));
	  if (h_getBinding(d_list[i],YERROR) >= 0)
	       printf("   y-error -> ntuple column %d\n",
		      h_getBinding(d_list[i],YERROR));
	  printf("\n");
     }
     
     exit(EXIT_SUCCESS);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.