Changeset 19965


Ignore:
Timestamp:
05/26/20 20:18:26 (5 years ago)
Author:
tbretz
Message:
Added a decription for more (particularly SQL) types, such as kTime, kDate, kDateTime, kDecimal, kNumeric and also added a column to describe the conversion to a root-file branch.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/FileEntry.h

    r19959 r19965  
    1212        kNone = 0,
    1313        kConst,
     14        kChar,
    1415        kVarchar,
    1516        kBool,
     
    2425        kInt64,
    2526        kUInt64,
     27        kDecimal,
     28        kNumeric,
     29        kTime,
     30        kDate,
     31        kDateTime,
    2632    };
    2733
     
    2935    {
    3036        BasicType_t type;
    31         std::string root;
    32         char fits;
    33         std::string sql;
     37        std::string root;  // root basic type
     38        char branch;       // root branch
     39        char fits;         // fits type
     40        std::string sql;   // sql type
    3441    };
    3542
     
    7885    static const Types LUT =
    7986    {
    80         // type      root         fits sql
    81         { kVarchar,  "Char_t",    'A', "VARCHAR"           },
    82         { kVarchar,  "Char_t",    'a', "VARCHAR"           },
    83         { kBool,     "Bool_t",    'L', "BOOLEAN"           },
    84         { kBool,     "Bool_t",    'l', "BOOLEAN"           },
    85         { kInt8,     "Char_t",    'B', "TINYINT"           },
    86         { kUInt8,    "UInt8_t",   'b', "TINYINT UNSIGNED"  },
    87         { kInt16,    "Short_t",   'I', "SMALLINT"          },
    88         { kUInt16,   "UShort_t",  'i', "SMALLINT UNSIGNED" },
    89         { kInt32,    "Int_t",     'J', "INT"               },
    90         { kUInt32,   "UInt_t",    'j', "INT UNSIGNED"      },
    91         { kInt64,    "Long64_t",  'K', "BIGINT"            },
    92         { kUInt64,   "ULong64_t", 'k', "BIGINT UNSIGNED"   },
    93         { kFloat,    "Float_t",   'E', "FLOAT"             },
    94         { kFloat,    "Float_t",   'e', "FLOAT"             },
    95         { kDouble,   "Double_t",  'D', "DOUBLE"            },
    96         { kDouble,   "Double_t",  'd', "DOUBLE"            },
     87        // type      root      branch  fits  sql
     88        { kChar,     "Char_t",    ' ', 'A', "CHAR"               },
     89        { kChar,     "Char_t",    ' ', 'a', "CHAR"               },
     90        { kVarchar,  "Char_t",    ' ', 'A', "VARCHAR"            },
     91        { kVarchar,  "Char_t",    ' ', 'a', "VARCHAR"            },
     92        { kBool,     "Bool_t",    'O', 'L', "BOOLEAN"            },
     93        { kBool,     "Bool_t",    'O', 'l', "BOOLEAN"            },
     94        { kInt8,     "Char_t",    'B', 'B', "TINYINT"            },
     95        { kUInt8,    "UInt8_t",   'b', 'b', "TINYINT UNSIGNED"   },
     96        { kInt16,    "Short_t",   'S', 'I', "SMALLINT"           },
     97        { kUInt16,   "UShort_t",  's', 'i', "SMALLINT UNSIGNED"  },
     98        { kInt32,    "Int_t",     'I', 'J', "INT"                },
     99        { kUInt32,   "UInt_t",    'i', 'j', "INT UNSIGNED"       },
     100        { kInt32,    "Int_t",     'I', 'J', "MEDIUMINT"          },
     101        { kUInt32,   "UInt_t",    'i', 'j', "MEDIUMINT UNSIGNED" },
     102        { kInt64,    "Long64_t",  'L', 'K', "BIGINT"             },
     103        { kUInt64,   "ULong64_t", 'l', 'k', "BIGINT UNSIGNED"    },
     104        { kFloat,    "Float_t",   'F', 'E', "FLOAT"              },
     105        { kFloat,    "Float_t",   'F', 'e', "FLOAT"              },
     106        { kDouble,   "Double_t",  'D', 'D', "DOUBLE"             },
     107        { kDouble,   "Double_t",  'D', 'd', "DOUBLE"             },
     108        { kTime,     "UInt32_t",  'i', 'j', "TIME"               },
     109        { kDate,     "UInt64_t",  'l', 'k', "DATE"               },
     110        { kDateTime, "UInt64_t",  'l', 'k', "DATETIME"           },
     111        { kDecimal,  "Double_t",  'D', 'D', "DECIMAL"            },
     112        { kDecimal,  "Double_t",  'D', 'd', "DECIMAL"            },
     113        { kNumeric,  "Double_t",  'D', 'D', "NUMERIC"            },
     114        { kNumeric,  "Double_t",  'D', 'd', "NUMERIC"            },
    97115    };
    98116
     
    109127        void *ptr;
    110128
     129        Container() :  type(kNone), num(0), ptr(0)
     130        {
     131        }
     132
    111133        // Root File (do not mix with FitsFile!)
    112134        Container(const std::string &b, const std::string &c,
    113                   const BasicType_t &t, const size_t &n)
     135                  const BasicType_t &t, const size_t &n=1)
    114136            : branch(b), column(c), type(t), num(n), ptr(0)
    115137        {
     
    120142            case kBool:   ptr = new uint8_t[n];  break;
    121143            case kFloat:  ptr = new float[n];    break;
     144            case kDecimal:
     145            case kNumeric:
    122146            case kDouble: ptr = new double[n];   break;
    123147            case kInt16:  ptr = new int16_t[n];  break;
    124148            case kUInt16: ptr = new uint16_t[n]; break;
    125149            case kInt32:  ptr = new int32_t[n];  break;
     150            case kTime:
    126151            case kUInt32: ptr = new uint32_t[n]; break;
    127152            case kInt64:  ptr = new int64_t[n];  break;
     153            case kDate:
     154            case kDateTime:
    128155            case kUInt64: ptr = new uint64_t[n]; break;
     156            case kChar:
    129157            case kVarchar:
    130158            case kConst:
     
    136164        }
    137165
     166        // This is for rootifysql!
     167        Container(const std::string &b, const BasicType_t &t)
     168            : branch(b), type(t), num(1)
     169        {
     170            ptr = new double[1];
     171            // Indicate that this was allocated and how often
     172            counter[ptr]++;
     173        }
     174
    138175        Container(const std::string &c, const std::string &value)
    139176            : branch(value), column(c), type(kConst), num(1), ptr(0)
     
    174211            case kVarchar: str << std::string(reinterpret_cast<char*>(ptr), num).c_str(); break;
    175212            case kFloat:   str << std::setprecision(8) << reinterpret_cast<float*>(ptr)[index];  break;
     213            case kDecimal:
     214            case kNumeric:
    176215            case kDouble:  str << std::setprecision(16) << reinterpret_cast<double*>(ptr)[index]; break;
    177216            case kBool:
     
    181220            case kUInt16:  str << reinterpret_cast<uint16_t*>(ptr)[index]; break;
    182221            case kInt32:   str << reinterpret_cast<int32_t*>(ptr)[index]; break;
     222            case kTime:
    183223            case kUInt32:  str << reinterpret_cast<uint32_t*>(ptr)[index]; break;
    184224            case kInt64:   str << reinterpret_cast<int64_t*>(ptr)[index]; break;
     225            case kDate:
     226            case kDateTime:
    185227            case kUInt64:  str << reinterpret_cast<uint64_t*>(ptr)[index]; break;
    186228            case kConst:   str << branch; break;
     229            case kChar:
    187230            case kNone:
    188231                break;
Note: See TracChangeset for help on using the changeset viewer.