fix gcc build

This commit is contained in:
caesar 2020-04-19 15:41:41 +08:00
parent 6aec041f89
commit a0ce21b06c
4 changed files with 234 additions and 159 deletions

View File

@ -1151,6 +1151,7 @@ int imagetobmp_c_vector(opj_image_t *image, c_vector *outfile) {
int w, h; int w, h;
int i, pad; int i, pad;
int adjustR, adjustG, adjustB; int adjustR, adjustG, adjustB;
OPJ_UINT8 _tmp[100];
if (image->comps[0].prec < 8) { if (image->comps[0].prec < 8) {
fprintf(stderr, "imagetobmp: Unsupported precision: %d\n", fprintf(stderr, "imagetobmp: Unsupported precision: %d\n",
@ -1182,58 +1183,83 @@ int imagetobmp_c_vector(opj_image_t *image, c_vector *outfile) {
/* FILE HEADER */ /* FILE HEADER */
/* ------------- */ /* ------------- */
OPJ_UINT8 _1185[4] = { _tmp[0] = (OPJ_UINT8) (h * w * 3 + 3 * h * (w % 2) + 54) & 0xff;
(OPJ_UINT8) (h * w * 3 + 3 * h * (w % 2) + 54) & 0xff, _tmp[1] = (OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 8) & 0xff;
(OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 8) & 0xff, _tmp[2] = (OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 16) & 0xff;
(OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 16) & 0xff, _tmp[3] = (OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 24) & 0xff;
(OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 24) & 0xff}; c_vector_push_back(outfile, _tmp, 0, 4);
c_vector_push_back(outfile, _1185, 0, 4);
OPJ_UINT8 _1191[4] = {(0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff,
((0) >> 24) & 0xff};
c_vector_push_back(outfile, _1191, 0, 4);
OPJ_UINT8 _1195[4] = {(54) & 0xff, ((54) >> 8) & 0xff, ((54) >> 16) & 0xff, _tmp[0] = (0) & 0xff;
((54) >> 24) & 0xff}; _tmp[1] = ((0) >> 8) & 0xff;
c_vector_push_back(outfile, _1195, 0, 4); _tmp[2] = ((0) >> 16) & 0xff;
_tmp[3] = ((0) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (54) & 0xff;
_tmp[1] = ((54) >> 8) & 0xff;
_tmp[2] = ((54) >> 16) & 0xff;
_tmp[3] = ((54) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
/* INFO HEADER */ /* INFO HEADER */
/* ------------- */ /* ------------- */
OPJ_UINT8 _1201[4] = {(40) & 0xff, ((40) >> 8) & 0xff, ((40) >> 16) & 0xff, _tmp[0] = (40) & 0xff;
((40) >> 24) & 0xff}; _tmp[1] = ((40) >> 8) & 0xff;
c_vector_push_back(outfile, _1201, 0, 4); _tmp[2] = ((40) >> 16) & 0xff;
_tmp[3] = ((40) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
OPJ_UINT8 _1205[4] = {(OPJ_UINT8) ((w) & 0xff), _tmp[0] = (OPJ_UINT8) ((w) & 0xff);
(OPJ_UINT8) ((w) >> 8) & 0xff, _tmp[1] = (OPJ_UINT8) ((w) >> 8) & 0xff;
(OPJ_UINT8) ((w) >> 16) & 0xff, _tmp[2] = (OPJ_UINT8) ((w) >> 16) & 0xff;
(OPJ_UINT8) ((w) >> 24) & 0xff}; _tmp[3] = (OPJ_UINT8) ((w) >> 24) & 0xff;
c_vector_push_back(outfile, _1205, 0, 4); c_vector_push_back(outfile, _tmp, 0, 4);
OPJ_UINT8 _1210[4] = {(OPJ_UINT8) ((h) & 0xff),
(OPJ_UINT8) ((h) >> 8) & 0xff, _tmp[0] = (OPJ_UINT8) ((h) & 0xff);
(OPJ_UINT8) ((h) >> 16) & 0xff, _tmp[1] = (OPJ_UINT8) ((h) >> 8) & 0xff;
(OPJ_UINT8) ((h) >> 24) & 0xff}; _tmp[2] = (OPJ_UINT8) ((h) >> 16) & 0xff;
c_vector_push_back(outfile, _1210, 0, 4); _tmp[3] = (OPJ_UINT8) ((h) >> 24) & 0xff;
OPJ_UINT8 _1215[4] = {(1) & 0xff, ((1) >> 8) & 0xff, (24) & 0xff, ((24) >> 8) & 0xff}; c_vector_push_back(outfile, _tmp, 0, 4);
c_vector_push_back(outfile, _1215, 0, 4);
OPJ_UINT8 _1218[4] = {(0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, _tmp[0] = (1) & 0xff;
((0) >> 24) & 0xff}; _tmp[1] = ((1) >> 8) & 0xff;
c_vector_push_back(outfile, _1218, 0, 4); _tmp[2] = (24) & 0xff;
OPJ_UINT8 _1220[4] = {(OPJ_UINT8) (3 * h * w + 3 * h * (w % 2)) & 0xff, _tmp[3] = ((24) >> 8) & 0xff;
(OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2)) >> 8) & 0xff, c_vector_push_back(outfile, _tmp, 0, 4);
(OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2)) >> 16) & 0xff,
(OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2)) >> 24) & 0xff}; _tmp[0] = (0) & 0xff;
c_vector_push_back(outfile, _1220, 0, 4); _tmp[1] = ((0) >> 8) & 0xff;
OPJ_UINT8 _1225[4] = {(7834) & 0xff, ((7834) >> 8) & 0xff, _tmp[2] = ((0) >> 16) & 0xff;
((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff}; _tmp[3] = ((0) >> 24) & 0xff;
c_vector_push_back(outfile, _1225, 0, 4); c_vector_push_back(outfile, _tmp, 0, 4);
OPJ_UINT8 _1228[4] = {(7834) & 0xff, ((7834) >> 8) & 0xff,
((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff}; _tmp[0] = (OPJ_UINT8) (3 * h * w + 3 * h * (w % 2)) & 0xff;
c_vector_push_back(outfile, _1228, 0, 4); _tmp[1] = (OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2)) >> 8) & 0xff;
OPJ_UINT8 _1231[4] = {(0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, _tmp[2] = (OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2)) >> 16) & 0xff;
((0) >> 24) & 0xff}; _tmp[3] = (OPJ_UINT8) ((h * w * 3 + 3 * h * (w % 2)) >> 24) & 0xff;
c_vector_push_back(outfile, _1231, 0, 4); c_vector_push_back(outfile, _tmp, 0, 4);
OPJ_UINT8 _1234[4] = {(0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff,
((0) >> 24) & 0xff}; _tmp[0] = (7834) & 0xff;
c_vector_push_back(outfile, _1234, 0, 4); _tmp[1] = ((7834) >> 8) & 0xff;
_tmp[2] = ((7834) >> 16) & 0xff;
_tmp[3] = ((7834) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (7834) & 0xff;
_tmp[1] = ((7834) >> 8) & 0xff;
_tmp[2] = ((7834) >> 16) & 0xff;
_tmp[3] = ((7834) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (0) & 0xff;
_tmp[1] = ((0) >> 8) & 0xff;
_tmp[2] = ((0) >> 16) & 0xff;
_tmp[3] = ((0) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (0) & 0xff;
_tmp[1] = ((0) >> 8) & 0xff;
_tmp[2] = ((0) >> 16) & 0xff;
_tmp[3] = ((0) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
if (image->comps[0].prec > 8) { if (image->comps[0].prec > 8) {
adjustR = (int) image->comps[0].prec - 8; adjustR = (int) image->comps[0].prec - 8;
@ -1297,8 +1323,10 @@ int imagetobmp_c_vector(opj_image_t *image, c_vector *outfile) {
} }
bc = (OPJ_UINT8) b; bc = (OPJ_UINT8) b;
OPJ_UINT8 _1300[3] = {bc, gc, rc}; _tmp[0] = bc;
c_vector_push_back(outfile, _1300, 0, 3); _tmp[1] = gc;
_tmp[2] = rc;
c_vector_push_back(outfile, _tmp, 0, 3);
if ((i + 1) % w == 0) { if ((i + 1) % w == 0) {
for (pad = ((3 * w) % 4) ? (4 - (3 * w) % 4) : 0; pad > 0; pad--) { /* ADD */ for (pad = ((3 * w) % 4) ? (4 - (3 * w) % 4) : 0; pad > 0; pad--) { /* ADD */
@ -1308,77 +1336,103 @@ int imagetobmp_c_vector(opj_image_t *image, c_vector *outfile) {
} }
} else { /* Gray-scale */ } else { /* Gray-scale */
/* -->> -->> -->> -->> /* -->> -->> -->> -->>
8 bits non code (Gray scale) 8 bits non code (Gray scale)
<<-- <<-- <<-- <<-- */ <<-- <<-- <<-- <<-- */
if (!outfile) { if (!outfile) {
fprintf(stderr, "ERROR -> failed to writing\n"); fprintf(stderr,
"ERROR -> failed to writing\n");
return 1; return 1;
} }
if (image->numcomps > 1) { if (image->numcomps > 1) {
fprintf(stderr, "imagetobmp: only first component of %d is used.\n", fprintf(stderr,
"imagetobmp: only first component of %d is used.\n",
image->numcomps); image->numcomps);
} }
w = (int) image->comps[0].w; w = (int) image->comps[0].w;
h = (int) image->comps[0].h; h = (int) image->comps[0].h;
c_vector_push_back(outfile, "BM", 0, 2); c_vector_push_back(outfile,
"BM", 0, 2);
/* FILE HEADER */ /* FILE HEADER */
/* ------------- */ /* ------------- */
OPJ_UINT8 _1331[4] = {(OPJ_UINT8) (h * w + 54 + 1024 + h * (w % 2)) & 0xff, _tmp[0] = (OPJ_UINT8) (h * w + 54 + 1024 + h * (w % 2)) & 0xff;
(OPJ_UINT8) ((h * w + 54 + 1024 + h * (w % 2)) >> 8) & 0xff, _tmp[1] = (OPJ_UINT8) ((h * w + 54 + 1024 + h * (w % 2)) >> 8) & 0xff;
(OPJ_UINT8) ((h * w + 54 + 1024 + h * (w % 2)) >> 16) & 0xff, _tmp[2] = (OPJ_UINT8) ((h * w + 54 + 1024 + h * (w % 2)) >> 16) & 0xff;
(OPJ_UINT8) ((h * w + 54 + 1024 + w * (w % 2)) >> 24) & 0xff}; _tmp[3] = (OPJ_UINT8) ((h * w + 54 + 1024 + w * (w % 2)) >> 24) & 0xff;
c_vector_push_back(outfile, _1331, 0, 4); c_vector_push_back(outfile, _tmp, 0, 4);
OPJ_UINT8 _1336[4] = {(0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff,
((0) >> 24) & 0xff};
c_vector_push_back(outfile, _1336, 0, 4);
OPJ_UINT8 _1340[4] = {(54 + 1024) & 0xff, ((54 + 1024) >> 8) & 0xff, _tmp[0] = (0) & 0xff;
((54 + 1024) >> 16) & 0xff, _tmp[1] = ((0) >> 8) & 0xff;
((54 + 1024) >> 24) & 0xff}; _tmp[2] = ((0) >> 16) & 0xff;
c_vector_push_back(outfile, _1340, 0, 4); _tmp[3] = ((0) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
/* INFO HEADER */ _tmp[0] = (54 + 1024) & 0xff;
/* ------------- */ _tmp[1] = ((54 + 1024) >> 8) & 0xff;
OPJ_UINT8 _1347[4] = {(40) & 0xff, ((40) >> 8) & 0xff, ((40) >> 16) & 0xff, _tmp[2] = ((54 + 1024) >> 16) & 0xff;
((40) >> 24) & 0xff}; _tmp[3] = ((54 + 1024) >> 24) & 0xff;
c_vector_push_back(outfile, _1347, 0, 4); c_vector_push_back(outfile, _tmp, 0, 4);
OPJ_UINT8 _1350[4] = {(OPJ_UINT8) ((w) & 0xff),
(OPJ_UINT8) ((w) >> 8) & 0xff, /* INFO HEADER */
(OPJ_UINT8) ((w) >> 16) & 0xff, /* ------------- */
(OPJ_UINT8) ((w) >> 24) & 0xff}; _tmp[0] = (40) & 0xff;
c_vector_push_back(outfile, _1350, 0, 4); _tmp[1] = ((40) >> 8) & 0xff;
OPJ_UINT8 _1355[4] = {(OPJ_UINT8) ((h) & 0xff), _tmp[2] = ((40) >> 16) & 0xff;
(OPJ_UINT8) ((h) >> 8) & 0xff, _tmp[3] = ((40) >> 24) & 0xff;
(OPJ_UINT8) ((h) >> 16) & 0xff, c_vector_push_back(outfile, _tmp, 0, 4);
(OPJ_UINT8) ((h) >> 24) & 0xff}; _tmp[0] = (OPJ_UINT8) ((w) & 0xff);
c_vector_push_back(outfile, _1355, 0, 4); _tmp[1] = (OPJ_UINT8) ((w) >> 8) & 0xff;
OPJ_UINT8 _1360[4] = {(1) & 0xff, ((1) >> 8) & 0xff, (8) & 0xff, ((8) >> 8) & 0xff}; _tmp[2] = (OPJ_UINT8) ((w) >> 16) & 0xff;
c_vector_push_back(outfile, _1360, 0, 4); _tmp[3] = (OPJ_UINT8) ((w) >> 24) & 0xff;
OPJ_UINT8 _1363[4] = {(0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, c_vector_push_back(outfile, _tmp, 0, 4);
((0) >> 24) & 0xff}; _tmp[0] = (OPJ_UINT8) ((h) & 0xff);
c_vector_push_back(outfile, _1363, 0, 4); _tmp[1] = (OPJ_UINT8) ((h) >> 8) & 0xff;
OPJ_UINT8 _1366[4] = {(OPJ_UINT8) (h * w + h * (w % 2)) & 0xff, _tmp[2] = (OPJ_UINT8) ((h) >> 16) & 0xff;
(OPJ_UINT8) ((h * w + h * (w % 2)) >> 8) & 0xff, _tmp[3] = (OPJ_UINT8) ((h) >> 24) & 0xff;
(OPJ_UINT8) ((h * w + h * (w % 2)) >> 16) & 0xff, c_vector_push_back(outfile, _tmp, 0, 4);
(OPJ_UINT8) ((h * w + h * (w % 2)) >> 24) & 0xff};
c_vector_push_back(outfile, _1366, 0, 4); _tmp[0] = (1) & 0xff;
OPJ_UINT8 _1371[4] = {(7834) & 0xff, ((7834) >> 8) & 0xff, _tmp[1] = ((1) >> 8) & 0xff;
((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff}; _tmp[2] = (8) & 0xff;
c_vector_push_back(outfile, _1371, 0, 4); _tmp[3] = ((8) >> 8) & 0xff;
OPJ_UINT8 _1374[4] = {(7834) & 0xff, ((7834) >> 8) & 0xff, c_vector_push_back(outfile, _tmp, 0, 4);
((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff};
c_vector_push_back(outfile, _1374, 0, 4); _tmp[0] = (0) & 0xff;
OPJ_UINT8 _1377[4] = {(256) & 0xff, ((256) >> 8) & 0xff, _tmp[1] = ((0) >> 8) & 0xff;
((256) >> 16) & 0xff, ((256) >> 24) & 0xff}; _tmp[2] = ((0) >> 16) & 0xff;
c_vector_push_back(outfile, _1377, 0, 4); _tmp[3] = ((0) >> 24) & 0xff;
OPJ_UINT8 _1380[4] = {(256) & 0xff, ((256) >> 8) & 0xff, c_vector_push_back(outfile, _tmp, 0, 4);
((256) >> 16) & 0xff, ((256) >> 24) & 0xff}; _tmp[0] = (OPJ_UINT8) (h * w + h * (w % 2)) & 0xff;
c_vector_push_back(outfile, _1380, 0, 4); _tmp[1] = (OPJ_UINT8) ((h * w + h * (w % 2)) >> 8) & 0xff;
_tmp[2] = (OPJ_UINT8) ((h * w + h * (w % 2)) >> 16) & 0xff;
_tmp[3] = (OPJ_UINT8) ((h * w + h * (w % 2)) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (7834) & 0xff;
_tmp[1] = ((7834) >> 8) & 0xff;
_tmp[2] = ((7834) >> 16) & 0xff;
_tmp[3] = ((7834) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (7834) & 0xff;
_tmp[1] = ((7834) >> 8) & 0xff;
_tmp[2] = ((7834) >> 16) & 0xff;
_tmp[3] = ((7834) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (256) & 0xff;
_tmp[1] = ((256) >> 8) & 0xff;
_tmp[2] = ((256) >> 16) & 0xff;
_tmp[3] = ((256) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp, 0, 4);
_tmp[0] = (256) & 0xff;
_tmp[1] = ((256) >> 8) & 0xff;
_tmp[2] = ((256) >> 16) & 0xff;
_tmp[3] = ((256) >> 24) & 0xff;
c_vector_push_back(outfile, _tmp,
0, 4);
if (image->comps[0].prec > 8) { if (image->comps[0].prec > 8) {
adjustR = (int) image->comps[0].prec - 8; adjustR = (int) image->comps[0].prec - 8;
@ -1389,8 +1443,12 @@ int imagetobmp_c_vector(opj_image_t *image, c_vector *outfile) {
} }
for (i = 0; i < 256; i++) { for (i = 0; i < 256; i++) {
OPJ_UINT8 _1392[4] = {i, i, i, 0}; _tmp[0] = i;
c_vector_push_back(outfile, _1392, 0, 4); _tmp[1] = i;
_tmp[2] = i;
_tmp[3] = 0;
c_vector_push_back(outfile, _tmp,
0, 4);
} }
for (i = 0; i < w * h; i++) { for (i = 0; i < w * h; i++) {
@ -1407,8 +1465,7 @@ int imagetobmp_c_vector(opj_image_t *image, c_vector *outfile) {
r = 0; r = 0;
} }
OPJ_UINT8 _1410[1] = {(OPJ_UINT8) r}; c_vector_push_back(outfile, &r, 0, 1);
c_vector_push_back(outfile, _1410, 0, 1);
if ((i + 1) % w == 0) { if ((i + 1) % w == 0) {
for (pad = (w % 4) ? (4 - w % 4) : 0; pad > 0; pad--) { /* ADD */ for (pad = (w % 4) ? (4 - w % 4) : 0; pad > 0; pad--) { /* ADD */

View File

@ -970,7 +970,7 @@ OPJ_FLOAT64 opj_clock(void) {
#elif defined(__linux) #elif defined(__linux)
struct timespec ts; struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts); clock_gettime(CLOCK_REALTIME, &ts);
return ((OPJ_FLOAT64)ts.tv_sec + (OPJ_FLOAT64)ts.tv_nsec * 1e-9); return ((OPJ_FLOAT64) ts.tv_sec + (OPJ_FLOAT64) ts.tv_nsec * 1e-9);
#else #else
/* Unix : use resource usage */ /* Unix : use resource usage */
/* FIXME: this counts the total CPU time, instead of the user perceived time */ /* FIXME: this counts the total CPU time, instead of the user perceived time */
@ -1236,6 +1236,15 @@ int main(int argc, char **argv) {
OPJ_UINT32 numDecompressedImages = 0; OPJ_UINT32 numDecompressedImages = 0;
OPJ_UINT32 cp_reduce; OPJ_UINT32 cp_reduce;
FILE *file;
size_t size;
size_t _size;
int64_t _size1 = 0;
c_vector *v = NULL;
c_vector *outfile = NULL;
unsigned char *buf = NULL;
/* set decoding parameters to default values */ /* set decoding parameters to default values */
set_default_parameters(&parameters); set_default_parameters(&parameters);
@ -1316,7 +1325,7 @@ int main(int argc, char **argv) {
/* read the input file and put it in memory */ /* read the input file and put it in memory */
/* ---------------------------------------- */ /* ---------------------------------------- */
FILE *file = fopen(parameters.infile, "rb"); file = fopen(parameters.infile, "rb");
if (!file) { if (!file) {
fprintf(stderr, "ERROR -> failed to create the stream from the file %s\n", fprintf(stderr, "ERROR -> failed to create the stream from the file %s\n",
parameters.infile); parameters.infile);
@ -1325,22 +1334,26 @@ int main(int argc, char **argv) {
} }
fseek(file, 0, SEEK_SET); fseek(file, 0, SEEK_SET);
fseek(file, 0, SEEK_END); fseek(file, 0, SEEK_END);
size_t size = ftell(file); _size1 = ftell(file);
if(_size1<0){
size = (size_t) -_size1;
} else{
size = (size_t) _size1;
}
fseek(file, 0, SEEK_SET); fseek(file, 0, SEEK_SET);
unsigned char *buf = (unsigned char *) malloc(size * sizeof(unsigned char)); buf = (unsigned char *) malloc(size * sizeof(unsigned char));
if (!buf) { if (!buf) {
fclose(file); fclose(file);
failed = 1; failed = 1;
goto fin; goto fin;
} }
size_t _size = fread(buf, 1, size, file); _size = fread(buf, 1, size, file);
fclose(file); fclose(file);
if (_size != size) { if (_size != size) {
free(buf); free(buf);
failed = 1; failed = 1;
goto fin; goto fin;
} }
c_vector *v = NULL;
c_vector_init(&v); c_vector_init(&v);
if (v == NULL) { if (v == NULL) {
free(buf); free(buf);
@ -1627,7 +1640,6 @@ int main(int argc, char **argv) {
goto fin; goto fin;
} }
} }
c_vector *outfile = NULL;
c_vector_init(&outfile); c_vector_init(&outfile);
if (outfile == NULL) { if (outfile == NULL) {
fprintf(stderr, "[ERROR] Outfile c_vector\n"); fprintf(stderr, "[ERROR] Outfile c_vector\n");
@ -1649,7 +1661,7 @@ int main(int argc, char **argv) {
} }
break; break;
case RAW_DFMT: /* RAW */ case RAW_DFMT: /* RAW */
if (imagetoraw_c_vector(image, outfile,OPJ_TRUE)) { if (imagetoraw_c_vector(image, outfile, OPJ_TRUE)) {
fprintf(stderr, "[ERROR] Error generating raw file. Outfile %s not generated\n", fprintf(stderr, "[ERROR] Error generating raw file. Outfile %s not generated\n",
parameters.outfile); parameters.outfile);
failed = 1; failed = 1;
@ -1659,7 +1671,7 @@ int main(int argc, char **argv) {
break; break;
case RAWL_DFMT: /* RAWL */ case RAWL_DFMT: /* RAWL */
if (imagetoraw_c_vector(image, outfile,OPJ_FALSE)) { if (imagetoraw_c_vector(image, outfile, OPJ_FALSE)) {
fprintf(stderr, fprintf(stderr,
"[ERROR] Error generating rawl file. Outfile %s not generated\n", "[ERROR] Error generating rawl file. Outfile %s not generated\n",
parameters.outfile); parameters.outfile);

View File

@ -31,7 +31,7 @@ int c_vector_init(c_vector **cVector) {
* @return * @return
*/ */
size_t c_vector_size(c_vector *cVector) { size_t c_vector_size(c_vector *cVector) {
if (!cVector)return -1; if (!cVector)return 0;
return cVector->total; return cVector->total;
} }
@ -39,10 +39,11 @@ size_t c_vector_size(c_vector *cVector) {
* resize c_vector * resize c_vector
* @param cVector * @param cVector
*/ */
static int c_vector_resize(c_vector *cVector, size_t count) { int c_vector_resize(c_vector *cVector, size_t count) {
void *items = NULL;
if (!cVector)return -1; if (!cVector)return -1;
if (cVector->items) { if (cVector->items) {
void *items = (void *) realloc(cVector->items, sizeof(void) * count); items = (void *) realloc(cVector->items, sizeof(void) * count);
if (items) { if (items) {
cVector->items = items; cVector->items = items;
cVector->total = count; cVector->total = count;
@ -68,13 +69,14 @@ static int c_vector_resize(c_vector *cVector, size_t count) {
* @param count * @param count
*/ */
int c_vector_push_back(c_vector *cVector, void *data, size_t offset, size_t count) { int c_vector_push_back(c_vector *cVector, void *data, size_t offset, size_t count) {
size_t index = cVector->total; size_t index, new_size;
size_t new_size = count + cVector->total; index = cVector->total;
new_size = count + cVector->total;
if (c_vector_resize(cVector, new_size) < 0) { if (c_vector_resize(cVector, new_size) < 0) {
// error realloc // error realloc
return -1; return -1;
} }
memcpy(&(cVector->items[index]), &data[offset], count); memcpy(cVector->items + index, data + offset, count);
return 0; return 0;
} }
@ -98,10 +100,10 @@ int c_vector_push_back_zero(c_vector *cVector) {
*/ */
size_t c_vector_set(c_vector *cVector, size_t index, void *data, size_t offset, size_t count) { size_t c_vector_set(c_vector *cVector, size_t index, void *data, size_t offset, size_t count) {
if (cVector->total <= index || index + count >= cVector->total) { if (cVector->total <= index || index + count >= cVector->total) {
return -1; return 0;
} }
memcpy(&(cVector->items[index]), &data[offset], count); memcpy(cVector->items + index, data + offset, count);
return 0; return count;
} }
/** /**
@ -114,21 +116,25 @@ size_t c_vector_set(c_vector *cVector, size_t index, void *data, size_t offset,
* @return * @return
*/ */
size_t c_vector_insert(c_vector *cVector, size_t index, void *data, size_t offset, size_t count) { size_t c_vector_insert(c_vector *cVector, size_t index, void *data, size_t offset, size_t count) {
size_t last_total;
size_t len;
size_t i;
size_t new_size;
if (cVector->total <= index) { if (cVector->total <= index) {
return -1; return 0;
} }
size_t last_total = cVector->total; last_total = cVector->total;
size_t new_size = count + cVector->total; new_size = count + cVector->total;
if (c_vector_resize(cVector, new_size) < 0) { if (c_vector_resize(cVector, new_size) < 0) {
// error realloc // error realloc
return -1; return 0;
} }
size_t len = last_total - index; len = last_total - index;
for (size_t i = 1; i <= len; i++) { for (i = 1; i <= len; i++) {
memcpy(&cVector->items[new_size - i], &cVector->items[last_total - i], 1); memcpy(cVector->items + new_size - i, cVector->items + last_total - i, 1);
} }
memcpy(&(cVector->items[index]), &data[offset], count); memcpy(cVector->items + index, data + offset, count);
return 0; return count;
} }
/** /**
@ -141,7 +147,7 @@ void *c_vector_get(c_vector *cVector, size_t offset) {
if (cVector->total <= offset) { if (cVector->total <= offset) {
return NULL; return NULL;
} }
return &cVector->items[offset]; return cVector->items + offset;
} }
/** /**
@ -161,15 +167,15 @@ void *c_vector_data(c_vector *cVector) {
*/ */
size_t c_vector_delete(c_vector *cVector, size_t offset, size_t count) { size_t c_vector_delete(c_vector *cVector, size_t offset, size_t count) {
if (cVector->total <= offset) { if (cVector->total <= offset) {
return -1; return 0;
} }
if (count + offset >= cVector->total) { if (count + offset >= cVector->total) {
cVector->total = cVector->total - offset; cVector->total = cVector->total - offset;
return 0; return count;
} }
memcpy(&(cVector->items[offset]), &(cVector->items[offset + count]), cVector->total - count - offset); memcpy(cVector->items + offset, cVector->items + offset + count, cVector->total - count - offset);
cVector->total = cVector->total - count; cVector->total = cVector->total - count;
return 0; return count;
} }
/** /**
@ -211,7 +217,7 @@ size_t c_vector_read(void *p_buffer, size_t p_nb_bytes, c_vector *v) {
if (v->total - v->index < p_nb_bytes) { if (v->total - v->index < p_nb_bytes) {
p_nb_bytes = v->total - v->index; p_nb_bytes = v->total - v->index;
} }
memcpy(p_buffer, &(v->items[v->index]), p_nb_bytes); memcpy(p_buffer, v->items + v->index, p_nb_bytes);
v->index += p_nb_bytes; v->index += p_nb_bytes;
return p_nb_bytes; return p_nb_bytes;
} }

View File

@ -16,20 +16,20 @@ typedef struct c_vector c_vector;
* init * init
* @param cVector * @param cVector
*/ */
int c_vector_init(c_vector **cVector); extern int c_vector_init(c_vector **cVector);
/** /**
* get c_vector size * get c_vector size
* @param cVector * @param cVector
* @return * @return
*/ */
size_t c_vector_size(c_vector *cVector); extern size_t c_vector_size(c_vector *cVector);
/** /**
* resize c_vector * resize c_vector
* @param cVector * @param cVector
*/ */
static int c_vector_resize(c_vector *cVector, size_t count); extern int c_vector_resize(c_vector *cVector, size_t count);
/** /**
* push back c_vector * push back c_vector
@ -38,14 +38,14 @@ static int c_vector_resize(c_vector *cVector, size_t count);
* @param offset * @param offset
* @param count * @param count
*/ */
int c_vector_push_back(c_vector *cVector, void *data, size_t offset, size_t count); extern int c_vector_push_back(c_vector *cVector, void *data, size_t offset, size_t count);
/** /**
* push zero to c_vector * push zero to c_vector
* @param cVector * @param cVector
* @return * @return
*/ */
int c_vector_push_back_zero(c_vector *cVector); extern int c_vector_push_back_zero(c_vector *cVector);
/** /**
* set data * set data
@ -56,7 +56,7 @@ int c_vector_push_back_zero(c_vector *cVector);
* @param count * @param count
* @return * @return
*/ */
size_t c_vector_set(c_vector *cVector, size_t index, void *data, size_t offset, size_t count); extern size_t c_vector_set(c_vector *cVector, size_t index, void *data, size_t offset, size_t count);
/** /**
* insert data * insert data
@ -67,7 +67,7 @@ size_t c_vector_set(c_vector *cVector, size_t index, void *data, size_t offset,
* @param count * @param count
* @return * @return
*/ */
size_t c_vector_insert(c_vector *cVector, size_t index, void *data, size_t offset, size_t count); extern size_t c_vector_insert(c_vector *cVector, size_t index, void *data, size_t offset, size_t count);
/** /**
* get c_vector data * get c_vector data
@ -75,14 +75,14 @@ size_t c_vector_insert(c_vector *cVector, size_t index, void *data, size_t offse
* @param offset * @param offset
* @return * @return
*/ */
void *c_vector_get(c_vector *cVector, size_t offset); extern void *c_vector_get(c_vector *cVector, size_t offset);
/** /**
* get c_vector data * get c_vector data
* @param cVector * @param cVector
* @return * @return
*/ */
void *c_vector_data(c_vector *cVector); extern void *c_vector_data(c_vector *cVector);
/** /**
* c_vector delete * c_vector delete
@ -90,21 +90,21 @@ void *c_vector_data(c_vector *cVector);
* @param offset * @param offset
* @param count * @param count
*/ */
size_t c_vector_delete(c_vector *cVector, size_t offset, size_t count); extern size_t c_vector_delete(c_vector *cVector, size_t offset, size_t count);
/** /**
* free c_vector * free c_vector
* @param cVector * @param cVector
*/ */
void c_vector_free(c_vector **cVector); extern void c_vector_free(c_vector **cVector);
int c_vector_seek(c_vector *cVector, size_t offset, int whence); extern int c_vector_seek(c_vector *cVector, size_t offset, int whence);
int c_vector_seekg(size_t offset,c_vector *cVector); extern int c_vector_seekg(size_t offset,c_vector *cVector);
int c_vector_skip(size_t offset,c_vector *cVector); extern int c_vector_skip(size_t offset,c_vector *cVector);
size_t c_vector_read(void *p_buffer, size_t p_nb_bytes, c_vector *v); extern size_t c_vector_read(void *p_buffer, size_t p_nb_bytes, c_vector *v);
size_t c_vector_write(void *p_buffer, size_t p_nb_bytes, c_vector *v); extern size_t c_vector_write(void *p_buffer, size_t p_nb_bytes, c_vector *v);
#endif //CLANGTOOLS_VECTOR_H #endif //CLANGTOOLS_VECTOR_H