ffi-swig-generator 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/.hg/branch.cache +2 -2
  2. data/.hg/dirstate +0 -0
  3. data/.hg/store/00changelog.i +0 -0
  4. data/.hg/store/00manifest.i +0 -0
  5. data/.hg/store/data/.hgtags.i +0 -0
  6. data/.hg/store/data/_history.txt.i +0 -0
  7. data/.hg/store/data/_r_e_a_d_m_e.rdoc.i +0 -0
  8. data/.hg/store/data/_rakefile.i +0 -0
  9. data/.hg/store/data/features/support/templates.rb.i +0 -0
  10. data/.hg/store/data/lib/ffi-swig-generator.rb.i +0 -0
  11. data/.hg/store/data/lib/generator/parser.rb.i +0 -0
  12. data/.hg/store/data/lib/generator/type.rb.i +0 -0
  13. data/.hg/store/data/spec/generator/constant__spec.rb.i +0 -0
  14. data/.hg/store/data/spec/generator/function__spec.rb.i +0 -0
  15. data/.hg/store/data/spec/generator/parser__spec.rb.i +0 -0
  16. data/.hg/store/data/spec/generator/struct__spec.rb.i +0 -0
  17. data/.hg/store/data/spec/generator/swig/constants.i.i +0 -0
  18. data/.hg/store/data/spec/generator/swig/functions.i.i +0 -0
  19. data/.hg/store/data/spec/generator/swig/structs.i.i +0 -0
  20. data/.hg/store/data/spec/generator/swig/testlib.i.i +0 -0
  21. data/.hg/store/data/spec/generator/swig/types.i.i +0 -0
  22. data/.hg/store/data/spec/generator/type__spec.rb.i +0 -0
  23. data/.hg/store/undo +0 -0
  24. data/.hg/undo.dirstate +0 -0
  25. data/.hgtags +1 -0
  26. data/History.txt +5 -0
  27. data/README.rdoc +1 -1
  28. data/Rakefile +1 -1
  29. data/lib/ffi-swig-generator.rb +4 -1
  30. data/lib/generator/parser.rb +6 -4
  31. data/lib/generator/type.rb +17 -13
  32. data/spec/generator/constant_spec.rb +5 -0
  33. data/spec/generator/parser_spec.rb +1 -2
  34. data/spec/generator/struct_spec.rb +2 -1
  35. data/spec/generator/swig/constants.i +3 -0
  36. data/spec/generator/swig/structs.i +1 -0
  37. metadata +29 -11
  38. data/examples/generated/libc_wrap.rb +0 -18
  39. data/examples/generated/libc_wrap.xml +0 -597
  40. data/examples/generated/wiiuse_wrap.rb +0 -322
  41. data/examples/generated/wiiuse_wrap.xml +0 -9025
@@ -1,2 +1,2 @@
1
- 03dae0721eeb2b6370fa42793774359d2aee23e6 24
2
- 03dae0721eeb2b6370fa42793774359d2aee23e6 default
1
+ b43f83e8f60df84612d38bd4e79f5202b9b3a9a0 29
2
+ b43f83e8f60df84612d38bd4e79f5202b9b3a9a0 default
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/.hgtags CHANGED
@@ -1 +1,2 @@
1
1
  927f7115acbb93135c01c2c6dc03afea3b5070e3 0_2_1
2
+ 3bc08935a011c28564b5279366284c278eb70c96 0_3_0
@@ -1,3 +1,8 @@
1
+ == 0.3.1 / 2009-06-16
2
+
3
+ * Minor enhancements
4
+ * Parser#ignore accepts regexps now.
5
+
1
6
  == 0.3.0 / 2009-04-20
2
7
 
3
8
  * Major enhancements
@@ -4,7 +4,7 @@ ffi-swig-generator
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
- ffi-swig-generator is a ruby-ffi wrapper code generator that produce
7
+ ffi-swig-generator is a ruby-ffi wrapper code generator that produces
8
8
  ruby-ffi glue code parsing C header files through SWIG.
9
9
 
10
10
  ffi-swig-generator is able to traverse an XML parse tree generated by
data/Rakefile CHANGED
@@ -27,7 +27,7 @@ PROJ.rubyforge.name = 'ffi-swig-gen'
27
27
 
28
28
  PROJ.readme_file = 'README.rdoc'
29
29
 
30
- PROJ.ann.paragraphs << 'FEATURES' << 'SYNOPSIS' << 'REQUIREMENTS' << 'DOWNLOAD' << 'EXAMPLES' << 'PROJECTS RELATED TO ffi-swig-generator'
30
+ PROJ.ann.paragraphs << 'FEATURES' << 'SYNOPSIS' << 'REQUIREMENTS' << 'DOWNLOAD' << 'EXAMPLES' << 'PROJECTS'
31
31
  PROJ.ann.email[:from] = 'andrea.fazzi@alcacoop.it'
32
32
  PROJ.ann.email[:to] << 'dev@ruby-ffi.kenai.com' << 'users@ruby-ffi.kenai.com'
33
33
  PROJ.ann.email[:server] = 'smtp.gmail.com'
@@ -1,7 +1,10 @@
1
+ require 'rubygems'
2
+ require 'nokogiri'
3
+
1
4
  module FFI
2
5
  module Generator
3
6
  # :stopdoc:
4
- VERSION = '0.3.0'
7
+ VERSION = '0.3.1'
5
8
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
6
9
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
7
10
  # :startdoc:
@@ -1,6 +1,3 @@
1
- require 'rubygems'
2
- require 'nokogiri'
3
-
4
1
  module FFI
5
2
  module Generator
6
3
  NestedStructureNotSupported =<<EOM
@@ -120,10 +117,15 @@ EOM
120
117
  end
121
118
  prepend_nested_structures(node, symname)
122
119
  end
120
+ def ignore?(name)
121
+ @ignored.any? do |to_be_ignored|
122
+ Regexp === to_be_ignored ? to_be_ignored =~ name : to_be_ignored == name
123
+ end
124
+ end
123
125
  def pass(node)
124
126
  result = ""
125
127
  node.traverse do |node|
126
- unless @ignored.include?(get_attr(node, 'name'))
128
+ unless ignore?(get_attr(node, 'name'))
127
129
  if constant?(node)
128
130
  result << Constant.new(:node => node, :indent => @indent).to_s << "\n"
129
131
  elsif typedef?(node)
@@ -3,6 +3,10 @@ module FFI
3
3
  require libpath('generator/node')
4
4
  class Type < Node
5
5
  attr_reader :full_decl
6
+
7
+ ArraySizeRE = /([0-9\+\-\*\/\(\)]+)/
8
+ ArrayRE = /^a\(#{ArraySizeRE}\)/
9
+
6
10
  class Declaration
7
11
  def initialize(declaration)
8
12
  @full_decl = declaration
@@ -17,7 +21,7 @@ module FFI
17
21
  @full_decl[/^enum/]
18
22
  end
19
23
  def is_array?
20
- @full_decl and @full_decl[/\w+\(\d+\)/]
24
+ @full_decl and @full_decl[ArrayRE]
21
25
  end
22
26
  def is_struct?
23
27
  @full_decl[/^struct/]
@@ -82,8 +86,8 @@ module FFI
82
86
  end
83
87
  def array
84
88
  if @declaration.is_array?
85
- num = @full_decl.scan(/\w+\((\d+)\)/).flatten[0]
86
- "[#{ffi_type_from(@full_decl.gsub!(/\w+\(\d+\)\./, ''))}, #{num}]"
89
+ num = @full_decl.scan(ArrayRE).flatten[0]
90
+ "[#{ffi_type_from(@full_decl.gsub!(/#{ArrayRE}\./, ''))}, #{num}]"
87
91
  end
88
92
  end
89
93
  def struct
@@ -111,16 +115,16 @@ module FFI
111
115
  @full_decl = full_decl
112
116
  @declaration = Declaration.new(full_decl)
113
117
  constant || \
114
- volatile || \
115
- typedef || \
116
- pointer || \
117
- enum || \
118
- native || \
119
- struct || \
120
- union || \
121
- array || \
122
- inline_callback || \
123
- callback || \
118
+ volatile ||
119
+ typedef ||
120
+ pointer ||
121
+ enum ||
122
+ native ||
123
+ struct ||
124
+ union ||
125
+ array ||
126
+ inline_callback ||
127
+ callback ||
124
128
  undefined(full_decl)
125
129
  end
126
130
  end
@@ -14,4 +14,9 @@ describe Generator::Constant do
14
14
  Generator::Constant.new(:node => (@node / 'constant')[2]).to_s.should == "CONST_3 = 1234"
15
15
  Generator::Constant.new(:node => (@node / 'constant')[3]).to_s.should == "CONST_4 = 1234"
16
16
  end
17
+ it 'should handle strings' do
18
+ pending do
19
+ Generator::Constant.new(:node => (@node / 'constant')[4]).to_s.should == "CONST_5 = \"string\""
20
+ end
21
+ end
17
22
  end
@@ -157,7 +157,7 @@ EOC
157
157
  it 'should ignore given declarations' do
158
158
  parser = Generator::Parser.new
159
159
  parser.ignore 'CONST_1', 'e_1', 'test_struct', 'test_struct_5'
160
- parser.ignore 'func_with_enum_2'
160
+ parser.ignore(/^func_with_enum/)
161
161
  parser.generate(@node).should == <<EOC
162
162
 
163
163
  module TestLib
@@ -241,7 +241,6 @@ module TestLib
241
241
  end
242
242
  attach_function :get_int, [ :pointer ], :int
243
243
  attach_function :get_char, [ :pointer ], :char
244
- attach_function :func_with_enum, [ :int ], :int
245
244
  attach_function :func_with_typedef, [ ], :uchar
246
245
 
247
246
  end
@@ -14,7 +14,8 @@ class TestStruct1 < FFI::Struct
14
14
  :i, :int,
15
15
  :c, :char,
16
16
  :s, :pointer,
17
- :a, [:char, 5]
17
+ :a, [:char, 5],
18
+ :b, [:char, 5+1]
18
19
  )
19
20
  def s=(str)
20
21
  @s = FFI::MemoryPointer.from_string(str)
@@ -4,5 +4,8 @@
4
4
  #define CONST_2 1234U
5
5
  #define CONST_3 1234L
6
6
  #define CONST_4 1234UL
7
+ #define CONST_5 "string"
8
+
9
+
7
10
 
8
11
 
@@ -5,6 +5,7 @@ struct test_struct_1 {
5
5
  char c;
6
6
  const char* s;
7
7
  const char a[5];
8
+ const char b[5+1];
8
9
  };
9
10
 
