Permalink
Browse files

Revert "reconcile Enum(s) and Library with MRI"

This reverts commit ee67ea8.
  • Loading branch information...
1 parent f6d1345 commit 43bd9a3103efce86ae089847a4148e6e20406bb9 @headius headius committed Feb 27, 2014
@@ -31,21 +31,12 @@
import java.util.IdentityHashMap;
import java.util.Map;
import org.jcodings.util.IntHash;
+import org.jruby.*;
import org.jruby.anno.JRubyClass;
import org.jruby.anno.JRubyMethod;
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyClass;
-import org.jruby.RubyFixnum;
-import org.jruby.RubyHash;
-import org.jruby.RubyInteger;
-import org.jruby.RubyModule;
-import org.jruby.RubyObject;
-import org.jruby.RubySymbol;
-import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.runtime.ObjectAllocator;
import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.Visibility;
+import org.jruby.runtime.builtin.IRubyObject;
/**
* Represents a C enum
@@ -84,13 +75,13 @@ private Enum(Ruby runtime, RubyClass klass) {
tag = runtime.getNil();
}
- @JRubyMethod(name = "initialize", visibility = Visibility.PRIVATE)
+ @JRubyMethod(name = "initialize")
public final IRubyObject initialize(ThreadContext context, IRubyObject values, IRubyObject tag) {
this.tag = tag;
return initialize(context, values);
}
- @JRubyMethod(name = "initialize", visibility = Visibility.PRIVATE)
+ @JRubyMethod(name = "initialize")
public final IRubyObject initialize(ThreadContext context, IRubyObject values) {
if (!(values instanceof RubyArray)) {
throw context.runtime.newTypeError(values, context.runtime.getArray());
@@ -1,119 +0,0 @@
-/***** BEGIN LICENSE BLOCK *****
- * Version: EPL 1.0/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Eclipse Public
- * License Version 1.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.eclipse.org/legal/epl-v10.html
- *
- * Software distributed under the License is distributed on an "AS
- * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * rights and limitations under the License.
- *
- * Copyright (C) 2008 JRuby project
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the EPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the EPL, the GPL or the LGPL.
- ***** END LICENSE BLOCK *****/
-
-package org.jruby.ext.ffi;
-
-import org.jruby.anno.JRubyClass;
-import org.jruby.anno.JRubyMethod;
-import org.jruby.ext.ffi.Enum;
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyClass;
-import org.jruby.RubyHash;
-import org.jruby.RubyModule;
-import org.jruby.RubyObject;
-import org.jruby.RubySymbol;
-import org.jruby.runtime.Block;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.runtime.ObjectAllocator;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.Visibility;
-
-import java.util.Iterator;
-
-/**
- * Represents a C enum
- */
-@JRubyClass(name="FFI::Enums", parent="Object")
-public final class Enums extends RubyObject {
- private final RubyArray allEnums;
- private final RubyHash taggedEnums;
- private final RubyHash symbolMap;
-
- public static RubyClass createEnumsClass(Ruby runtime, RubyModule ffiModule) {
- RubyClass enumsClass = ffiModule.defineClassUnder("Enums", runtime.getObject(),
- Allocator.INSTANCE);
- enumsClass.defineAnnotatedMethods(Enums.class);
- enumsClass.defineAnnotatedConstants(Enums.class);
- enumsClass.includeModule(ffiModule.getConstant("DataConverter"));
-
- return enumsClass;
- }
-
- private static final class Allocator implements ObjectAllocator {
- private static final ObjectAllocator INSTANCE = new Allocator();
-
- public final IRubyObject allocate(Ruby runtime, RubyClass klass) {
- return new Enums(runtime, klass);
- }
- }
-
- private Enums(Ruby runtime, RubyClass klass) {
- super(runtime, klass);
- allEnums = RubyArray.newArray(runtime);
- taggedEnums = RubyHash.newHash(runtime);
- symbolMap = RubyHash.newHash(runtime);
- }
-
- @JRubyMethod(name = "initialize", visibility = Visibility.PRIVATE)
- public final IRubyObject initialize(ThreadContext context) {
- return (IRubyObject) this;
- }
-
- @JRubyMethod(name = "<<")
- public IRubyObject append(final ThreadContext context, IRubyObject item){
- if(!(item instanceof Enum)){
- throw context.runtime.newTypeError(item, context.runtime.getFFI().ffiModule.getClass("Enum"));
- }
- allEnums.append(item);
- if (!(item == null || item == context.nil)){
- taggedEnums.fastASet(((Enum)item).tag(context), item);
- }
- symbolMap.merge_bang(context, ((Enum)item).symbol_map(context), Block.NULL_BLOCK);
- return item;
- }
-
- @JRubyMethod(name = "find")
- public IRubyObject find(final ThreadContext context, IRubyObject query){
- if (taggedEnums.has_key_p(query).isTrue()){
- return taggedEnums.fastARef(query);
- }
- for (int i = 0; i < allEnums.getLength(); i++){
- IRubyObject item = (IRubyObject)allEnums.entry(i);
- if (((RubyArray)item.callMethod(context, "symbols")).include_p(context, query).isTrue()){
- return item;
- }
- }
- return context.runtime.getNil();
- }
-
- @JRubyMethod(name = "__map_symbol")
- public IRubyObject mapSymbol(final ThreadContext context, IRubyObject symbol){
- return symbolMap.op_aref(context, symbol);
- }
-}
Oops, something went wrong.

0 comments on commit 43bd9a3

Please sign in to comment.