Skip to content
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

Commit 9fa60cf

Browse files
authored
Merge pull request #62 from pinepain/refactor-no-data-constants
Refactor to simplify public API
2 parents fb3482c + 7e11ab0 commit 9fa60cf

22 files changed

+447
-653
lines changed

Diff for: src/php_v8_message.cc

+50-84
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ void php_v8_message_create_from_message(zval *return_value, php_v8_isolate_t *ph
7070
if (!message->GetLineNumber(context).IsNothing()) {
7171
line_number = message->GetLineNumber(context).FromJust();
7272
}
73-
zend_update_property_long(this_ce, return_value, ZEND_STRL("line_number"), static_cast<zend_long>(line_number));
73+
74+
if (v8::Message::kNoLineNumberInfo != line_number) {
75+
zend_update_property_long(this_ce, return_value, ZEND_STRL("line_number"), static_cast<zend_long>(line_number));
76+
}
7477

7578
/* v8::Message::GetStartPosition */
7679
zend_update_property_long(this_ce, return_value, ZEND_STRL("start_position"), static_cast<zend_long>(message->GetStartPosition()));
@@ -85,20 +88,19 @@ void php_v8_message_create_from_message(zval *return_value, php_v8_isolate_t *ph
8588
start_column = message->GetStartColumn(context).FromJust();
8689
}
8790

88-
zend_update_property_long(this_ce, return_value, ZEND_STRL("start_column"), static_cast<zend_long>(start_column));
91+
if (v8::Message::kNoColumnInfo != start_column) {
92+
zend_update_property_long(this_ce, return_value, ZEND_STRL("start_column"), static_cast<zend_long>(start_column));
93+
}
8994

9095
/* v8::Message::GetEndColumn */
9196
/* NOTE: we don't use FromMaybe(v8::Message::kNoColumnInfo) due to static const (https://gcc.gnu.org/wiki/VerboseDiagnostics#missing_static_const_definition)*/
9297
int end_column = v8::Message::kNoColumnInfo;
9398
if (!message->GetEndColumn(context).IsNothing()) {
9499
end_column = message->GetEndColumn(context).FromJust();
95100
}
96-
zend_update_property_long(this_ce, return_value, ZEND_STRL("end_column"), static_cast<zend_long>(end_column));
97-
98-
/* v8::Message::IsSharedCrossOrigin */
99-
zend_update_property_bool(this_ce, return_value, ZEND_STRL("is_shared_cross_origin"), static_cast<zend_bool>(message->IsSharedCrossOrigin()));
100-
/* v8::Message::IsOpaque */
101-
zend_update_property_bool(this_ce, return_value, ZEND_STRL("is_opaque"), static_cast<zend_bool>(message->IsOpaque()));
101+
if (v8::Message::kNoColumnInfo != end_column) {
102+
zend_update_property_long(this_ce, return_value, ZEND_STRL("end_column"), static_cast<zend_long>(end_column));
103+
}
102104
}
103105

104106

@@ -110,19 +112,15 @@ static PHP_METHOD(Message, __construct) {
110112
zend_string *resource_name = NULL;
111113
zval *stack_trace = NULL;
112114

113-
zend_long line_number = static_cast<zend_long>(v8::Message::kNoLineNumberInfo);
115+
zend_long line_number = -1;
114116
zend_long start_position = -1;
115-
zend_long end_position = -1;
116-
zend_long start_column = static_cast<zend_long>(v8::Message::kNoColumnInfo);
117-
zend_long end_column = static_cast<zend_long>(v8::Message::kNoColumnInfo);
117+
zend_long end_position = -1;
118+
zend_long start_column = -1;
119+
zend_long end_column = -1;
118120

119-
zend_bool is_shared_cross_origin = '\0';
120-
zend_bool is_opaque = '\0';
121-
122-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSoSo|lllllbb",
121+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSoSo|lllll",
123122
&message, &source_line, &script_origin, &resource_name, &stack_trace,
124-
&line_number, &start_position, &end_position, &start_column, &end_column,
125-
&is_shared_cross_origin, &is_opaque) == FAILURE) {
123+
&line_number, &start_position, &end_position, &start_column, &end_column) == FAILURE) {
126124
return;
127125
}
128126

