ffi-swig-generator 0.3.0 → 0.3.1

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.
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 >