-class DIFile {
- MDFile *N;
-
-public:
- DIFile(const MDFile *N = nullptr) : N(const_cast<MDFile *>(N)) {}
-
- operator MDFile *() const { return N; }
- MDFile *operator->() const { return N; }
- MDFile &operator*() const { return *N; }
-};
-
-class DICompileUnit {
- MDCompileUnit *N;
-
-public:
- DICompileUnit(const MDCompileUnit *N = nullptr)
- : N(const_cast<MDCompileUnit *>(N)) {}
-
- operator MDCompileUnit *() const { return N; }
- MDCompileUnit *operator->() const { return N; }
- MDCompileUnit &operator*() const { return *N; }
-};
-
-class DISubprogram {
- MDSubprogram *N;
-
-public:
- DISubprogram(const MDSubprogram *N = nullptr)
- : N(const_cast<MDSubprogram *>(N)) {}
-
- operator MDSubprogram *() const { return N; }
- MDSubprogram *operator->() const { return N; }
- MDSubprogram &operator*() const { return *N; }
-};
-
-class DILexicalBlock {
- MDLexicalBlockBase *N;
-
-public:
- DILexicalBlock(const MDLexicalBlockBase *N = nullptr)
- : N(const_cast<MDLexicalBlockBase *>(N)) {}
-
- operator MDLexicalBlockBase *() const { return N; }
- MDLexicalBlockBase *operator->() const { return N; }
- MDLexicalBlockBase &operator*() const { return *N; }
-};
-
-class DILexicalBlockFile {
- MDLexicalBlockFile *N;
-
-public:
- DILexicalBlockFile(const MDLexicalBlockFile *N = nullptr)
- : N(const_cast<MDLexicalBlockFile *>(N)) {}
-
- operator MDLexicalBlockFile *() const { return N; }
- MDLexicalBlockFile *operator->() const { return N; }
- MDLexicalBlockFile &operator*() const { return *N; }
-};
-
-class DINameSpace {
- MDNamespace *N;
-
-public:
- DINameSpace(const MDNamespace *N = nullptr)
- : N(const_cast<MDNamespace *>(N)) {}
-
- operator MDNamespace *() const { return N; }
- MDNamespace *operator->() const { return N; }
- MDNamespace &operator*() const { return *N; }
-};
-