synthemesc-impulse 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +3 -0
- data/VERSION +1 -1
- data/impulse.gemspec +17 -9
- data/lib/ext/.gitignore +5 -0
- data/lib/ext/arch.c +57 -0
- data/lib/ext/extconf.rb +21 -0
- data/lib/ext/fixnum.c +73 -0
- data/lib/ext/impulse_ext.c +39 -0
- data/{ext → lib/ext}/impulse_ext.h +11 -2
- data/lib/ext/log.c +87 -0
- data/{ext → lib/ext}/stream.c +18 -1
- data/lib/impulse.rb +5 -3
- data/lib/project.rb +17 -2
- data/test/ext_test.rb +21 -0
- metadata +15 -11
- data/ext/.gitignore +0 -1
- data/ext/extconf.rb +0 -12
- data/ext/impulse_ext.c +0 -21
data/LICENSE
CHANGED
@@ -3,6 +3,9 @@ Please see your CoDeveloper license for more information. The license below
|
|
3
3
|
is only applicable to the Impulse Ruby gem. Please do not contact Impulse
|
4
4
|
Accelerated Technologies with questions regarding support for this gem.
|
5
5
|
|
6
|
+
Project#to_makefile is derived from the icProj2make.pl script included with
|
7
|
+
the CoDeveloper distribution. See lib/project.rb for additional license details.
|
8
|
+
|
6
9
|
----------------------------------------------------------------------------
|
7
10
|
|
8
11
|
Impulse Ruby gem Copyright (c) 2009 Joshua Eckstein.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/impulse.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{impulse}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Joshua Eckstein"]
|
9
|
-
s.date = %q{2009-
|
10
|
-
s.email = %q{josh@
|
9
|
+
s.date = %q{2009-07-11}
|
10
|
+
s.email = %q{josh@eksdyne.com}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
13
13
|
"README.rdoc"
|
@@ -19,19 +19,24 @@ Gem::Specification.new do |s|
|
|
19
19
|
"README.rdoc",
|
20
20
|
"Rakefile",
|
21
21
|
"VERSION",
|
22
|
-
"ext/.gitignore",
|
23
|
-
"ext/extconf.rb",
|
24
|
-
"ext/impulse_ext.c",
|
25
|
-
"ext/impulse_ext.h",
|
26
|
-
"ext/stream.c",
|
27
22
|
"impulse.gemspec",
|
28
23
|
"lib/app.rb",
|
24
|
+
"lib/ext/.gitignore",
|
25
|
+
"lib/ext/arch.c",
|
26
|
+
"lib/ext/extconf.rb",
|
27
|
+
"lib/ext/fixnum.c",
|
28
|
+
"lib/ext/impulse_ext.c",
|
29
|
+
"lib/ext/impulse_ext.h",
|
30
|
+
"lib/ext/log.c",
|
31
|
+
"lib/ext/stream.c",
|
29
32
|
"lib/impulse.rb",
|
30
33
|
"lib/project.rb",
|
31
34
|
"lib/ruby_to_impulse.rb",
|
32
35
|
"lib/stream.rb",
|
33
|
-
"lib/template.rb"
|
36
|
+
"lib/template.rb",
|
37
|
+
"test/ext_test.rb"
|
34
38
|
]
|
39
|
+
s.has_rdoc = true
|
35
40
|
s.homepage = %q{http://github.com/synthemesc/impulse}
|
36
41
|
s.rdoc_options = ["--charset=UTF-8"]
|
37
42
|
s.require_paths = ["lib"]
|
@@ -40,6 +45,9 @@ Gem::Specification.new do |s|
|
|
40
45
|
s.summary = %q{Ruby tools for the Impulse platform}
|
41
46
|
|
42
47
|
s.add_dependency "facets"
|
48
|
+
s.test_files = [
|
49
|
+
"test/ext_test.rb"
|
50
|
+
]
|
43
51
|
|
44
52
|
if s.respond_to? :specification_version then
|
45
53
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
data/lib/ext/.gitignore
ADDED
data/lib/ext/arch.c
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include <string.h>
|
3
|
+
|
4
|
+
#include "impulse_ext.h"
|
5
|
+
|
6
|
+
static VALUE
|
7
|
+
co_architecture_rb_alloc(self)
|
8
|
+
VALUE self;
|
9
|
+
{
|
10
|
+
co_architecture arch;
|
11
|
+
return Data_Wrap_Struct(self, 0, 0, arch); /* No mark/free */
|
12
|
+
}
|
13
|
+
|
14
|
+
/* No-op for now */
|
15
|
+
void t_configure(void *arg)
|
16
|
+
{
|
17
|
+
rb_need_block();
|
18
|
+
rb_cvar_set(cLog, id_cLog_initialized, (cosim_logwindow_init() != 0 ? Qtrue : Qfalse)
|
19
|
+
#ifdef RB_CVAR_SET_4ARGS
|
20
|
+
, 0
|
21
|
+
#endif
|
22
|
+
);
|
23
|
+
rb_yield(rb_block_proc());
|
24
|
+
return;
|
25
|
+
}
|
26
|
+
|
27
|
+
/* co_initialize is required to do anything. Ref'd in t_architecture_init */
|
28
|
+
co_architecture co_initialize(void *args)
|
29
|
+
{
|
30
|
+
return(co_architecture_create("rb_arch","generic_vhdl",t_configure,(void *)args));
|
31
|
+
}
|
32
|
+
|
33
|
+
/* Set up the co_architecture object and initialize */
|
34
|
+
static VALUE
|
35
|
+
t_architecture_init(self)
|
36
|
+
VALUE self; /* the object */
|
37
|
+
{
|
38
|
+
DATA_PTR(self) = (co_architecture) co_initialize((void *)self);
|
39
|
+
return (self);
|
40
|
+
}
|
41
|
+
|
42
|
+
static VALUE
|
43
|
+
t_architecture_execute(self)
|
44
|
+
VALUE self; /* the object */
|
45
|
+
{
|
46
|
+
co_execute(DATA_PTR(self));
|
47
|
+
return (Qtrue);
|
48
|
+
}
|
49
|
+
|
50
|
+
void Init_arch()
|
51
|
+
{
|
52
|
+
cArchitecture = rb_define_class_under(mImpulse, "Architecture", rb_cObject);
|
53
|
+
|
54
|
+
rb_define_alloc_func(cArchitecture, co_architecture_rb_alloc);
|
55
|
+
rb_define_method(cArchitecture, "initialize", t_architecture_init, 0);
|
56
|
+
rb_define_method(cArchitecture, "execute", t_architecture_execute, 0);
|
57
|
+
}
|
data/lib/ext/extconf.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
|
3
|
+
ImpulseC = ENV["IMPULSEC_HOME"] || File.join(%w(usr Impulse CoDeveloper3))
|
4
|
+
|
5
|
+
lib_path = File.join(ImpulseC, "Libraries")
|
6
|
+
inc_path = File.join(ImpulseC, "Include")
|
7
|
+
|
8
|
+
if (have_header("co.h") ||
|
9
|
+
find_header("co.h", inc_path)) &&
|
10
|
+
(have_header("cosim_log.h") ||
|
11
|
+
find_header("cosim_log.h", inc_path)) &&
|
12
|
+
(have_library("ImpulseC", "co_stream_open") ||
|
13
|
+
find_library("ImpulseC", "co_stream_open", lib_path)) then
|
14
|
+
create_makefile("impulse_ext")
|
15
|
+
else
|
16
|
+
STDERR.puts <<-EOS
|
17
|
+
Couldn't find the ImpulseC headers or library. Are you sure you have
|
18
|
+
them installed either in $IMPULSEC_HOME ('#{ENV["IMPULSEC_HOME"]}') or
|
19
|
+
the standard system locations (e.g., /usr/include, /usr/lib, etc.)?
|
20
|
+
EOS
|
21
|
+
end
|
data/lib/ext/fixnum.c
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include "impulse_ext.h"
|
3
|
+
|
4
|
+
static ID id_beg, id_end;
|
5
|
+
|
6
|
+
/* co_bit_extract is duck-equivalent to Ruby's slice methods.
|
7
|
+
* Keep in mind we don't implement fix_bit_extract_u because
|
8
|
+
* it's not exactly Ruby idiom-esque to make a distinction.
|
9
|
+
* Maybe some other time.
|
10
|
+
*/
|
11
|
+
|
12
|
+
static VALUE
|
13
|
+
fix_bit_extract(self, index)
|
14
|
+
VALUE self;
|
15
|
+
VALUE index;
|
16
|
+
{
|
17
|
+
VALUE b, e;
|
18
|
+
|
19
|
+
/* Check that it's a range */
|
20
|
+
if (!rb_obj_is_kind_of(index, rb_cRange))
|
21
|
+
return(rb_super());
|
22
|
+
|
23
|
+
b = rb_ivar_get(index, id_beg);
|
24
|
+
e = rb_ivar_get(index, id_end);
|
25
|
+
|
26
|
+
if (FIXNUM_P(b) && FIXNUM_P(e))
|
27
|
+
{
|
28
|
+
return INT2FIX(co_bit_extract((int32) FIX2INT(self),
|
29
|
+
(uint8) FIX2UINT(b),
|
30
|
+
(uint8) FIX2UINT(e) - FIX2UINT(b)));
|
31
|
+
}
|
32
|
+
else
|
33
|
+
return(rb_super());
|
34
|
+
}
|
35
|
+
|
36
|
+
static VALUE
|
37
|
+
fix_bit_insert(self, index, from)
|
38
|
+
VALUE self;
|
39
|
+
VALUE index;
|
40
|
+
VALUE from;
|
41
|
+
{
|
42
|
+
VALUE b, e;
|
43
|
+
|
44
|
+
if (!rb_obj_is_kind_of(index, rb_cRange))
|
45
|
+
{
|
46
|
+
rb_raise(rb_eTypeError, "Range required");
|
47
|
+
return (INT2FIX(0));
|
48
|
+
}
|
49
|
+
|
50
|
+
b = rb_ivar_get(index, id_beg);
|
51
|
+
e = rb_ivar_get(index, id_end);
|
52
|
+
|
53
|
+
/* If it's not a range of numbers, well, it's 0 */
|
54
|
+
if (!FIXNUM_P(b) || !FIXNUM_P(e))
|
55
|
+
return(INT2FIX(0));
|
56
|
+
|
57
|
+
self = INT2FIX(co_bit_insert((int32) FIX2INT(self),
|
58
|
+
(uint8) FIX2UINT(b),
|
59
|
+
(uint8) FIX2INT(e) - FIX2INT(b),
|
60
|
+
(int32) FIX2INT(from)));
|
61
|
+
|
62
|
+
return (self);
|
63
|
+
}
|
64
|
+
|
65
|
+
void
|
66
|
+
Init_fixnum_ext()
|
67
|
+
{
|
68
|
+
rb_define_method(rb_cFixnum, "[]", fix_bit_extract, 1);
|
69
|
+
rb_define_method(rb_cFixnum, "[]=", fix_bit_insert, 2);
|
70
|
+
|
71
|
+
id_beg = rb_intern("begin");
|
72
|
+
id_end = rb_intern("end");
|
73
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include "impulse_ext.h"
|
3
|
+
|
4
|
+
static VALUE
|
5
|
+
t_impulse_simulation(self)
|
6
|
+
VALUE self; /* the object */
|
7
|
+
{
|
8
|
+
IF_SIM(return (Qtrue));
|
9
|
+
return (Qfalse);
|
10
|
+
}
|
11
|
+
|
12
|
+
void Init_impulse_ext()
|
13
|
+
{
|
14
|
+
/* Impulse module */
|
15
|
+
mImpulse = rb_define_module("Impulse");
|
16
|
+
|
17
|
+
/* Base classes, probably placeholders for now */
|
18
|
+
cArchitecture = rb_define_class_under(mImpulse, "Architecture", rb_cObject);
|
19
|
+
cLog = rb_define_class_under(mImpulse, "Log", rb_cObject);
|
20
|
+
cMemory = rb_define_class_under(mImpulse, "Memory", rb_cObject);
|
21
|
+
cProcess = rb_define_class_under(mImpulse, "Process", rb_cObject);
|
22
|
+
cRegister = rb_define_class_under(mImpulse, "Register", rb_cObject);
|
23
|
+
cSignal = rb_define_class_under(mImpulse, "Signal", rb_cObject);
|
24
|
+
|
25
|
+
rb_define_method(cArchitecture, "sim?", t_impulse_simulation, 0);
|
26
|
+
rb_define_method(cLog, "sim?", t_impulse_simulation, 0);
|
27
|
+
rb_define_method(cMemory, "sim?", t_impulse_simulation, 0);
|
28
|
+
rb_define_method(cProcess, "sim?", t_impulse_simulation, 0);
|
29
|
+
rb_define_method(cRegister, "sim?", t_impulse_simulation, 0);
|
30
|
+
rb_define_method(cSignal, "sim?", t_impulse_simulation, 0);
|
31
|
+
|
32
|
+
/* Impulse::Stream */
|
33
|
+
Init_stream();
|
34
|
+
Init_arch();
|
35
|
+
Init_fixnum_ext();
|
36
|
+
Init_log();
|
37
|
+
|
38
|
+
return;
|
39
|
+
}
|
@@ -1,6 +1,10 @@
|
|
1
1
|
#ifndef IMPULSE_EXT_H
|
2
2
|
#define IMPULSE_EXT_H
|
3
3
|
|
4
|
+
#ifdef WIN32
|
5
|
+
#include <windows.h>
|
6
|
+
#endif
|
7
|
+
|
4
8
|
#include <ruby.h>
|
5
9
|
|
6
10
|
#include "co.h"
|
@@ -10,7 +14,7 @@
|
|
10
14
|
VALUE mImpulse;
|
11
15
|
|
12
16
|
/* Classes */
|
13
|
-
VALUE
|
17
|
+
VALUE cArchitecture;
|
14
18
|
VALUE cLog;
|
15
19
|
VALUE cMemory;
|
16
20
|
VALUE cProcess;
|
@@ -18,8 +22,13 @@ VALUE cRegister;
|
|
18
22
|
VALUE cSignal;
|
19
23
|
VALUE cStream;
|
20
24
|
|
25
|
+
ID id_cLog_initialized;
|
26
|
+
|
21
27
|
/* Init prototypes */
|
22
28
|
void Init_impulse_ext();
|
23
29
|
void Init_stream();
|
30
|
+
void Init_architecture();
|
31
|
+
void Init_fixnum_ext();
|
32
|
+
void Init_log();
|
24
33
|
|
25
|
-
#endif
|
34
|
+
#endif
|
data/lib/ext/log.c
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include <string.h>
|
3
|
+
|
4
|
+
#include "impulse_ext.h"
|
5
|
+
|
6
|
+
static ID id_name;
|
7
|
+
|
8
|
+
/*
|
9
|
+
* Marks a co_log object for the Ruby garbage collector.
|
10
|
+
* Currently a no-op.
|
11
|
+
*/
|
12
|
+
static void
|
13
|
+
cosim_logwindow_rb_mark(log)
|
14
|
+
cosim_logwindow log;
|
15
|
+
{
|
16
|
+
return;
|
17
|
+
}
|
18
|
+
|
19
|
+
/*
|
20
|
+
* Frees the actual cosim_logwindow object.
|
21
|
+
* Currently a no-op.
|
22
|
+
*/
|
23
|
+
static void
|
24
|
+
cosim_logwindow_rb_free(log)
|
25
|
+
cosim_logwindow log;
|
26
|
+
{
|
27
|
+
return;
|
28
|
+
}
|
29
|
+
|
30
|
+
static VALUE
|
31
|
+
cosim_logwindow_rb_alloc(self)
|
32
|
+
VALUE self;
|
33
|
+
{
|
34
|
+
cosim_logwindow log;
|
35
|
+
return Data_Wrap_Struct(self, cosim_logwindow_rb_mark, cosim_logwindow_rb_free, log);
|
36
|
+
}
|
37
|
+
|
38
|
+
static VALUE
|
39
|
+
t_log_init(self, name)
|
40
|
+
VALUE self; /* the object */
|
41
|
+
VALUE name; /* unique name */
|
42
|
+
{
|
43
|
+
DATA_PTR(self) = cosim_logwindow_create(RSTRING(name)->ptr);
|
44
|
+
rb_ivar_set(self, id_name, name);
|
45
|
+
return (self);
|
46
|
+
}
|
47
|
+
|
48
|
+
static VALUE
|
49
|
+
t_log_puts(self, message)
|
50
|
+
VALUE self; /* the object */
|
51
|
+
VALUE message; /* log message */
|
52
|
+
{
|
53
|
+
if (!RTEST(rb_cvar_get(cLog, id_cLog_initialized)))
|
54
|
+
{
|
55
|
+
rb_warn("Can't do anything with the simulation log until you create an Architecture.");
|
56
|
+
return (Qnil);
|
57
|
+
}
|
58
|
+
|
59
|
+
/* TODO: Some actual type checking here would be nice. */
|
60
|
+
if (cosim_logwindow_write(DATA_PTR(self), RSTRING(message)->ptr) != 0)
|
61
|
+
return (self);
|
62
|
+
else
|
63
|
+
{
|
64
|
+
rb_raise(rb_eArgError, "Couldn't write to %s.", RSTRING(rb_ivar_get(self, id_name))->ptr);
|
65
|
+
return (self);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
/*
|
70
|
+
static VALUE
|
71
|
+
t_log_printf(self, ...)
|
72
|
+
*/
|
73
|
+
|
74
|
+
void Init_log()
|
75
|
+
{
|
76
|
+
cLog = rb_define_class_under(mImpulse, "Log", rb_cObject);
|
77
|
+
rb_cvar_set(cLog, id_cLog_initialized, Qfalse
|
78
|
+
#ifdef RB_CVAR_SET_4ARGS
|
79
|
+
, 0
|
80
|
+
#endif
|
81
|
+
);
|
82
|
+
|
83
|
+
rb_define_alloc_func(cLog, cosim_logwindow_rb_alloc);
|
84
|
+
rb_define_method(cLog, "initialize", t_log_init, 1);
|
85
|
+
rb_define_method(cLog, "puts", t_log_puts, 1);
|
86
|
+
rb_define_method(cLog, "<<", t_log_puts, 1);
|
87
|
+
}
|
data/{ext → lib/ext}/stream.c
RENAMED
@@ -3,6 +3,8 @@
|
|
3
3
|
|
4
4
|
#include "impulse_ext.h"
|
5
5
|
|
6
|
+
static ID id_name, id_mode, id_width, id_depth;
|
7
|
+
|
6
8
|
/*
|
7
9
|
* Marks a co_stream object for the Ruby garbage collector.
|
8
10
|
* Currently a no-op.
|
@@ -45,10 +47,12 @@ t_stream_init(self, name, mode, width, depth)
|
|
45
47
|
|
46
48
|
/* 'r' is read only mode */
|
47
49
|
if (!strncmp(RSTRING(mode)->ptr, "r", 1)) {
|
50
|
+
/* TODO: Check for errors/success here */
|
48
51
|
co_stream_open(DATA_PTR(self), O_RDONLY, INT_TYPE(FIX2INT(width)));
|
49
52
|
|
50
53
|
/* 'w' is write only mode */
|
51
54
|
} else if (!strncmp(RSTRING(mode)->ptr, "w", 1)) {
|
55
|
+
/* TODO: Check for errors/success here */
|
52
56
|
co_stream_open(DATA_PTR(self), O_WRONLY, INT_TYPE(FIX2INT(width)));
|
53
57
|
|
54
58
|
/* there is no other mode these can have. */
|
@@ -57,13 +61,26 @@ t_stream_init(self, name, mode, width, depth)
|
|
57
61
|
return Qnil;
|
58
62
|
}
|
59
63
|
|
64
|
+
rb_ivar_set(self, id_name, name);
|
65
|
+
rb_ivar_set(self, id_mode, mode);
|
66
|
+
rb_ivar_set(self, id_width, width);
|
67
|
+
rb_ivar_set(self, id_depth, depth);
|
68
|
+
|
60
69
|
return (self);
|
61
70
|
}
|
62
71
|
|
72
|
+
static VALUE
|
73
|
+
t_stream_eos(self)
|
74
|
+
VALUE self;
|
75
|
+
{
|
76
|
+
return (co_stream_eos(DATA_PTR(self)) != 0 ? Qtrue : Qfalse);
|
77
|
+
}
|
78
|
+
|
63
79
|
void Init_stream()
|
64
80
|
{
|
65
81
|
cStream = rb_define_class_under(mImpulse, "Stream", rb_cObject);
|
66
82
|
|
67
83
|
rb_define_alloc_func(cStream, co_stream_rb_alloc);
|
68
84
|
rb_define_method(cStream, "initialize", t_stream_init, 4);
|
69
|
-
|
85
|
+
rb_define_method(cStream, "eos?", t_stream_eos, 0);
|
86
|
+
}
|
data/lib/impulse.rb
CHANGED
data/lib/project.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require "rubygems"
|
2
|
-
|
2
|
+
gem "facets"
|
3
3
|
|
4
4
|
module Impulse
|
5
5
|
# A CoDeveloper project is a simple plaintext file with an <em>.icProj</em>
|
@@ -22,7 +22,7 @@ module Impulse
|
|
22
22
|
@options = Hash.new
|
23
23
|
|
24
24
|
skipped_lines_header = false
|
25
|
-
File.open(project_file).each_with_index do |line, line_number|
|
25
|
+
File.open(project_file.to_s).each_with_index do |line, line_number|
|
26
26
|
next unless line.match ValidOptionLine
|
27
27
|
print("Skipping lines: ") unless skipped_lines_header
|
28
28
|
skipped_lines_header = true
|
@@ -98,5 +98,20 @@ module Impulse
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
#--
|
103
|
+
# From the original icProj2Make.pl file:
|
104
|
+
#
|
105
|
+
# Copyright(c) 2006-2009 Impulse Accelerated Technologies, Inc.
|
106
|
+
# All rights reserved.
|
107
|
+
# www.ImpulseAccelerated.com
|
108
|
+
#
|
109
|
+
# This source file may be used and distributed without restriction provided
|
110
|
+
# that this copyright notice is not removed from the file and that any
|
111
|
+
# derivative work contains this copyright notice.
|
112
|
+
#++
|
113
|
+
def to_makefile
|
114
|
+
raise(ArgumentError, "Generated Makefiles require the IMPULSEC_HOME environment variable.") unless ENV["IMPULSEC_HOME"]
|
115
|
+
end
|
101
116
|
end
|
102
117
|
end
|
data/test/ext_test.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "lib", "ext", "impulse_ext")
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
require "rubygems"
|
5
|
+
gem "thoughtbot-shoulda"
|
6
|
+
require "shoulda"
|
7
|
+
|
8
|
+
class ExtTest < Test::Unit::TestCase
|
9
|
+
context "The C extension" do
|
10
|
+
should "set up classes" do
|
11
|
+
assert_kind_of(Module, Impulse)
|
12
|
+
assert_kind_of(Class, Impulse::Stream)
|
13
|
+
assert_kind_of(Class, Impulse::Architecture)
|
14
|
+
assert_kind_of(Class, Impulse::Log)
|
15
|
+
assert_kind_of(Class, Impulse::Memory)
|
16
|
+
assert_kind_of(Class, Impulse::Process)
|
17
|
+
assert_kind_of(Class, Impulse::Register)
|
18
|
+
assert_kind_of(Class, Impulse::Signal)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synthemesc-impulse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Eckstein
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-07-11 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
25
|
description:
|
26
|
-
email: josh@
|
26
|
+
email: josh@eksdyne.com
|
27
27
|
executables: []
|
28
28
|
|
29
29
|
extensions: []
|
@@ -38,19 +38,23 @@ files:
|
|
38
38
|
- README.rdoc
|
39
39
|
- Rakefile
|
40
40
|
- VERSION
|
41
|
-
- ext/.gitignore
|
42
|
-
- ext/extconf.rb
|
43
|
-
- ext/impulse_ext.c
|
44
|
-
- ext/impulse_ext.h
|
45
|
-
- ext/stream.c
|
46
41
|
- impulse.gemspec
|
47
42
|
- lib/app.rb
|
43
|
+
- lib/ext/.gitignore
|
44
|
+
- lib/ext/arch.c
|
45
|
+
- lib/ext/extconf.rb
|
46
|
+
- lib/ext/fixnum.c
|
47
|
+
- lib/ext/impulse_ext.c
|
48
|
+
- lib/ext/impulse_ext.h
|
49
|
+
- lib/ext/log.c
|
50
|
+
- lib/ext/stream.c
|
48
51
|
- lib/impulse.rb
|
49
52
|
- lib/project.rb
|
50
53
|
- lib/ruby_to_impulse.rb
|
51
54
|
- lib/stream.rb
|
52
55
|
- lib/template.rb
|
53
|
-
|
56
|
+
- test/ext_test.rb
|
57
|
+
has_rdoc: true
|
54
58
|
homepage: http://github.com/synthemesc/impulse
|
55
59
|
post_install_message:
|
56
60
|
rdoc_options:
|
@@ -76,5 +80,5 @@ rubygems_version: 1.2.0
|
|
76
80
|
signing_key:
|
77
81
|
specification_version: 3
|
78
82
|
summary: Ruby tools for the Impulse platform
|
79
|
-
test_files:
|
80
|
-
|
83
|
+
test_files:
|
84
|
+
- test/ext_test.rb
|
data/ext/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
mkmf.log
|
data/ext/extconf.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'mkmf'
|
2
|
-
|
3
|
-
ImpulseC = ENV["IMPULSEC_HOME"] || File.join(%w(usr Impulse CoDeveloper3))
|
4
|
-
|
5
|
-
lib_path = File.join(ImpulseC, "Libraries")
|
6
|
-
inc_path = File.join(ImpulseC, "Include")
|
7
|
-
|
8
|
-
((have_header("co.h") || find_header("co.h", inc_path)) &&
|
9
|
-
have_header("cosim_log.h") || find_header("cosim_log.h", inc_path) &&
|
10
|
-
have_library("ImpulseC") || find_library("ImpulseC", nil, lib_path)) || exit
|
11
|
-
|
12
|
-
create_makefile("impulse_ext")
|
data/ext/impulse_ext.c
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#include <ruby.h>
|
2
|
-
#include "impulse_ext.h"
|
3
|
-
|
4
|
-
void Init_impulse_ext()
|
5
|
-
{
|
6
|
-
/* Impulse module */
|
7
|
-
mImpulse = rb_define_module("Impulse");
|
8
|
-
|
9
|
-
/* Base classes, probably placeholders for now */
|
10
|
-
cArch = rb_define_class_under(mImpulse, "Architecture", rb_cObject);
|
11
|
-
cLog = rb_define_class_under(mImpulse, "Log", rb_cObject);
|
12
|
-
cMemory = rb_define_class_under(mImpulse, "Memory", rb_cObject);
|
13
|
-
cProcess = rb_define_class_under(mImpulse, "Process", rb_cObject);
|
14
|
-
cRegister = rb_define_class_under(mImpulse, "Register", rb_cObject);
|
15
|
-
cSignal = rb_define_class_under(mImpulse, "Signal", rb_cObject);
|
16
|
-
|
17
|
-
/* Impulse::Stream */
|
18
|
-
Init_stream();
|
19
|
-
|
20
|
-
return;
|
21
|
-
}
|