File indexing completed on 2025-02-21 10:05:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef SRC_NODE_BUFFER_H_
0023 #define SRC_NODE_BUFFER_H_
0024
0025 #include "node.h"
0026 #include "v8.h"
0027
0028 namespace node {
0029
0030 namespace Buffer {
0031
0032 static const size_t kMaxLength = v8::Uint8Array::kMaxLength;
0033
0034 typedef void (*FreeCallback)(char* data, void* hint);
0035
0036 NODE_EXTERN bool HasInstance(v8::Local<v8::Value> val);
0037 NODE_EXTERN bool HasInstance(v8::Local<v8::Object> val);
0038 NODE_EXTERN char* Data(v8::Local<v8::Value> val);
0039 NODE_EXTERN char* Data(v8::Local<v8::Object> val);
0040 NODE_EXTERN size_t Length(v8::Local<v8::Value> val);
0041 NODE_EXTERN size_t Length(v8::Local<v8::Object> val);
0042
0043
0044 NODE_EXTERN v8::MaybeLocal<v8::Object> Copy(v8::Isolate* isolate,
0045 const char* data,
0046 size_t len);
0047
0048
0049 NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
0050
0051
0052 NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
0053 v8::Local<v8::String> string,
0054 enum encoding enc = UTF8);
0055
0056
0057 NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
0058 char* data,
0059 size_t length,
0060 FreeCallback callback,
0061 void* hint);
0062
0063
0064 NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
0065 char* data,
0066 size_t len);
0067
0068
0069 NODE_EXTERN v8::MaybeLocal<v8::Uint8Array> New(v8::Isolate* isolate,
0070 v8::Local<v8::ArrayBuffer> ab,
0071 size_t byte_offset,
0072 size_t length);
0073
0074
0075 static inline bool IsWithinBounds(size_t off, size_t len, size_t max) {
0076
0077
0078 if (off > max)
0079 return false;
0080
0081
0082 if (max - off < len)
0083 return false;
0084
0085
0086 return true;
0087 }
0088
0089 }
0090 }
0091
0092 #endif