diff --git a/MRClient/avocirb.cpp b/MRClient/avocirb.cpp index 988f2e0053..80022ba061 100644 --- a/MRClient/avocirb.cpp +++ b/MRClient/avocirb.cpp @@ -43,6 +43,7 @@ #include "BasicsC/strings.h" #include "Logger/Logger.h" #include "MRuby/MRLineEditor.h" +#include "MRuby/mr-utils.h" #include "SimpleHttpClient/SimpleHttpClient.h" #include "SimpleHttpClient/SimpleHttpResult.h" @@ -50,8 +51,8 @@ extern "C" { #include "mruby.h" #include "mruby/proc.h" #include "mruby/data.h" +#include "mruby/variable.h" #include "compile.h" -#include "variable.h" } using namespace std; @@ -452,6 +453,8 @@ int main (int argc, char* argv[]) { // create a new ruby shell mrb_state* mrb = mrb_open(); + TRI_InitMRUtils(mrb); + RunShell(mrb); // calling dispose in V8 3.10.x causes a segfault. the v8 docs says its not necessary to call it upon program termination diff --git a/MRuby/mr-utils.c b/MRuby/mr-utils.c new file mode 100644 index 0000000000..6240cb31f7 --- /dev/null +++ b/MRuby/mr-utils.c @@ -0,0 +1,85 @@ +//////////////////////////////////////////////////////////////////////////////// +/// @brief mruby utilities +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2004-2012 triagens GmbH, Cologne, Germany +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Dr. Frank Celler +/// @author Copyright 2011-2012, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +#include "mr-utils.h" + +#include "mruby.h" +#include "mruby/data.h" +#include "mruby/proc.h" +#include "mruby/variable.h" + +// ----------------------------------------------------------------------------- +// --SECTION-- private functions +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @addtogroup AvocadoDB +/// @{ +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +/// @brief returns the time in seconds +//////////////////////////////////////////////////////////////////////////////// + +static mrb_value MR_Time (mrb_state* mrb, mrb_value self) { + return mrb_float_value(TRI_microtime()); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @} +//////////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------------- +// --SECTION-- private functions +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @addtogroup AvocadoDB +/// @{ +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +/// @brief init utilities +//////////////////////////////////////////////////////////////////////////////// + +void TRI_InitMRUtils (mrb_state* mrb) { + struct RClass *krn; + + krn = mrb->kernel_module; + + // timing function + mrb_define_method(mrb, krn, "time", MR_Time, ARGS_NONE()); +} + +//////////////////////////////////////////////////////////////////////////////// +/// @} +//////////////////////////////////////////////////////////////////////////////// + +// Local Variables: +// mode: outline-minor +// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @\\}\\)" +// End: diff --git a/MRuby/mr-utils.h b/MRuby/mr-utils.h new file mode 100644 index 0000000000..dad3032358 --- /dev/null +++ b/MRuby/mr-utils.h @@ -0,0 +1,84 @@ +//////////////////////////////////////////////////////////////////////////////// +/// @brief mruby utilities +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2004-2012 triagens GmbH, Cologne, Germany +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Dr. Frank Celler +/// @author Copyright 2011-2012, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +#ifndef TRIAGENS_MRUBY_MR_UTILS_H +#define TRIAGENS_MRUBY_MR_UTILS_H 1 + +#include "BasicsC/common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// ----------------------------------------------------------------------------- +// --SECTION-- forward declarations +// ----------------------------------------------------------------------------- + +struct mrb_state; + +// ----------------------------------------------------------------------------- +// --SECTION-- private variables +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @addtogroup AvocadoDB +/// @{ +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +/// @} +//////////////////////////////////////////////////////////////////////////////// + +// ----------------------------------------------------------------------------- +// --SECTION-- private functions +// ----------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////////////////////////// +/// @addtogroup AvocadoDB +/// @{ +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +/// @brief init utilities +//////////////////////////////////////////////////////////////////////////////// + +void TRI_InitMRUtils (struct mrb_state* mrb); + +//////////////////////////////////////////////////////////////////////////////// +/// @} +//////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus +} +#endif + +#endif + +// Local Variables: +// mode: outline-minor +// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @\\}\\)" +// End: