biodiversity 4.1.0 → 5.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 78e326d87f113e898895a27fbae7cebdac8b1962acac7ad254a074e3d386be51
4
- data.tar.gz: f6b81ed3f5b9a62fa8e4a084b21672ad86718424a4db5435269cbc4563e04d83
3
+ metadata.gz: 46c26c9c1ada65f95edf5e00365203f4e68d596e0b14f44b6995b46e127afab9
4
+ data.tar.gz: ce2cced66dbebc464ef47eee7f401a8a6b946d69d6664b7fcf1c8d5c413f7251
5
5
  SHA512:
6
- metadata.gz: 847582c9823f991bd6bf670e64a5d8af05324cf51958604a27102b894efa86196f4fe890dd68fc17e1117d100c819cdbd9642768ccc4fe2233e92327e186ef88
7
- data.tar.gz: 6f34c5bb0d241fc4696f44bd35150af498dabc66fc8154ad6a0e34def2be8046d5ed39fa467c8bb4bb250f579f479e8cd50ca15ff3e6a4f838a3b9fbf5ebedb2
6
+ metadata.gz: ea6b814f8fe7bf451a360c87674c53d63bf49a2351e23aa724b7974cf269986ab7206fd1987dc945224fe9bc9cf36605994f34d6d6fd61ad72c03783cb41629d
7
+ data.tar.gz: b456ef00e072b37d12f0312b347af29aea126a40f4f86ab0b735b42b185977e692ef6fc94c18072b42e75ee6b69d254ba5bb90fe0a4d7a7f0b057366af403a8e
@@ -1,4 +1,7 @@
1
1
  AllCops:
2
+ TargetRubyVersion: 2.6
3
+ NewCops: disable
4
+ SuggestExtensions: false
2
5
  Exclude:
3
6
  - .bundle/**/*
4
7
  - bundle_bin/**/*
@@ -1 +1 @@
1
- 2.6.6
1
+ 3.0.0
@@ -1,6 +1,7 @@
1
1
  rvm:
2
- - 2.5
3
2
  - 2.6
3
+ - 2.7
4
+ - 3.0
4
5
  before_install: "gem update bundler"
5
6
  branches:
6
7
  only:
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ 5.0.0 -- changed GNparser to v 1.0.0
2
+
1
3
  4.0.3 -- fix memory leak in parse_ary method
2
4
 
3
5
  4.0.2 -- add MS Windows libraries
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2008-2018 Dmitry Mozzherin
3
+ Copyright (c) 2008-2020 Dmitry Mozzherin
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -129,7 +129,7 @@ Contributors: [Patrick Leary][pleary], [Hernán Lucas Pereira][hernan]
129
129
 
130
130
 
131
131
 
132
- Copyright (c) 2008-2019 Dmitry Mozzherin. See [LICENSE][license]
132
+ Copyright (c) 2008-2020 Dmitry Mozzherin. See [LICENSE][license]
133
133
  for further details.
134
134
 
135
135
  [gem_svg]: https://badge.fury.io/rb/biodiversity.svg
@@ -5,6 +5,7 @@ $LOAD_PATH.push File.expand_path('lib', __dir__)
5
5
  require 'biodiversity/version'
6
6
 
7
7
  Gem::Specification.new do |gem|
8
+ gem.required_ruby_version = '>= 2.6'
8
9
  gem.name = 'biodiversity'
9
10
  gem.version = Biodiversity::VERSION
10
11
  gem.homepage = 'https://github.com/GlobalNamesArchitecture/biodiversity'
@@ -17,11 +18,11 @@ Gem::Specification.new do |gem|
17
18
  gem.files = `git ls-files`.split("\n")
18
19
  gem.require_paths = ['lib']
19
20
 
20
- gem.add_runtime_dependency 'ffi', '~> 1.11'
21
+ gem.add_runtime_dependency 'ffi', '~> 1.14'
21
22
 
22
- gem.add_development_dependency 'bundler', '~> 2.0'
23
- gem.add_development_dependency 'byebug', '~> 11.0'
23
+ gem.add_development_dependency 'bundler', '~> 2.2'
24
+ gem.add_development_dependency 'byebug', '~> 11.1'
24
25
  gem.add_development_dependency 'rake', '~> 13.0'
25
- gem.add_development_dependency 'rspec', '~> 3.9'
26
- gem.add_development_dependency 'rubocop', '~> 0.76'
26
+ gem.add_development_dependency 'rspec', '~> 3.10'
27
+ gem.add_development_dependency 'rubocop', '~> 1.8'
27
28
  end
@@ -1,6 +1,6 @@
1
1
  /* Code generated by cmd/cgo; DO NOT EDIT. */
2
2
 
3
- /* package gitlab.com/gogna/gnparser/binding */
3
+ /* package github.com/gnames/gnparser/binding */
4
4
 
5
5
 
6
6
  #line 1 "cgo-builtin-export-prolog"
@@ -22,7 +22,6 @@ typedef struct { const char *p; ptrdiff_t n; } _GoString_;
22
22
  #line 3 "main.go"
23
23
 
24
24
  #include "stdlib.h"
25
- #include "callback_bridge.h"
26
25
 
27
26
  #line 1 "cgo-generated-wrapper"
28
27
 
@@ -75,20 +74,23 @@ extern "C" {
75
74
  #endif
76
75
 
77
76
 
78
- // ParseToString function takes a name-string, desired format, and parses
79
- // the name-string to either JSON, or pipe-separated values, depending on
80
- // the desired format. Format can take values of 'simple', 'compact', 'pretty'.
81
- // NOTE: Read callback type as "void (*callback)(char *parsed)"
77
+ // ParseToString function takes a name-string, desired format, a withDetails
78
+ // flag as 0|1 integer. It parses the name-string to either JSON, or a CSV
79
+ // string, depending on the desired format. Format argument can take values of
80
+ // 'csv', 'compact', 'pretty'. If withDetails argument is 0, additional
81
+ // parsed details are ommited, if it is 1 -- they are included.
82
+ // true.
83
+ extern char* ParseToString(char* name, char* f, int details);
82
84
 
83
- extern void ParseToString(char* p0, char* p1, void* p2);
85
+ // FreeMemory takes a string pointer and frees its memory.
86
+ extern void FreeMemory(char* p);
84
87
 
85
- // ParseAryToStrings function takes an array of names, parsing format and a
86
- // reference to an output: an empty array of strings to return the the data
87
- // back. It populates the output array with raw strings of either JSON or
88
- // pipe-separated parsed values (depending on a given format). Format can take
89
- // values of 'simple', 'compact', or 'pretty'.
90
-
91
- extern void ParseAryToStrings(char** p0, int p1, char* p2, void* p3);
88
+ // ParseAryToString function takes an array of names, parsing format, and a
89
+ // withDetails flag as 0|1 integer. Parsed outputs are sent as a string in
90
+ // either CSV or JSON format. Format argument can take values of 'csv',
91
+ // 'compact', or 'pretty'. For withDetails argument 0 means false, 1 means
92
+ // true.
93
+ extern char* ParseAryToString(char** in, int length, char* f, int details);
92
94
 
93
95
  #ifdef __cplusplus
94
96
  }
Binary file
@@ -1,6 +1,6 @@
1
1
  /* Code generated by cmd/cgo; DO NOT EDIT. */
2
2
 
3
- /* package gitlab.com/gogna/gnparser/binding */
3
+ /* package github.com/gnames/gnparser/binding */
4
4
 
5
5
 
6
6
  #line 1 "cgo-builtin-export-prolog"
@@ -22,7 +22,6 @@ typedef struct { const char *p; ptrdiff_t n; } _GoString_;
22
22
  #line 3 "main.go"
23
23
 
24
24
  #include "stdlib.h"
25
- #include "callback_bridge.h"
26
25
 
27
26
  #line 1 "cgo-generated-wrapper"
28
27
 
@@ -75,20 +74,26 @@ extern "C" {
75
74
  #endif
76
75
 
77
76
 
78
- // ParseToString function takes a name-string, desired format, and parses
79
- // the name-string to either JSON, or pipe-separated values, depending on
80
- // the desired format. Format can take values of 'simple', 'compact', 'pretty'.
81
- // NOTE: Read callback type as "void (*callback)(char *parsed)"
77
+ // ParseToString function takes a name-string, desired format, a withDetails
78
+ // flag as 0|1 integer. It parses the name-string to either JSON, or a CSV
79
+ // string, depending on the desired format. Format argument can take values of
80
+ // 'csv', 'compact', 'pretty'. If withDetails argument is 0, additional
81
+ // parsed details are ommited, if it is 1 -- they are included.
82
+ // true.
82
83
 
83
- extern void ParseToString(char* p0, char* p1, void* p2);
84
+ extern char* ParseToString(char* p0, char* p1, int p2);
84
85
 
85
- // ParseAryToStrings function takes an array of names, parsing format and a
86
- // reference to an output: an empty array of strings to return the the data
87
- // back. It populates the output array with raw strings of either JSON or
88
- // pipe-separated parsed values (depending on a given format). Format can take
89
- // values of 'simple', 'compact', or 'pretty'.
86
+ // FreeMemory takes a string pointer and frees its memory.
90
87
 
91
- extern void ParseAryToStrings(char** p0, int p1, char* p2, void* p3);
88
+ extern void FreeMemory(char* p0);
89
+
90
+ // ParseAryToString function takes an array of names, parsing format, and a
91
+ // withDetails flag as 0|1 integer. Parsed outputs are sent as a string in
92
+ // either CSV or JSON format. Format argument can take values of 'csv',
93
+ // 'compact', or 'pretty'. For withDetails argument 0 means false, 1 means
94
+ // true.
95
+
96
+ extern char* ParseAryToString(char** p0, int p1, char* p2, int p3);
92
97
 
93
98
  #ifdef __cplusplus
94
99
  }
Binary file
@@ -1,6 +1,6 @@
1
1
  /* Code generated by cmd/cgo; DO NOT EDIT. */
2
2
 
3
- /* package gitlab.com/gogna/gnparser/binding */
3
+ /* package github.com/gnames/gnparser/binding */
4
4
 
5
5
 
6
6
  #line 1 "cgo-builtin-export-prolog"
@@ -22,7 +22,6 @@ typedef struct { const char *p; ptrdiff_t n; } _GoString_;
22
22
  #line 3 "main.go"
23
23
 
24
24
  #include "stdlib.h"
25
- #include "callback_bridge.h"
26
25
 
27
26
  #line 1 "cgo-generated-wrapper"
28
27
 
@@ -75,20 +74,23 @@ extern "C" {
75
74
  #endif
76
75
 
77
76
 
78
- // ParseToString function takes a name-string, desired format, and parses
79
- // the name-string to either JSON, or pipe-separated values, depending on
80
- // the desired format. Format can take values of 'simple', 'compact', 'pretty'.
81
- // NOTE: Read callback type as "void (*callback)(char *parsed)"
77
+ // ParseToString function takes a name-string, desired format, a withDetails
78
+ // flag as 0|1 integer. It parses the name-string to either JSON, or a CSV
79
+ // string, depending on the desired format. Format argument can take values of
80
+ // 'csv', 'compact', 'pretty'. If withDetails argument is 0, additional
81
+ // parsed details are ommited, if it is 1 -- they are included.
82
+ // true.
83
+ extern char* ParseToString(char* name, char* f, int details);
82
84
 
83
- extern void ParseToString(char* p0, char* p1, void* p2);
85
+ // FreeMemory takes a string pointer and frees its memory.
86
+ extern void FreeMemory(char* p);
84
87
 
85
- // ParseAryToStrings function takes an array of names, parsing format and a
86
- // reference to an output: an empty array of strings to return the the data
87
- // back. It populates the output array with raw strings of either JSON or
88
- // pipe-separated parsed values (depending on a given format). Format can take
89
- // values of 'simple', 'compact', or 'pretty'.
90
-
91
- extern void ParseAryToStrings(char** p0, int p1, char* p2, void* p3);
88
+ // ParseAryToString function takes an array of names, parsing format, and a
89
+ // withDetails flag as 0|1 integer. Parsed outputs are sent as a string in
90
+ // either CSV or JSON format. Format argument can take values of 'csv',
91
+ // 'compact', or 'pretty'. For withDetails argument 0 means false, 1 means
92
+ // true.
93
+ extern char* ParseAryToString(char** in, int length, char* f, int details);
92
94
 
93
95
  #ifdef __cplusplus
94
96
  }
Binary file
@@ -28,20 +28,20 @@ module Biodiversity
28
28
  callback(:parser_callback, %i[string], :void)
29
29
 
30
30
  attach_function(:parse_go, :ParseToString,
31
- %i[string string parser_callback], :void)
32
- attach_function(:parse_ary_go, :ParseAryToStrings,
33
- %i[pointer int string parser_callback], :void)
31
+ %i[string string int], :strptr)
32
+ attach_function(:parse_ary_go, :ParseAryToString,
33
+ %i[pointer int string int], :strptr)
34
+ attach_function(:free_mem, :FreeMemory, %i[pointer], :void)
34
35
 
