/[eiffelstudio]/trunk/Src/library/Eiffel2Java/java_object_table.e
ViewVC logotype

Diff of /trunk/Src/library/Eiffel2Java/java_object_table.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 33620 by manus, Wed Nov 14 02:45:08 2001 UTC revision 33621 by manus, Tue Aug 13 15:43:39 2002 UTC
# Line 1  Line 1 
1  indexing  indexing
   
2          description: "This class provides a mapping between Java and Eiffel objects"          description: "This class provides a mapping between Java and Eiffel objects"
3            date: "$Date$"
4            revision: "$Revision$"
5    
6  class JAVA_OBJECT_TABLE  class JAVA_OBJECT_TABLE
7    
8  creation  create
           
9          make          make
10    
11  feature  feature {NONE} -- Initialization
12    
13            make is
14                            -- create a table for Eiffel proxies of Java object
15                    do
16                            create table.make (511)
17                    end
18    
19    feature -- Access
20    
21          item (jobject: POINTER): JAVA_OBJECT is          item (jobject: POINTER): JAVA_OBJECT is
22                          -- find a Eiffel proxy for an Java object                          -- find a Eiffel proxy for an Java object
23                  require                  require
24                          jobject_not_void: jobject /= default_pointer                          jobject_not_void: jobject /= default_pointer
25                  do                  do
26                          Result := table.item (jobject.hash_code)                          Result := table.item (jobject)
27                  end                  end
28    
29    feature -- Element change
30    
31          put (object: JAVA_OBJECT) is          put (object: JAVA_OBJECT) is
32                          -- Add a new object to the table                          -- Add a new object to the table
33                  require                  require
34                          jobject_not_void: object /= Void                          jobject_not_void: object /= Void
35                            jobject_alive: object.exists
36                  local                  local
37                          it: JAVA_OBJECT                          it: JAVA_OBJECT
38                          ex: EXCEPTIONS                          ex: EXCEPTIONS
39                  do                  do
40                          it := table.item (object.java_object_id.hash_code)                          it := table.item (object.java_object_id)
41                          if it = Void then                          if it = Void then
42                                  table.put (object, object.java_object_id.hash_code)                                  table.put (object, object.java_object_id)
43                          elseif (it /= object) then                          elseif (it /= object) then
44                                  !!ex                                  create ex
45                                  ex.raise ("Attempted to insert duplicate Eiffel object")                                  ex.raise ("Attempted to insert duplicate Eiffel object")
46                          end                          end
47                  ensure                  ensure
48                          inserted: table.has (object.java_object_id.hash_code)                          inserted: table.has (object.java_object_id)
49                  end                  end
50    
51  feature {NONE}  feature {NONE}
52    
53          make is          table: HASH_TABLE [JAVA_OBJECT, POINTER]
                         -- create a table for Eiffel proxies of Java object  
                 do  
                         !!table.make (511)  
                 end  
   
         table: HASH_TABLE [JAVA_OBJECT, INTEGER]  
54                          -- table of objects                          -- table of objects
55    
56  end  invariant
57            table_not_void: table /= Void
58    
59    end
60    
61  --|----------------------------------------------------------------  --|----------------------------------------------------------------
62  --| Eiffel2Java: library of reusable components for ISE Eiffel.  --| Eiffel2Java: library of reusable components for ISE Eiffel.

Legend:
Removed from v.33620  
changed lines
  Added in v.33621

  ViewVC Help
Powered by ViewVC 1.1.23