static char* construct_filename(oskar_BeamPattern* h, int data_product_type,
        int stokes_in, int stokes_out, int i_station, int time_average,
        int channel_average, const char* ext)
{
    int buflen, start = 0;
    char* name = 0;

    /* Construct the filename. */
    buflen = (int) strlen(h->root_path) + 100;
    name = calloc(buflen, 1);
    start += SNPRINTF(name + start, buflen - start, "%s", h->root_path);
    if (i_station >= 0)
        start += SNPRINTF(name + start, buflen - start, "_S%04d",
                h->station_ids[i_station]);
    start += SNPRINTF(name + start, buflen - start, "_%s",
            time_average ? "TIME_AVG" : "TIME_SEP");
    start += SNPRINTF(name + start, buflen - start, "_%s",
            channel_average ? "CHAN_AVG" : "CHAN_SEP");
    start += SNPRINTF(name + start, buflen - start, "_%s",
            data_type_to_string(data_product_type));
    if (stokes_in >= 0)
        start += SNPRINTF(name + start, buflen - start, "_%s",
                stokes_type_to_string(stokes_in));
    if (stokes_out >= 0)
        start += SNPRINTF(name + start, buflen - start, "_%s",
                stokes_type_to_string(stokes_out));
    start += SNPRINTF(name + start, buflen - start, ".%s", ext);
    return name;
}
Ejemplo n.º 2
0
void SimpleTableDump::dumpHeader(std::string name, std::shared_ptr<AbstractTable> table) {
  std::stringstream header;
  std::vector<std::string> names, types;
  std::vector<uint32_t> parts;

  // Get names and types
  for(size_t i=0; i < table->columnCount(); ++i) {
    names.push_back(table->nameOfColumn(i));
    types.push_back(data_type_to_string(table->typeOfColumn(i)));
  }

  // This calculation will break if the width of the value_id changes
  // or someone forgets to simply update the width accordingly in the
  // constructor of the table
  for(size_t i=0; i < table->partitionCount(); ++i) {
    parts.push_back(table->partitionWidth(i));
  }
    
  // Dump and join
  header << std::accumulate(names.begin(), names.end(), std::string(), infix(" | ")) << "\n";
  header << std::accumulate(types.begin(), types.end(), std::string(), infix(" | ")) << "\n";
  std::vector<std::string> allParts;
  for(size_t i=0; i < parts.size(); ++i) {
    auto p = parts[i];
    auto tmp = std::vector<std::string>(p, std::to_string(i) + "_R");
    allParts.insert(allParts.end(), tmp.begin(), tmp.end());
  }
  header << std::accumulate(allParts.begin(), allParts.end(), std::string(), infix(" | ")) << "\n";
  header << "===";

  std::string fullPath = _baseDirectory + "/" + name + "/header.dat";
  std::ofstream data (fullPath, std::ios::out | std::ios::binary);
  data << header.str();
  data.close();
}
Ejemplo n.º 3
0
int
main (int argc, char **argv)
{
  int last_argc = -1;
  gpgme_error_t err;
  int anyerr = 0;
  gpgme_data_t data;
  gpgme_data_type_t dt;

  if (argc)
    { argc--; argv++; }
  while (argc && last_argc != argc )
    {
      last_argc = argc;
      if (!strcmp (*argv, "--"))
        {
          argc--; argv++;
          break;
        }
      else if (!strcmp (*argv, "--help"))
        show_usage (0);
      else if (!strcmp (*argv, "--verbose"))
        {
          verbose = 1;
          argc--; argv++;
        }
      else if (!strncmp (*argv, "--", 2))
        show_usage (1);

    }

  init_gpgme (GPGME_PROTOCOL_OpenPGP);

  for (; argc; argc--, argv++)
    {
      if (verbose)
        printf ("reading file `%s'\n", *argv);
      err = gpgme_data_new_from_file (&data, *argv, 1);
      if (err)
        {
          fprintf (stderr, PGM ": error reading '%s': %s\n",
                   *argv, gpg_strerror (err));
          anyerr = 1;
        }
      else
        {
          dt = gpgme_data_identify (data, 0);
          if (dt == GPGME_DATA_TYPE_INVALID)
            anyerr = 1;
          printf ("%s: %s\n", *argv, data_type_to_string (dt));
          gpgme_data_release (data);
        }
    }

  return anyerr;
}
Ejemplo n.º 4
0
void AbstractTable::write(const std::string &filename) const {
  std::ofstream file(filename.c_str());

  for (size_t column = 0; column < columnCount(); column++) {
    auto md = metadataAt(column);
    file << md->getName();

    if (column < columnCount() - 1) {
      file << "|";
    }
  }

  file << std::endl;

  for (size_t column = 0; column < columnCount(); column++) {
    auto md = metadataAt(column);
    file << data_type_to_string(md->getType());

    if (column < columnCount() - 1) {
      file << "|";
    }
  }

  file << std::endl;

  for (size_t column = 0; column < columnCount(); column++) {
    file << column << "_R";

    if (column < columnCount() - 1) {
      file << "|";
    }
  }

  file << std::endl;

  file << "===" << std::endl;

  for (size_t row = 0; row < size(); row++) {
    for (size_t column = 0; column < columnCount(); column++) {
      file << printValue(column, row);

      if (column < columnCount() - 1) {
        file << "|";
      }
    }

    file << std::endl;
  }

  file.close();
}