Sha256: ca730ccf85b6029f78e47692018a619aeb98f4b2733c4f285629da75d3394f13

Contents?: true

Size: 1.72 KB

Versions: 3

Compression:

Stored size: 1.72 KB

Contents

// -*- c++ -*-
% require 'support'
#include "rucy/module.h"


#include <rucy/class.h>


namespace Rucy
{


	Module::Module (VALUE v)
	:	Super(v)
	{
	}

	Module
	Module::define_module (const char* name)
	{
		return rb_define_module_under(value(), name);
	}

	Class
	Module::define_class (const char* name, Value super)
	{
		return rb_define_class_under(value(), name, super);
	}

	Module
	Module::define_const (const char* name, Value val)
	{
		rb_define_const(value(), name, val);
		return *this;
	}

	Module
	Module::define_attr (const char* name, bool read, bool write)
	{
		rb_define_attr(value(), name, read, write);
		return *this;
	}

	Module
	Module::define_alias (const char* new_, const char* old)
	{
		rb_define_alias(value(), new_, old);
		return *this;
	}

	Module
	Module::undef_method (const char* name)
	{
		rb_undef_method(value(), name);
		return *this;
	}

	Module
	Module::include_module (Value module)
	{
		rb_include_module(value(), module);
		return *this;
	}

%	[
%		['define_function',         'rb_define_module_function'],
%		['define_method',           'rb_define_method'],
%		['define_private_method',   'rb_define_private_method'],
%		['define_singleton_method', 'rb_define_singleton_method']
%	].each do |(op, rb_op)|
	Module
	Module::<%= op %> (const char* name, RubyFunctionN fun)
	{
		<%= rb_op %>(value(), name, RUBY_METHOD_FUNC(fun), -1);
		return *this;
	}
%		NTIMES.each do |n|
	Module
	Module::<%= op %> (const char* name, RubyFunction<%= n %> fun)
	{
		<%= rb_op %>(value(), name, RUBY_METHOD_FUNC(fun), <%= n %>);
		return *this;
	}
%		end
%	end


	Module
	define_module (const char* name)
	{
		return rb_define_module(name);
	}


	Module
	rucy_module ()
	{
		static Module m = define_module("Rucy");
		return m;
	}


}// Rucy

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rucy-0.1.2 src/module.cpp.erb
rucy-0.1.1 src/module.cpp.erb
rucy-0.1.0 src/module.cpp.erb