rsense-core 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +1 -0
- data/README.md +35 -0
- data/Rakefile +84 -0
- data/TypeAnnotation.tokens +41 -0
- data/build.xml +84 -0
- data/build_lib/antlr-3.2.jar +0 -0
- data/lib/jars/ant-1.7.0.jar +0 -0
- data/lib/jars/ant-launcher-1.7.0.jar +0 -0
- data/lib/jars/antlr-runtime-3.2.jar +0 -0
- data/lib/jars/bsf-2.3.0.jar +0 -0
- data/lib/rsense-core.rb +28 -0
- data/lib/rsense.jar +0 -0
- data/lib/rsense/core.rb +5 -0
- data/lib/rsense/core/version.rb +5 -0
- data/lib/rsense/parser.rb +6 -0
- data/lib/rsense/ruby.rb +19 -0
- data/lib/rsense/typing.rb +13 -0
- data/lib/rsense/typing/annotation.rb +20 -0
- data/lib/rsense/typing/runtime.rb +23 -0
- data/lib/rsense/typing/vertex.rb +15 -0
- data/lib/rsense/util.rb +9 -0
- data/rsense-core.gemspec +30 -0
- data/src/org/cx4a/rsense/CodeAssist.java +744 -0
- data/src/org/cx4a/rsense/CodeAssistError.java +31 -0
- data/src/org/cx4a/rsense/CodeAssistResult.java +42 -0
- data/src/org/cx4a/rsense/CodeCompletionResult.java +65 -0
- data/src/org/cx4a/rsense/FindDefinitionResult.java +24 -0
- data/src/org/cx4a/rsense/LoadResult.java +19 -0
- data/src/org/cx4a/rsense/Main.java +916 -0
- data/src/org/cx4a/rsense/Options.java +353 -0
- data/src/org/cx4a/rsense/Project.java +103 -0
- data/src/org/cx4a/rsense/TypeInferenceResult.java +25 -0
- data/src/org/cx4a/rsense/WhereResult.java +19 -0
- data/src/org/cx4a/rsense/parser/TypeAnnotation.g +221 -0
- data/src/org/cx4a/rsense/parser/TypeAnnotationLexer.java +1759 -0
- data/src/org/cx4a/rsense/parser/TypeAnnotationParser.java +2025 -0
- data/src/org/cx4a/rsense/ruby/Block.java +10 -0
- data/src/org/cx4a/rsense/ruby/Context.java +75 -0
- data/src/org/cx4a/rsense/ruby/DynamicMethod.java +10 -0
- data/src/org/cx4a/rsense/ruby/DynamicScope.java +51 -0
- data/src/org/cx4a/rsense/ruby/Frame.java +95 -0
- data/src/org/cx4a/rsense/ruby/IRubyObject.java +17 -0
- data/src/org/cx4a/rsense/ruby/LocalScope.java +43 -0
- data/src/org/cx4a/rsense/ruby/MetaClass.java +50 -0
- data/src/org/cx4a/rsense/ruby/Ruby.java +242 -0
- data/src/org/cx4a/rsense/ruby/RubyClass.java +146 -0
- data/src/org/cx4a/rsense/ruby/RubyModule.java +255 -0
- data/src/org/cx4a/rsense/ruby/RubyObject.java +94 -0
- data/src/org/cx4a/rsense/ruby/Scope.java +7 -0
- data/src/org/cx4a/rsense/ruby/SpecialObject.java +15 -0
- data/src/org/cx4a/rsense/ruby/Visibility.java +17 -0
- data/src/org/cx4a/rsense/typing/Graph.java +1690 -0
- data/src/org/cx4a/rsense/typing/Propagation.java +73 -0
- data/src/org/cx4a/rsense/typing/Template.java +84 -0
- data/src/org/cx4a/rsense/typing/TemplateAttribute.java +158 -0
- data/src/org/cx4a/rsense/typing/TypeSet.java +48 -0
- data/src/org/cx4a/rsense/typing/annotation/ClassType.java +57 -0
- data/src/org/cx4a/rsense/typing/annotation/MethodType.java +79 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeAnnotation.java +4 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeAny.java +7 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeApplication.java +37 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeConstraint.java +29 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeExpression.java +11 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeIdentity.java +59 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeOptional.java +22 -0
- data/src/org/cx4a/rsense/typing/annotation/TypePragma.java +22 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeSplat.java +22 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeTuple.java +35 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeUnion.java +23 -0
- data/src/org/cx4a/rsense/typing/annotation/TypeVariable.java +44 -0
- data/src/org/cx4a/rsense/typing/runtime/AliasMethod.java +94 -0
- data/src/org/cx4a/rsense/typing/runtime/AnnotationHelper.java +69 -0
- data/src/org/cx4a/rsense/typing/runtime/AnnotationResolver.java +523 -0
- data/src/org/cx4a/rsense/typing/runtime/Array.java +84 -0
- data/src/org/cx4a/rsense/typing/runtime/ClassTag.java +27 -0
- data/src/org/cx4a/rsense/typing/runtime/DefaultMethod.java +115 -0
- data/src/org/cx4a/rsense/typing/runtime/Hash.java +131 -0
- data/src/org/cx4a/rsense/typing/runtime/LoopTag.java +21 -0
- data/src/org/cx4a/rsense/typing/runtime/Method.java +32 -0
- data/src/org/cx4a/rsense/typing/runtime/MonomorphicObject.java +77 -0
- data/src/org/cx4a/rsense/typing/runtime/ObjectAllocator.java +40 -0
- data/src/org/cx4a/rsense/typing/runtime/PolymorphicObject.java +90 -0
- data/src/org/cx4a/rsense/typing/runtime/Proc.java +100 -0
- data/src/org/cx4a/rsense/typing/runtime/RuntimeHelper.java +1339 -0
- data/src/org/cx4a/rsense/typing/runtime/SpecialMethod.java +119 -0
- data/src/org/cx4a/rsense/typing/runtime/TypeVarMap.java +112 -0
- data/src/org/cx4a/rsense/typing/runtime/VertexHolder.java +48 -0
- data/src/org/cx4a/rsense/typing/vertex/CallVertex.java +122 -0
- data/src/org/cx4a/rsense/typing/vertex/MultipleAsgnVertex.java +23 -0
- data/src/org/cx4a/rsense/typing/vertex/PassThroughVertex.java +20 -0
- data/src/org/cx4a/rsense/typing/vertex/SValueVertex.java +24 -0
- data/src/org/cx4a/rsense/typing/vertex/SplatVertex.java +24 -0
- data/src/org/cx4a/rsense/typing/vertex/ToAryVertex.java +24 -0
- data/src/org/cx4a/rsense/typing/vertex/TypeVarVertex.java +22 -0
- data/src/org/cx4a/rsense/typing/vertex/Vertex.java +221 -0
- data/src/org/cx4a/rsense/typing/vertex/YieldVertex.java +70 -0
- data/src/org/cx4a/rsense/util/HereDocReader.java +48 -0
- data/src/org/cx4a/rsense/util/Logger.java +111 -0
- data/src/org/cx4a/rsense/util/NodeUtil.java +198 -0
- data/src/org/cx4a/rsense/util/SourceLocation.java +70 -0
- data/src/org/cx4a/rsense/util/StringUtil.java +63 -0
- data/src/resources/org/cx4a/rsense/rsense.properties +1 -0
- data/stubs/1.8/_builtin.rb +3006 -0
- data/stubs/1.8/bigdecimal.rb +131 -0
- data/stubs/1.8/cgi.rb +257 -0
- data/stubs/1.8/date.rb +147 -0
- data/stubs/1.8/optparse.rb +113 -0
- data/stubs/1.8/rational.rb +47 -0
- data/stubs/1.8/set.rb +94 -0
- data/stubs/1.8/socket.rb +461 -0
- data/stubs/1.8/stringio.rb +129 -0
- data/test/data/a file.rb +1 -0
- data/test/data/benchmark.rb +12 -0
- data/test/data/crlf.rb +5 -0
- data/test/data/test.rb +19 -0
- data/test/script/all.rsense +2 -0
- data/test/script/array_dynamic.rsense +25 -0
- data/test/script/block_nested.rsense +7 -0
- data/test/script/builtin.rsense +785 -0
- data/test/script/class_method_partial_update.rsense +52 -0
- data/test/script/class_partial_update.rsense +17 -0
- data/test/script/find-definition.rsense +72 -0
- data/test/script/method_arg_onearg.rsense +6 -0
- data/test/script/method_arg_optional.rsense +7 -0
- data/test/script/method_partial_update.rsense +14 -0
- data/test/script/method_yield_arrayarg.rsense +8 -0
- data/test/script/method_yield_arrayarg_expand.rsense +8 -0
- data/test/script/method_yield_arrayarg_splat.rsense +17 -0
- data/test/script/misc.rsense +2 -0
- data/test/script/proc_higher_order.rsense +22 -0
- data/test/script/regression.rsense +95 -0
- data/test/script/stdlib.rsense +66 -0
- data/test/script/where.rsense +41 -0
- 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
|
data/stubs/1.8/socket.rb
ADDED
@@ -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
|