@@ -132,14 +130,21 @@ static PHP_METHOD(Message, __construct) {
132130
zend_update_property_str(this_ce, getThis(), ZEND_STRL("resource_name"), resource_name);
133131
zend_update_property(this_ce, getThis(), ZEND_STRL("stack_trace"), stack_trace);
134132

135-
zend_update_property_long(this_ce, getThis(), ZEND_STRL("line_number"), line_number);
136-
zend_update_property_long(this_ce, getThis(), ZEND_STRL("start_position"), start_position);
137-
zend_update_property_long(this_ce, getThis(), ZEND_STRL("end_position"), end_position);
138-
zend_update_property_long(this_ce, getThis(), ZEND_STRL("start_column"), start_column);
139-
zend_update_property_long(this_ce, getThis(), ZEND_STRL("end_column"), end_column);
140-
141-
zend_update_property_bool(this_ce, getThis(), ZEND_STRL("is_shared_cross_origin"), is_shared_cross_origin);
142-
zend_update_property_bool(this_ce, getThis(), ZEND_STRL("is_opaque"), is_opaque);
133+
if (line_number > 0) {
134+
zend_update_property_long(this_ce, getThis(), ZEND_STRL("line_number"), line_number);
135+
}
136+
if (start_position >= 0) {
137+
zend_update_property_long(this_ce, getThis(), ZEND_STRL("start_position"), start_position);
138+
}
139+
if (end_position >= 0) {
140+
zend_update_property_long(this_ce, getThis(), ZEND_STRL("end_position"), end_position);
141+
}
142+
if (start_column > 0) {
143+
zend_update_property_long(this_ce, getThis(), ZEND_STRL("start_column"), start_column);
144+
}
145+
if (end_column > 0) {
146+
zend_update_property_long(this_ce, getThis(), ZEND_STRL("end_column"), end_column);
147+
}
143148
}
144149

145150
static PHP_METHOD(Message, get)
@@ -252,41 +257,17 @@ static PHP_METHOD(Message, getEndColumn)
252257
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("end_column"), 0, &rv), 1, 0);
253258
}
254259

255-
static PHP_METHOD(Message, isSharedCrossOrigin)
256-
{
257-
zval rv;
258-
259-
if (zend_parse_parameters_none() == FAILURE) {
260-
return;
261-
}
262-
263-
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("is_shared_cross_origin"), 0, &rv), 1, 0);
264-
}
265-
266-
static PHP_METHOD(Message, isOpaque)
267-
{
268-
zval rv;
269-
270-
if (zend_parse_parameters_none() == FAILURE) {
271-
return;
272-
}
273-
274-
RETVAL_ZVAL(zend_read_property(this_ce, getThis(), ZEND_STRL("is_opaque"), 0, &rv), 1, 0);
275-
}
276-
277260
PHP_V8_ZEND_BEGIN_ARG_WITH_CONSTRUCTOR_INFO_EX(arginfo___construct, 5)
278261
ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
279262
ZEND_ARG_TYPE_INFO(0, source_line, IS_STRING, 0)
280263
ZEND_ARG_OBJ_INFO(0, script_origin, V8\\ScriptOrigin, 0)
281264
ZEND_ARG_TYPE_INFO(0, resource_name, IS_STRING, 0)
282265
ZEND_ARG_OBJ_INFO(0, stack_trace, V8\\StackTrace, 0)
283-
ZEND_ARG_TYPE_INFO(0, line_number, IS_LONG, 0)
284-
ZEND_ARG_TYPE_INFO(0, start_position, IS_LONG, 0)
285-
ZEND_ARG_TYPE_INFO(0, end_position, IS_LONG, 0)
286-
ZEND_ARG_TYPE_INFO(0, start_column, IS_LONG, 0)
287-
ZEND_ARG_TYPE_INFO(0, end_column, IS_LONG, 0)
288-
ZEND_ARG_TYPE_INFO(0, is_shared_cross_origin, _IS_BOOL, 0)
289-
ZEND_ARG_TYPE_INFO(0, is_opaque, _IS_BOOL, 0)
266+
ZEND_ARG_TYPE_INFO(0, line_number, IS_LONG, 1)
267+
ZEND_ARG_TYPE_INFO(0, start_position, IS_LONG, 1)
268+
ZEND_ARG_TYPE_INFO(0, end_position, IS_LONG, 1)
269+
ZEND_ARG_TYPE_INFO(0, start_column, IS_LONG, 1)
270+
ZEND_ARG_TYPE_INFO(0, end_column, IS_LONG, 1)
290271
ZEND_END_ARG_INFO()
291272

292273
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get, ZEND_RETURN_VALUE, 0, IS_STRING, 0)
@@ -304,25 +285,19 @@ ZEND_END_ARG_INFO()
304285
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getStackTrace, ZEND_RETURN_VALUE, 0, V8\\StackTrace, 1)
305286
ZEND_END_ARG_INFO()
306287

307-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getLineNumber, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
288+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getLineNumber, ZEND_RETURN_VALUE, 0, IS_LONG, 1)
308289
ZEND_END_ARG_INFO()
309290

310-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartPosition, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
291+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartPosition, ZEND_RETURN_VALUE, 0, IS_LONG, 1)
311292
ZEND_END_ARG_INFO()
312293

313-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndPosition, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
294+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndPosition, ZEND_RETURN_VALUE, 0, IS_LONG, 1)
314295
ZEND_END_ARG_INFO()
315296

316-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartColumn, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
297+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getStartColumn, ZEND_RETURN_VALUE, 0, IS_LONG, 1)
317298
ZEND_END_ARG_INFO()
318299

