1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "gin/arguments.h"
7 #include "base/strings/stringprintf.h"
8 #include "gin/converter.h"
12 Arguments::Arguments()
16 insufficient_arguments_(false) {
19 Arguments::Arguments(const v8::FunctionCallbackInfo
<v8::Value
>& info
)
20 : isolate_(info
.GetIsolate()),
23 insufficient_arguments_(false) {
26 Arguments::~Arguments() {
29 v8::Handle
<v8::Value
> Arguments::PeekNext() const {
30 if (next_
>= info_
->Length())
31 return v8::Handle
<v8::Value
>();
32 return (*info_
)[next_
];
35 void Arguments::ThrowError() const {
36 if (insufficient_arguments_
)
37 return ThrowTypeError("Insufficient number of arguments.");
39 ThrowTypeError(base::StringPrintf(
40 "Error processing argument %d.", next_
- 1));
43 void Arguments::ThrowTypeError(const std::string
& message
) const {
44 isolate_
->ThrowException(v8::Exception::TypeError(
45 StringToV8(isolate_
, message
)));
48 bool Arguments::IsConstructCall() const {
49 return info_
->IsConstructCall();