Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
962 B

4 years ago
  1. #ifndef __NAMEMAP_INCLUDED__
  2. #define __NAMEMAP_INCLUDED__
  3. #ifndef __PDBIMPL_INCLUDED__
  4. #include "pdbimpl.h"
  5. #endif
  6. #ifndef __NMT_INCLUDED__
  7. #include "nmt.h"
  8. #endif
  9. class NMP : public NameMap {
  10. public:
  11. NMP() {
  12. pstream = 0;
  13. }
  14. ~NMP() {
  15. if (pstream) {
  16. pstream->Release();
  17. pstream = 0;
  18. }
  19. }
  20. BOOL open(PDB* ppdb, BOOL fWrite);
  21. BOOL commit();
  22. BOOL close();
  23. BOOL getNi(SZ_CONST sz, OUT NI* pni) {
  24. return nmt.addNiForSz(sz, pni);
  25. }
  26. BOOL getName(NI ni, OUT SZ_CONST* psz) {
  27. return !!(*psz = nmt.szForNi(ni));
  28. }
  29. BOOL contains(SZ_CONST sz, OUT NI* pni) {
  30. NI ni = nmt.niForSz(sz);
  31. if (pni)
  32. *pni = ni;
  33. return ni != niNil;
  34. }
  35. BOOL getEnumNameMap(OUT Enum** ppenum) {
  36. return !!(*ppenum = new EnumNMT(nmt));
  37. }
  38. BOOL reinitialize() {
  39. // NYI;
  40. assert(0);
  41. return TRUE;
  42. }
  43. private:
  44. Stream* pstream; // NameMap stream on disk, non-0 if update on close.
  45. // (e.g. if opened for write)
  46. NMT nmt;
  47. };
  48. #endif // !__NAMEMAP_INCLUDED__