2008-10-19 08:12:53 -04:00
|
|
|
%# -*- c -*-
|
|
|
|
/* DO NOT EDIT THIS FILE DIRECTLY */
|
|
|
|
/**********************************************************************
|
|
|
|
|
2008-12-09 02:14:13 -05:00
|
|
|
id.h -
|
2008-10-19 08:12:53 -04:00
|
|
|
|
|
|
|
$Author$
|
|
|
|
created at: Sun Oct 19 21:12:51 2008
|
|
|
|
|
|
|
|
Copyright (C) 2007 Koichi Sasada
|
|
|
|
|
|
|
|
**********************************************************************/
|
|
|
|
<%
|
|
|
|
require 'optparse'
|
2012-08-17 04:35:12 -04:00
|
|
|
|
2012-08-31 01:31:20 -04:00
|
|
|
op_id_offset = 128
|
2012-03-13 21:35:06 -04:00
|
|
|
|
2012-12-21 02:38:07 -05:00
|
|
|
defs = File.join(File.dirname(File.dirname(erb.filename)), "defs/id.def")
|
2012-12-21 02:38:03 -05:00
|
|
|
ids = eval(File.read(defs), binding, defs)
|
|
|
|
types = ids.keys.grep(/^[A-Z]/)
|
2008-10-19 08:12:53 -04:00
|
|
|
%>
|
|
|
|
#ifndef RUBY_ID_H
|
|
|
|
#define RUBY_ID_H
|
|
|
|
|
2013-09-20 00:53:08 -04:00
|
|
|
enum ruby_id_types {
|
2014-03-26 00:57:47 -04:00
|
|
|
RUBY_ID_STATIC_SYM = 0x01,
|
2013-09-20 00:53:08 -04:00
|
|
|
RUBY_ID_LOCAL = 0x00,
|
2014-03-26 00:57:47 -04:00
|
|
|
RUBY_ID_INSTANCE = (0x01<<1),
|
|
|
|
RUBY_ID_GLOBAL = (0x03<<1),
|
|
|
|
RUBY_ID_ATTRSET = (0x04<<1),
|
|
|
|
RUBY_ID_CONST = (0x05<<1),
|
|
|
|
RUBY_ID_CLASS = (0x06<<1),
|
|
|
|
RUBY_ID_JUNK = (0x07<<1),
|
2013-09-20 00:53:08 -04:00
|
|
|
RUBY_ID_INTERNAL = RUBY_ID_JUNK,
|
2014-03-26 00:57:47 -04:00
|
|
|
RUBY_ID_SCOPE_SHIFT = 4,
|
|
|
|
RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
|
2013-09-20 00:53:08 -04:00
|
|
|
};
|
|
|
|
|
2014-03-26 00:57:47 -04:00
|
|
|
#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
|
2013-09-20 00:53:08 -04:00
|
|
|
#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
|
|
|
|
#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
|
|
|
|
#define ID_LOCAL RUBY_ID_LOCAL
|
|
|
|
#define ID_INSTANCE RUBY_ID_INSTANCE
|
|
|
|
#define ID_GLOBAL RUBY_ID_GLOBAL
|
|
|
|
#define ID_ATTRSET RUBY_ID_ATTRSET
|
|
|
|
#define ID_CONST RUBY_ID_CONST
|
|
|
|
#define ID_CLASS RUBY_ID_CLASS
|
|
|
|
#define ID_JUNK RUBY_ID_JUNK
|
|
|
|
#define ID_INTERNAL RUBY_ID_INTERNAL
|
2008-10-19 08:12:53 -04:00
|
|
|
|
|
|
|
#define symIFUNC ID2SYM(idIFUNC)
|
|
|
|
#define symCFUNC ID2SYM(idCFUNC)
|
|
|
|
|
2015-11-04 23:04:00 -05:00
|
|
|
% index = op_id_offset
|
|
|
|
% ids[:token_op].each do |_id, _op, token|
|
|
|
|
% next unless token
|
|
|
|
#define RUBY_TOKEN_<%=token%> <%=index%>
|
|
|
|
% index += 1
|
2012-08-31 01:31:20 -04:00
|
|
|
% end
|
|
|
|
#define RUBY_TOKEN(t) RUBY_TOKEN_##t
|
2008-12-24 15:05:12 -05:00
|
|
|
|
2008-10-19 08:12:53 -04:00
|
|
|
enum ruby_method_ids {
|
2015-11-04 23:04:00 -05:00
|
|
|
% ids[:token_op].uniq {|_, op| op}.each do |id, op, token|
|
|
|
|
id<%=id%> = <%=token ? "RUBY_TOKEN(#{token})" : "'#{op}'"%>,
|
|
|
|
% end
|
|
|
|
tPRESERVED_ID_BEGIN = <%=index-1%>,
|
2012-12-21 02:38:03 -05:00
|
|
|
% ids[:preserved].each do |token|
|
2012-08-17 04:35:12 -04:00
|
|
|
id<%=token%>,
|
|
|
|
% end
|
|
|
|
tPRESERVED_ID_END,
|
2012-12-21 02:38:03 -05:00
|
|
|
% ids.values_at(*types).flatten.each do |token|
|
2012-03-13 21:35:06 -04:00
|
|
|
t<%=token%>,
|
|
|
|
% end
|
2014-07-11 10:10:50 -04:00
|
|
|
tNEXT_ID,
|
2012-12-21 02:38:03 -05:00
|
|
|
% types.each do |type|
|
|
|
|
% types = ids[type] or next
|
|
|
|
% types.empty? and next
|
2014-03-26 00:57:47 -04:00
|
|
|
#define TOKEN2<%=type%>ID(n) id##n = ((t##n<<ID_SCOPE_SHIFT)|ID_<%=type%>|ID_STATIC_SYM)
|
2012-12-21 02:38:03 -05:00
|
|
|
% types.each do |token|
|
|
|
|
TOKEN2<%=type%>ID(<%=token%>),
|
|
|
|
% end
|
2012-03-13 21:35:06 -04:00
|
|
|
% end
|
2012-08-31 01:31:20 -04:00
|
|
|
tLAST_OP_ID = tPRESERVED_ID_END-1,
|
|
|
|
idLAST_OP_ID = tLAST_OP_ID >> ID_SCOPE_SHIFT
|
2008-12-24 15:53:06 -05:00
|
|
|
};
|
2008-12-24 15:05:12 -05:00
|
|
|
|
2008-10-19 08:12:53 -04:00
|
|
|
#endif /* RUBY_ID_H */
|