Changeset 3278 for trunk/lang


Ignore:
Timestamp:
Feb 4, 2013, 1:54:59 PM (11 years ago)
Author:
gah
Message:

fixes for 1.9 ruby build

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lang/ruby/Ruby_Rappture.cc

    r3177 r3278  
    2727#include "RpUnits.h"     /* RpUnits::convert() */
    2828#include "ruby.h"        /* VALUE, rb_*(), Data_*_Struct(), NUM2INT(),
    29                             INT2NUM(), NUM2DBL(), STR2CSTR(), ANYARGS */
     29                            INT2NUM(), NUM2DBL(), Str2Cstr(), ANYARGS */
    3030
    3131/******************************************************************************
     
    4040
    4141extern "C" void Init_Rappture(void);
     42
     43static std::string
     44GetStdString(VALUE value)
     45{
     46    VALUE strValue;
     47
     48    strValue = StringValue(value);
     49    return std::string(RSTRING(strValue)->ptr, RSTRING(strValue)->len);
     50}
     51
     52static const char *
     53GetString(VALUE value)
     54{
     55    return StringValuePtr(value);
     56}
    4257
    4358/******************************************************************************
     
    6176{
    6277   RpLibrary *lib;
    63    std::string str;
     78   std::string result;
    6479
    6580   /* Extract the pointer to the Rappture object, lib, from the Ruby object,
     
    6782   Data_Get_Struct(self, RpLibrary, lib);
    6883
     84
    6985   /* Read the data from path in lib as a C++ std::string. */
    70    str = lib->getString(STR2CSTR(path));
     86   result = lib->getString(GetStdString(path));
    7187     
    7288   /* Return a Ruby VALUE */
    73    return rb_str_new2(str.c_str());
     89   return rb_str_new2(result.c_str());
    7490
    7591}  /* end RbRp_GetString */
     
    95111
    96112   /* Read the data from path in lib as a C++ std::string. */
    97    buf = lib->getData(STR2CSTR(path));
     113   buf = lib->getData(GetStdString(path));
    98114     
    99115   /* Return a Ruby VALUE */
     
    142158   {
    143159      case T_STRING:
    144          lib->put(STR2CSTR(path), STR2CSTR(value), "", NUM2INT(append));
     160          /* Read the data from path in lib as a C++ std::string. */
     161          lib->put(GetStdString(path), GetStdString(value), "",
     162                NUM2INT(append));
    145163         break;
    146164      case T_FIXNUM:
    147165         intVal = NUM2INT(value);
    148          lib->putData(STR2CSTR(path), (const char *)&intVal, sizeof(int),
     166         lib->putData(GetStdString(path), (const char *)&intVal, sizeof(int),
    149167                      NUM2INT(append));
    150168         break;
    151169      case T_FLOAT:
    152          lib->put(STR2CSTR(path), NUM2DBL(value), "", NUM2INT(append));
     170         lib->put(GetStdString(path), NUM2DBL(value), "", NUM2INT(append));
    153171         break;
    154172      default:
     
    156174         rb_raise(rb_eRuntimeError,
    157175                  "Unable to put object %s to Rappture: unknown type",
    158                   STR2CSTR(rbStrName));
     176                  GetString(rbStrName));
    159177#endif
    160178         break;
     
    202220      char *bytes = rb_str2cstr(value, &nbytes);
    203221
    204       lib->putData(STR2CSTR(path), bytes, nbytes, NUM2INT(append));
     222      lib->putData(GetStdString(path), bytes, nbytes, NUM2INT(append));
    205223   }
    206224#ifdef RAISE_EXCEPTIONS
     
    209227      rb_raise(rb_eRuntimeError,
    210228               "Unable to put data \"%s\" to Rappture: unknown type",
    211                STR2CSTR(rbStrName));
     229               GetString(rbStrName));
    212230   }
    213231#endif
     
    257275      if (Qtrue == rb_funcall(ft, id_filetest, 1, filename))  /* valid filename */
    258276      {
    259          lib->putFile(STR2CSTR(path), STR2CSTR(filename), NUM2INT(compress),
    260                       NUM2INT(append));
     277         lib->putFile(GetStdString(path), GetStdString(filename),
     278                NUM2INT(compress), NUM2INT(append));
    261279      }
    262280#ifdef RAISE_EXCEPTIONS
     
    264282      {
    265283         rb_raise(rb_eRuntimeError, "%s is not a valid file",
    266                   STR2CSTR(rbStrName));
     284                  GetString(rbStrName));
    267285      }
    268286#endif
     
    270288#ifdef RAISE_EXCEPTIONS
    271289   else
    272       rb_raise(rb_eRuntimeError, "Bad file name: %s", STR2CSTR(rbStrName));
     290       rb_raise(rb_eRuntimeError, "Bad file name: %s",
     291                GetString(rbStrName));
    273292#endif
    274293
     
    360379
    361380   /* Write the message */
    362    (void)Rappture::Utils::progress(NUM2INT(percent), STR2CSTR(message));
     381    (void)Rappture::Utils::progress(NUM2INT(percent),
     382                                    GetString(message));
    363383
    364384   /* Return a Ruby VALUE */
     
    385405{
    386406   VALUE retVal = Qnil;
    387    RpLibrary *lib;
    388407   std::string strRetVal;
    389408   int result;
    390409
    391    /* Extract the pointer to the Rappture object, lib, from the Ruby
    392       object, self */
    393    Data_Get_Struct(self, RpLibrary, lib);
    394 
    395410   /* Convert */
    396    strRetVal = RpUnits::convert(STR2CSTR(fromVal), STR2CSTR(toUnitsName),
    397                                 NUM2INT(showUnits), &result);
     411   strRetVal = RpUnits::convert(GetStdString(fromVal),
     412                GetStdString(toUnitsName), NUM2INT(showUnits), &result);
    398413   /* Return value */
    399414   if (0 == result)
     
    409424   else
    410425      rb_raise(rb_eRuntimeError, "Unable to convert \"%s\" to \"%s\"",
    411                STR2CSTR(fromVal), STR2CSTR(toUnitsName));
     426               GetString(fromVal), GetString(toUnitsName));
    412427#endif
    413428   return retVal;
     
    473488{
    474489   /* Create the Rappture object from the XML driver file. */
    475    RpLibrary *lib = new RpLibrary(STR2CSTR(driver));
     490   RpLibrary *lib = new RpLibrary(GetStdString(driver));
    476491     
    477492   /* Data_Wrap_Struct() creates a new Ruby object which associates the
Note: See TracChangeset for help on using the changeset viewer.