File: outfits.C

package info (click to toggle)
saods9 8.2%2Brepack-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 28,436 kB
  • sloc: tcl: 247,588; cpp: 69,307; ansic: 3,983; xml: 1,375; sh: 1,312; makefile: 183; perl: 68
file content (61 lines) | stat: -rw-r--r-- 1,041 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Copyright (C) 1999-2018
// Smithsonian Astrophysical Observatory, Cambridge, MA, USA
// For conditions of distribution and use, see copyright notice in "copyright"

#include <string.h>

#include "outfits.h"
#include "util.h"

OutFitsStream::OutFitsStream()
{
  valid_ = 0;
}

OutFitsStream::~OutFitsStream()
{
}

int OutFitsStream::writeSwap(char* where, int size, int bitpix)
{
  char* buf = new char[B4KB];

  // size_t size is unsigned
  long long ss = size;
  size_t rr =0;
  int r;
  do {
    r = (ss>B4KB) ? B4KB : ss;

    switch (bitpix) {
    case 8:
      memcpy(buf, where+rr, r);
      break;
    case 16:
    case -16:
      for (int ii=0; ii<r; ii+=2)
	swap2(where+rr+ii,buf+ii);
      break;
    case 32:
    case -32:
      for (int ii=0; ii<r; ii+=4)
	swap4(where+rr+ii,buf+ii);
      break;
    case 64:
    case -64:
      for (int ii=0; ii<r; ii+=8)
	swap8(where+rr+ii,buf+ii);
      break;
    }

    write(buf,r);
    ss -= r;
    rr += r;
  } while (r>0 && rr<size);

  if (buf)
    delete [] buf;

  return rr;
}