rsense-core 0.5.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.
Files changed (137) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +1 -0
  5. data/README.md +35 -0
  6. data/Rakefile +84 -0
  7. data/TypeAnnotation.tokens +41 -0
  8. data/build.xml +84 -0
  9. data/build_lib/antlr-3.2.jar +0 -0
  10. data/lib/jars/ant-1.7.0.jar +0 -0
  11. data/lib/jars/ant-launcher-1.7.0.jar +0 -0
  12. data/lib/jars/antlr-runtime-3.2.jar +0 -0
  13. data/lib/jars/bsf-2.3.0.jar +0 -0
  14. data/lib/rsense-core.rb +28 -0
  15. data/lib/rsense.jar +0 -0
  16. data/lib/rsense/core.rb +5 -0
  17. data/lib/rsense/core/version.rb +5 -0
  18. data/lib/rsense/parser.rb +6 -0
  19. data/lib/rsense/ruby.rb +19 -0
  20. data/lib/rsense/typing.rb +13 -0
  21. data/lib/rsense/typing/annotation.rb +20 -0
  22. data/lib/rsense/typing/runtime.rb +23 -0
  23. data/lib/rsense/typing/vertex.rb +15 -0
  24. data/lib/rsense/util.rb +9 -0
  25. data/rsense-core.gemspec +30 -0
  26. data/src/org/cx4a/rsense/CodeAssist.java +744 -0
  27. data/src/org/cx4a/rsense/CodeAssistError.java +31 -0
  28. data/src/org/cx4a/rsense/CodeAssistResult.java +42 -0
  29. data/src/org/cx4a/rsense/CodeCompletionResult.java +65 -0
  30. data/src/org/cx4a/rsense/FindDefinitionResult.java +24 -0
  31. data/src/org/cx4a/rsense/LoadResult.java +19 -0
  32. data/src/org/cx4a/rsense/Main.java +916 -0
  33. data/src/org/cx4a/rsense/Options.java +353 -0
  34. data/src/org/cx4a/rsense/Project.java +103 -0
  35. data/src/org/cx4a/rsense/TypeInferenceResult.java +25 -0
  36. data/src/org/cx4a/rsense/WhereResult.java +19 -0
  37. data/src/org/cx4a/rsense/parser/TypeAnnotation.g +221 -0
  38. data/src/org/cx4a/rsense/parser/TypeAnnotationLexer.java +1759 -0
  39. data/src/org/cx4a/rsense/parser/TypeAnnotationParser.java +2025 -0
  40. data/src/org/cx4a/rsense/ruby/Block.java +10 -0
  41. data/src/org/cx4a/rsense/ruby/Context.java +75 -0
  42. data/src/org/cx4a/rsense/ruby/DynamicMethod.java +10 -0
  43. data/src/org/cx4a/rsense/ruby/DynamicScope.java +51 -0
  44. data/src/org/cx4a/rsense/ruby/Frame.java +95 -0
  45. data/src/org/cx4a/rsense/ruby/IRubyObject.java +17 -0
  46. data/src/org/cx4a/rsense/ruby/LocalScope.java +43 -0
  47. data/src/org/cx4a/rsense/ruby/MetaClass.java +50 -0
  48. data/src/org/cx4a/rsense/ruby/Ruby.java +242 -0
  49. data/src/org/cx4a/rsense/ruby/RubyClass.java +146 -0
  50. data/src/org/cx4a/rsense/ruby/RubyModule.java +255 -0
  51. data/src/org/cx4a/rsense/ruby/RubyObject.java +94 -0
  52. data/src/org/cx4a/rsense/ruby/Scope.java +7 -0
  53. data/src/org/cx4a/rsense/ruby/SpecialObject.java +15 -0
  54. data/src/org/cx4a/rsense/ruby/Visibility.java +17 -0
  55. data/src/org/cx4a/rsense/typing/Graph.java +1690 -0
  56. data/src/org/cx4a/rsense/typing/Propagation.java +73 -0
  57. data/src/org/cx4a/rsense/typing/Template.java +84 -0
  58. data/src/org/cx4a/rsense/typing/TemplateAttribute.java +158 -0
  59. data/src/org/cx4a/rsense/typing/TypeSet.java +48 -0
  60. data/src/org/cx4a/rsense/typing/annotation/ClassType.java +57 -0
  61. data/src/org/cx4a/rsense/typing/annotation/MethodType.java +79 -0
  62. data/src/org/cx4a/rsense/typing/annotation/TypeAnnotation.java +4 -0
  63. data/src/org/cx4a/rsense/typing/annotation/TypeAny.java +7 -0
  64. data/src/org/cx4a/rsense/typing/annotation/TypeApplication.java +37 -0
  65. data/src/org/cx4a/rsense/typing/annotation/TypeConstraint.java +29 -0
  66. data/src/org/cx4a/rsense/typing/annotation/TypeExpression.java +11 -0
  67. data/src/org/cx4a/rsense/typing/annotation/TypeIdentity.java +59 -0
  68. data/src/org/cx4a/rsense/typing/annotation/TypeOptional.java +22 -0
  69. data/src/org/cx4a/rsense/typing/annotation/TypePragma.java +22 -0
  70. data/src/org/cx4a/rsense/typing/annotation/TypeSplat.java +22 -0
  71. data/src/org/cx4a/rsense/typing/annotation/TypeTuple.java +35 -0
  72. data/src/org/cx4a/rsense/typing/annotation/TypeUnion.java +23 -0
  73. data/src/org/cx4a/rsense/typing/annotation/TypeVariable.java +44 -0
  74. data/src/org/cx4a/rsense/typing/runtime/AliasMethod.java +94 -0
  75. data/src/org/cx4a/rsense/typing/runtime/AnnotationHelper.java +69 -0
  76. data/src/org/cx4a/rsense/typing/runtime/AnnotationResolver.java +523 -0
  77. data/src/org/cx4a/rsense/typing/runtime/Array.java +84 -0
  78. data/src/org/cx4a/rsense/typing/runtime/ClassTag.java +27 -0
  79. data/src/org/cx4a/rsense/typing/runtime/DefaultMethod.java +115 -0
  80. data/src/org/cx4a/rsense/typing/runtime/Hash.java +131 -0
  81. data/src/org/cx4a/rsense/typing/runtime/LoopTag.java +21 -0
  82. data/src/org/cx4a/rsense/typing/runtime/Method.java +32 -0
  83. data/src/org/cx4a/rsense/typing/runtime/MonomorphicObject.java +77 -0
  84. data/src/org/cx4a/rsense/typing/runtime/ObjectAllocator.java +40 -0
  85. data/src/org/cx4a/rsense/typing/runtime/PolymorphicObject.java +90 -0
  86. data/src/org/cx4a/rsense/typing/runtime/Proc.java +100 -0
  87. data/src/org/cx4a/rsense/typing/runtime/RuntimeHelper.java +1339 -0
  88. data/src/org/cx4a/rsense/typing/runtime/SpecialMethod.java +119 -0
  89. data/src/org/cx4a/rsense/typing/runtime/TypeVarMap.java +112 -0
  90. data/src/org/cx4a/rsense/typing/runtime/VertexHolder.java +48 -0
  91. data/src/org/cx4a/rsense/typing/vertex/CallVertex.java +122 -0
  92. data/src/org/cx4a/rsense/typing/vertex/MultipleAsgnVertex.java +23 -0
  93. data/src/org/cx4a/rsense/typing/vertex/PassThroughVertex.java +20 -0
  94. data/src/org/cx4a/rsense/typing/vertex/SValueVertex.java +24 -0
  95. data/src/org/cx4a/rsense/typing/vertex/SplatVertex.java +24 -0
  96. data/src/org/cx4a/rsense/typing/vertex/ToAryVertex.java +24 -0
  97. data/src/org/cx4a/rsense/typing/vertex/TypeVarVertex.java +22 -0
  98. data/src/org/cx4a/rsense/typing/vertex/Vertex.java +221 -0
  99. data/src/org/cx4a/rsense/typing/vertex/YieldVertex.java +70 -0
  100. data/src/org/cx4a/rsense/util/HereDocReader.java +48 -0
  101. data/src/org/cx4a/rsense/util/Logger.java +111 -0
  102. data/src/org/cx4a/rsense/util/NodeUtil.java +198 -0
  103. data/src/org/cx4a/rsense/util/SourceLocation.java +70 -0
  104. data/src/org/cx4a/rsense/util/StringUtil.java +63 -0
  105. data/src/resources/org/cx4a/rsense/rsense.properties +1 -0
  106. data/stubs/1.8/_builtin.rb +3006 -0
  107. data/stubs/1.8/bigdecimal.rb +131 -0
  108. data/stubs/1.8/cgi.rb +257 -0
  109. data/stubs/1.8/date.rb +147 -0
  110. data/stubs/1.8/optparse.rb +113 -0
  111. data/stubs/1.8/rational.rb +47 -0
  112. data/stubs/1.8/set.rb +94 -0
  113. data/stubs/1.8/socket.rb +461 -0
  114. data/stubs/1.8/stringio.rb +129 -0
  115. data/test/data/a file.rb +1 -0
  116. data/test/data/benchmark.rb +12 -0
  117. data/test/data/crlf.rb +5 -0
  118. data/test/data/test.rb +19 -0
  119. data/test/script/all.rsense +2 -0
  120. data/test/script/array_dynamic.rsense +25 -0
  121. data/test/script/block_nested.rsense +7 -0
  122. data/test/script/builtin.rsense +785 -0
  123. data/test/script/class_method_partial_update.rsense +52 -0
  124. data/test/script/class_partial_update.rsense +17 -0
  125. data/test/script/find-definition.rsense +72 -0
  126. data/test/script/method_arg_onearg.rsense +6 -0
  127. data/test/script/method_arg_optional.rsense +7 -0
  128. data/test/script/method_partial_update.rsense +14 -0
  129. data/test/script/method_yield_arrayarg.rsense +8 -0
  130. data/test/script/method_yield_arrayarg_expand.rsense +8 -0
  131. data/test/script/method_yield_arrayarg_splat.rsense +17 -0
  132. data/test/script/misc.rsense +2 -0
  133. data/test/script/proc_higher_order.rsense +22 -0
  134. data/test/script/regression.rsense +95 -0
  135. data/test/script/stdlib.rsense +66 -0
  136. data/test/script/where.rsense +41 -0
  137. metadata +315 -0