319-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndColumn, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
320-
ZEND_END_ARG_INFO()
321-
322-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_isSharedCrossOrigin, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
323-
ZEND_END_ARG_INFO()
324-
325-
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_isOpaque, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
300+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_getEndColumn, ZEND_RETURN_VALUE, 0, IS_LONG, 1)
326301
ZEND_END_ARG_INFO()
327302

328303

@@ -338,8 +313,6 @@ static const zend_function_entry php_v8_message_methods[] = {
338313
PHP_V8_ME(Message, getEndPosition, ZEND_ACC_PUBLIC)
339314
PHP_V8_ME(Message, getStartColumn, ZEND_ACC_PUBLIC)
340315
PHP_V8_ME(Message, getEndColumn, ZEND_ACC_PUBLIC)
341-
PHP_V8_ME(Message, isSharedCrossOrigin, ZEND_ACC_PUBLIC)
342-
PHP_V8_ME(Message, isOpaque, ZEND_ACC_PUBLIC)
343316

344317
PHP_FE_END
345318
};
@@ -349,25 +322,18 @@ PHP_MINIT_FUNCTION (php_v8_message) {
349322
INIT_NS_CLASS_ENTRY(ce, PHP_V8_NS, "Message", php_v8_message_methods);
350323
this_ce = zend_register_internal_class(&ce);
351324

352-
zend_declare_class_constant_long(this_ce, ZEND_STRL("kNoLineNumberInfo"), static_cast<zend_long>(v8::Message::kNoLineNumberInfo));
353-
zend_declare_class_constant_long(this_ce, ZEND_STRL("kNoColumnInfo"), static_cast<zend_long>(v8::Message::kNoColumnInfo));
354-
zend_declare_class_constant_long(this_ce, ZEND_STRL("kNoScriptIdInfo"), static_cast<zend_long>(v8::Message::kNoLineNumberInfo));
355-
356-
zend_declare_property_string(this_ce, ZEND_STRL("message"), "", ZEND_ACC_PRIVATE);
357-
zend_declare_property_null(this_ce, ZEND_STRL("script_origin"), ZEND_ACC_PRIVATE);
358-
zend_declare_property_string(this_ce, ZEND_STRL("source_line"), "", ZEND_ACC_PRIVATE);
325+
zend_declare_property_string(this_ce, ZEND_STRL("message"), "", ZEND_ACC_PRIVATE);
326+
zend_declare_property_null(this_ce, ZEND_STRL("script_origin"), ZEND_ACC_PRIVATE);
327+
zend_declare_property_string(this_ce, ZEND_STRL("source_line"), "", ZEND_ACC_PRIVATE);
359328
zend_declare_property_string(this_ce, ZEND_STRL("resource_name"), "", ZEND_ACC_PRIVATE);
360-
zend_declare_property_null(this_ce, ZEND_STRL("stack_trace"), ZEND_ACC_PRIVATE);
361-
362-
zend_declare_property_long(this_ce, ZEND_STRL("line_number"), static_cast<zend_long>(v8::Message::kNoLineNumberInfo), ZEND_ACC_PRIVATE);
363-
zend_declare_property_long(this_ce, ZEND_STRL("start_position"), -1, ZEND_ACC_PRIVATE);
364-
zend_declare_property_long(this_ce, ZEND_STRL("end_position"), -1, ZEND_ACC_PRIVATE);
329+
zend_declare_property_null(this_ce, ZEND_STRL("stack_trace"), ZEND_ACC_PRIVATE);
365330

366-
zend_declare_property_long(this_ce, ZEND_STRL("start_column"), static_cast<zend_long>(v8::Message::kNoColumnInfo), ZEND_ACC_PRIVATE);
367-
zend_declare_property_long(this_ce, ZEND_STRL("end_column"), static_cast<zend_long>(v8::Message::kNoColumnInfo), ZEND_ACC_PRIVATE);
331+
zend_declare_property_null(this_ce, ZEND_STRL("line_number"), ZEND_ACC_PRIVATE);
332+
zend_declare_property_null(this_ce, ZEND_STRL("start_position"), ZEND_ACC_PRIVATE);
333+
zend_declare_property_null(this_ce, ZEND_STRL("end_position"), ZEND_ACC_PRIVATE);
368334

369-
zend_declare_property_bool(this_ce, ZEND_STRL("is_shared_cross_origin"), static_cast<zend_bool>(false), ZEND_ACC_PRIVATE);
370-
zend_declare_property_bool(this_ce, ZEND_STRL("is_opaque"), static_cast<zend_bool>(false), ZEND_ACC_PRIVATE);
335+
zend_declare_property_null(this_ce, ZEND_STRL("start_column"), ZEND_ACC_PRIVATE);
336+
zend_declare_property_null(this_ce, ZEND_STRL("end_column"), ZEND_ACC_PRIVATE);
371337

372338
return SUCCESS;
373339
}

0 commit comments

Comments
 (0)