Program Listing for File macro.h#

Return to documentation for file (sdv_idl_compiler\macro.h)

#ifndef MACRO_H
#define MACRO_H

#include <string>
#include <vector>
#include <map>
#include <set>
#include "token.h"

// Forward declarations
class CIdlCompilerEnvironment;

 using CUsedMacroSet = std::set<std::string>;

class CMacro
{
public:
    CMacro(const char* szName, const std::vector<std::string>* pvecParams, const char* szValue);

    CMacro(const CMacro& rMacro);

    CMacro(CMacro&& rMacro) noexcept;

    CMacro& operator=(const CMacro& rMacro);

    CMacro& operator=(CMacro&& rMacro) noexcept;

    bool operator==(const CMacro& rMacro);

    bool operator!=(const CMacro& rMacro);

    const std::string& GetName() const;

    bool ExpectParameters() const;

    std::string Expand(const CIdlCompilerEnvironment& renv, const CToken& rtoken, const std::vector<std::string>& rvecParams,
        CUsedMacroSet& rsetUsedMacros) const;

private:
    std::string                 m_ssName;
    bool                        m_bExpectParams;
    std::vector<std::string>    m_vecParamDefs;
    std::string                 m_ssValue;
};

using CMacroMap = std::map<std::string, CMacro>;

#endif // !defined MACRO_H