@@ -0,0 +1,113 @@
1
+ class OptionParser
2
+ # TODO {match : (String) -> ?}
3
+ ##% self.accept(Class, ?Object) {String -> ?} -> ?
4
+ def self.accept(klass, pat = /.*/) yield '' end
5
+ ##% self.getopts(Array<String>, *String) -> Hash<String, Boolean or String>
6
+ ##% self.getopts(*String) -> Hash<String, Boolean or String>
7
+ def self.getopts(*arg) {'' => BOOLEAN || ''} end
8
+ ##% self.new(?String, ?Integer, ?String) {OptionParser -> ?} -> OptionParser
9
+ ##% self.new(?String, ?Integer, ?String) -> OptionParser
10
+ def self.new(banner = nil, width = 32, indent = ' ' * 4) super() end
11
+ ##% self.reject(Class) -> ? end
12
+ def self.reject(klass) end
13
+
14
+ # TODO {match : (String) -> ?}
15
+ ##% accept(Class, ?Object) {String -> ?} -> ?
16
+ def accept(klass, pat = /.*/) yield '' end
17
+ ##% banner() -> String
18
+ def banner() '' end
19
+ ##% banner=(String) -> String
20
+ def banner=(heading) heading end
21
+ ##% default_argv() -> Array<String>
22
+ def default_argv() [''] end
23
+ ##% default_argv=(Array<String>) -> Array<String>
24
+ def default_argv=(argv) argv end
25
+ ##% environment(String) -> Array<String>
26
+ def environment(env) [''] end
27
+ ##% getopts(Array<String>, *String) -> Hash<String, Boolean or String>
28
+ ##% getopts(*String) -> Hash<String, Boolean or String>
29
+ def getopts(*arg) {'' => BOOLEAN || ''} end
30
+ ##% help() -> String
31
+ def help() '' end
32
+ ##% to_s() -> String
33
+ def to_s() '' end
34
+ ##% load(?String) -> Boolean
35
+ def load(filename = nil) BOOLEAN end
36
+ ##% on(String, ?String) {Boolean or String -> ?} -> self
37
+ ##% on(String, String, ?String) {Boolean or String -> ?} -> self
38
+ ##% on(String, ?Regexp, ?String) {Boolean or String -> ?} -> self
39
+ ##% on(String, String, ?Regexp, ?String) {Boolean or String -> ?} -> self
40
+ # TODO pass an instance of the class
41
+ ##% on(String, ?Class, ?String) {Boolean or String -> ?} -> self
42
+ ##% on(String, String, ?Class, ?String) {Boolean or String -> ?} -> self
43
+ def on(*arg) yield(BOOLEAN || ''); self end
44
+ ##% on_head(*a) {Boolean or String -> ?} -> self
45
+ def on_head(*arg, &block) yield(BOOLEAN || ''); self end
46
+ ##% on_tail(*a) {Boolean or String -> ?} -> self
47
+ def on_tail(*arg, &block) yield(BOOLEAN || ''); self end
48
+ ##% order(Array<String>) -> Array<String>
49
+ ##% order(Array<String>) {String -> ?} -> Array<String>
50
+ ##% order(*String) -> Array<String>
51
+ ##% order(*String) {String -> ?} -> Array<String>
52
+ def order(*arg) yield ''; [''] end
53
+ ##% order!(?Array<String>) -> Array<String>
54
+ ##% order!(?Array<String>) {String -> ?} -> Array<String>
55
+ def order!(argv = self.default_argv) yield ''; [''] end
56
+ ##% parse(Array<String>) -> Array<String>
57
+ ##% parse(*String) -> Array<String>
58
+ def parse(*arg) [''] end
59
+ ##% parse!(?Array<String>) -> Array<String>
60
+ def parse!(argv = self.default_argv) [''] end
61
+ ##% permute(Array<String>) -> Array<String>
62
+ ##% permute(*String) -> Array<String>
63
+ def permute(*arg) [''] end
64
+ ##% permute!(?Array<String>) -> Array<String>
65
+ def permute!(argv = self.default_argv) [''] end
66
+ ##% program_name() -> String
67
+ def program_name() '' end
68
+ ##% program_name=(String) -> String
69
+ def program_name=(name) name end
70
+ ##% reject(Class) -> ? end
71
+ def reject(klass) end
72
+ ##% release() -> String
73
+ def release() '' end
74
+ ##% release=(String) -> String
75
+ def release=(release) release end
76
+ ##% separator(String) -> ?
77
+ def separator(sep) end
78
+ # TODO {<< : Object -> ?}
79
+ ##% summarize(?Object, ?Integer, ?Integer, ?String) -> ?
80
+ ##% summarize(?Object, ?Integer, ?Integer, ?String) {String -> ?} -> ?
81
+ def summarize(to = [], width = self.summary_width, max = width - 1, indent = self.summary_ident) yield '' end
82
+ ##% summary_indent() -> String
83
+ def summary_indent() '' end
84
+ ##% summary_indent=(String) -> String
85
+ def summary_indent=(indent) indent end
86
+ ##% summary_width() -> Integer
87
+ def summary_width() '' end
88
+ ##% summary_width=(Integer) -> Integer
89
+ def summary_width=(width) width end
90
+ ##% to_a() -> Array<String>
91
+ def to_a() [''] end
92
+ ##% ver() -> String
93
+ def ver() '' end
94
+ ##% version() -> String
95
+ def version() '' end
96
+ ##% version=(String) -> String
97
+ def version=(version) version end
98
+
99
+ # TODO OptionParser::Arguable
100
+
101
+ class ParseError < Exception; end
102
+ class AmbiguousArgument < Exception; end
103
+ class AmbiguousOption < Exception; end
104
+ class InvalidArgument < Exception; end
105
+ class InvalidOption < Exception; end
106
+ class MissingArgument < Exception; end
107
+ class NeedlessArgument < Exception; end
108
+
109
+ # TODO optparse/date
110
+ # TODO optparse/shellwords
111
+ # TODO optparse/time
112
+ # TODO optparse/uri
113
+ end
@@ -0,0 +1,47 @@
1
+ class Rational < Numeric
2
+ ##% self.new!(Fixnum, Fixnum) -> Rational
3
+ def self.new!(num, den = 1) Rational.new end
4
+ ##% self.reduce(Fixnum, Fixnum) -> Rational
5
+ def self.reduce(num, den = 1) Rational.new end
6
+
7
+ ##% %(Float) -> Float
8
+ ##% %(Numeric) -> Rational
9
+ def %(other) 0.0 || Rational.new end
10
+ ##% "*"(Float) -> Float
11
+ ##% "*"(Numeric) -> Rational
12
+ def *(other) 0.0 || Rational.new end
13
+ ##% **(Integer) -> Rational
14
+ ##% **(Numeric) -> Float
15
+ def **(other) 0.0 || Rational.new end
16
+ ##% +(Float) -> Float
17
+ ##% +(Numeric) -> Rational
18
+ def +(other) 0.0 || Rational.new end
19
+ ##% -(Float) -> Float
20
+ ##% -(Numeric) -> Rational
21
+ def -(other) 0.0 || Rational.new end
22
+ ##% /(Float) -> Float
23
+ ##% /(Numeric) -> Rational
24
+ def /(other) 0.0 || Rational.new end
25
+ ##% "<=>"(a) -> Integer
26
+ def <=>(other) 0 end
27
+ ##% abs() -> Rational
28
+ def abs() self end
29
+ ##% denominator() -> Fixnum
30
+ def denominator() 0 end
31
+ ##% divmod(Float) -> (Fixnum, Float)
32
+ ##% divmod(Numeric) -> (Fixnum, Rational)
33
+ def divmod(other) [0, 0.0] || [0, Rational.new] end
34
+ ##% numerator() -> Fixnum
35
+ def numerator() 0 end
36
+ ##% to_f() -> Float
37
+ def to_f() 0.0 end
38
+ ##% to_i() -> Integer
39
+ def to_i() 0 end
40
+ ##% to_s() -> String
41
+ def to_s() '' end
42
+ end
43
+
44
+ module Kernel
45
+ ##% Rational(Fixnum, Fixnum) -> Rational
46
+ def Rational(num, den = 1) Rational.new end
47
+ end
data/stubs/1.8/set.rb ADDED
@@ -0,0 +1,94 @@
1
+ ##% Set<t>
2
+ class Set
3
+ include Enumerable
4
+
5
+ ##% self.[]<v, u | v <= Array<u> >(*v) -> Set<u>
6
+ def self.[](*ary) Set.new end
7
+ ##% self.new<u>(?Enumerable<u>) -> Set<u>
8
+ ##% self.new<u, u'>(?Enumerable<u>) {u -> u'} -> Set<u'>
9
+ def self.new(enum = nil) super() end
10
+
11
+ # FIXME not union
12
+ ##% intersection<u>(Enumerable<u>) -> Set<t or u>
13
+ def intersection(enum) Set.new end
14
+ alias :& :intersection
15
+ ##% union<u>(Enumerable<u>) -> Set<t or u>
16
+ def union(enum) Set.new end
17
+ alias :+ :union
18
+ alias :| :union
19
+ # FIXME
20
+ ##% difference<u>(Enumerable<u>) -> Set<t>
21
+ def difference(enum) Set.new end
22
+ alias :- :difference
23
+ ##% add<v | v <= t>(v) -> self
24
+ def add(o) self end
25
+ alias :<< :add
26
+ alias :add? :add
27
+ ##% ==(a) -> Boolean
28
+ def ==(set) BOOLEAN end
29
+ # FIXME
30
+ ##% ^<u>(Enumerable<u>) -> Set<t or u>
31
+ def ^(enum) Set.new end
32
+ ##% classify() {t -> a} -> Hash<a, Set<t> >
33
+ def classify() {(yield _elt) => self} end
34
+ ##% clear() -> self
35
+ def clear() self end
36
+ ##% clone() -> Set<t>
37
+ def clone() self end
38
+ alias :dup :clone
39
+ ##% collect!<v | v <= t>() {t -> v} -> self
40
+ def collect!() yield _elt; self end
41
+ alias :map! :collect!
42
+ ##% delete(a) -> self
43
+ def delete(o) self end
44
+ alias :delete? :delete
45
+ ##% delete_if() {t -> ?} -> self
46
+ def delete_if() yield _elt; self end
47
+ alias :reject! :delete_if
48
+ ##% divide() {t -> ?} -> Set<Set<t> >
49
+ ##% divide() {(t, t) -> ?} -> Set<Set<t> >
50
+ def divide() yield _elt; Set[self] end
51
+ ##% each() {t -> ?} -> self
52
+ def each() yield _elt; self end
53
+ ##% empty?() -> Boolean
54
+ def empty?() BOOLEAN end
55
+ ##% flatten() -> Set<t>
56
+ def flatten() self end
57
+ ##% flatten!() -> self
58
+ def flatten!() self end
59
+ ##% include?(a) -> Boolean
60
+ def include?(o) BOOLEAN end
61
+ alias :member? :include?
62
+ ##% inspect() -> String
63
+ def inspect() '' end
64
+ ##% size() -> Integer
65
+ def size() 0 end
66
+ alias :length :size
67
+ ##% merge<u | u <= t>(Enumerable<u>) -> self
68
+ def merge(enum) self end
69
+ ##% subset?(Set) -> Boolean
70
+ def subset?(set) Boolean end
71
+ alias :proper_subset? :subset?
72
+ ##% superset?(Set) -> Boolean
73
+ def superset?(set) BOOLEAN end
74
+ alias :proper_superset? :superset?
75
+ ##% replace<u | u <= t>(Enumerable<u>) -> self
76
+ def replace(enum) self end
77
+ ##% subtract(Enumerable) -> self
78
+ def subtract(enum) self end
79
+ ##% to_a() -> Array<t>
80
+ def to_a() [_elt] end
81
+
82
+ ##% _elt() -> t
83
+ def _elt() end
84
+ private :_elt
85
+ end
86
+
87
+ ##% SortedSet<t>
88
+ class SortedSet < Set
89
+ ##% self.[]<v, u | v <= Array<u> >(*v) -> SortedSet<u>
90
+ def self.[](*ary) SortedSet.new end
91
+ ##% self.new<u>(?Enumerable<u>) -> SortedSet<u>
92
+ ##% self.new<u, u'>(?Enumerable<u>) {u -> u'} -> SortedSet<u'>
93
+ def self.new(enum = nil) super() end
94
+ end
@@ -0,0 +1,461 @@
1
+ class BasicSocket < IO
2
+ ##% self.do_not_reverse_lookup() -> Boolean
3
+ def self.do_not_reverse_lookup() BOOLEAN end
4
+ ##% self.do_not_reverse_lookup=(Boolean) -> Boolean
5
+ def self.do_not_reverse_lookup(bool) bool end
6
+ ##% self.for_fd(Integer) -> BasicSocket
7
+ def self.for_fd(fd) BasicSocket.new(0) end
8
+
9
+ ##% getpeername() -> String
10
+ def getpeername() '' end
11
+ ##% getsockname() -> String
12
+ def getsockname() '' end
13
+ ##% getsockopt(Integer, Integer) -> String
14
+ def getsockopt(level, optname) '' end
15
+ ##% recv(Integer, ?Integer) -> String
16
+ def recv(maxlen, flags = 0) '' end
17
+ ##% recv_nonblock(Integer, ?Integer) -> String
18
+ def recv_nonblock(maxlen, flags = 0) '' end
19
+ ##% send(String, Integer, ?String) -> Fixnum
20
+ def send(mesg, flags, dest_sockaddr = nil) 0 end
21
+ ##% setsockopt(Integer, Integer, String) -> Fixnum
22
+ def getsockopt(level, optname, optval) 0 end
23
+ ##% shutdown(?Integer) -> Fixnum
24
+ def shutdown(how = Socket::SHUT_RDWR) 0 end
25
+ end
26
+
27
+ class IPSocket < BasicSocket
28
+ ##% self.getaddress(String) -> String
29
+ def self.getaddress(host) '' end
30
+
31
+ ##% addr() -> (String, Integer, String, String)
32
+ def addr() ['', 0, '', ''] end
33
+ ##% peeraddr() -> (String, Integer, String, String)
34
+ def peeraddr() ['', 0, '', ''] end
35
+ ##% recvfrom(Integer, ?Integer) -> (String, (String, Integer, String, String))
36
+ def recvfrom(maxlen, flags = 0) ['', ['', 0, '', '']] end
37
+ end
38
+
39
+ class TCPSocket < IPSocket
40
+ ##% self.gethostbyname(String) -> (String, Array<String>, Integer, String)
41
+ def self.gethostbyname(host) ['', [''], 0, ''] end
42
+ ##% self.open(String, Integer or String, ?String, ?(Integer or String)) -> TCPSocket
43
+ ##% self.open(String, Integer or String, ?String, ?(Integer or String)) {TCPSocket -> a} -> a
44
+ def self.open(host, service, local_host = nil, local_service = nil)
45
+ s = TCPSocket.new(host, service, local_host, local_service)
46
+ (yield s) || s
47
+ end
48
+ ##% self.new(String, Integer or String, ?String, ?(Integer or String)) -> TCPSocket
49
+ ##% self.new(String, Integer or String, ?String, ?(Integer or String)) {TCPSocket -> a} -> a
50
+ def self.new(host, service, local_host = nil, local_service = nil)
51
+ s = super()
52
+ (yield s) || s
53
+ end
54
+ end
55
+
56
+ class TCPServer < TCPSocket
57
+ ##% self.new(Integer or String) -> TCPServer
58
+ ##% self.new(Integer or String) {TCPServer -> a} -> a
59
+ ##% self.new(String, Integer or String) -> TCPServer
60
+ ##% self.new(String, Integer or String) {TCPServer -> a} -> a
61
+ def self.new(*)
62
+ s = super()
63
+ (yield s) || s
64
+ end
65
+ ##% self.open(Integer or String) -> TCPServer
66
+ ##% self.open(Integer or String) {TCPServer -> a} -> a
67
+ ##% self.open(String, Integer or String) -> TCPServer
68
+ ##% self.open(String, Integer or String) {TCPServer -> a} -> a
69
+ def self.open(*)
70
+ s = TCPServer.new(0)
71
+ (yield s) || s
72
+ end
73
+
74
+ ##% accept() -> TCPSocket
75
+ def accept() TCPSocket.new('', 0) end
76
+ ##% accept_nonblock() -> TCPSocket
77
+ def accept_nonblock() TCPSocket.new('', 0) end
78
+ ##% listen(Integer) -> Fixnum
79
+ def listen(backlog) 0 end
80
+ ##% sysaccept() -> Fixnum
81
+ def sysaccept() 0 end
82
+ end
83
+
84
+ class SOCKSSocket < TCPSocket
85
+ ##% self.open(String, Integer or String) -> SOCKSSocket
86
+ ##% self.open(String, Integer or String) {SOCKSSocket -> a} -> a
87
+ def self.open(host, service)
88
+ s = SOCKSSocket.new(host, service)
89
+ (yield s) || s
90
+ end
91
+ ##% self.new(String, Integer or String) -> SOCKSSocket
92
+ ##% self.new(String, Integer or String) {SOCKSSocket -> a} -> a
93
+ def self.new(host, service)
94
+ s = super()
95
+ (yield s) || s
96
+ end
97
+
98
+ ##% close() -> nil
99
+ def close() end
100
+ end
101
+
102
+ class UDPSocket < IPSocket
103
+ ##% self.open(?Integer) -> UDPSocket
104
+ ##% self.open(?Integer) {UDPSocket -> a} -> a
105
+ def self.open(socktype = 0)
106
+ s = UDPSocket.new
107
+ (yield s) || s
108
+ end
109
+ ##% self.new(?Integer) -> UDPSocket
110
+ ##% self.new(?Integer) {UDPSocket -> a} -> a
111
+ def self.new(socktype = 0)
112
+ s = super()
113
+ (yield s) || s
114
+ end
115
+
116
+ ##% bind(String, Integer or String) -> Fixnum
117
+ def bind(host, port) 0 end
118
+ ##% connect(String, Integer or String) -> Fixnum
119
+ def connect(host, port) 0 end
120
+ ##% recvfrom_nonblock(Integer, ?Integer) -> (String, (String, Integer, String, String))
121
+ def recvfrom_nonblock(maxlen, flags = 0) ['', ['', 0, '', '']] end
122
+ ##% send(String, Integer, ?String) -> Fixnum
123
+ ##% send(String, Integer, Integer or String, Integer or String) -> Fixnum
124
+ def send(mesg, flags, *) 0 end
125
+ end
126
+
127
+ class UNIXSocket < BasicSocket
128
+ ##% self.open(String) -> UNIXSocket
129
+ ##% self.open(String) {UNIXSocket -> a} -> a
130
+ def self.open(path)
131
+ s = UNIXSocket.new(path)
132
+ (yield s) || s
133
+ end
134
+ ##% self.new(String) -> UNIXSocket
135
+ ##% self.new(String) {UNIXSocket -> a} -> a
136
+ def self.new(path)
137
+ s = super()
138
+ (yield s) || s
139
+ end
140
+ ##% self.pair(?Integer, ?Integer) -> (UNIXSocket, UNIXSocket)
141
+ def self.pair(type = 0, protocol = 0) [UNIXSocket.new(''), UNIXSocket.new('')] end
142
+ ##% self.socketpair(?Integer, ?Integer) -> (UNIXSocket, UNIXSocket)
143
+ def self.socketpair(type = 0, protocol = 0) [UNIXSocket.new(''), UNIXSocket.new('')] end
144
+
145
+ ##% addr() -> (String, String)
146
+ def addr() ['', ''] end
147
+ ##% path() -> String
148
+ def path() '' end
149
+ ##% peeraddr() -> (String, String)
150
+ def peeraddr() ['', ''] end
151
+ ##% recv_io(?Class, ?Integer) -> Fixnum | IO
152
+ def recv_io(klass = nil, mode = 0) 0 || IO.new(0) end
153
+ ##% recvfrom(Integer, ?Integer) -> (String, String)
154
+ def recvfrom(maxlen, flags = 0) ['', ''] end
155
+ ##% send_io(IO) -> Fixnum
156
+ def send_io(io) 0 end
157
+ end
158
+
159
+ class UNIXServer < UNIXSocket
160
+ ##% self.open(String) -> UNIXServer
161
+ ##% self.open(String) {UNIXServer -> a} -> a
162
+ def self.open(path)
163
+ s = UNIXServer.new(path)
164
+ (yield s) || s
165
+ end
166
+ ##% self.new(String) -> UNIXServer
167
+ ##% self.new(String) {UNIXServer -> a} -> a
168
+ def self.new(path)
169
+ s = super()
170
+ (yield s) || s
171
+ end
172
+
173
+ ##% accept() -> UNIXSocket
174
+ def accept() UNIXSocket.new('') end
175
+ ##% accept_nonblock() -> UNIXSocket
176
+ def accept_nonblock() UNIXSocket.new('') end
177
+ ##% listen(Integer) -> Fixnum
178
+ def listen(backlog) 0 end
179
+ ##% sysaccept() -> Fixnum
180
+ def sysaccept() 0 end
181
+ end
182
+
183
+ class Socket < BasicSocket
184
+ module Constants
185
+ AF_APPLETALK = 0
186
+ AF_ATM = 0
187
+ AF_AX25 = 0
188
+ AF_CCITT = 0
189
+ AF_CHAOS = 0
190
+ AF_CNT = 0
191
+ AF_COIP = 0
192
+ AF_DATAKIT = 0
193
+ AF_DEC = 0
194
+ AF_DLI = 0
195
+ AF_E164 = 0
196
+ AF_ECMA = 0
197
+ AF_HYLINK = 0
198
+ AF_IMPLINK = 0
199
+ AF_INET = 0
200
+ AF_INET6 = 0
201
+ AF_IPX = 0
202
+ AF_ISDN = 0
203
+ AF_ISO = 0
204
+ AF_LAT = 0
205
+ AF_LINK = 0
206
+ AF_LOCAL = 0
207
+ AF_MAX = 0
208
+ AF_NATM = 0
209
+ AF_NDRV = 0
210
+ AF_NETBIOS = 0
211
+ AF_NETGRAPH = 0
212
+ AF_NS = 0
213
+ AF_OSI = 0
214
+ AF_PPP = 0
215
+ AF_PUP = 0
216
+ AF_ROUTE = 0
217
+ AF_SIP = 0
218
+ AF_SNA = 0
219
+ AF_SYSTEM = 0
220
+ AF_UNIX = 0
221
+ AF_UNSPEC = 0
222
+
223
+ AI_ADDRCONFIG = 0
224
+ AI_ALL = 0
225
+ AI_CANONNAME = 0
226
+ AI_DEFAULT = 0
227
+ AI_MASK = 0
228
+ AI_NUMERICHOST = 0
229
+ AI_PASSIVE = 0
230
+ AI_V4MAPPED = 0
231
+ AI_V4MAPPED_CFG = 0
232
+
233
+ EAI_ADDRFAMILY = 0
234
+ EAI_AGAIN = 0
235
+ EAI_BADFLAGS = 0
236
+ EAI_BADHINTS = 0
237
+ EAI_FAIL = 0
238
+ EAI_FAMILY = 0
239
+ EAI_MAX = 0
240
+ EAI_MEMORY = 0
241
+ EAI_NODATA = 0
242
+ EAI_NONAME = 0
243
+ EAI_PROTOCOL = 0
244
+ EAI_SERVICE = 0
245
+ EAI_SOCKTYPE = 0
246
+ EAI_SYSTEM = 0
247
+
248
+ INADDR_ALLHOSTS_GROUP = 0
249
+ INADDR_ANY = 0
250
+ INADDR_BROADCAST = 0
251
+ INADDR_LOOPBACK = 0
252
+ INADDR_MAX_LOCAL_GROUP = 0
253
+ INADDR_NONE = 0
254
+ INADDR_UNSPEC_GROUP = 0
255
+
256
+ IPPORT_RESERVED = 0
257
+ IPPORT_USERRESERVED = 0
258
+
259
+ IPPROTO_BIP = 0
260
+ IPPROTO_EGP = 0
261
+ IPPROTO_EON = 0
262
+ IPPROTO_GGP = 0
263
+ IPPROTO_HELLO = 0
264
+ IPPROTO_ICMP = 0
265
+ IPPROTO_IDP = 0
266
+ IPPROTO_IGMP = 0
267
+ IPPROTO_IP = 0
268
+ IPPROTO_MAX = 0
269
+ IPPROTO_ND = 0
270
+ IPPROTO_PUP = 0
271
+ IPPROTO_RAW = 0
272
+ IPPROTO_TCP = 0
273
+ IPPROTO_TP = 0
274
+ IPPROTO_UDP = 0
275
+ IPPROTO_XTP = 0
276
+
277
+ MSG_COMPAT = 0
278
+ MSG_CTRUNC = 0
279
+ MSG_DONTROUTE = 0
280
+ MSG_DONTWAIT = 0
281
+ MSG_EOF = 0
282
+ MSG_EOR = 0
283
+ MSG_FLUSH = 0
284
+ MSG_HAVEMORE = 0
285
+ MSG_HOLD = 0
286
+ MSG_OOB = 0
287
+ MSG_PEEK = 0
288
+ MSG_RCVMORE = 0
289
+ MSG_SEND = 0
290
+ MSG_TRUNC = 0
291
+ MSG_WAITALL = 0
292
+
293
+ NI_DGRAM = 0
294
+ NI_MAXHOST = 0
295
+ NI_MAXSERV = 0
296
+ NI_NAMEREQD = 0
297
+ NI_NOFQDN = 0
298
+ NI_NUMERICHOST = 0
299
+ NI_NUMERICSERV = 0
300
+
301
+ PF_APPLETALK = 0
302
+ PF_ATM = 0
303
+ PF_AX25 = 0
304
+ PF_CCITT = 0
305
+ PF_CHAOS = 0
306
+ PF_CNT = 0
307
+ PF_COIP = 0
308
+ PF_DATAKIT = 0
309
+ PF_DEC = 0
310
+ PF_DLI = 0
311
+ PF_ECMA = 0
312
+ PF_HYLINK = 0
313
+ PF_IMPLINK = 0
314
+ PF_INET = 0
315
+ PF_INET6 = 0
316
+ PF_IPX = 0
317
+ PF_ISDN = 0
318
+ PF_ISO = 0
319
+ PF_KEY = 0
320
+ PF_LAT = 0
321
+ PF_LINK = 0
322
+ PF_LOCAL = 0
323
+ PF_MAX = 0
324
+ PF_NATM = 0
325
+ PF_NDRV = 0
326
+ PF_NETBIOS = 0
327
+ PF_NETGRAPH = 0
328
+ PF_NS = 0
329
+ PF_OSI = 0
330
+ PF_PIP = 0
331
+ PF_PPP = 0
332
+ PF_PUP = 0
333
+ PF_ROUTE = 0
334
+ PF_RTIP = 0
335
+ PF_SIP = 0
336
+ PF_SNA = 0
337
+ PF_SYSTEM = 0
338
+ PF_UNIX = 0
339
+ PF_UNSPEC = 0
340
+ PF_XTP = 0
341
+
342
+ SHUT_RD = 0
343
+ SHUT_RDWR = 0
344
+ SHUT_WR = 0
345
+
346
+ SOCK_DGRAM = 0
347
+ SOCK_PACKET = 0
348
+ SOCK_RAW = 0
349
+ SOCK_RDM = 0
350
+ SOCK_SEQPACKET = 0
351
+ SOCK_STREAM = 0
352
+
353
+ SOL_ATALK = 0
354
+ SOL_AX25 = 0
355
+ SOL_IP = 0
356
+ SOL_IPX = 0
357
+ SOL_SOCKET = 0
358
+ SOL_TCP = 0
359
+ SOL_UDP = 0
360
+
361
+ SOPRI_BACKGROUND = 0
362
+ SOPRI_INTERACTIVE = 0
363
+ SOPRI_NORMAL = 0
364
+
365
+ SO_ACCEPTCONN = 0
366
+ SO_ACCEPTFILTER = 0
367
+ SO_ATTACH_FILTER = 0
368
+ SO_BINDTODEVICE = 0
369
+ SO_BROADCAST = 0
370
+ SO_DEBUG = 0
371
+ SO_DETACH_FILTER = 0
372
+ SO_DONTROUTE = 0
373
+ SO_DONTTRUNC = 0
374
+ SO_ERROR = 0
375
+ SO_KEEPALIVE = 0
376
+ SO_LINGER = 0
377
+ SO_NKE = 0
378
+ SO_NOSIGPIPE = 0
379
+ SO_NO_CHECK = 0
380
+ SO_NREAD = 0
381
+ SO_OOBINLINE = 0
382
+ SO_PASSCRED = 0
383
+ SO_PEERCRED = 0
384
+ SO_PEERNAME = 0
385
+ SO_PRIORITY = 0
386
+ SO_RCVBUF = 0
387
+ SO_RCVLOWAT = 0
388
+ SO_RCVTIMEO = 0
389
+ SO_REUSEADDR = 0
390
+ SO_REUSEPORT = 0
391
+ SO_SECURITY_AUTHENTICATION = 0
392
+ SO_SECURITY_ENCRYPTION_NETWORK = 0
393
+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0
394
+ SO_SNDBUF = 0
395
+ SO_SNDLOWAT = 0
396
+ SO_SNDTIMEO = 0
397
+ SO_TIMESTAMP = 0
398
+ SO_TYPE = 0
399
+ SO_USELOOPBACK = 0
400
+ SO_WANTMORE = 0
401
+ SO_WANTOOBFLAG = 0
402
+
403
+ TCP_MAXSEG = 0
404
+ TCP_NODELAY = 0
405
+ end
406
+
407
+ include Constants
408
+
409
+ ##% self.getaddrinfo(String or Integer, String or Integer, ?String, ?Integer, ?Integer, ?Integer) -> (String, Integer, String, String, Integer, Integer, Integer)
410
+ def self.getaddrinfo(nodename, servname, family = nil, socktype = nil, protocol = nil, flags = nil) ['', 0, '', '', 0, 0, 0] end
411
+ ##% self.gethostbyaddr(String, ?Integer) -> (String, Array<String>, Integer, String)
412
+ def self.gethostbyaddr(host, type = nil) ['', [''], 0, ''] end
413
+ ##% self.gethostbyname(String) -> (String, Array<String>, Integer, String)
414
+ def self.gethostbyname(name) ['', [''], 0, ''] end
415
+ ##% self.gethostname() -> String
416
+ def self.gethostname() '' end
417
+ ##% self.getnameinfo(String or Array, ?Integer) -> Array<String>
418
+ def self.getnameinfo(sa, flags = nil) [''] end
419
+ ##% self.getservbyname(String, ?Integer) -> Integer
420
+ def self.getservbyname(service, proto = 0) 0 end
421
+ ##% self.open(Integer or String, Integer or String, Integer) -> Socket
422
+ def self.open(domain, type, protocol) Socket.new(domain, type, protocol) end
423
+ ##% self.new(Integer or String, Integer or String, Integer) -> Socket
424
+ def self.new(domain, type, protocol) super() end
425
+ ##% self.sockaddr_in(Fixnum or String, String) -> String
426
+ def self.sockaddr_in(port, host) '' end
427
+ ##% self.pack_sockaddr_in(Fixnum or String, String) -> String
428
+ def self.pack_sockaddr_in(port, host) '' end
429
+ ##% self.sockaddr_un(String) -> String
430
+ def self.sockaddr_un(path) '' end
431
+ ##% self.pack_sockaddr_un(String) -> String
432
+ def self.pack_sockaddr_un(path) '' end
433
+ ##% self.pair(Integer or String, Integer or String, Integer) -> Socket
434
+ def self.pair(domain, type, protocol) Socket.new(domain, type, protocol) end
435
+ ##% self.socketpair(Integer or String, Integer or String, Integer) -> Socket
436
+ def self.socketpair(domain, type, protocol) Socket.new(domain, type, protocol) end
437
+ ##% self.unpack_sockaddr_in(String) -> (Fixnum, String)
438
+ def self.unpack_sockaddr_in(sockaddr) [0, ''] end
439
+ ##% self.unpack_sockaddr_un(String) -> String
440
+ def self.unpack_sockaddr_un(sockaddr) String end
441
+
442
+ # FIXME
443
+ ##% accept() -> (Socket, String)
444
+ def accept() [Socket.new(0, 0, 0), ''] end
445
+ ##% accept_nonblock() -> (Socket, String)
446
+ def accept_nonblock() [Socket.new(0, 0, 0), ''] end
447
+ ##% bind(String) -> Fixnum
448
+ def bind(my_sockaddr) 0 end
449
+ ##% connect(String) -> Fixnum
450
+ def connect(server_sockaddr) 0 end
451
+ ##% connect_nonblock(String) -> Fixnum
452
+ def connect_nonblock(server_sockaddr) 0 end
453
+ ##% listen(Integer) -> Fixnum
454
+ def listen(backlog) 0 end
455
+ ##% recvfrom(Integer, ?Integer) -> (String, String)
456
+ def recvfrom(maxlen, flags = 0) ['', ''] end
457
+ ##% recvfrom_nonblock(Integer, ?Integer) -> (String, String)
458
+ def recvfrom_nonblock(maxlen, flags = 0) ['', ''] end
459
+ ##% sysaccept() -> (Fixnum, String)
460
+ def sysaccept() [0, ''] end
461
+ end