rsense-core 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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