tatara 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,8 @@
1
1
  #ifndef VEC_TEMPLATE_H_
2
2
  #define VEC_TEMPLATE_H_
3
3
 
4
+ #include <algorithm>
5
+ #include <iterator>
4
6
  #include <vector>
5
7
 
6
8
  template <class T>
@@ -18,6 +20,12 @@ class Vector {
18
20
  constexpr int size();
19
21
  constexpr void clear();
20
22
  T sum();
23
+ constexpr Vector<T>& push_back_object(const T var);
24
+ constexpr Vector<T> intersection(const Vector<T> vec);
25
+ constexpr Vector<T> sort();
26
+ constexpr Vector<T>& destructive_sort();
27
+ constexpr Vector<T> reverse();
28
+ constexpr Vector<T>& destructive_reverse();
21
29
  };
22
30
 
23
31
  template <class T>
@@ -71,4 +79,56 @@ T Vector<T>::sum() {
71
79
  return sum;
72
80
  }
73
81
 
82
+ template <class T>
83
+ constexpr Vector<T>& Vector<T>::push_back_object(const T var) {
84
+ this->container.emplace_back(std::move(var));
85
+ return *this;
86
+ }
87
+
88
+ template <class T>
89
+ constexpr Vector<T> Vector<T>::intersection(const Vector<T> vec) {
90
+
91
+ std::vector<T> result;
92
+
93
+ std::set_intersection(
94
+ this->container.begin(), this->container.end(),
95
+ vec.container.begin(), vec.container.end(),
96
+ std::inserter(result, result.end())
97
+ );
98
+
99
+ Vector<T> object;
100
+
101
+ object.container = std::move(result);
102
+
103
+ return object;
104
+ }
105
+
106
+ template <class T>
107
+ constexpr Vector<T> Vector<T>::sort() {
108
+ Vector<T> object;
109
+ object.container = this->container;
110
+ std::sort(object.container.begin(), object.container.end());
111
+ return object;
112
+ }
113
+
114
+ template <class T>
115
+ constexpr Vector<T>& Vector<T>::destructive_sort() {
116
+ std::sort(this->container.begin(), this->container.end());
117
+ return *this;
118
+ }
119
+
120
+ template <class T>
121
+ constexpr Vector<T> Vector<T>::reverse() {
122
+ Vector<T> object;
123
+ object.container = this->container;
124
+ std::reverse(object.container.begin(), object.container.end());
125
+ return object;
126
+ }
127
+
128
+ template <class T>
129
+ constexpr Vector<T>& Vector<T>::destructive_reverse() {
130
+ std::reverse(this->container.begin(), this->container.end());
131
+ return *this;
132
+ }
133
+
74
134
  #endif
data/lib/tatara.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require "tatara/version"
2
+ require "tatara/tatara"
3
+ require "tatara/tatara_ext"
2
4
 
3
5
  module Tatara
4
6
  class Error < StandardError; end
@@ -0,0 +1,37 @@
1
+ require "tatara/tatara"
2
+
3
+ module Tatara
4
+ module Array
5
+ def map(&block)
6
+ (0...(self.size)).each{|i| block.call(self[i])}
7
+ end
8
+
9
+ def map!(&block)
10
+ (0...(self.size)).each{|i| self[i] = block.call(self[i]) }
11
+ end
12
+
13
+ def each(&block)
14
+ (0...(self.size)).each{|i| block.call(self[i])}
15
+ end
16
+
17
+ def each_with_index(&block)
18
+ (0...(self.size)).each{|i| block.call(self[i], i)}
19
+ end
20
+
21
+ def &(other)
22
+ self.intersection other
23
+ end
24
+ end
25
+
26
+ class IntArray
27
+ include Array
28
+ end
29
+
30
+ class FloatArray
31
+ include Array
32
+ end
33
+
34
+ class StringArray
35
+ include Array
36
+ end
37
+ end
@@ -0,0 +1,6 @@
1
+
2
+ # require Tatara::Vector's
3
+ require_relative "vector/vector"
4
+
5
+ # require Tatara::Array's
6
+ require_relative "array/array"
@@ -0,0 +1,37 @@
1
+ require "tatara/tatara"
2
+
3
+ module Tatara
4
+ module Vector
5
+ def map(&block)
6
+ (0...(self.size)).each{|i| block.call(self[i])}
7
+ end
8
+
9
+ def map!(&block)
10
+ (0...(self.size)).each{|i| self[i] = block.call(self[i]) }
11
+ end
12
+
13
+ def each(&block)
14
+ (0...(self.size)).each{|i| block.call(self[i])}
15
+ end
16
+
17
+ def each_with_index(&block)
18
+ (0...(self.size)).each{|i| block.call(self[i], i)}
19
+ end
20
+
21
+ def &(other)
22
+ self.intersection other
23
+ end
24
+ end
25
+
26
+ class IntVector
27
+ include Vector
28
+ end
29
+
30
+ class FloatVector
31
+ include Vector
32
+ end
33
+
34
+ class StringVector
35
+ include Vector
36
+ end
37
+ end
@@ -1,3 +1,3 @@
1
1
  module Tatara
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tatara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - S-H-GAMELINKS
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-17 00:00:00.000000000 Z
11
+ date: 2019-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -60,6 +60,7 @@ extensions:
60
60
  - ext/tatara/extconf.rb
61
61
  extra_rdoc_files: []
62
62
  files:
63
+ - ".circleci/config.yml"
63
64
  - ".gitignore"
64
65
  - ".travis.yml"
65
66
  - Gemfile
@@ -71,6 +72,26 @@ files:
71
72
  - benchmark/benchmark.rb
72
73
  - bin/console
73
74
  - bin/setup
75
+ - docs/_config.yml
76
+ - docs/index.md
77
+ - docs/tatara/float.md
78
+ - docs/tatara/float_array.md
79
+ - docs/tatara/float_float_map.md
80
+ - docs/tatara/float_integer_map.md
81
+ - docs/tatara/float_string_map.md
82
+ - docs/tatara/float_vector.md
83
+ - docs/tatara/integer.md
84
+ - docs/tatara/integer_array.md
85
+ - docs/tatara/integer_float_map.md
86
+ - docs/tatara/integer_integer_map.md
87
+ - docs/tatara/integer_string_map.md
88
+ - docs/tatara/integer_vector.md
89
+ - docs/tatara/string.md
90
+ - docs/tatara/string_array.md
91
+ - docs/tatara/string_float_map.md
92
+ - docs/tatara/string_int_map.md
93
+ - docs/tatara/string_string_map.md
94
+ - docs/tatara/string_vector.md
74
95
  - ext/tatara/array/array.hpp
75
96
  - ext/tatara/extconf.rb
76
97
  - ext/tatara/float/float.hpp
@@ -80,6 +101,9 @@ files:
80
101
  - ext/tatara/tatara.cpp
81
102
  - ext/tatara/vector/vector.hpp
82
103
  - lib/tatara.rb
104
+ - lib/tatara/array/array.rb
105
+ - lib/tatara/tatara_ext.rb
106
+ - lib/tatara/vector/vector.rb
83
107
  - lib/tatara/version.rb
84
108
  - tatara.gemspec
85
109
  homepage: https://github.com/S-H-GAMELINKS/tatara
@@ -100,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
124
  - !ruby/object:Gem::Version
101
125
  version: '0'
102
126
  requirements: []
103
- rubygems_version: 3.0.4
127
+ rubygems_version: 3.0.3
104
128
  signing_key:
105
129
  specification_version: 4
106
130
  summary: Simple type declaration lib