Skip to content

Instantly share code, notes, and snippets.

@methodmissing
Created April 30, 2009 21:48
Show Gist options
  • Select an option

  • Save methodmissing/104715 to your computer and use it in GitHub Desktop.

Select an option

Save methodmissing/104715 to your computer and use it in GitHub Desktop.
macbook-pros-computer:mri_instrumentation lourens$ ruby bin/parse /Users/lourens/projects/matzruby/compar.c
TranslationUnit
entities:
- Declaration
type: CustomType
name: "VALUE"
declarators:
- Declarator
name: "rb_mComparable"
- Declaration
storage: static
type: CustomType
name: "ID"
declarators:
- Declarator
name: "cmp"
- FunctionDef (no_prototype)
type: Function
type: Int
params:
- Parameter
type: CustomType
name: "VALUE"
name: "val"
- Parameter
type: CustomType
name: "VALUE"
name: "a"
- Parameter
type: CustomType
name: "VALUE"
name: "b"
name: "rb_cmpint"
def: Block
stmts:
- If
cond: Call
expr: Variable
name: "NIL_P"
args:
- Variable
name: "val"
then: Block
stmts:
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_cmperr"
args:
- Variable
name: "a"
- Variable
name: "b"
- If
cond: Call
expr: Variable
name: "FIXNUM_P"
args:
- Variable
name: "val"
then: Return
expr: Call
expr: Variable
name: "FIX2INT"
args:
- Variable
name: "val"
- If
cond: Equal
expr1: Call
expr: Variable
name: "TYPE"
args:
- Variable
name: "val"
expr2: Variable
name: "T_BIGNUM"
then: Block
stmts:
- If
cond: Arrow
expr: Call
expr: Variable
name: "RBIGNUM"
args:
- Variable
name: "val"
member: Member
name: "sign"
then: Return
expr: IntLiteral
val: 1
- Return
expr: Negative
expr: IntLiteral
val: 1
- If
cond: Call
expr: Variable
name: "RTEST"
args:
- Call
expr: Variable
name: "rb_funcall"
args:
- Variable
name: "val"
- CharLiteral
val: ">"
- IntLiteral
val: 1
- Call
expr: Variable
name: "INT2FIX"
args:
- IntLiteral
val: 0
then: Return
expr: IntLiteral
val: 1
- If
cond: Call
expr: Variable
name: "RTEST"
args:
- Call
expr: Variable
name: "rb_funcall"
args:
- Variable
name: "val"
- CharLiteral
val: "<"
- IntLiteral
val: 1
- Call
expr: Variable
name: "INT2FIX"
args:
- IntLiteral
val: 0
then: Return
expr: Negative
expr: IntLiteral
val: 1
- Return
expr: IntLiteral
val: 0
- FunctionDef (no_prototype)
type: Function
type: Void
params:
- Parameter
type: CustomType
name: "VALUE"
name: "x"
- Parameter
type: CustomType
name: "VALUE"
name: "y"
name: "rb_cmperr"
def: Block
stmts:
- Declaration
type: Char (const)
declarators:
- Declarator
indirect_type: Pointer
name: "classname"
- If
cond: Call
expr: Variable
name: "SPECIAL_CONST_P"
args:
- Variable
name: "y"
then: Block
stmts:
- ExpressionStatement
expr: Assign
lval: Variable
name: "y"
rval: Call
expr: Variable
name: "rb_inspect"
args:
- Variable
name: "y"
- ExpressionStatement
expr: Assign
lval: Variable
name: "classname"
rval: Call
expr: Variable
name: "StringValuePtr"
args:
- Variable
name: "y"
else: Block
stmts:
- ExpressionStatement
expr: Assign
lval: Variable
name: "classname"
rval: Call
expr: Variable
name: "rb_obj_classname"
args:
- Variable
name: "y"
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_raise"
args:
- Variable
name: "rb_eArgError"
- StringLiteral
val: "comparison of %s with %s failed"
- Call
expr: Variable
name: "rb_obj_classname"
args:
- Variable
name: "x"
- Variable
name: "classname"
- FunctionDef (no_prototype)
storage: static
type: Function
type: CustomType
name: "VALUE"
params:
- Parameter
type: Pointer
type: CustomType
name: "VALUE"
name: "a"
name: "cmp_eq"
def: Block
stmts:
- Declaration
type: CustomType
name: "VALUE"
declarators:
- Declarator
name: "c"
init: Call
expr: Variable
name: "rb_funcall"
args:
- Index
expr: Variable
name: "a"
index: IntLiteral
val: 0
- Variable
name: "cmp"
- IntLiteral
val: 1
- Index
expr: Variable
name: "a"
index: IntLiteral
val: 1
- If
cond: Call
expr: Variable
name: "NIL_P"
args:
- Variable
name: "c"
then: Return
expr: Variable
name: "Qnil"
- If
cond: Equal
expr1: Call
expr: Variable
name: "rb_cmpint"
args:
- Variable
name: "c"
- Index
expr: Variable
name: "a"
index: IntLiteral
val: 0
- Index
expr: Variable
name: "a"
index: IntLiteral
val: 1
expr2: IntLiteral
val: 0
then: Return
expr: Variable
name: "Qtrue"
- Return
expr: Variable
name: "Qfalse"
- FunctionDef
storage: static
type: Function
type: CustomType
name: "VALUE"
name: "cmp_failed"
def: Block
stmts:
- Return
expr: Variable
name: "Qnil"
- FunctionDef (no_prototype)
storage: static
type: Function
type: CustomType
name: "VALUE"
params:
- Parameter
type: CustomType
name: "VALUE"
name: "x"
- Parameter
type: CustomType
name: "VALUE"
name: "y"
name: "cmp_equal"
def: Block
stmts:
- Declaration
type: CustomType
name: "VALUE"
declarators:
- Declarator
indirect_type: Array
length: IntLiteral
val: 2
name: "a"
- If
cond: Equal
expr1: Variable
name: "x"
expr2: Variable
name: "y"
then: Return
expr: Variable
name: "Qtrue"
- ExpressionStatement
expr: Assign
lval: Index
expr: Variable
name: "a"
index: IntLiteral
val: 0
rval: Variable
name: "x"
- ExpressionStatement
expr: Assign
lval: Index
expr: Variable
name: "a"
index: IntLiteral
val: 1
rval: Variable
name: "y"
- Return
expr: Call
expr: Variable
name: "rb_rescue"
args:
- Variable
name: "cmp_eq"
- Cast
type: CustomType
name: "VALUE"
expr: Variable
name: "a"
- Variable
name: "cmp_failed"
- IntLiteral
val: 0
- FunctionDef (no_prototype)
storage: static
type: Function
type: CustomType
name: "VALUE"
params:
- Parameter
type: CustomType
name: "VALUE"
name: "x"
- Parameter
type: CustomType
name: "VALUE"
name: "y"
name: "cmp_gt"
def: Block
stmts:
- Declaration
type: CustomType
name: "VALUE"
declarators:
- Declarator
name: "c"
init: Call
expr: Variable
name: "rb_funcall"
args:
- Variable
name: "x"
- Variable
name: "cmp"
- IntLiteral
val: 1
- Variable
name: "y"
- If
cond: Call
expr: Variable
name: "NIL_P"
args:
- Variable
name: "c"
then: Return
expr: Call
expr: Variable
name: "cmperr"
- If
cond: More
expr1: Call
expr: Variable
name: "rb_cmpint"
args:
- Variable
name: "c"
- Variable
name: "x"
- Variable
name: "y"
expr2: IntLiteral
val: 0
then: Return
expr: Variable
name: "Qtrue"
- Return
expr: Variable
name: "Qfalse"
- FunctionDef (no_prototype)
storage: static
type: Function
type: CustomType
name: "VALUE"
params:
- Parameter
type: CustomType
name: "VALUE"
name: "x"
- Parameter
type: CustomType
name: "VALUE"
name: "y"
name: "cmp_ge"
def: Block
stmts:
- Declaration
type: CustomType
name: "VALUE"
declarators:
- Declarator
name: "c"
init: Call
expr: Variable
name: "rb_funcall"
args:
- Variable
name: "x"
- Variable
name: "cmp"
- IntLiteral
val: 1
- Variable
name: "y"
- If
cond: Call
expr: Variable
name: "NIL_P"
args:
- Variable
name: "c"
then: Return
expr: Call
expr: Variable
name: "cmperr"
- If
cond: MoreOrEqual
expr1: Call
expr: Variable
name: "rb_cmpint"
args:
- Variable
name: "c"
- Variable
name: "x"
- Variable
name: "y"
expr2: IntLiteral
val: 0
then: Return
expr: Variable
name: "Qtrue"
- Return
expr: Variable
name: "Qfalse"
- FunctionDef (no_prototype)
storage: static
type: Function
type: CustomType
name: "VALUE"
params:
- Parameter
type: CustomType
name: "VALUE"
name: "x"
- Parameter
type: CustomType
name: "VALUE"
name: "y"
name: "cmp_lt"
def: Block
stmts:
- Declaration
type: CustomType
name: "VALUE"
declarators:
- Declarator
name: "c"
init: Call
expr: Variable
name: "rb_funcall"
args:
- Variable
name: "x"
- Variable
name: "cmp"
- IntLiteral
val: 1
- Variable
name: "y"
- If
cond: Call
expr: Variable
name: "NIL_P"
args:
- Variable
name: "c"
then: Return
expr: Call
expr: Variable
name: "cmperr"
- If
cond: Less
expr1: Call
expr: Variable
name: "rb_cmpint"
args:
- Variable
name: "c"
- Variable
name: "x"
- Variable
name: "y"
expr2: IntLiteral
val: 0
then: Return
expr: Variable
name: "Qtrue"
- Return
expr: Variable
name: "Qfalse"
- FunctionDef (no_prototype)
storage: static
type: Function
type: CustomType
name: "VALUE"
params:
- Parameter
type: CustomType
name: "VALUE"
name: "x"
- Parameter
type: CustomType
name: "VALUE"
name: "y"
name: "cmp_le"
def: Block
stmts:
- Declaration
type: CustomType
name: "VALUE"
declarators:
- Declarator
name: "c"
init: Call
expr: Variable
name: "rb_funcall"
args:
- Variable
name: "x"
- Variable
name: "cmp"
- IntLiteral
val: 1
- Variable
name: "y"
- If
cond: Call
expr: Variable
name: "NIL_P"
args:
- Variable
name: "c"
then: Return
expr: Call
expr: Variable
name: "cmperr"
- If
cond: LessOrEqual
expr1: Call
expr: Variable
name: "rb_cmpint"
args:
- Variable
name: "c"
- Variable
name: "x"
- Variable
name: "y"
expr2: IntLiteral
val: 0
then: Return
expr: Variable
name: "Qtrue"
- Return
expr: Variable
name: "Qfalse"
- FunctionDef (no_prototype)
storage: static
type: Function
type: CustomType
name: "VALUE"
params:
- Parameter
type: CustomType
name: "VALUE"
name: "x"
- Parameter
type: CustomType
name: "VALUE"
name: "min"
- Parameter
type: CustomType
name: "VALUE"
name: "max"
name: "cmp_between"
def: Block
stmts:
- If
cond: Call
expr: Variable
name: "RTEST"
args:
- Call
expr: Variable
name: "cmp_lt"
args:
- Variable
name: "x"
- Variable
name: "min"
then: Return
expr: Variable
name: "Qfalse"
- If
cond: Call
expr: Variable
name: "RTEST"
args:
- Call
expr: Variable
name: "cmp_gt"
args:
- Variable
name: "x"
- Variable
name: "max"
then: Return
expr: Variable
name: "Qfalse"
- Return
expr: Variable
name: "Qtrue"
- FunctionDef
type: Function
type: Void
name: "Init_Comparable"
def: Block
stmts:
- ExpressionStatement
expr: Assign
lval: Variable
name: "rb_mComparable"
rval: Call
expr: Variable
name: "rb_define_module"
args:
- StringLiteral
val: "Comparable"
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_define_method"
args:
- Variable
name: "rb_mComparable"
- StringLiteral
val: "=="
- Variable
name: "cmp_equal"
- IntLiteral
val: 1
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_define_method"
args:
- Variable
name: "rb_mComparable"
- StringLiteral
val: ">"
- Variable
name: "cmp_gt"
- IntLiteral
val: 1
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_define_method"
args:
- Variable
name: "rb_mComparable"
- StringLiteral
val: ">="
- Variable
name: "cmp_ge"
- IntLiteral
val: 1
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_define_method"
args:
- Variable
name: "rb_mComparable"
- StringLiteral
val: "<"
- Variable
name: "cmp_lt"
- IntLiteral
val: 1
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_define_method"
args:
- Variable
name: "rb_mComparable"
- StringLiteral
val: "<="
- Variable
name: "cmp_le"
- IntLiteral
val: 1
- ExpressionStatement
expr: Call
expr: Variable
name: "rb_define_method"
args:
- Variable
name: "rb_mComparable"
- StringLiteral
val: "between?"
- Variable
name: "cmp_between"
- IntLiteral
val: 2
- ExpressionStatement
expr: Assign
lval: Variable
name: "cmp"
rval: Call
expr: Variable
name: "rb_intern"
args:
- StringLiteral
val: "<=>"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment