LCOV - code coverage report
Current view: top level - mvodb - mvodb.cxx (source / functions) Coverage Total Hit
Test: coverage.info Lines: 12.5 % 64 8
Test Date: 2025-11-11 10:26:08 Functions: 28.6 % 7 2

            Line data    Source code
       1              : /********************************************************************\
       2              : 
       3              :   Name:         mvodb.cxx
       4              :   Created by:   K.Olchanski
       5              : 
       6              :   Contents:     common functions of MVOdb ODB interface
       7              : 
       8              : \********************************************************************/
       9              : 
      10              : #include <stdio.h> // sprintf(), fprintf()
      11              : 
      12              : #include "mvodb.h"
      13              : 
      14            0 : MVOdb::~MVOdb() // dtor
      15              : {
      16              :    // empty
      17            0 : }
      18              : 
      19            0 : static std::string toString(int value)
      20              : {
      21              :    char buf[256];
      22            0 :    snprintf(buf, sizeof(buf), "%d", value);
      23            0 :    return buf;
      24              : }
      25              : 
      26            0 : MVOdbError::MVOdbError()
      27              : {
      28            0 :    SetOk(this);
      29            0 : }
      30              : 
      31            1 : void SetOk(MVOdbError* error)
      32              : {
      33            1 :    if (error) {
      34            0 :       error->fError = false;
      35            0 :       error->fErrorString = "";
      36            0 :       error->fPath = "";
      37            0 :       error->fStatus = 0;
      38              :    }
      39            1 : }
      40              : 
      41            2 : void SetMidasStatus(MVOdbError* error, bool print, const std::string& path, const char* midas_func_name, int status)
      42              : {
      43            2 :    if (error) {
      44            0 :       error->fStatus = status;
      45            0 :       error->fPath = path;
      46            0 :       if (status == 1) {
      47            0 :          error->fError = false;
      48            0 :          error->fErrorString = "";
      49              :       } else {
      50            0 :          error->fError = true;
      51            0 :          error->fErrorString = "";
      52            0 :          error->fErrorString += "MIDAS ";
      53            0 :          error->fErrorString += midas_func_name;
      54            0 :          error->fErrorString += "()";
      55            0 :          error->fErrorString += " at ODB path \"";
      56            0 :          error->fErrorString += path;
      57            0 :          error->fErrorString += "\" returned status ";
      58            0 :          error->fErrorString += toString(status);
      59            0 :          if (print) {
      60            0 :             fprintf(stderr, "MVOdb: %s\n", error->fErrorString.c_str());
      61              :          }
      62              :       }
      63              :    } else {
      64            2 :       if (print) {
      65            2 :          fprintf(stderr, "MVOdb: Error: MIDAS %s() at ODB path \"%s\" returned status %d\n", midas_func_name, path.c_str(), status);
      66              :       }
      67              :    }
      68            2 : }
      69              : 
      70            0 : void SetError(MVOdbError* error, bool print, const std::string& path, const std::string& message)
      71              : {
      72            0 :    if (error) {
      73            0 :       error->fStatus = 0;
      74            0 :       error->fPath = path;
      75            0 :       error->fError = true;
      76            0 :       error->fErrorString = "";
      77            0 :       error->fErrorString += message;
      78            0 :       error->fErrorString += " at ODB path \"";
      79            0 :       error->fErrorString += path;
      80            0 :       error->fErrorString += "\"";
      81            0 :       if (print) {
      82            0 :          fprintf(stderr, "MVOdb::SetError: %s\n", error->fErrorString.c_str());
      83              :       }
      84              :    } else {
      85            0 :       if (print) {
      86            0 :          fprintf(stderr, "MVOdb::SetError: Error: %s at ODB path \"%s\"\n", message.c_str(), path.c_str());
      87              :       }
      88              :    }
      89            0 : }
      90              : 
      91            0 : MVOdb* MakeFileDumpOdb(const char* buf, int bufsize, MVOdbError* error)
      92              : {
      93              :    //printf("MakeFileDumpOdb: odb dump size %d, first char \'%c\'\n", bufsize, buf[0]);
      94            0 :    if (buf[0] == '[') {
      95              :       // ODB format
      96              :       char str[256];
      97            0 :       snprintf(str, sizeof(str), "MakeFileDumpOdb: old ODB dump format is not supported, sorry");
      98            0 :       SetError(error, false, "buffer", str);
      99            0 :       return MakeNullOdb();
     100            0 :    } else if (buf[0] == '<') {
     101              :       // XML format
     102            0 :       return MakeXmlBufferOdb(buf, bufsize, error);
     103            0 :    } else if (buf[0] == '{') {
     104              :       // JSON format
     105            0 :       return MakeJsonBufferOdb(buf, bufsize, error);
     106              :    } else {
     107              :       // unknown format
     108              :       char str[256];
     109            0 :       snprintf(str, sizeof(str), "MakeFileDumpOdb: unknown ODB dump format, first char is \'%c\' (%d), dump size %d",
     110            0 :                buf[0], buf[0], bufsize);
     111            0 :       SetError(error, false, "buffer", str);
     112            0 :       return MakeNullOdb();
     113              :    }
     114              : }
     115              : 
     116              : /* emacs
     117              :  * Local Variables:
     118              :  * tab-width: 8
     119              :  * c-basic-offset: 3
     120              :  * indent-tabs-mode: nil
     121              :  * End:
     122              :  */
        

Generated by: LCOV version 2.0-1