tool/DataTypeHandler.cpp
branchredundancy
changeset 2308 f842ca3436ba
parent 2122 23414e7559de
child 2375 ac3db27d60e0
equal deleted inserted replaced
2307:5ccf44ed4b13 2308:f842ca3436ba
    52 const DataTypeHandler::DataType *DataTypeHandler::findDataType(
    52 const DataTypeHandler::DataType *DataTypeHandler::findDataType(
    53         const string &str
    53         const string &str
    54         )
    54         )
    55 {
    55 {
    56     const DataType *d;
    56     const DataType *d;
    57     
    57 
    58     for (d = dataTypes; d->name; d++)
    58     for (d = dataTypes; d->name; d++)
    59         if (str == d->name)
    59         if (str == d->name)
    60             return d;
    60             return d;
    61 
    61 
    62     return NULL; // FIXME exception
    62     return NULL; // FIXME exception
    84 /****************************************************************************/
    84 /****************************************************************************/
    85 
    85 
    86 const DataTypeHandler::DataType *DataTypeHandler::findDataType(uint16_t code)
    86 const DataTypeHandler::DataType *DataTypeHandler::findDataType(uint16_t code)
    87 {
    87 {
    88     const DataType *d;
    88     const DataType *d;
    89     
    89 
    90     for (d = dataTypes; d->name; d++)
    90     for (d = dataTypes; d->name; d++)
    91         if (code == d->code)
    91         if (code == d->code)
    92             return d;
    92             return d;
    93 
    93 
    94     return NULL;
    94     return NULL;
   284         typeCode = 0xffff; // raw data
   284         typeCode = 0xffff; // raw data
   285     }
   285     }
   286 
   286 
   287     o << setfill('0');
   287     o << setfill('0');
   288 
   288 
   289     switch (type->code) {
   289     switch (typeCode) {
   290         case 0x0001: // bool
   290         case 0x0001: // bool
   291             {
   291             {
   292                 int val = (int) *(int8_t *) data;
   292                 int val = (int) *(int8_t *) data;
   293                 o << "0x" << hex << setw(2) << val
   293                 o << "0x" << hex << setw(2) << val
   294                     << " " << dec << val << endl;
   294                     << " " << dec << val << endl;
   376             break;
   376             break;
   377         case 0xfffb: // sm8
   377         case 0xfffb: // sm8
   378             {
   378             {
   379                 int8_t val = *(uint8_t *) data;
   379                 int8_t val = *(uint8_t *) data;
   380                 int8_t smval = val < 0 ? (val & 0x7f) * -1 : val;
   380                 int8_t smval = val < 0 ? (val & 0x7f) * -1 : val;
   381                 
   381 
   382                 o << "0x" << hex << setw(2) << (int) val
   382                 o << "0x" << hex << setw(2) << (int) val
   383                     << " " << dec << (int) smval << endl;
   383                     << " " << dec << (int) smval << endl;
   384             }
   384             }
   385             break;
   385             break;
   386         case 0xfffc: // sm16
   386         case 0xfffc: // sm16
   387             {
   387             {
   388                 int16_t val = le16_to_cpup(data);
   388                 int16_t val = le16_to_cpup(data);
   389                 int16_t smval = val < 0 ? (val & 0x7fff) * -1 : val;
   389                 int16_t smval = val < 0 ? (val & 0x7fff) * -1 : val;
   390                 
   390 
   391                 o << "0x" << hex << setw(4) << val
   391                 o << "0x" << hex << setw(4) << val
   392                     << " " << dec << smval << endl;
   392                     << " " << dec << smval << endl;
   393             }
   393             }
   394             break;
   394             break;
   395         case 0xfffd: // sm32
   395         case 0xfffd: // sm32
   396             {
   396             {
   397                 int32_t val = le32_to_cpup(data);
   397                 int32_t val = le32_to_cpup(data);
   398                 int32_t smval = val < 0 ? (val & 0x7fffffffUL) * -1 : val;
   398                 int32_t smval = val < 0 ? (val & 0x7fffffffUL) * -1 : val;
   399                 
   399 
   400                 o << "0x" << hex << setw(8) << val
   400                 o << "0x" << hex << setw(8) << val
   401                     << " " << dec << smval << endl;
   401                     << " " << dec << smval << endl;
   402             }
   402             }
   403             break;
   403             break;
   404         case 0xfffe: // sm64
   404         case 0xfffe: // sm64
   405             {
   405             {
   406                 int64_t val = le64_to_cpup(data);
   406                 int64_t val = le64_to_cpup(data);
   407                 int64_t smval =
   407                 int64_t smval =
   408                     val < 0 ? (val & 0x7fffffffffffffffULL) * -1 : val;
   408                     val < 0 ? (val & 0x7fffffffffffffffULL) * -1 : val;
   409                 
   409 
   410                 o << "0x" << hex << setw(16) << val
   410                 o << "0x" << hex << setw(16) << val
   411                     << " " << dec << smval << endl;
   411                     << " " << dec << smval << endl;
   412             }
   412             }
   413             break;
   413             break;
   414 
   414