Sha256: 5a3a0decd44b666a44b4cde2f1d44e75adbb9bc53917c3fa6a56ecfa4f8b208c

Contents?: true

Size: 1.75 KB

Versions: 9

Compression:

Stored size: 1.75 KB

Contents

/*------------------------------------------------------------------------------
 * Common.c
 *----------------------------------------------------------------------------*/
/**
 * Copyright © Peter Wood, 2005
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (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.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specificlanguage governing rights and  limitations under the License.
 *
 * The Original Code is the FireRuby extension for the Ruby language.
 *
 * The Initial Developer of the Original Code is Peter Wood. All Rights
 * Reserved.
 *
 * @author  Peter Wood
 * @version 1.0
 */

/* Includes. */
#include "Common.h"
#include "FireRubyException.h"


/**
 * This function is used to preclude the use of any of the Ruby copy methods
 * (clone or dup) with an object.
 *
 * @param  copy      A reference to the object copy.
 * @param  original  A reference to the original object that is being copied.
 *
 * @return  Never returns as an exception is always generated.
 *
 */
VALUE forbidObjectCopy(VALUE copy, VALUE original) {
  VALUE message = rb_str_new2("Copying of CLASS_NAME objects is forbidden."),
        value   = rb_funcall(original, rb_intern("class"), 0),
        array[2];

  array[0] = rb_str_new2("CLASS_NAME");
  array[1] = rb_funcall(value, rb_intern("name"), 0);
  message = rb_funcall(message, rb_intern("gsub"), 2, array);

  rb_fireruby_raise(NULL, StringValuePtr(message));

  return(Qnil);
}

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rubyfb-0.6.4 ext/Common.c
rubyfb-0.6.3 ext/Common.c
rubyfb-0.6.2 ext/Common.c
rubyfb-0.6.1 ext/Common.c
rubyfb-0.6 ext/Common.c
rubyfb-0.5.9 ext/Common.c
rubyfb-0.5.8 ext/Common.c
rubyfb-0.5.7 ext/Common.c
rubyfb-0.5.6 ext/Common.c