File indexing completed on 2025-08-06 08:17:26
0001 #ifndef PHOOL_PHFLAG_H
0002 #define PHOOL_PHFLAG_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <cstdint>
0017 #include <map>
0018 #include <string>
0019
0020 class PHFlag
0021 {
0022 public:
0023 PHFlag() = default;
0024 virtual ~PHFlag() = default;
0025
0026 virtual double get_DoubleFlag(const std::string &name) const;
0027 virtual double get_DoubleFlag(const std::string &name, const double defaultval);
0028 virtual void set_DoubleFlag(const std::string &name, const double flag);
0029
0030 virtual float get_FloatFlag(const std::string &name) const;
0031 virtual float get_FloatFlag(const std::string &name, const float defaultval);
0032 virtual void set_FloatFlag(const std::string &name, const float flag);
0033
0034 virtual int get_IntFlag(const std::string &name) const;
0035 virtual int get_IntFlag(const std::string &name, const int defaultval);
0036 virtual void set_IntFlag(const std::string &name, const int flag);
0037
0038 virtual uint64_t get_uint64Flag(const std::string &name) const;
0039 virtual uint64_t get_uint64Flag(const std::string &name, const uint64_t defaultval);
0040 virtual void set_uint64Flag(const std::string &name, const uint64_t flag);
0041
0042 virtual std::string get_StringFlag(const std::string &name) const;
0043 virtual std::string get_StringFlag(const std::string &name, const std::string &defaultval);
0044 virtual void set_StringFlag(const std::string &name, const std::string &charstr);
0045
0046 virtual void Print() const;
0047 virtual void PrintDoubleFlags() const;
0048 virtual void PrintIntFlags() const;
0049 virtual void Printuint64Flags() const;
0050 virtual void PrintFloatFlags() const;
0051 virtual void PrintStringFlags() const;
0052 virtual void ReadFromFile(const std::string &name);
0053 virtual void WriteToFile(const std::string &name);
0054
0055 virtual int FlagExist(const std::string &name) const;
0056
0057 virtual const std::map<std::string, uint64_t> *uint64Map() const { return &m_UInt64FlagMap; }
0058 virtual const std::map<std::string, int> *IntMap() const { return &m_IntFlagMap; }
0059 virtual const std::map<std::string, float> *FloatMap() const { return &m_FloatFlagMap; }
0060 virtual const std::map<std::string, double> *DoubleMap() const { return &m_DoubleFlagMap; }
0061 virtual const std::map<std::string, std::string> *StringMap() const { return &m_StringFlagMap; }
0062 virtual void PrintStackTrace() const;
0063
0064 virtual void ClearFlag(const std::string &name);
0065 virtual void ClearAll();
0066
0067 protected:
0068 std::map<std::string, uint64_t> m_UInt64FlagMap;
0069 std::map<std::string, int> m_IntFlagMap;
0070 std::map<std::string, double> m_DoubleFlagMap;
0071 std::map<std::string, float> m_FloatFlagMap;
0072 std::map<std::string, std::string> m_StringFlagMap;
0073 };
0074
0075 #endif