35
- def self.parse(name, simple = false)
36
+ def self.parse(name, simple: false)
36
37
  format = simple ? 'csv' : 'compact'
37
38
 
38
- parsed = nil
39
- callback = FFI::Function.new(:void, [:string]) { |str| parsed = str }
40
- parse_go(name, format, callback)
39
+ parsed, ptr = parse_go(name, format, 0)
40
+ free_mem(ptr)
41
41
  output(parsed, simple)
42
42
  end
43
43
 
44
- def self.parse_ary(ary, simple = false)
44
+ def self.parse_ary(ary, simple: false)
45
45
  format = simple ? 'csv' : 'compact'
46
46
  in_ptr = FFI::MemoryPointer.new(:pointer, ary.length)
47
47
 
@@ -49,34 +49,41 @@ module Biodiversity
49
49
  ary.map { |s| FFI::MemoryPointer.from_string(s) }
50
50
  )
51
51
 
52
- out_ary = []
53
- callback = FFI::Function.new(:void, [:string]) do |str|
54
- out_ary << output(str, simple)
52
+ parsed, ptr = parse_ary_go(in_ptr, ary.length, format, 0)
53
+ free_mem(ptr)
54
+ if simple
55
+ CSV.new(parsed).map do |row|
56
+ csv_row(row)
57
+ end
58
+ else
59
+ JSON.parse(parsed, symbolize_names: true)
55
60
  end
56
- parse_ary_go(in_ptr, ary.length, format, callback)
57
- out_ary
58
61
  end
59
62
 
60
63
  def self.output(parsed, simple)
61
64
  if simple
62
65
  csv = CSV.new(parsed)
63
- parsed = csv.read[0]
64
- {
65
- id: parsed[0],
66
- verbatim: parsed[1],
67
- cardinality: parsed[2],
68
- canonicalName: {
69
- full: parsed[3],
70
- simple: parsed[4],
71
- stem: parsed[5]
72
- },
73
- authorship: parsed[6],
74
- year: parsed[7],
75
- quality: parsed[8]
76
- }
66
+ row = csv.readlines[0]
67
+ csv_row(row)
77
68
  else
78
69
  JSON.parse(parsed, symbolize_names: true)
79
70
  end
80
71
  end
72
+
73
+ def self.csv_row(row)
74
+ {
75
+ id: row[0],
76
+ verbatim: row[1],
77
+ cardinality: row[2],
78
+ canonical: {
79
+ stem: row[3],
80
+ simple: row[4],
81
+ full: row[5]
82
+ },
83
+ authorship: row[6],
84
+ year: row[7],
85
+ quality: row[8]
86
+ }
87
+ end
81
88
  end
82
89
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Biodiversity module provides a namespace for scientific name parser.
4
4
  module Biodiversity
5
- VERSION = '4.1.0'
5
+ VERSION = '5.0.0'
6
6
 
7
7
  def self.version
8
8
  VERSION
@@ -5,20 +5,20 @@
5
5
  describe Biodiversity::Parser do
6
6
  describe('parse') do
7
7
  it 'parses name in simple format' do
8
- parsed = subject.parse('Homo sapiens Linn.', true)
9
- expect(parsed[:canonicalName][:simple]).to eq 'Homo sapiens'
8
+ parsed = subject.parse('Homo sapiens Linn.', simple: true)
9
+ expect(parsed[:canonical][:simple]).to eq 'Homo sapiens'
10
10
  expect(parsed[:normalized]).to be_nil
11
11
  end
12
12
 
13
13
  it 'parsed name in full format' do
14
14
  parsed = subject.parse('Homo sapiens Linn.')
15
- expect(parsed[:canonicalName][:simple]).to eq 'Homo sapiens'
15
+ expect(parsed[:canonical][:simple]).to eq 'Homo sapiens'
16
16
  expect(parsed[:normalized]).to eq 'Homo sapiens Linn.'
17
17
  end
18
18
 
19
19
  it 'gets quality and year correctly in simple form' do
20
- parsed = subject.parse('Homo sapiens Linn. 1758', true)
21
- expect(parsed[:canonicalName][:simple]).to eq 'Homo sapiens'
20
+ parsed = subject.parse('Homo sapiens Linn. 1758', simple: true)
21
+ expect(parsed[:canonical][:simple]).to eq 'Homo sapiens'
22
22
  expect(parsed[:year]).to eq '1758'
