IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 15, 2008, 10:30:59 AM (18 years ago)
Author:
eugene
Message:

completely deprecate config->where; make all command-line handling consistent; move nearly all sql into share/*.sql; ensure consistency between args supplied and used

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pxtools.h

    r18366 r18561  
    2222
    2323#include <stdio.h>
     24#include <string.h>   // for strcmp and strncmp
    2425#include <strings.h>  // for strcasecmp
    2526#include <unistd.h>   // for unlink
     27
     28// #include <stdlib.h>
     29// #include <stdint.h>
     30// #include <inttypes.h>
     31
    2632#include <pslib.h>
    2733#include <psmodules.h>
     
    253259  PXOPT_COPY_PRIMITIVE(from, to, psU64, U64, oldname, newname, comment)
    254260
     261
     262/*** these PXOPT_ADD_WHERE macros are used to construct the default sql elements ***/
     263
     264#define PXOPT_ADD_WHERE_STR(name) \
     265{ \
     266    psString str = NULL; \
     267    bool status = false; \
     268    if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \
     269        if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\
     270            psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     271            psFree(config); \
     272            return NULL; \
     273        } \
     274    } \
     275}
     276
     277#define PXOPT_ADD_WHERE_STR_ALIAS(name,realname) \
     278{ \
     279    psString str = NULL; \
     280    bool status = false; \
     281    if ((str = psMetadataLookupStr(&status, config->args, name))) { \
     282        if (!psMetadataAddStr(config->where, PS_LIST_TAIL, realname, 0, "==", str)) {\
     283            psError(PS_ERR_UNKNOWN, false, "failed to add item %s", name); \
     284            psFree(config); \
     285            return NULL; \
     286        } \
     287    } \
     288}
     289
     290#define PXOPT_ADD_WHERE_S16(name) \
     291{ \
     292    psS16 s16 = 0; \
     293    bool status = false; \
     294    if ((s16= psMetadataLookupS16(&status, config->args, "-" #name))) { \
     295        if (!psMetadataAddS16(config->where, PS_LIST_TAIL, #name, 0, "==", s16)) { \
     296            psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     297            psFree(config); \
     298            return NULL; \
     299        } \
     300    } \
     301}
     302
     303#define PXOPT_ADD_WHERE_BOOL(name) \
     304{ \
     305    bool value = false;  \
     306    bool status = false; \
     307    if ((value = psMetadataLookupBool(&status, config->args, "-" #name))) { \
     308        if (!psMetadataAddBool(config->where, PS_LIST_TAIL, #name, 0, "==", value)) { \
     309            psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     310            psFree(config); \
     311            return NULL; \
     312        } \
     313    } \
     314}
     315
     316#define PXOPT_ADD_WHERE_S32(name) \
     317{ \
     318    psS32 s32 = 0; \
     319    bool status = false; \
     320    if ((s32= psMetadataLookupS32(&status, config->args, "-" #name))) { \
     321        if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \
     322            psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     323            psFree(config); \
     324            return NULL; \
     325        } \
     326    } \
     327}
     328
     329#define PXOPT_ADD_WHERE_S64(name) \
     330{ \
     331    psS64 s64 = 0; \
     332    bool status = false; \
     333    if ((s64= psMetadataLookupS64(&status, config->args, "-" #name))) { \
     334        if (!psMetadataAddS64(config->where, PS_LIST_TAIL, #name, 0, "==", s64)) { \
     335            psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     336            psFree(config); \
     337            return NULL; \
     338        } \
     339    } \
     340}
     341
     342#define PXOPT_ADD_WHERE_F32(name) \
     343{ \
     344    psF32 var = 0; \
     345    bool status = false; \
     346    if ((var = psMetadataLookupF32(&status, config->args, "-" #name))) { \
     347        if (!isnan(var)) { \
     348            if (!psMetadataAddF32(config->where, PS_LIST_TAIL, #name, 0, "==", var)) { \
     349                psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     350                psFree(config); \
     351                return NULL; \
     352            } \
     353        } \
     354    } \
     355}
     356
     357#define PXOPT_ADD_WHERE_F64(name) \
     358{ \
     359    psF64 var = 0; \
     360    bool status = false; \
     361    if ((var = psMetadataLookupF64(&status, config->args, "-" #name))) { \
     362        if (!isnan(var))  { \
     363            if (!psMetadataAddF64(config->where, PS_LIST_TAIL, #name, 0, "==", var)) { \
     364                psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     365                psFree(config); \
     366                return NULL; \
     367            } \
     368        } \
     369    } \
     370}
     371
     372#define PXOPT_ADD_WHERE_BOOL_ALIAS(flag,name)   \
     373{ \
     374    bool value = 0; \
     375    bool status = false; \
     376    if ((value = psMetadataLookupBool(&status, config->args, flag))) {  \
     377        if (!psMetadataAddBOOL(config->where, PS_LIST_TAIL, name, 0, "==", value)) { \
     378            psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \
     379            psFree(config); \
     380            return NULL; \
     381        } \
     382    } \
     383}
     384
     385#define PXOPT_ADD_WHERE_S16_ALIAS(flag,name)    \
     386{ \
     387    psS16 s16 = 0; \
     388    bool status = false; \
     389    if ((s16= psMetadataLookupS16(&status, config->args, flag))) {      \
     390        if (!psMetadataAddS16(config->where, PS_LIST_TAIL, name, 0, "==", s16)) { \
     391            psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \
     392            psFree(config); \
     393            return NULL; \
     394        } \
     395    } \
     396}
     397
     398#define PXOPT_ADD_WHERE_S32_ALIAS(flag,name)    \
     399{ \
     400    psS32 s32 = 0; \
     401    bool status = false; \
     402    if ((s32= psMetadataLookupS32(&status, config->args, flag))) {      \
     403        if (!psMetadataAddS32(config->where, PS_LIST_TAIL, name, 0, "==", s32)) { \
     404            psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \
     405            psFree(config); \
     406            return NULL; \
     407        } \
     408    } \
     409}
     410
     411#define PXOPT_ADD_WHERE_S64_ALIAS(flag,name)    \
     412{ \
     413    psS64 s64 = 0; \
     414    bool status = false; \
     415    if ((s64= psMetadataLookupS64(&status, config->args, flag))) {      \
     416        if (!psMetadataAddS64(config->where, PS_LIST_TAIL, name, 0, "==", s64)) { \
     417            psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \
     418            psFree(config); \
     419            return NULL; \
     420        } \
     421    } \
     422}
     423
     424#define PXOPT_ADD_WHERE_F32_ALIAS(flag,name)    \
     425{ \
     426    psF32 var = 0; \
     427    bool status = false; \
     428    if ((var = psMetadataLookupF32(&status, config->args, flag))) {     \
     429        if (!isnan(var))  { \
     430            if (!psMetadataAddF32(config->where, PS_LIST_TAIL, name, 0, "==", var)) { \
     431                psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \
     432                psFree(config); \
     433                return NULL; \
     434            } \
     435        } \
     436    } \
     437}
     438
     439#define PXOPT_ADD_WHERE_F64_ALIAS(flag,name)    \
     440{ \
     441    psF64 var = 0; \
     442    bool status = false; \
     443    if ((var = psMetadataLookupF64(&status, config->args, flag))) {     \
     444        if (!isnan(var))  { \
     445            if (!psMetadataAddF64(config->where, PS_LIST_TAIL, name, 0, "==", var)) { \
     446                psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \
     447                psFree(config); \
     448                return NULL; \
     449            } \
     450        } \
     451    } \
     452}
     453
     454#define PXOPT_ADD_WHERE_TIME_STR(name) \
     455{ \
     456    psString str = NULL; \
     457    bool status = false; \
     458    if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \
     459        psTime *time = psTimeFromISO(str, PS_TIME_UTC); \
     460        if (!time) { \
     461            psError(PS_ERR_UNKNOWN, false, "failed to convert " #name " into a psTime object"); \
     462            psFree(config); \
     463            return NULL; \
     464        } \
     465        psMetadataItem *item = psMetadataLookup(config->args, "-" #name); \
     466        if (item) { \
     467            str = item->comment; \
     468        } else { \
     469            str = NULL; \
     470        } \
     471        if (!psMetadataAddTime(config->where, PS_LIST_TAIL, #name, 0, str, time)) {\
     472            psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \
     473            psFree(config); \
     474            return NULL; \
     475        } \
     476        psFree(time); \
     477    } \
     478}
     479
    255480#endif // PXTOOLS_H
Note: See TracChangeset for help on using the changeset viewer.