Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:16:06

0001 #include "FlagSavev1.h"
0002 
0003 #include <phool/PHFlag.h>
0004 
0005 #include <cstdint>  // for uint64_t
0006 #include <utility>  // for pair
0007 
0008 class PHObject;
0009 
0010 PHObject *
0011 FlagSavev1::CloneMe() const
0012 {
0013   FlagSavev1 *ret = new FlagSavev1();
0014 
0015   ret->intflag = this->intflag;
0016   ret->m_uint64flag_map = this->m_uint64flag_map;
0017   ret->doubleflag = this->doubleflag;
0018   ret->floatflag = this->floatflag;
0019   ret->stringflag = this->stringflag;
0020 
0021   return ret;
0022 }
0023 
0024 int FlagSavev1::isValid() const
0025 {
0026   if (intflag.empty() &&
0027       doubleflag.empty() &&
0028       floatflag.empty() &&
0029       stringflag.empty() &&
0030       m_uint64flag_map.empty())
0031   {
0032     return 0;
0033   }
0034   return 1;
0035 }
0036 
0037 void FlagSavev1::identify(std::ostream &out) const
0038 {
0039   out << "identify yourself: I am an FlagSavev1 Object" << std::endl;
0040   PrintIntFlag(out);
0041   Printuint64Flag(out);
0042   PrintDoubleFlag(out);
0043   PrintFloatFlag(out);
0044   PrintStringFlag(out);
0045   return;
0046 }
0047 
0048 int FlagSavev1::FillFromPHFlag(const PHFlag *flags, const bool clearold)
0049 {
0050   if (clearold)
0051   {
0052     ClearAll();
0053   }
0054   int iret = FillIntFromPHFlag(flags);
0055   iret += Filluint64FromPHFlag(flags);
0056   iret += FillDoubleFromPHFlag(flags);
0057   iret += FillFloatFromPHFlag(flags);
0058   iret += FillStringFromPHFlag(flags);
0059   return iret;
0060 }
0061 
0062 int FlagSavev1::PutFlagsBack(PHFlag *flags, const bool overwrite)
0063 {
0064   int iret = PutIntToPHFlag(flags, overwrite);
0065   iret += Putuint64ToPHFlag(flags, overwrite);
0066   iret += PutDoubleToPHFlag(flags, overwrite);
0067   iret += PutFloatToPHFlag(flags, overwrite);
0068   iret += PutStringToPHFlag(flags, overwrite);
0069   return iret;
0070 }
0071 
0072 int FlagSavev1::FillIntFromPHFlag(const PHFlag *flags)
0073 {
0074   std::map<std::string, int>::const_iterator iter;
0075   const std::map<std::string, int> *intm = flags->IntMap();
0076   for (iter = intm->begin(); iter != intm->end(); ++iter)
0077   {
0078     intflag[iter->first] = iter->second;
0079   }
0080   return 0;
0081 }
0082 
0083 int FlagSavev1::Filluint64FromPHFlag(const PHFlag *flags)
0084 {
0085   std::map<std::string, uint64_t>::const_iterator iter;
0086   const std::map<std::string, uint64_t> *intm = flags->uint64Map();
0087   for (iter = intm->begin(); iter != intm->end(); ++iter)
0088   {
0089     m_uint64flag_map[iter->first] = iter->second;
0090   }
0091   return 0;
0092 }
0093 
0094 int FlagSavev1::FillDoubleFromPHFlag(const PHFlag *flags)
0095 {
0096   std::map<std::string, double>::const_iterator iter;
0097   const std::map<std::string, double> *intm = flags->DoubleMap();
0098   for (iter = intm->begin(); iter != intm->end(); ++iter)
0099   {
0100     doubleflag[iter->first] = iter->second;
0101   }
0102   return 0;
0103 }
0104 
0105 int FlagSavev1::FillFloatFromPHFlag(const PHFlag *flags)
0106 {
0107   std::map<std::string, float>::const_iterator iter;
0108   const std::map<std::string, float> *intm = flags->FloatMap();
0109   for (iter = intm->begin(); iter != intm->end(); ++iter)
0110   {
0111     floatflag[iter->first] = iter->second;
0112   }
0113   return 0;
0114 }
0115 
0116 int FlagSavev1::FillStringFromPHFlag(const PHFlag *flags)
0117 {
0118   std::map<std::string, std::string>::const_iterator iter;
0119   const std::map<std::string, std::string> *intm = flags->StringMap();
0120   for (iter = intm->begin(); iter != intm->end(); ++iter)
0121   {
0122     std::string input(iter->second);
0123     stringflag[iter->first] = input;
0124   }
0125   return 0;
0126 }
0127 // general procedure, if overwrite is set, just set the flag
0128 // if overwrite is false, call get flag with initialization which is used if it does not exist
0129 int FlagSavev1::PutIntToPHFlag(PHFlag *flags, const bool overwrite)
0130 {
0131   std::map<std::string, int>::const_iterator iter;
0132   for (iter = intflag.begin(); iter != intflag.end(); ++iter)
0133   {
0134     if (overwrite)
0135     {
0136       flags->set_IntFlag(iter->first, iter->second);
0137     }
0138     else
0139     {
0140       flags->get_IntFlag(iter->first, iter->second);
0141     }
0142   }
0143   return 0;
0144 }
0145 
0146 int FlagSavev1::Putuint64ToPHFlag(PHFlag *flags, const bool overwrite)
0147 {
0148   std::map<std::string, uint64_t>::const_iterator iter;
0149   for (iter = m_uint64flag_map.begin(); iter != m_uint64flag_map.end(); ++iter)
0150   {
0151     if (overwrite)
0152     {
0153       flags->set_uint64Flag(iter->first, iter->second);
0154     }
0155     else
0156     {
0157       flags->get_uint64Flag(iter->first, iter->second);
0158     }
0159   }
0160   return 0;
0161 }
0162 
0163 int FlagSavev1::PutDoubleToPHFlag(PHFlag *flags, const bool overwrite)
0164 {
0165   std::map<std::string, double>::const_iterator iter;
0166   for (iter = doubleflag.begin(); iter != doubleflag.end(); ++iter)
0167   {
0168     if (overwrite)
0169     {
0170       flags->set_DoubleFlag(iter->first, iter->second);
0171     }
0172     else
0173     {
0174       flags->get_DoubleFlag(iter->first, iter->second);
0175     }
0176   }
0177   return 0;
0178 }
0179 
0180 int FlagSavev1::PutFloatToPHFlag(PHFlag *flags, const bool overwrite)
0181 {
0182   std::map<std::string, float>::const_iterator iter;
0183   for (iter = floatflag.begin(); iter != floatflag.end(); ++iter)
0184   {
0185     if (overwrite)
0186     {
0187       flags->set_FloatFlag(iter->first, iter->second);
0188     }
0189     else
0190     {
0191       flags->get_FloatFlag(iter->first, iter->second);
0192     }
0193   }
0194   return 0;
0195 }
0196 
0197 int FlagSavev1::PutStringToPHFlag(PHFlag *flags, const bool overwrite)
0198 {
0199   std::map<std::string, std::string>::const_iterator iter;
0200   for (iter = stringflag.begin(); iter != stringflag.end(); ++iter)
0201   {
0202     if (overwrite)
0203     {
0204       flags->set_StringFlag(iter->first, iter->second);
0205     }
0206     else
0207     {
0208       flags->get_StringFlag(iter->first, iter->second);
0209     }
0210   }
0211   return 0;
0212 }
0213 
0214 void FlagSavev1::PrintIntFlag(std::ostream &os) const
0215 {
0216   if (intflag.empty())
0217   {
0218     return;
0219   }
0220   std::map<std::string, int>::const_iterator iter;
0221   os << "Int Flags: " << std::endl;
0222   for (iter = intflag.begin(); iter != intflag.end(); ++iter)
0223   {
0224     os << iter->first << ": " << iter->second << std::endl;
0225   }
0226   return;
0227 }
0228 
0229 void FlagSavev1::Printuint64Flag(std::ostream &os) const
0230 {
0231   if (m_uint64flag_map.empty())
0232   {
0233     return;
0234   }
0235   std::map<std::string, uint64_t>::const_iterator iter;
0236   os << "UInt64 Flags: " << std::endl;
0237   for (iter = m_uint64flag_map.begin(); iter != m_uint64flag_map.end(); ++iter)
0238   {
0239     os << iter->first << ": " << iter->second << std::endl;
0240   }
0241   return;
0242 }
0243 
0244 void FlagSavev1::PrintDoubleFlag(std::ostream &os) const
0245 {
0246   if (doubleflag.empty())
0247   {
0248     return;
0249   }
0250   std::map<std::string, double>::const_iterator iter;
0251   os << "Double Flags: " << std::endl;
0252   for (iter = doubleflag.begin(); iter != doubleflag.end(); ++iter)
0253   {
0254     os << iter->first << ": " << iter->second << std::endl;
0255   }
0256   return;
0257 }
0258 
0259 void FlagSavev1::PrintFloatFlag(std::ostream &os) const
0260 {
0261   if (floatflag.empty())
0262   {
0263     return;
0264   }
0265   std::map<std::string, float>::const_iterator iter;
0266   os << "Float Flags: " << std::endl;
0267   for (iter = floatflag.begin(); iter != floatflag.end(); ++iter)
0268   {
0269     os << iter->first << ": " << iter->second << std::endl;
0270   }
0271   return;
0272 }
0273 
0274 void FlagSavev1::PrintStringFlag(std::ostream &os) const
0275 {
0276   if (stringflag.empty())
0277   {
0278     return;
0279   }
0280   std::map<std::string, std::string>::const_iterator iter;
0281   os << "String Flags: " << std::endl;
0282   for (iter = stringflag.begin(); iter != stringflag.end(); ++iter)
0283   {
0284     os << iter->first << ": " << iter->second << std::endl;
0285   }
0286   return;
0287 }
0288 
0289 void FlagSavev1::ClearAll()
0290 {
0291   intflag.clear();
0292   doubleflag.clear();
0293   floatflag.clear();
0294   stringflag.clear();
0295   m_uint64flag_map.clear();
0296 }