23
23
  expect(parsed[:quality]).to eq '1'
24
24
  expect(parsed[:normalized]).to be_nil
@@ -27,9 +27,12 @@ describe Biodiversity::Parser do
27
27
 
28
28
  describe('parse_ary') do
29
29
  it 'parses names in simple format' do
30
- parsed = subject.parse_ary(['Homo sapiens Linn.', 'Pardosa moesta'], true)
31
- expect(parsed[0][:canonicalName][:simple]).to eq 'Homo sapiens'
32
- expect(parsed[1][:canonicalName][:simple]).to eq 'Pardosa moesta'
30
+ parsed = subject.parse_ary(
31
+ ['Homo sapiens Linn.', 'Pardosa moesta'],
32
+ simple: true
33
+ )
34
+ expect(parsed[0][:canonical][:simple]).to eq 'Homo sapiens'
35
+ expect(parsed[1][:canonical][:simple]).to eq 'Pardosa moesta'
33
36
  expect(parsed[0][:normalized]).to be_nil
34
37
  end
35
38
 
@@ -37,7 +40,7 @@ describe Biodiversity::Parser do
37
40
  parsed = subject.parse_ary(
38
41
  ['Homo sapiens Linn.', 'Tobacco Mosaic Virus']
39
42
  )
40
- expect(parsed[0][:canonicalName][:simple]).to eq 'Homo sapiens'
43
+ expect(parsed[0][:canonical][:simple]).to eq 'Homo sapiens'
41
44
  expect(parsed[0][:normalized]).to eq 'Homo sapiens Linn.'
42
45
  expect(parsed[1][:parsed]).to be false
43
46
  expect(parsed[1][:virus]).to be true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biodiversity
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Mozzherin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-13 00:00:00.000000000 Z
11
+ date: 2021-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '1.14'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.11'
26
+ version: '1.14'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.0'
33
+ version: '2.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.0'
40
+ version: '2.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: byebug
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '11.0'
47
+ version: '11.1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '11.0'
54
+ version: '11.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.9'
75
+ version: '3.10'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.9'
82
+ version: '3.10'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.76'
89
+ version: '1.8'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.76'
96
+ version: '1.8'
97
97
  description: Parsing tool for biodiversity informatics
98
98
  email: dmozzherin@gmail.com
99
99
  executables: []
@@ -111,13 +111,10 @@ files:
111
111
  - README.md
112
112
  - Rakefile
113
113
  - biodiversity.gemspec
114
- - clib/linux/callback_bridge.h
115
114
  - clib/linux/libgnparser.h
116
115
  - clib/linux/libgnparser.so
117
- - clib/mac/callback_bridge.h
118
116
  - clib/mac/libgnparser.h
119
117
  - clib/mac/libgnparser.so
120
- - clib/win/callback_bridge.h
121
118
  - clib/win/libgnparser.h
122
119
  - clib/win/libgnparser.so
123
120
  - lib/biodiversity.rb
@@ -130,7 +127,7 @@ homepage: https://github.com/GlobalNamesArchitecture/biodiversity
130
127
  licenses:
131
128
  - MIT
132
129
  metadata: {}
133
- post_install_message:
130
+ post_install_message:
134
131
  rdoc_options: []
135
132
  require_paths:
136
133
  - lib
@@ -138,15 +135,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
135
  requirements:
139
136
  - - ">="
140
137
  - !ruby/object:Gem::Version
141
- version: '0'
138
+ version: '2.6'
142
139
  required_rubygems_version: !ruby/object:Gem::Requirement
143
140
  requirements:
144
141
  - - ">="
145
142
  - !ruby/object:Gem::Version
146
143
  version: '0'
147
144
  requirements: []
148
- rubygems_version: 3.0.3
149
- signing_key:
145
+ rubygems_version: 3.2.3
146
+ signing_key:
150
147
  specification_version: 4
151
148
  summary: Parser of scientific names
152
149
  test_files: []
@@ -1,3 +0,0 @@
1
- typedef void Callback(char *parsed);
2
-
3
- void callback_bridge(void *callback, char *parsed);
@@ -1,3 +0,0 @@
1
- typedef void Callback(char *parsed);
2
-
3
- void callback_bridge(void *callback, char *parsed);
@@ -1,3 +0,0 @@
1
- typedef void Callback(char *parsed);
2
-
3
- void callback_bridge(void *callback, char *parsed);