Skip to content
Snippets Groups Projects
Commit 766185c5 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Added initial version of cdi_query.c.

parent 150fe719
No related branches found
No related tags found
1 merge request!34Version 2.2.0
Pipeline #24013 failed
......@@ -729,72 +729,6 @@ defineCompress(const char *arg)
fprintf(stderr, "%s compression unsupported!\n", arg);
}
typedef struct CdiQuery
{
int numNames;
char **names;
} CdiQuery;
void
cdiQueryInit(CdiQuery *query)
{
query->numNames = 0;
query->names = NULL;
}
CdiQuery *
cdiQueryCreate()
{
CdiQuery *query = (CdiQuery*) malloc(sizeof(CdiQuery));
cdiQueryInit(query);
return query;
}
void
cdiQueryDelete(CdiQuery *query)
{
if (query->numNames && query)
{
for (int i = 0; i < query->numNames; ++i) free(query->names[i]);
free(query);
}
}
void
cdiQuerySetNames(CdiQuery *query, int numNames, char **names)
{
if (numNames)
{
query->numNames = numNames;
query->names = (char**)malloc(numNames * sizeof(char*));
for (int i = 0; i < numNames; ++i) query->names[i] = strdup(names[i]);
}
}
CdiQuery *
cdiQueryClone(CdiQuery *query)
{
CdiQuery *queryOut = cdiQueryCreate();
if (query)
{
cdiQuerySetNames(queryOut, query->numNames, query->names);
}
return queryOut;
}
void
cdiQueryPrint(CdiQuery *query)
{
if (query->numNames)
{
printf("Names:");
for (int i = 0; i < query->numNames; ++i) printf(" %s", query->names[i]);
printf("\n");
}
}
int
main(int argc, char *argv[])
{
......
......@@ -47,6 +47,7 @@ libcdi_la_SOURCES = \
cdi_datetime.h \
cdi_error.c \
cdi_limits.h \
cdi_query.c \
cdi_util.c \
cgribex.h \
cgribexlib.c \
......
......@@ -1315,6 +1315,21 @@ void vlistDefVarProductDefinitionTemplate(int vlistID, int varID, int productDef
extern "C" {
#endif
// CDI query interface
typedef struct CdiQuery
{
int numNames;
char **names;
} CdiQuery;
CdiQuery *cdiQueryCreate();
void cdiQueryDelete(CdiQuery *query);
void cdiQuerySetNames(CdiQuery *query, int numNames, char **names);
void cdiQueryPrint(CdiQuery *query);
// CDI interface for paraview vtkCDIReader.cxx
#include "cdi_datetime.h"
void taxisDefRdatetime(int taxisID, CdiDateTime rdatetime);
......@@ -1333,6 +1348,7 @@ int64_t julday_to_date(int calendar, int64_t julday);
int time_to_sec(int time); // Used in paraview vtkCDIReader.cxx
int sec_to_time(int secofday);
// CDI projection parameter interface
struct CDI_GridProjParams
{
......
#include <string.h>
#include <stdlib.h>
#include "cdi.h"
void
cdiQueryInit(CdiQuery *query)
{
query->numNames = 0;
query->names = NULL;
}
CdiQuery *
cdiQueryCreate()
{
CdiQuery *query = (CdiQuery*) malloc(sizeof(CdiQuery));
cdiQueryInit(query);
return query;
}
void
cdiQueryDelete(CdiQuery *query)
{
if (query->numNames && query)
{
for (int i = 0; i < query->numNames; ++i) free(query->names[i]);
free(query);
}
}
void
cdiQuerySetNames(CdiQuery *query, int numNames, char **names)
{
if (numNames)
{
query->numNames = numNames;
query->names = (char**)malloc(numNames * sizeof(char*));
for (int i = 0; i < numNames; ++i) query->names[i] = strdup(names[i]);
}
}
CdiQuery *
cdiQueryClone(CdiQuery *query)
{
CdiQuery *queryOut = cdiQueryCreate();
if (query)
{
cdiQuerySetNames(queryOut, query->numNames, query->names);
}
return queryOut;
}
void
cdiQueryPrint(CdiQuery *query)
{
if (query->numNames)
{
printf("Names:");
for (int i = 0; i < query->numNames; ++i) printf(" %s", query->names[i]);
printf("\n");
}
}
......@@ -109,6 +109,7 @@ files="async_worker.c \
cdi_error.c \
cdi_datetime.c \
cdi_int.c \
cdi_query.c \
cdi_util.c \
cgribexlib.c \
cksum.c \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment