nan_scriptorigin.h 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*********************************************************************
  2. * NAN - Native Abstractions for Node.js
  3. *
  4. * Copyright (c) 2021 NAN contributors
  5. *
  6. * MIT License <https://github.com/nodejs/nan/blob/master/LICENSE.md>
  7. ********************************************************************/
  8. #ifndef NAN_SCRIPTORIGIN_H_
  9. #define NAN_SCRIPTORIGIN_H_
  10. class ScriptOrigin : public v8::ScriptOrigin {
  11. public:
  12. #if defined(V8_MAJOR_VERSION) && \
  13. (V8_MAJOR_VERSION > 12 || \
  14. (V8_MAJOR_VERSION == 12 && \
  15. (defined(V8_MINOR_VERSION) && \
  16. (V8_MINOR_VERSION > 6 || \
  17. (V8_MINOR_VERSION == 6 && defined(V8_BUILD_NUMBER) && \
  18. V8_BUILD_NUMBER >= 175)))))
  19. explicit ScriptOrigin(v8::Local<v8::Value> name) :
  20. v8::ScriptOrigin(name) {}
  21. ScriptOrigin(v8::Local<v8::Value> name
  22. , v8::Local<v8::Integer> line) :
  23. v8::ScriptOrigin(name
  24. , To<int32_t>(line).FromMaybe(0)) {}
  25. ScriptOrigin(v8::Local<v8::Value> name
  26. , v8::Local<v8::Integer> line
  27. , v8::Local<v8::Integer> column) :
  28. v8::ScriptOrigin(name
  29. , To<int32_t>(line).FromMaybe(0)
  30. , To<int32_t>(column).FromMaybe(0)) {}
  31. #elif defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 9 || \
  32. (V8_MAJOR_VERSION == 9 && (defined(V8_MINOR_VERSION) && (V8_MINOR_VERSION > 0\
  33. || (V8_MINOR_VERSION == 0 && defined(V8_BUILD_NUMBER) \
  34. && V8_BUILD_NUMBER >= 1)))))
  35. explicit ScriptOrigin(v8::Local<v8::Value> name) :
  36. v8::ScriptOrigin(v8::Isolate::GetCurrent(), name) {}
  37. ScriptOrigin(v8::Local<v8::Value> name
  38. , v8::Local<v8::Integer> line) :
  39. v8::ScriptOrigin(v8::Isolate::GetCurrent()
  40. , name
  41. , To<int32_t>(line).FromMaybe(0)) {}
  42. ScriptOrigin(v8::Local<v8::Value> name
  43. , v8::Local<v8::Integer> line
  44. , v8::Local<v8::Integer> column) :
  45. v8::ScriptOrigin(v8::Isolate::GetCurrent()
  46. , name
  47. , To<int32_t>(line).FromMaybe(0)
  48. , To<int32_t>(column).FromMaybe(0)) {}
  49. #elif defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 8 || \
  50. (V8_MAJOR_VERSION == 8 && (defined(V8_MINOR_VERSION) && (V8_MINOR_VERSION > 9\
  51. || (V8_MINOR_VERSION == 9 && defined(V8_BUILD_NUMBER) \
  52. && V8_BUILD_NUMBER >= 45)))))
  53. explicit ScriptOrigin(v8::Local<v8::Value> name) : v8::ScriptOrigin(name) {}
  54. ScriptOrigin(v8::Local<v8::Value> name
  55. , v8::Local<v8::Integer> line) :
  56. v8::ScriptOrigin(name, To<int32_t>(line).FromMaybe(0)) {}
  57. ScriptOrigin(v8::Local<v8::Value> name
  58. , v8::Local<v8::Integer> line
  59. , v8::Local<v8::Integer> column) :
  60. v8::ScriptOrigin(name
  61. , To<int32_t>(line).FromMaybe(0)
  62. , To<int32_t>(column).FromMaybe(0)) {}
  63. #else
  64. explicit ScriptOrigin(v8::Local<v8::Value> name) : v8::ScriptOrigin(name) {}
  65. ScriptOrigin(v8::Local<v8::Value> name
  66. , v8::Local<v8::Integer> line) : v8::ScriptOrigin(name, line) {}
  67. ScriptOrigin(v8::Local<v8::Value> name
  68. , v8::Local<v8::Integer> line
  69. , v8::Local<v8::Integer> column) :
  70. v8::ScriptOrigin(name, line, column) {}
  71. #endif
  72. #if defined(V8_MAJOR_VERSION) && (V8_MAJOR_VERSION > 8 || \
  73. (V8_MAJOR_VERSION == 8 && (defined(V8_MINOR_VERSION) && (V8_MINOR_VERSION > 9\
  74. || (V8_MINOR_VERSION == 9 && defined(V8_BUILD_NUMBER) \
  75. && V8_BUILD_NUMBER >= 45)))))
  76. v8::Local<v8::Integer> ResourceLineOffset() const {
  77. return New(LineOffset());
  78. }
  79. v8::Local<v8::Integer> ResourceColumnOffset() const {
  80. return New(ColumnOffset());
  81. }
  82. #endif
  83. };
  84. #endif // NAN_SCRIPTORIGIN_H_