xot 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9592ba7adfc21223d2bc9f0035665c4cd12c6ab194bfbb0d445510c908e56812
4
- data.tar.gz: 40dd5584ff274a815e0791076216cd188df05b5e712eb156d7e52f62da20e9bb
3
+ metadata.gz: 3699d7ae604c3bc0d96a0ebacf3c3a22115e1ba338c9178ebaaf064ad93ca282
4
+ data.tar.gz: 810dc619b0d9bf7c0bae8ab97118a3f6170bd864b9872c0efbbce0973a4ea8e1
5
5
  SHA512:
6
- metadata.gz: 8d3de874655db69b4a9e0a569de98ffb3d3bd80950602b8f27a1a6f024e673a6ebc641611067799569598373696eba1149d9359898116033b49630a8dba9915a
7
- data.tar.gz: e5a5b77c96cb68ae8cd8d0c692fc4f6ccf326afb6f0827ca68d038a4dc9a5531a8b86c15aec0ec4f13f5317c590f647442c0ff7b2b98b9d25c74825535d0aede
6
+ metadata.gz: 6fc79411d29fe6a9a26c08e6aeb0979db6a8806c4c1a1361028f0aa402a30612ffa3ca1483bb7b78ae007e9b4d6f7a92139d95dcc57b9e5e290df1a93762c34e
7
+ data.tar.gz: 261e370e9c80c9606c44bfd621677381f3c528d9387419c418a18a54ec5dbb53ecf43ce16f3b5f027010ea6e4f39974abf42ddd535d13a40ffc7d4a1e8f8653d
@@ -15,7 +15,7 @@ jobs:
15
15
  ruby-version: 3.2
16
16
 
17
17
  - name: checkout
18
- uses: actions/checkout@v2
18
+ uses: actions/checkout@v4
19
19
 
20
20
  - name: setup gems
21
21
  run: bundle install
@@ -15,7 +15,7 @@ jobs:
15
15
  ruby-version: 3.2
16
16
 
17
17
  - name: checkout
18
- uses: actions/checkout@v2
18
+ uses: actions/checkout@v4
19
19
  with:
20
20
  fetch-depth: 0
21
21
  token: ${{ secrets.PAT }}
@@ -16,7 +16,7 @@ jobs:
16
16
  ruby-version: 3.2
17
17
 
18
18
  - name: checkout
19
- uses: actions/checkout@v2
19
+ uses: actions/checkout@v4
20
20
 
21
21
  - name: setup gems
22
22
  run: bundle install
@@ -24,5 +24,11 @@ jobs:
24
24
  - name: setup dependencies
25
25
  run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
26
26
 
27
+ - name: lib
28
+ run: bundle exec rake lib
29
+
30
+ - name: ext
31
+ run: bundle exec rake ext
32
+
27
33
  - name: test
28
34
  run: bundle exec rake test
data/ChangeLog.md CHANGED
@@ -1,6 +1,17 @@
1
1
  # xot ChangeLog
2
2
 
3
3
 
4
+ ## [v0.2.1] - 2024-07-05
5
+
6
+ - Add xot/util.rb
7
+ - Add system_error_text()
8
+ - Add get_refc_count() for debugging
9
+ - Add 'packages' task
10
+ - Update workflows for test
11
+ - Update to actions/checkout@v4
12
+ - Fix 'github_actions?'
13
+
14
+
4
15
  ## [v0.2] - 2024-03-14
5
16
 
6
17
  - v0.2
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GEM
9
9
 
10
10
  PLATFORMS
11
11
  arm64-darwin-21
12
- x86_64-darwin-20
12
+ arm64-darwin-22
13
13
 
14
14
  DEPENDENCIES
15
15
  rake
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2
1
+ 0.2.1
@@ -40,7 +40,9 @@ namespace Xot
40
40
  };
41
41
 
42
42
 
43
- String error_text (const char* file, int line, const char* str);
43
+ String error_text (const char* file, int line, const char* str);
44
+
45
+ String system_error_text (const char* file, int line, const char* str);
44
46
 
45
47
 
46
48
  namespace ErrorFunctions
data/include/xot/ref.h CHANGED
@@ -71,6 +71,13 @@ namespace Xot
71
71
  return false;
72
72
  }
73
73
 
74
+ #ifdef _DEBUG
75
+ int get_refc_count () const
76
+ {
77
+ return refc_count;
78
+ }
79
+ #endif
80
+
74
81
  protected:
75
82
 
76
83
  RefCountable ()
data/lib/xot/extconf.rb CHANGED
@@ -1,5 +1,6 @@
1
- require 'xot/rake/util'
2
1
  require 'xot/block_util'