10
11
  struct test_struct_2 {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-swig-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Fazzi
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-20 00:00:00 +02:00
12
+ date: 2009-06-16 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,9 +30,29 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.1.1
33
+ version: 1.3.1
34
34
  version:
35
- description: ffi-swig-generator is a ruby-ffi wrapper code generator that produce ruby-ffi glue code parsing C header files through SWIG. ffi-swig-generator is able to traverse an XML parse tree generated by the +swig+ command and to produce a ruby-ffi code from it. ffi-swig-generator is shipped with a command line tool and a rake task that automates the code generation process. ffi-swig-generator XML capabilities are provided by nokogiri.
35
+ - !ruby/object:Gem::Dependency
36
+ name: bones
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.5.1
44
+ version:
45
+ description: |-
46
+ ffi-swig-generator is a ruby-ffi wrapper code generator that produces
47
+ ruby-ffi glue code parsing C header files through SWIG.
48
+
49
+ ffi-swig-generator is able to traverse an XML parse tree generated by
50
+ the +swig+ command and to produce a ruby-ffi code from it.
51
+
52
+ ffi-swig-generator is shipped with a command line tool and a rake task
53
+ that automates the code generation process.
54
+
55
+ ffi-swig-generator XML capabilities are provided by nokogiri.
36
56
  email: andrea.fazzi@alcacoop.it
37
57
  executables:
38
58
  - ffi-gen
@@ -161,10 +181,6 @@ files:
161
181
  - bin/ffi-gen
162
182
  - cucumber.yml
163
183
  - examples/Rakefile
164
- - examples/generated/libc_wrap.rb
165
- - examples/generated/libc_wrap.xml
166
- - examples/generated/wiiuse_wrap.rb
167
- - examples/generated/wiiuse_wrap.xml
168
184
  - examples/interfaces/libc.i
169
185
  - examples/interfaces/wiiuse.i
170
186
  - features/generate.feature
@@ -215,6 +231,8 @@ files:
215
231
  - tasks/test.rake
216
232
  has_rdoc: true
217
233
  homepage: http://kenai.com/projects/ruby-ffi/sources/swig-generator/show
234
+ licenses: []
235
+
218
236
  post_install_message:
219
237
  rdoc_options:
220
238
  - --main
@@ -236,9 +254,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
254
  requirements: []
237
255
 
238
256
  rubyforge_project: ffi-swig-gen
239
- rubygems_version: 1.3.1
257
+ rubygems_version: 1.3.3
240
258
  signing_key:
241
- specification_version: 2
242
- summary: ffi-swig-generator is a ruby-ffi wrapper code generator that produce ruby-ffi glue code parsing C header files through SWIG
259
+ specification_version: 3
260
+ summary: ffi-swig-generator is a ruby-ffi wrapper code generator that produces ruby-ffi glue code parsing C header files through SWIG
243
261
  test_files: []
244
262
 
@@ -1,18 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'ffi'
4
-
5
- module LibC
6
- extend FFI::Library
7
- class Timeval < FFI::Struct
8
- layout(
9
- :tv_sec, :ulong,
10
- :tv_usec, :ulong
11
- )
12
- end
13
- attach_function :strlen, [ :string ], :uint
14
- attach_function :strcat, [ :string, :string ], :string
15
- attach_function :strcmp, [ :string, :string ], :int
16
- attach_function :gettimeofday, [ :pointer, :pointer ], :int
17
-
18
- end
@@ -1,597 +0,0 @@
1
- <?xml version="1.0" ?>
2
- <top id="1" addr="b7db19e8" >
3
- <attributelist id="2" addr="b7db19e8" >
4
- <attribute name="outfile" value="interfaces/libc_wrap.c" id="3" addr="b7dbaf38" />
5
- <attribute name="name" value="libc" id="4" addr="b7dbaf38" />
6
- <attribute name="module" value="libc" id="5" addr="b7db9c08" />
7
- <attribute name="inputfile" value="interfaces/libc.i" id="6" addr="b7dbaf38" />
8
- <attribute name="classes" value="b7dba138" id="7" addr="b7dba138" />
9
- <attribute name="infile" value="interfaces/libc.i" id="8" addr="b7dbaf38" />
10
- <attribute name="outfile_h" value="interfaces/libc_wrap.h" id="9" addr="b7dbaf38" />
11
- </attributelist >
12
-
13
- <include id="10" addr="b7db8aa8" >
14
- <attributelist id="11" addr="b7db8aa8" >
15
- <attribute name="name" value="/usr/local/share/swig/1.3.40//swig.swg" id="12" addr="b7dbaf38" />
16
- </attributelist >
17
-
18
- <include id="13" addr="b7db8ad8" >
19
- <attributelist id="14" addr="b7db8ad8" >
20
- <attribute name="name" value="/usr/local/share/swig/1.3.40//swigwarnings.swg" id="15" addr="b7dbaf38" />
21
- </attributelist >
22
-
23
- <include id="16" addr="b7db8b08" >
24
- <attributelist id="17" addr="b7db8b08" >
25
- <attribute name="name" value="/usr/local/share/swig/1.3.40//swigwarn.swg" id="18" addr="b7dbaf38" />
26
- </attributelist >
27
-
28
- </include >
29
- </include >
30
- <typemap id="19" addr="b7db8c78" >
31
- <attributelist id="20" addr="b7db8c78" >
32
- <attribute name="code" value="free($1);" id="21" addr="b7dbaf38" />
33
- <attribute name="method" value="newfree" id="22" addr="b7dbaf38" />
34
- </attributelist >
35
-
36
- <typemapitem id="23" addr="b7db8be8" >
37
- <attributelist id="24" addr="b7db8be8" >
38
- <parmlist id="25" addr="b7db8c08" >
39
- <parm id="26">
40
- <attributelist id="27" addr="b7db8c08" >
41
- <attribute name="type" value="p.char" id="28" addr="b7dbaf38" />
42
- </attributelist >
43
- </parm >
44
- </parmlist >
45
- </attributelist >
46
-
47
- </typemapitem >
48
- </typemap >
49
- <typemap id="29" addr="b7db8d88" >
50
- <attributelist id="30" addr="b7db8d88" >
51
- <attribute name="code" value="{&#10; if ($1) free((char *)$1);&#10; if ($input) {&#10; $1 = ($1_type) malloc(strlen((const char *)$input)+1);&#10; strcpy((char *)$1, (const char *)$input);&#10; } else {&#10; $1 = 0;&#10; }&#10;}" id="31" addr="b7dbaf38" />
52
- <attribute name="method" value="memberin" id="32" addr="b7dbaf38" />
53
- </attributelist >
54
-
55
- <typemapitem id="33" addr="b7db8d28" >
56
- <attributelist id="34" addr="b7db8d28" >
57
- <parmlist id="35" addr="b7db8d48" >
58
- <parm id="36">
59
- <attributelist id="37" addr="b7db8d48" >
60
- <attribute name="type" value="p.char" id="38" addr="b7dbaf38" />
61
- </attributelist >
62
- </parm >
63
- </parmlist >
64
- </attributelist >
65
-
66
- </typemapitem >
67
- </typemap >
68
- <typemap id="39" addr="b7db8eb8" >
69
- <attributelist id="40" addr="b7db8eb8" >
70
- <kwargs id="41" addr="b7db8db8" >
71
- <attributelist id="42" addr="b7db8db8" >
72
- <attribute name="name" value="warning" id="43" addr="b7dbaf38" />
73
- <attribute name="value" value="451:Setting a const char * variable may leak memory." id="44" addr="b7dbaf38" />
74
- </attributelist >
75
- <kwargssitem id="45" addr="b7db8dc8" >
76
- <attributelist id="46" addr="b7db8dc8" >
77
- </attributelist >
78
- </kwargssitem >
79
- <kwargssitem id="47" addr="b7db8de8" >
80
- <attributelist id="48" addr="b7db8de8" >
81
- </attributelist >
82
- </kwargssitem >
83
- </kwargs >
84
- <attribute name="code" value="{&#10; if ($input) {&#10; $1 = ($1_type) malloc(strlen((const char *)$input)+1);&#10; strcpy((char *)$1, (const char *)$input);&#10; } else {&#10; $1 = 0;&#10; }&#10;}" id="49" addr="b7dbaf38" />
85
- <attribute name="method" value="memberin" id="50" addr="b7dbaf38" />
86
- </attributelist >
87
-
88
- <typemapitem id="51" addr="b7db8e58" >
89
- <attributelist id="52" addr="b7db8e58" >
90
- <parmlist id="53" addr="b7db8e78" >
91
- <parm id="54">
92
- <attributelist id="55" addr="b7db8e78" >
93
- <attribute name="type" value="p.q(const).char" id="56" addr="b7dbaf38" />
94
- </attributelist >
95
- </parm >
96
- </parmlist >
97
- </attributelist >
98
-
99
- </typemapitem >
100
- </typemap >
101
- <typemap id="57" addr="b7db8fa8" >
102
- <attributelist id="58" addr="b7db8fa8" >
103
- <attribute name="code" value="{&#10; if ($1) free((char *)$1);&#10; if ($input) {&#10; $1 = ($1_type) malloc(strlen((const char *)$input)+1);&#10; strcpy((char *)$1, (const char *)$input);&#10; } else {&#10; $1 = 0;&#10; }&#10;}" id="59" addr="b7dbaf38" />
104
- <attribute name="method" value="globalin" id="60" addr="b7dbaf38" />
105
- </attributelist >
106
-
107
- <typemapitem id="61" addr="b7db8f48" >
108
- <attributelist id="62" addr="b7db8f48" >
109
- <parmlist id="63" addr="b7db8f68" >
110
- <parm id="64">
111
- <attributelist id="65" addr="b7db8f68" >
112
- <attribute name="type" value="p.char" id="66" addr="b7dbaf38" />
113
- </attributelist >
114
- </parm >
115
- </parmlist >
116
- </attributelist >
117
-
118
- </typemapitem >
119
- </typemap >
120
- <typemap id="67" addr="b7db90c8" >
121
- <attributelist id="68" addr="b7db90c8" >
122
- <kwargs id="69" addr="b7db8fd8" >
123
- <attributelist id="70" addr="b7db8fd8" >
124
- <attribute name="name" value="warning" id="71" addr="b7dbaf38" />
125
- <attribute name="value" value="451:Setting a const char * variable may leak memory." id="72" addr="b7dbaf38" />
126
- </attributelist >
127
- <kwargssitem id="73" addr="b7db8fe8" >
128
- <attributelist id="74" addr="b7db8fe8" >
129
- </attributelist >
130
- </kwargssitem >
131
- <kwargssitem id="75" addr="b7db8ff8" >
132
- <attributelist id="76" addr="b7db8ff8" >
133
- </attributelist >
134
- </kwargssitem >
135
- </kwargs >
136
- <attribute name="code" value="{&#10; if ($input) {&#10; $1 = ($1_type) malloc(strlen((const char *)$input)+1);&#10; strcpy((char *)$1, (const char *)$input);&#10; } else {&#10; $1 = 0;&#10; }&#10;}" id="77" addr="b7dbaf38" />
137
- <attribute name="method" value="globalin" id="78" addr="b7dbaf38" />
138
- </attributelist >
139
-
140
- <typemapitem id="79" addr="b7db9068" >
141
- <attributelist id="80" addr="b7db9068" >
142
- <parmlist id="81" addr="b7db9088" >
143
- <parm id="82">
144
- <attributelist id="83" addr="b7db9088" >
145
- <attribute name="type" value="p.q(const).char" id="84" addr="b7dbaf38" />
146
- </attributelist >
147
- </parm >
148
- </parmlist >
149
- </attributelist >
150
-
151
- </typemapitem >
152
- </typemap >
153
- <typemap id="85" addr="b7db91d8" >
154
- <attributelist id="86" addr="b7db91d8" >
155
- <attribute name="code" value="{&#10; if($input) {&#10; strncpy((char*)$1, (const char *)$input, $1_dim0-1);&#10; $1[$1_dim0-1] = 0;&#10; } else {&#10; $1[0] = 0;&#10; }&#10;}" id="87" addr="b7dbaf38" />
156
- <attribute name="method" value="memberin" id="88" addr="b7dbaf38" />
157
- </attributelist >
158
-
159
- <typemapitem id="89" addr="b7db9178" >
160
- <attributelist id="90" addr="b7db9178" >
161
- <parmlist id="91" addr="b7db9198" >
162
- <parm id="92">
163
- <attributelist id="93" addr="b7db9198" >
164
- <attribute name="type" value="a(ANY).char" id="94" addr="b7dbaf38" />
165
- </attributelist >
166
- </parm >
167
- </parmlist >
168
- </attributelist >
169
-
170
- </typemapitem >
171
- </typemap >
172
- <typemap id="95" addr="b7db92d8" >
173
- <attributelist id="96" addr="b7db92d8" >
174
- <attribute name="code" value="{&#10; if($input) {&#10; strncpy((char*)$1, (const char *)$input, $1_dim0-1);&#10; $1[$1_dim0-1] = 0;&#10; } else {&#10; $1[0] = 0;&#10; }&#10;}" id="97" addr="b7dbaf38" />
175
- <attribute name="method" value="globalin" id="98" addr="b7dbaf38" />
176
- </attributelist >
177
-
178
- <typemapitem id="99" addr="b7db9278" >
179
- <attributelist id="100" addr="b7db9278" >
180
- <parmlist id="101" addr="b7db9298" >
181
- <parm id="102">
182
- <attributelist id="103" addr="b7db9298" >
183
- <attribute name="type" value="a(ANY).char" id="104" addr="b7dbaf38" />
184
- </attributelist >
185
- </parm >
186
- </parmlist >
187
- </attributelist >
188
-
189
- </typemapitem >
190
- </typemap >
191
- <typemap id="105" addr="b7db93b8" >
192
- <attributelist id="106" addr="b7db93b8" >
193
- <attribute name="code" value="{&#10; if ($input) strcpy((char *)$1, (const char *)$input);&#10; else $1[0] = 0;&#10;}" id="107" addr="b7dbaf38" />
194
- <attribute name="method" value="memberin" id="108" addr="b7dbaf38" />
195
- </attributelist >
196
-
197
- <typemapitem id="109" addr="b7db9358" >
198
- <attributelist id="110" addr="b7db9358" >
199
- <parmlist id="111" addr="b7db9378" >
200
- <parm id="112">
201
- <attributelist id="113" addr="b7db9378" >
202
- <attribute name="type" value="a().char" id="114" addr="b7dbaf38" />
203
- </attributelist >
204
- </parm >
205
- </parmlist >
206
- </attributelist >
207
-
208
- </typemapitem >
209
- </typemap >
210
- <typemap id="115" addr="b7db9498" >
211
- <attributelist id="116" addr="b7db9498" >
212
- <attribute name="code" value="{&#10; if ($input) strcpy((char *)$1, (const char *)$input);&#10; else $1[0] = 0;&#10;}" id="117" addr="b7dbaf38" />
213
- <attribute name="method" value="globalin" id="118" addr="b7dbaf38" />
214
- </attributelist >
215
-
216
- <typemapitem id="119" addr="b7db9438" >
217
- <attributelist id="120" addr="b7db9438" >
218
- <parmlist id="121" addr="b7db9458" >
219
- <parm id="122">
220
- <attributelist id="123" addr="b7db9458" >
221
- <attribute name="type" value="a().char" id="124" addr="b7dbaf38" />
222
- </attributelist >
223
- </parm >
224
- </parmlist >
225
- </attributelist >
226
-
227
- </typemapitem >
228
- </typemap >
229
- <typemap id="125" addr="b7db9598" >
230
- <attributelist id="126" addr="b7db9598" >
231
- <attribute name="code" value="{&#10; size_t ii;&#10; $1_basetype *b = ($1_basetype *) $1;&#10; for (ii = 0; ii &lt; (size_t)$1_size; ii++) b[ii] = *(($1_basetype *) $input + ii);&#10;}" id="127" addr="b7dbaf38" />
232
- <attribute name="method" value="memberin" id="128" addr="b7dbaf38" />
233
- </attributelist >
234
-
235
- <typemapitem id="129" addr="b7db9538" >
236
- <attributelist id="130" addr="b7db9538" >
237
- <parmlist id="131" addr="b7db9558" >
238
- <parm id="132">
239
- <attributelist id="133" addr="b7db9558" >
240
- <attribute name="type" value="a(ANY).SWIGTYPE" id="134" addr="b7dbaf38" />
241
- </attributelist >
242
- </parm >
243
- </parmlist >
244
- </attributelist >
245
-
246
- </typemapitem >
247
- </typemap >
248
- <typemap id="135" addr="b7db9698" >
249
- <attributelist id="136" addr="b7db9698" >
250
- <attribute name="code" value="{&#10; size_t ii;&#10; $1_basetype *b = ($1_basetype *) $1;&#10; for (ii = 0; ii &lt; (size_t)$1_size; ii++) b[ii] = *(($1_basetype *) $input + ii);&#10;}" id="137" addr="b7dbaf38" />
251
- <attribute name="method" value="globalin" id="138" addr="b7dbaf38" />
252
- </attributelist >
253
-
254
- <typemapitem id="139" addr="b7db9638" >
255
- <attributelist id="140" addr="b7db9638" >
256
- <parmlist id="141" addr="b7db9658" >
257
- <parm id="142">
258
- <attributelist id="143" addr="b7db9658" >
259
- <attribute name="type" value="a(ANY).SWIGTYPE" id="144" addr="b7dbaf38" />
260
- </attributelist >
261
- </parm >
262
- </parmlist >
263
- </attributelist >
264
-
265
- </typemapitem >
266
- </typemap >
267
- <typemap id="145" addr="b7db97b8" >
268
- <attributelist id="146" addr="b7db97b8" >
269
- <attribute name="code" value="{&#10; $basetype (*inp)[$1_dim1] = ($basetype (*)[$1_dim1])($input);&#10; $basetype (*dest)[$1_dim1] = ($basetype (*)[$1_dim1])($1);&#10; size_t ii = 0;&#10; for (; ii &lt; $1_dim0; ++ii) {&#10; $basetype *ip = inp[ii];&#10; $basetype *dp = dest[ii];&#10; size_t jj = 0;&#10; for (; jj &lt; $1_dim1; ++jj) dp[jj] = ip[jj];&#10; }&#10;}" id="147" addr="b7dbaf38" />
270
- <attribute name="method" value="memberin" id="148" addr="b7dbaf38" />
271
- </attributelist >
272
-
273
- <typemapitem id="149" addr="b7db9728" >
274
- <attributelist id="150" addr="b7db9728" >
275
- <parmlist id="151" addr="b7db9778" >
276
- <parm id="152">
277
- <attributelist id="153" addr="b7db9778" >
278
- <attribute name="type" value="a(ANY).a(ANY).SWIGTYPE" id="154" addr="b7dbaf38" />
279
- </attributelist >
280
- </parm >
281
- </parmlist >
282
- </attributelist >
283
-
284
- </typemapitem >
285
- </typemap >
286
- <typemap id="155" addr="b7db98d8" >
287
- <attributelist id="156" addr="b7db98d8" >
288
- <attribute name="code" value="{&#10; $basetype (*inp)[$1_dim1] = ($basetype (*)[$1_dim1])($input);&#10; $basetype (*dest)[$1_dim1] = ($basetype (*)[$1_dim1])($1);&#10; size_t ii = 0;&#10; for (; ii &lt; $1_dim0; ++ii) {&#10; $basetype *ip = inp[ii];&#10; $basetype *dp = dest[ii];&#10; size_t jj = 0;&#10; for (; jj &lt; $1_dim1; ++jj) dp[jj] = ip[jj];&#10; }&#10;}" id="157" addr="b7dbaf38" />
289
- <attribute name="method" value="globalin" id="158" addr="b7dbaf38" />
290
- </attributelist >
291
-
292
- <typemapitem id="159" addr="b7db9848" >
293
- <attributelist id="160" addr="b7db9848" >
294
- <parmlist id="161" addr="b7db9898" >
295
- <parm id="162">
296
- <attributelist id="163" addr="b7db9898" >
297
- <attribute name="type" value="a(ANY).a(ANY).SWIGTYPE" id="164" addr="b7dbaf38" />
298
- </attributelist >
299
- </parm >
300
- </parmlist >
301
- </attributelist >
302
-
303
- </typemapitem >
304
- </typemap >
305
- <typemap id="165" addr="b7db9ad8" >
306
- <attributelist id="166" addr="b7db9ad8" >
307
- <kwargs id="167" addr="b7db9918" >
308
- <attributelist id="168" addr="b7db9918" >
309
- <attribute name="name" value="numinputs" id="169" addr="b7dbaf38" />
310
- <attribute name="value" value="0" id="170" addr="b7dbaf38" />
311
- </attributelist >
312
- <kwargssitem id="171" addr="b7db9928" >
313
- <attributelist id="172" addr="b7db9928" >
314
- </attributelist >
315
- </kwargssitem >
316
- <kwargssitem id="173" addr="b7db9938" >
317
- <attributelist id="174" addr="b7db9938" >
318
- </attributelist >
319
- </kwargssitem >
320
- </kwargs >
321
- <attribute name="code" value="" id="175" addr="b7dbaf38" />
322
- <attribute name="method" value="in" id="176" addr="b7dbaf38" />
323
- </attributelist >
324
-
325
- <typemapitem id="177" addr="b7db99b8" >
326
- <attributelist id="178" addr="b7db99b8" >
327
- <parmlist id="179" addr="b7db99d8" >
328
- <parm id="180">
329
- <attributelist id="181" addr="b7db99d8" >
330
- <attribute name="name" value="VARARGS_SENTINEL" id="182" addr="b7dbaf38" />
331
- <attribute name="type" value="p.SWIGTYPE" id="183" addr="b7dbaf38" />
332
- </attributelist >
333
- </parm >
334
- </parmlist >
335
- </attributelist >
336
-
337
- </typemapitem >
338
- <typemapitem id="184" addr="b7db9a68" >
339
- <attributelist id="185" addr="b7db9a68" >
340
- <parmlist id="186" addr="b7db9a88" >
341
- <parm id="187">
342
- <attributelist id="188" addr="b7db9a88" >
343
- <attribute name="name" value="VARARGS_SENTINEL" id="189" addr="b7dbaf38" />
344
- <attribute name="type" value="SWIGTYPE" id="190" addr="b7dbaf38" />
345
- </attributelist >
346
- </parm >
347
- </parmlist >
348
- </attributelist >
349
-
350
- </typemapitem >
351
- </typemap >
352
- <insert id="191" addr="b7db9b18" >
353
- <attributelist id="192" addr="b7db9b18" >
354
- <attribute name="code" value="/* -----------------------------------------------------------------------------&#10; * This section contains generic SWIG labels for method/variable&#10; * declarations/attributes, and other compiler dependent labels.&#10; * ----------------------------------------------------------------------------- */&#10;&#10;/* template workaround for compilers that cannot correctly implement the C++ standard */&#10;#ifndef SWIGTEMPLATEDISAMBIGUATOR&#10;# if defined(__SUNPRO_CC) &amp;&amp; (__SUNPRO_CC &lt;= 0x560)&#10;# define SWIGTEMPLATEDISAMBIGUATOR template&#10;# elif defined(__HP_aCC)&#10;/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */&#10;/* If we find a maximum version that requires this, the test would be __HP_aCC &lt;= 35500 for A.03.55 */&#10;# define SWIGTEMPLATEDISAMBIGUATOR template&#10;# else&#10;# define SWIGTEMPLATEDISAMBIGUATOR&#10;# endif&#10;#endif&#10;&#10;/* inline attribute */&#10;#ifndef SWIGINLINE&#10;# if defined(__cplusplus) || (defined(__GNUC__) &amp;&amp; !defined(__STRICT_ANSI__))&#10;# define SWIGINLINE inline&#10;# else&#10;# define SWIGINLINE&#10;# endif&#10;#endif&#10;&#10;/* attribute recognised by some compilers to avoid 'unused' warnings */&#10;#ifndef SWIGUNUSED&#10;# if defined(__GNUC__)&#10;# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ >= 4))&#10;# define SWIGUNUSED __attribute__ ((__unused__)) &#10;# else&#10;# define SWIGUNUSED&#10;# endif&#10;# elif defined(__ICC)&#10;# define SWIGUNUSED __attribute__ ((__unused__)) &#10;# else&#10;# define SWIGUNUSED &#10;# endif&#10;#endif&#10;&#10;#ifndef SWIG_MSC_UNSUPPRESS_4505&#10;# if defined(_MSC_VER)&#10;# pragma warning(disable : 4505) /* unreferenced local function has been removed */&#10;# endif &#10;#endif&#10;&#10;#ifndef SWIGUNUSEDPARM&#10;# ifdef __cplusplus&#10;# define SWIGUNUSEDPARM(p)&#10;# else&#10;# define SWIGUNUSEDPARM(p) p SWIGUNUSED &#10;# endif&#10;#endif&#10;&#10;/* internal SWIG method */&#10;#ifndef SWIGINTERN&#10;# define SWIGINTERN static SWIGUNUSED&#10;#endif&#10;&#10;/* internal inline SWIG method */&#10;#ifndef SWIGINTERNINLINE&#10;# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE&#10;#endif&#10;&#10;/* exporting methods */&#10;#if (__GNUC__ >= 4) || (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ >= 4)&#10;# ifndef GCC_HASCLASSVISIBILITY&#10;# define GCC_HASCLASSVISIBILITY&#10;# endif&#10;#endif&#10;&#10;#ifndef SWIGEXPORT&#10;# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)&#10;# if defined(STATIC_LINKED)&#10;# define SWIGEXPORT&#10;# else&#10;# define SWIGEXPORT __declspec(dllexport)&#10;# endif&#10;# else&#10;# if defined(__GNUC__) &amp;&amp; defined(GCC_HASCLASSVISIBILITY)&#10;# define SWIGEXPORT __attribute__ ((visibility(&quot;default&quot;)))&#10;# else&#10;# define SWIGEXPORT&#10;# endif&#10;# endif&#10;#endif&#10;&#10;/* calling conventions for Windows */&#10;#ifndef SWIGSTDCALL&#10;# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)&#10;# define SWIGSTDCALL __stdcall&#10;# else&#10;# define SWIGSTDCALL&#10;# endif &#10;#endif&#10;&#10;/* Deal with Microsoft's attempt at deprecating C standard runtime functions */&#10;#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) &amp;&amp; defined(_MSC_VER) &amp;&amp; !defined(_CRT_SECURE_NO_DEPRECATE)&#10;# define _CRT_SECURE_NO_DEPRECATE&#10;#endif&#10;&#10;/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */&#10;#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) &amp;&amp; defined(_MSC_VER) &amp;&amp; !defined(_SCL_SECURE_NO_DEPRECATE)&#10;# define _SCL_SECURE_NO_DEPRECATE&#10;#endif&#10;&#10;" id="193" addr="b7dbaf38" />
355
- <attribute name="section" value="runtime" id="194" addr="b7dbaf38" />
356
- </attributelist >
357
-
358
- </insert >
359
- </include >
360
- <include id="195" addr="b7db9be8" >
361
- <attributelist id="196" addr="b7db9be8" >
362
- <attribute name="name" value="interfaces/libc.i" id="197" addr="b7dbaf38" />
363
- <attribute name="module" value="" id="198" addr="b7db9c38" />
364
- <attribute name="options" value="b7db9b98" id="199" addr="b7db9b98" />
365
- </attributelist >
366
-
367
- <module id="200" addr="b7db9c08" >
368
- <attributelist id="201" addr="b7db9c08" >
369
- <attribute name="name" value="libc" id="202" addr="b7dbaf38" />
370
- </attributelist >
371
-
372
- </module >
373
- <insert id="203" addr="b7db9c58" >
374
- <attributelist id="204" addr="b7db9c58" >
375
- <attribute name="code" value="&#10;require 'rubygems'&#10;require 'ffi'&#10;&#10;module LibC&#10; extend FFI::Library&#10;" id="205" addr="b7dbaf38" />
376
- </attributelist >
377
-
378
- </insert >
379
- <cdecl id="206" addr="b7db9cd8" >
380
- <attributelist id="207" addr="b7db9cd8" >
381
- <attribute name="sym_name" value="size_t" id="208" addr="b7dbaf38" />
382
- <attribute name="name" value="size_t" id="209" addr="b7dbaf38" />
383
- <attribute name="decl" value="" id="210" addr="b7dbaf38" />
384
- <attribute name="storage" value="typedef" id="211" addr="b7dbaf38" />
385
- <attribute name="kind" value="typedef" id="212" addr="b7dbaf38" />
386
- <attribute name="type" value="unsigned int" id="213" addr="b7dbaf38" />
387
- <attribute name="sym_symtab" value="b7db13d8" id="214" addr="b7db13d8" />
388
- <attribute name="sym_overname" value="__SWIG_0" id="215" addr="b7dbaf38" />
389
- </attributelist >
390
-
391
- </cdecl >
392
- <class id="216" addr="b7db9e28" >
393
- <attributelist id="217" addr="b7db9e28" >
394
- <attribute name="name" value="timeval" id="218" addr="b7dbaf38" />
395
- <attribute name="sym_symtab" value="b7db13d8" id="219" addr="b7db13d8" />
396
- <attribute name="symtab" value="b7db9ea8" id="220" addr="b7db9ea8" />
397
- <attribute name="allows_typedef" value="1" id="221" addr="b7dbaf38" />
398
- <attribute name="typepass_visit" value="1" id="222" addr="b7dbaf38" />
399
- <attribute name="allocate_visit" value="1" id="223" addr="b7dbaf38" />
400
- <attribute name="kind" value="struct" id="224" addr="b7dbaf38" />
401
- <attribute name="sym_name" value="timeval" id="225" addr="b7dbaf38" />
402
- <attribute name="allocate_default_constructor" value="1" id="226" addr="b7dbaf38" />
403
- <attribute name="allocate_default_destructor" value="1" id="227" addr="b7dbaf38" />
404
- <attribute name="allocate_copy_constructor" value="1" id="228" addr="b7dbaf38" />
405
- <attribute name="module" value="libc" id="229" addr="b7db9c08" />
406
- <attribute name="sym_overname" value="__SWIG_0" id="230" addr="b7dbaf38" />
407
- <typescope id="231" addr="b7dbaab8" >
408
- <attributelist id="232" addr="b7dbaab8" >
409
- <attribute name="name" value="timeval" id="233" addr="b7dbaf38" />
410
- <typetab id="234" addr="b7dbaac8" >
411
- <attributelist id="235" addr="b7dbaac8" >
412
- </attributelist >
413
- </typetab >
414
- <attribute name="parent" value="b7db1458" id="236" addr="b7db1458" />
415
- <attribute name="qname" value="timeval" id="237" addr="b7dbaf38" />
416
- <attribute name="symtab" value="b7db9ea8" id="238" addr="b7db9ea8" />
417
- </attributelist >
418
- <typescopesitem id="239" addr="b7dbaa88" >
419
- <attributelist id="240" addr="b7dbaa88" >
420
- </attributelist >
421
- </typescopesitem >
422
- <typescopesitem id="241" addr="b7dbaac8" >
423
- <attributelist id="242" addr="b7dbaac8" >
424
- </attributelist >
425
- </typescopesitem >
426
- <typescopesitem id="243" addr="b7db1458" >
427
- <attributelist id="244" addr="b7db1458" >
428
- <attribute name="name" value="" id="245" addr="b7dbaf38" />
429
- <typetab id="246" addr="b7db1488" >
430
- <attributelist id="247" addr="b7db1488" >
431
- <attribute name="struct timeval" value="struct timeval" id="248" addr="b7dbaf38" />
432
- <attribute name="size_t" value="unsigned int" id="249" addr="b7dbaf38" />
433
- </attributelist >
434
- <typetabsitem id="250" addr="b7dbaa48" >
435
- <attributelist id="251" addr="b7dbaa48" >
436
- </attributelist >
437
- </typetabsitem >
438
- <typetabsitem id="252" addr="b7dba9c8" >
439
- <attributelist id="253" addr="b7dba9c8" >
440
- </attributelist >
441
- </typetabsitem >
442
- </typetab >
443
- </attributelist >
444
- </typescopesitem >
445
- <typescopesitem id="254" addr="b7dbaad8" >
446
- <attributelist id="255" addr="b7dbaad8" >
447
- </attributelist >
448
- </typescopesitem >
449
- <typescopesitem id="256" addr="b7db9ea8" >
450
- <attributelist id="257" addr="b7db9ea8" >
451
- <attribute name="name" value="timeval" id="258" addr="b7dbaf38" />
452
- <attribute name="csymtab" value="b7db9ec8" id="259" addr="b7db9ec8" />
453
- <attribute name="symtab" value="b7db9e98" id="260" addr="b7db9e98" />
454
- </attributelist >
455
- </typescopesitem >
456
- </typescope >
457
- </attributelist >
458
-
459
- <cdecl id="261" addr="b7db9f58" >
460
- <attributelist id="262" addr="b7db9f58" >
461
- <attribute name="ismember" value="1" id="263" addr="b7dbaf38" />
462
- <attribute name="sym_name" value="tv_sec" id="264" addr="b7dbaf38" />
463
- <attribute name="name" value="tv_sec" id="265" addr="b7dbaf38" />
464
- <attribute name="decl" value="" id="266" addr="b7dbaf38" />
465
- <attribute name="access" value="public" id="267" addr="b7dbaf38" />
466
- <attribute name="kind" value="variable" id="268" addr="b7dbaf38" />
467
- <attribute name="type" value="unsigned long" id="269" addr="b7dbaf38" />
468
- <attribute name="sym_symtab" value="b7db9ea8" id="270" addr="b7db9ea8" />
469
- <attribute name="sym_overname" value="__SWIG_0" id="271" addr="b7dbaf38" />
470
- </attributelist >
471
-
472
- </cdecl >
473
- <cdecl id="272" addr="b7dba0a8" >
474
- <attributelist id="273" addr="b7dba0a8" >
475
- <attribute name="ismember" value="1" id="274" addr="b7dbaf38" />
476
- <attribute name="sym_name" value="tv_usec" id="275" addr="b7dbaf38" />
477
- <attribute name="name" value="tv_usec" id="276" addr="b7dbaf38" />
478
- <attribute name="decl" value="" id="277" addr="b7dbaf38" />
479
- <attribute name="access" value="public" id="278" addr="b7dbaf38" />
480
- <attribute name="kind" value="variable" id="279" addr="b7dbaf38" />
481
- <attribute name="type" value="unsigned long" id="280" addr="b7dbaf38" />
482
- <attribute name="sym_symtab" value="b7db9ea8" id="281" addr="b7db9ea8" />
483
- <attribute name="sym_overname" value="__SWIG_0" id="282" addr="b7dbaf38" />
484
- </attributelist >
485
-
486
- </cdecl >
487
- </class >
488
- <cdecl id="283" addr="b7dba268" >
489
- <attributelist id="284" addr="b7dba268" >
490
- <attribute name="sym_name" value="strlen" id="285" addr="b7dbaf38" />
491
- <attribute name="name" value="strlen" id="286" addr="b7dbaf38" />
492
- <attribute name="decl" value="f(p.q(const).char)." id="287" addr="b7dbaf38" />
493
- <parmlist id="288" addr="b7dba218" >
494
- <parm id="289">
495
- <attributelist id="290" addr="b7dba218" >
496
- <attribute name="name" value="s" id="291" addr="b7dbaf38" />
497
- <attribute name="type" value="p.q(const).char" id="292" addr="b7dbaf38" />
498
- <attribute name="compactdefargs" value="1" id="293" addr="b7dbaf38" />
499
- </attributelist >
500
- </parm >
501
- </parmlist >
502
- <attribute name="kind" value="function" id="294" addr="b7dbaf38" />
503
- <attribute name="type" value="size_t" id="295" addr="b7dbaf38" />
504
- <attribute name="sym_symtab" value="b7db13d8" id="296" addr="b7db13d8" />
505
- <attribute name="sym_overname" value="__SWIG_0" id="297" addr="b7dbaf38" />
506
- </attributelist >
507
-
508
- </cdecl >
509
- <cdecl id="298" addr="b7dba468" >
510
- <attributelist id="299" addr="b7dba468" >
511
- <attribute name="sym_name" value="strcat" id="300" addr="b7dbaf38" />
512
- <attribute name="name" value="strcat" id="301" addr="b7dbaf38" />
513
- <attribute name="decl" value="f(p.char,p.q(const).char).p." id="302" addr="b7dbaf38" />
514
- <parmlist id="303" addr="b7dba388" >
515
- <parm id="304">
516
- <attributelist id="305" addr="b7dba388" >
517
- <attribute name="name" value="to" id="306" addr="b7dbaf38" />
518
- <attribute name="type" value="p.char" id="307" addr="b7dbaf38" />
519
- <attribute name="compactdefargs" value="1" id="308" addr="b7dbaf38" />
520
- </attributelist >
521
- </parm >
522
- <parm id="309">
523
- <attributelist id="310" addr="b7dba428" >
524
- <attribute name="name" value="from" id="311" addr="b7dbaf38" />
525
- <attribute name="type" value="p.q(const).char" id="312" addr="b7dbaf38" />
526
- </attributelist >
527
- </parm >
528
- </parmlist >
529
- <attribute name="kind" value="function" id="313" addr="b7dbaf38" />
530
- <attribute name="type" value="char" id="314" addr="b7dbaf38" />
531
- <attribute name="sym_symtab" value="b7db13d8" id="315" addr="b7db13d8" />
532
- <attribute name="sym_overname" value="__SWIG_0" id="316" addr="b7dbaf38" />
533
- </attributelist >
534
-
535
- </cdecl >
536
- <cdecl id="317" addr="b7dba668" >
537
- <attributelist id="318" addr="b7dba668" >
538
- <attribute name="sym_name" value="strcmp" id="319" addr="b7dbaf38" />
539
- <attribute name="name" value="strcmp" id="320" addr="b7dbaf38" />
540
- <attribute name="decl" value="f(p.q(const).char,p.q(const).char)." id="321" addr="b7dbaf38" />
541
- <parmlist id="322" addr="b7dba578" >
542
- <parm id="323">
543
- <attributelist id="324" addr="b7dba578" >
544
- <attribute name="name" value="s1" id="325" addr="b7dbaf38" />
545
- <attribute name="type" value="p.q(const).char" id="326" addr="b7dbaf38" />
546
- <attribute name="compactdefargs" value="1" id="327" addr="b7dbaf38" />
547
- </attributelist >
548
- </parm >
549
- <parm id="328">
550
- <attributelist id="329" addr="b7dba618" >
551
- <attribute name="name" value="s2" id="330" addr="b7dbaf38" />
552
- <attribute name="type" value="p.q(const).char" id="331" addr="b7dbaf38" />
553
- </attributelist >
554
- </parm >
555
- </parmlist >
556
- <attribute name="kind" value="function" id="332" addr="b7dbaf38" />
557
- <attribute name="type" value="int" id="333" addr="b7dbaf38" />
558
- <attribute name="sym_symtab" value="b7db13d8" id="334" addr="b7db13d8" />
559
- <attribute name="sym_overname" value="__SWIG_0" id="335" addr="b7dbaf38" />
560
- </attributelist >
561
-
562
- </cdecl >
563
- <cdecl id="336" addr="b7dba868" >
564
- <attributelist id="337" addr="b7dba868" >
565
- <attribute name="sym_name" value="gettimeofday" id="338" addr="b7dbaf38" />
566
- <attribute name="name" value="gettimeofday" id="339" addr="b7dbaf38" />
567
- <attribute name="decl" value="f(p.struct timeval,p.struct timezone)." id="340" addr="b7dbaf38" />
568
- <parmlist id="341" addr="b7dba778" >
569
- <parm id="342">
570
- <attributelist id="343" addr="b7dba778" >
571
- <attribute name="name" value="tp" id="344" addr="b7dbaf38" />
572
- <attribute name="type" value="p.struct timeval" id="345" addr="b7dbaf38" />
573
- <attribute name="compactdefargs" value="1" id="346" addr="b7dbaf38" />
574
- </attributelist >
575
- </parm >
576
- <parm id="347">
577
- <attributelist id="348" addr="b7dba818" >
578
- <attribute name="name" value="tzp" id="349" addr="b7dbaf38" />
579
- <attribute name="type" value="p.struct timezone" id="350" addr="b7dbaf38" />
580
- </attributelist >
581
- </parm >
582
- </parmlist >
583
- <attribute name="kind" value="function" id="351" addr="b7dbaf38" />
584
- <attribute name="type" value="int" id="352" addr="b7dbaf38" />
585
- <attribute name="sym_symtab" value="b7db13d8" id="353" addr="b7db13d8" />
586
- <attribute name="sym_overname" value="__SWIG_0" id="354" addr="b7dbaf38" />
587
- </attributelist >
588
-
589
- </cdecl >
590
- <insert id="355" addr="b7dba8e8" >
591
- <attributelist id="356" addr="b7dba8e8" >
592
- <attribute name="code" value="&#10;end&#10;" id="357" addr="b7dbaf38" />
593
- </attributelist >
594
-
595
- </insert >
596
- </include >
597
- </top >