From 2125f01f97abfe343fc5e0cc078bf1d081b2e441 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Fri, 20 May 2016 20:30:15 +0000 Subject: Initial commit --- src/array.c | 227 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 src/array.c (limited to 'src/array.c') diff --git a/src/array.c b/src/array.c new file mode 100644 index 0000000..772cb39 --- /dev/null +++ b/src/array.c @@ -0,0 +1,227 @@ +/* +Copyright 2016 Ian Jauslin + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +#include "array.h" +#include +#include +#include +#include "errors.h" +#include "polynomial.h" +#include "utils.h" + +//-------------------------------------------------- +// +// integer array (array_int) +// +//-------------------------------------------------- +#include "array_int.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// unsigned integer array (array_uint) +// +//-------------------------------------------------- +#include "array_uint.h" +#include "array_base.c" + +//-------------------------------------------------- +// +// double array (array_double) +// +//-------------------------------------------------- +#include "array_double.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// long double array (array_ldouble) +// +//-------------------------------------------------- +#include "array_ldouble.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// MPFR array (array_mpfr) +// +//-------------------------------------------------- +#include "array_mpfr.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// array of MPFR arrays (array_2_mpfr) +// +//-------------------------------------------------- +#include "array_2_mpfr.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// character array (array_char) +// +//-------------------------------------------------- +#include "array_char.h" +#include "array_base.c" + +// append a char* +int array_char_append_str(char* str, array_char* output){ + char* ptr; + for (ptr=str;*ptr!='\0';ptr++){ + array_char_append(*ptr, output); + } + return(0); +} + +// convert to char* +int array_char_to_str(array_char input, char** output){ + unsigned int i; + (*output)=calloc(input.length+1,sizeof(char)); + for(i=0;ivalues[input->length-1]!='\0'){ + if(input->length==input->memory){ + array_char_resize(input,input->length+1); + } + // add final '\0' + input->values[input->length]='\0'; + } + return(input->values); +} + +// convert from char* +int str_to_array_char(char* str, array_char* output){ + char* ptr; + unsigned int str_len=0; + for(ptr=str;*ptr!='\0';ptr++){ + str_len++; + } + array_char_init(output, str_len); + for(ptr=str;*ptr!='\0';ptr++){ + array_char_append(*ptr,output); + } + return(0); +} + +// compare an array_char and a char* +int array_char_cmp_str(array_char array_char, char* str){ + unsigned int j; + for(j=0;jsize){ + // resize + free(out_str); + // +1 for '\0' + size=extra_size+1; + out_str=calloc(size,sizeof(char)); + // read format again + va_start(vaptr, fmt); + vsnprintf(out_str,size,fmt,vaptr); + va_end(vaptr); + } + + // write to char array + for(ptr=out_str;*ptr!='\0';ptr++){ + array_char_append(*ptr, output); + } + + free(out_str); + + return(0); +} + + +//-------------------------------------------------- +// +// string array (array_str) +// +//-------------------------------------------------- +#include "array_str.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// mpfr polynomial array (array_polynomial_mpfr) +// +//-------------------------------------------------- +#include "array_polynomial_mpfr.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// double polynomial array (array_polynomial_double) +// +//-------------------------------------------------- +#include "array_polynomial_double.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// long double polynomial array (array_polynomial_ldouble) +// +//-------------------------------------------------- +#include "array_polynomial_ldouble.h" +#include "array_base.c" + + +//-------------------------------------------------- +// +// pthread_t array (array_pthread_t) +// +//-------------------------------------------------- +#include "array_pthread_t.h" +#include "array_base.c" -- cgit v1.2.3-70-g09d2