2
+ require 'xot/util'
3
+ require 'xot/rake/util'
3
4
 
4
5
 
5
6
  module Xot
@@ -8,6 +9,7 @@ module Xot
8
9
  class ExtConf
9
10
 
10
11
  include Xot::Rake
12
+ include Xot::Util
11
13
 
12
14
  attr_reader :extensions, :defs, :inc_dirs, :lib_dirs, :headers, :libs, :local_libs, :frameworks
13
15
 
data/lib/xot/rake/util.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'erb'
2
2
  require 'rbconfig'
3
+ require 'xot/util'
3
4
 
4
5
 
5
6
  module Xot
@@ -7,6 +8,8 @@ module Xot
7
8
 
8
9
  module Rake
9
10
 
11
+ include Xot::Util
12
+
10
13
  def extensions()
11
14
  env(:EXTENSIONS, []).map {|m| m::Extension}
12
15
  end
@@ -224,46 +227,6 @@ module Xot
224
227
  env :DEBUG, false
225
228
  end
226
229
 
227
- def ci?()
228
- github_actions?
229
- end
230
-
231
- def github_actions?()
232
- env :GITHUB_ACTIONS, false
233
- end
234
-
235
- def win32?()
236
- RUBY_PLATFORM =~ /mswin|ming|cygwin/
237
- end
238
-
239
- def mswin?()
240
- RUBY_PLATFORM =~ /mswin/
241
- end
242
-
243
- def ming?()
244
- RUBY_PLATFORM =~ /ming/
245
- end
246
-
247
- def cygwin?()
248
- RUBY_PLATFORM =~ /cygwin/
249
- end
250
-
251
- def osx?()
252
- RUBY_PLATFORM =~ /darwin/
253
- end
254
-
255
- def ios?()
256
- false
257
- end
258
-
259
- def gcc?()
260
- RbConfig::CONFIG['CXX'] =~ /(^|\s)g\+\+/i
261
- end
262
-
263
- def clang?()
264
- RbConfig::CONFIG['CXX'] =~ /(^|\s)clang/i
265
- end
266
-
267
230
  def cxx()
268
231
  env :CXX, RbConfig::CONFIG['CXX'] || 'g++'
269
232
  end
data/lib/xot/rake.rb CHANGED
@@ -12,7 +12,6 @@ module Xot
12
12
 
13
13
  module Rake
14
14
 
15
-
16
15
  def srcs_map()
17
16
  paths = glob("#{src_dir}/**/*.{#{src_exts.join ','}}") +
