Пример #1
0
void ImageHeader::write(std::ofstream& f, bool force_reversed) {
  float tmp;
  unsigned tmpSize;
  if (get_number_of_rows() == 0 || get_number_of_columns() == 0 ||
      get_number_of_slices() == 0) {
    return;
  }
  // Set consistent header before saving
  set_header();
  set_time();
  set_date();
  // Write header
  if (algebra::xorT(reversed_, force_reversed)) {
    reversed_ = true;
    IMP::algebra::reversed_write(&spider_header_, sizeof(float), 36, f, true);
    IMP::algebra::reversed_write(&spider_header_.fGeo_matrix, sizeof(double), 9,
                                 f, true);
    // 14 is the number of float fields after fGeo_matrix in the header__ struct
    IMP::algebra::reversed_write(&spider_header_.fAngle1, sizeof(float), 14, f,
                                 true);
    // 752 is the number of chars to the end of the file
    f.write(spider_header_.empty, sizeof(char) * 752);
  } else {
    reversed_ = false;
    f.write(reinterpret_cast<char*>(&spider_header_), sizeof(SpiderHeader));
  }

  // Write empty filling space (filled with zeros)
  tmpSize = get_spider_header_size();  // Size of whole header
  tmpSize -= sizeof(SpiderHeader);     // Decrease the real header
  tmp = (float)0.0;
  for (unsigned i = 0; i < tmpSize / 4; i++) {
    f.write(reinterpret_cast<char*>(&tmp), sizeof(float));
  }
}
Пример #2
0
__declspec( dllexport ) void get_table_strings(HMODULE oleAccModule, HWND controlHwnd, void **tableStrings, long *numberOfRowsOut, long *numberOfColumnsOut) {
	// * to *[] to *[] to * string
	IAccessible *pAccessible ;
	LPFNACCESSIBLEOBJECTFROMWINDOW lpfnAccessibleObjectFromWindow ;

	lpfnAccessibleObjectFromWindow = (LPFNACCESSIBLEOBJECTFROMWINDOW)GetProcAddress(oleAccModule, "AccessibleObjectFromWindow");

	if (HRESULT hResult = lpfnAccessibleObjectFromWindow(controlHwnd, OBJID_CLIENT, IID_IAccessible, (void**)&pAccessible) == S_OK) {
		int numberOfRows = get_number_of_rows(pAccessible) ;   // including the header
		long numberOfColumns = 3 ;
		char ***table_rows ;
		char **pHeaderNames ;

		find_column_headers(pAccessible, &pHeaderNames, &numberOfColumns) ;
		
		table_rows = (char ***)malloc(sizeof(char*) * numberOfRows) ;
		table_rows[0] = pHeaderNames ;

		for (int row = 1; row < numberOfRows; row++) {
			char **table_row = (char **)malloc(sizeof(char*) * numberOfColumns) ;

			char *mainItem = (char *)malloc(sizeof(char) * BUFFER_SIZE) ;
			get_name(row, pAccessible, mainItem) ;

			char *description = (char *)malloc(sizeof(char) * 2048) ;
			get_description(row, pAccessible, description) ;

			char *token ;
			if (strlen(description) > 0)
				token = strtok(description, ",") ;
			else
				token = NULL ;

			for (int column = 0; column < numberOfColumns; column++) {
				if (column == 0)
					table_row[column] = mainItem ;
				else {
					char *item = (char *)malloc(sizeof(char) * BUFFER_SIZE) ;

					if (token != NULL) {
						strcpy(item, token) ;
						token = strtok(NULL, ",") ;
					} else
						strcpy(item, "\0") ;

					table_row[column] = remove_column_header_name(pHeaderNames[column], trimwhitespace(item)) ;
				}
			}

			table_rows[row] = table_row ;
		}

		*tableStrings = table_rows ;
		*numberOfRowsOut = numberOfRows ;
		*numberOfColumnsOut = numberOfColumns ;
	} else {
		*numberOfRowsOut = 0 ;
		*numberOfColumnsOut = 0 ;
	}
}
Пример #3
0
int main(int argc, char * argv[])
{
	if (argc != 2) {printf("Please provide a matrix");}

	int ierr = MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD, &rank); //sets rank
	MPI_Comm_size(MPI_COMM_WORLD, &size); //gets number of processes
	current_pivot = 0;

	if (rank == 0) { //master process
		get_number_of_rows(argv[1], &numrows);
		numcols = numrows + 1; //specified by assignment
		int i;
		for (i = 1; i < size; i++) { //sending out information to slaves about what rows they are reading.
			MPI_Isend(&numrows, 1, MPI_INT, i, MASTER_TO_SLAVE_TAG, MPI_COMM_WORLD, &request);
		}
	}
	else {
		MPI_Recv(&numrows, 1, MPI_INT, 0, MASTER_TO_SLAVE_TAG, MPI_COMM_WORLD, &status);
		numcols = numrows + 1;
	}
	if (rank >= numrows) {
		ierr = MPI_Finalize();
		return 0;
	} else if (rank < (numrows % size)) {
		numrows = (numrows / size) + 1;
	} else {
		numrows = (numrows / size);
	}
	matrix = allocate_matrix(numrows, numcols);
	read_rows(argv[1], matrix);
	RREF(matrix);
	absolute(matrix, &numrows, &numcols);
	reduction(matrix, &numrows, &numcols);
	get_best_threshold();
	collect(matrix);
	// print_matrix(matrix, numrows, numcols);
	print_matrix(final_matrix, numcols - 1, numcols);
	if (rank == 0) {
		// output_to_file(final_matrix);
	}
	free_matrix(matrix, &numrows);
	ierr = MPI_Finalize();
}