Pawel Netzel - software
Repositories
Help
Report an Issue
plGeoAdaptels
Code
Commits
Branches
Tags
Search
Tree:
e8ae190
Branches
Tags
master
plGeoAdaptels
seeds.c
new distances
netzel
commited
e8ae190
at 2024-03-25 09:42:52
seeds.c
Blame
History
Raw
#include <stdlib.h> #include <string.h> #include <stdio.h> #include "seeds.h" #define SEEDSINCREMENT 10000000 SEEDS* create_seeds(long MAX_SIZE) { long init_size = SEEDSINCREMENT; SEEDS* seeds = (SEEDS *)malloc(sizeof(SEEDS)); seeds->seeds = (SEED *)malloc(init_size*sizeof(SEED)); seeds->N = 0; seeds->base = 0; seeds->max_size = init_size; seeds->MAX_SIZE = MAX_SIZE; return seeds; } void free_seeds(SEEDS *seeds) { free(seeds->seeds); free(seeds); } void insert_seed(SEEDS *seeds, long p, int x, int y, long index) { int i = seeds->N - seeds->base; seeds->seeds[i].x = x; seeds->seeds[i].y = y; seeds->seeds[i].index = index; seeds->N++; if (seeds->N - seeds->base >= seeds->max_size) { // to do!!!!! if(p - seeds->base > SEEDSINCREMENT) { memmove(&(seeds->seeds[0]),&(seeds->seeds[p - seeds->base]),(seeds->N - p)*sizeof(SEED)); seeds->base = p; } else { seeds->max_size += SEEDSINCREMENT; if(seeds->max_size > seeds->MAX_SIZE) seeds->max_size = seeds->MAX_SIZE; seeds->seeds = (SEED *)realloc(seeds->seeds, seeds->max_size*sizeof(SEED)); } } } long get_seed_index(SEEDS* seeds, long i) { return seeds->seeds[i - seeds->base].index; } int get_seed_x(SEEDS* seeds, long i) { return seeds->seeds[i - seeds->base].x; } int get_seed_y(SEEDS* seeds, long i) { return seeds->seeds[i - seeds->base].y; } SEED* get_seed(SEEDS* seeds, long i) { return &(seeds->seeds[i - seeds->base]); }