18
17
  erbs_map.values.grep(/\.(#{src_exts.join '|'})$/)
@@ -273,6 +272,20 @@ module Xot
273
272
  end
274
273
  end
275
274
 
275
+ def install_packages(osx: [], win32: [])
276
+ desc "install packages"
277
+ task :packages do
278
+ case
279
+ when osx? && osx.size > 0
280
+ sh %( brew install #{osx.join ' '} )
281
+ when win32? && win32.size > 0
282
+ prefix = 'MINGW_PACKAGE_PREFIX'
283
+ packages = win32.map {|package| package.sub prefix, ENV[prefix]}
284
+ sh %( pacman -S --noconfirm #{packages.join ' '} )
285
+ end
286
+ end
287
+ end
288
+
276
289
  def use_external_library(
277
290
  repos, branch: nil, tag: nil, commit: nil,
278
291
  incdirs: nil, srcdirs: nil, excludes: [],
@@ -346,11 +359,11 @@ module Xot
346
359
  end
347
360
 
348
361
  def define_placeholder_tasks()
349
- desc "delete temporary files"
350
- alias_task :clean
362
+ desc "setup all external libraries"
363
+ alias_task :vendor
351
364
 
352
- desc "delete all generated files"
353
- alias_task :clobber => :clean
365
+ desc "convert erb files"
366
+ alias_task :erb
354
367
 
355
368
  desc "build native library"
356
369
  alias_task :lib
@@ -358,20 +371,20 @@ module Xot
358
371
  desc "build ruby extension"
359
372
  alias_task :ext
360
373
 
361
- desc "build ruby gem"
362
- alias_task :gem
374
+ desc "run all tests"
375
+ alias_task :test
363
376
 
364
377
  desc "generate documentations"
365
378
  alias_task :doc
366
379
 
367
- desc "run all tests"
368
- alias_task :test
380
+ desc "build ruby gem"
381
+ alias_task :gem
369
382
 
370
- desc "setup all external libraries"
371
- alias_task :vendor
383
+ desc "delete temporary files"
384
+ alias_task :clean
372
385
 
373
- desc "convert erb files"
374
- alias_task :erb
386
+ desc "delete all generated files"
387
+ alias_task :clobber => :clean
375
388
  end
376
389
 
377
390
 
data/lib/xot/test.rb CHANGED
@@ -1,8 +1,13 @@
1
+ require 'xot/util'
2
+
3
+
1
4
  module Xot
2
5
 
3
6
 
4
7
  module Test
5
8
 
9
+ include Util
10
+
6
11
  def assert_not(expression, *args)
7
12
  assert !expression, *args
8
13
  end
data/lib/xot/util.rb ADDED
@@ -0,0 +1,52 @@
1
+ require 'rbconfig'
2
+
3
+
4
+ module Xot
5
+
6
+
7
+ extend module Util
8
+
9
+ def osx?()
10
+ /darwin/.match? RUBY_PLATFORM
11
+ end
12
+
13
+ def ios?()
14
+ false
15
+ end
16
+
17
+ def win32?()
18
+ /mswin|ming|cygwin/.match? RUBY_PLATFORM
19
+ end
20
+
21
+ def mswin?()
22
+ /mswin/.match? RUBY_PLATFORM
23
+ end
24
+
25
+ def mingw?()
26
+ /ming/.match? RUBY_PLATFORM
27
+ end
28
+
29
+ def cygwin?()
30
+ /cygwin/.match? RUBY_PLATFORM
31
+ end
32
+
33
+ def gcc?()
34
+ /(^|\s)g\+\+/i.match? RbConfig::CONFIG['CXX']
35
+ end
36
+
37
+ def clang?()
38
+ /(^|\s)clang/i.match? RbConfig::CONFIG['CXX']
39
+ end
40
+
41
+ def github_actions?()
42
+ ENV['GITHUB_ACTIONS'] == 'true'
43
+ end
44
+
45
+ alias ci? github_actions?
46
+
47
+ self
48
+
49
+ end# Util
50
+
51
+
52
+ end# Xot
data/lib/xot.rb CHANGED
@@ -10,3 +10,4 @@ require 'xot/inspectable'
10
10
  require 'xot/invoker'
11
11
  require 'xot/setter'
12
12
  require 'xot/universal_accessor'
13
+ require 'xot/util'
data/src/exception.cpp CHANGED
@@ -1,6 +1,11 @@
1
1
  #include "xot/exception.h"
2
2
 
3
3
 
4
+ #ifdef WIN32
5
+ #include <windows.h>
6
+ #endif
7
+
8
+
4
9
  namespace Xot
5
10
  {
6
11
 
@@ -37,6 +42,34 @@ namespace Xot
37
42
  return s;
38
43
  }
39
44
 
45
+ String
46
+ system_error_text (const char* file, int line, const char* str)
47
+ {
48
+ String s = str;
49
+
50
+ #ifdef WIN32
51
+ DWORD lasterror = GetLastError();
52
+ if (lasterror != 0)
53
+ {
54
+ LPVOID msg = NULL;
55
+ DWORD flags =
56
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
57
+ FORMAT_MESSAGE_FROM_SYSTEM |
58
+ FORMAT_MESSAGE_IGNORE_INSERTS;
59
+ if (FormatMessageA(
60
+ flags, NULL, lasterror, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
61
+ (LPSTR) &msg, 0, NULL))
62
+ {
63
+ String m = (LPCSTR) msg;
64
+ if (!m.empty()) s += ": " + m;
65
+ }
66
+ LocalFree(msg);
67
+ }
68
+ #endif
69
+
70
+ return error_text(file, line, s);
71
+ }
72
+
40
73
 
41
74
  namespace ErrorFunctions
42
75
  {
@@ -73,7 +106,7 @@ namespace Xot
73
106
  system_error (const char* file, int line, const char* format, ...)
74
107
  {
75
108
  XOT_STRINGF(format, s);
76
- throw SystemError(error_text(file, line, s));
109
+ throw SystemError(system_error_text(file, line, s));
77
110
  }
78
111
 
79
112
  void
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xot
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-13 00:00:00.000000000 Z
11
+ date: 2024-07-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This library include some useful utility classes and functions for development
14
14
  with C++.
@@ -59,6 +59,7 @@ files:
59
59
  - lib/xot/setter.rb
60
60
  - lib/xot/test.rb
61
61
  - lib/xot/universal_accessor.rb
62
+ - lib/xot/util.rb
62
63
  - src/debug.cpp
63
64
  - src/exception.cpp
64
65
  - src/string.cpp