Author:halw

Date:2008-09-25T01:53:30.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@42 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
halw
2008-09-25 01:53:30 +00:00
parent 24ad6cc4ac
commit c9b9c2adcd
19 changed files with 49 additions and 82 deletions

View File

@@ -3,5 +3,3 @@
[[Property:uuid|7a606387-2653-b122-b4ef-e283a389656e]]
The Invitation to Eiffel is a short set of pages that should provide you with the essence of the Eiffel way, without taking too much of your time. Enjoy this profoundly different way of thinking about developing software! When you are done, move on to the more detailed Eiffel tutorial.

View File

@@ -1,5 +1,4 @@
[[Property:title|EiffelCOM Content]]
[[Property:link_title|EiffelCOM Interface Content]]
[[Property:title|EiffelCOM Interface Content]]
[[Property:weight|-2]]
[[Property:uuid|a6543000-6009-970e-8a68-a6f3b18c1fc6]]
The EiffelCOM library includes the following clusters:
@@ -9,7 +8,7 @@ The EiffelCOM library includes the following clusters:
* A [[ref:libraries/com/reference/index|Support]] cluster provides access to helper classes.
{{seealso| '''See Also''' <br/>
[[EiffelCOM|The Component Object Model]] <br/>
[[About COM and Eiffel]] <br/>
[[EiffelCOM Wizard|EiffelCOM wizard]] }}

View File

@@ -4,17 +4,12 @@
Type: Library <br/>
Platform: Windows <br/>
==EiffelCOM Library==
See:
* [[EiffelCOM Introduction|Introduction]]
* [[EiffelCOM Content|Content]]
* [[ref:libraries/com/reference/index|Reference]]
The EiffelCOM library provides support classes for the code generated by the EiffelCOM wizard. It has wrappings for standard COM data types such as VARIANT, SAFEARRAY, CURRENCY, DECIMAL, IUnknown, IDispatch, etc.
{{seealso| '''See Also''' <br/>
[[EiffelCOM|The Component Object Model]] <br/>
[[EiffelCOM Wizard|EiffelCOM wizard]] }}

View File

@@ -1,14 +1,8 @@
[[Property:title|EiffelCOM]]
[[Property:title|About COM and Eiffel]]
[[Property:link_title|COM and Eiffel]]
[[Property:weight|-15]]
[[Property:uuid|32e79152-1e8f-43cd-e014-a83aab18e440]]
* [[EiffelCOM: Introduction|Introduction]]
* [[Generalities|Generalities]]
* [[COM Interfaces|Interfaces]]
* [[Coclass|Coclasses]]
* [[The Component Location|Component Location]]
* [[Access Type|Access Type]]
* [[Deeper into COM|Deeper into COM]]
==About COM and Eiffel==
{{seealso| '''See Also''' <br/>
[[EiffelCOM Wizard|EiffelCOM wizard]] <br/>
@@ -16,4 +10,3 @@

View File

@@ -24,7 +24,7 @@ To implement a client of the <eiffel>StringManipulator</eiffel> component open a
{{note| '''Note''': If a COM component should be added to an existing client, the generated ecf file can be added as a library. }}
==Contracts==
Contracts can be broken directly on the proxy in which case you will get a standard contract violation in the client. If contracts are broken on the server then the exception will be forwarded by the EiffelCOM runtime to the client. The feature replace_substring_user_precondition in <eiffel>MY_STRING_MANIPULATOR</eiffel> includes has some assertions.: Comment them out. Now the contract of the <code> [[ref:libraries/base/reference/string_8_chart|replace_substring]] </code> feature is wrong and erroneous calls can be made. Quick melt the changes and run the client. Enter some invalid numbers in the fields used to call this feature. After you click '''Replace''' you will see an error message box warning you that a precondition was violated on the server side. This demonstrates contracts `over the wire'. The precondition was violated in the server; this exception was caught by the EiffelCOM runtime and sent back to the client.
Contracts can be broken directly on the proxy in which case you will get a standard contract violation in the client. If contracts are broken on the server then the exception will be forwarded by the EiffelCOM runtime to the client. The feature replace_substring_user_precondition in <eiffel>MY_STRING_MANIPULATOR</eiffel> includes has some assertions.: Comment them out. Now the contract of the [[ref:libraries/base/reference/string_8_chart|<code>replace_substring </code>]] feature is wrong and erroneous calls can be made. Quick melt the changes and run the client. Enter some invalid numbers in the fields used to call this feature. After you click '''Replace''' you will see an error message box warning you that a precondition was violated on the server side. This demonstrates contracts `over the wire'. The precondition was violated in the server; this exception was caught by the EiffelCOM runtime and sent back to the client.
{{seealso| '''See Also''' <br/>
[[Creating a new COM component|Creating a new COM component]] <br/>
[[Creating a new component from an Eiffel project|Creating a new component from an Eiffel Project]] }}

View File

@@ -2,7 +2,7 @@
[[Property:link_title|Creating a New COM Component]]
[[Property:weight|0]]
[[Property:uuid|f8298b7d-c1a4-c8cc-1821-066f90e7e6e0]]
This first tutorial describes creating a COM component from a COM definition file that is either an IDL file or a Type Library. The tutorial focuses on creating an in-process (DLL) component, called <eiffel>StringManipulator</eiffel>. The component exposes one interface <eiffel>IString</eiffel> that includes the functions <eiffel>ReplaceSubstring</eiffel> and <eiffel>PruneAll</eiffel> corresponding respectively to the features <eiffel> [[ref:libraries/base/reference/string_8_chart|replace_substring]] </eiffel> and <eiffel> [[ref:libraries/base/reference/string_8_chart|prune_all]] </eiffel> of the class <eiffel> [[ref:libraries/base/reference/string_8_chart| <eiffel>STRING</eiffel> ]] </eiffel> from the EiffelBase library. <eiffel>IString</eiffel> also exposes the property <eiffel>String</eiffel> which represents the manipulated string. The property can be set or read.
This first tutorial describes creating a COM component from a COM definition file that is either an IDL file or a Type Library. The tutorial focuses on creating an in-process (DLL) component, called <eiffel>StringManipulator</eiffel>. The component exposes one interface <eiffel>IString</eiffel> that includes the functions <eiffel>ReplaceSubstring</eiffel> and <eiffel>PruneAll</eiffel> corresponding respectively to the features [[ref:libraries/base/reference/string_8_chart|<eiffel>replace_substring</eiffel>]] and [[ref:libraries/base/reference/string_8_chart|<eiffel>prune_all</eiffel>]] of the class [[ref:libraries/base/reference/string_8_chart|<eiffel>STRING</eiffel>]] from the EiffelBase library. <eiffel>IString</eiffel> also exposes the property <eiffel>String</eiffel> which represents the manipulated string. The property can be set or read.
==Step by step instructions==
# In '''Project''', in the '''Current project''' input field, type in ''string_manipulator_server'' and press '''enter'''.
# In '''Project Type''', choose ''Create a new COM component''.

View File

@@ -5,7 +5,7 @@ The generated Eiffel code reflects the architecture of the component described i
[[Image:interface-inheritance]]
In a project accessing an existing component, the Eiffel classes corresponding to component coclasses inherit from the class [[ref:libraries/com/reference/ecom_queriable_chart| <eiffel>ECOM_QUERIABLE</eiffel> ]] , which is part of the EiffelCOM library. This class includes the feature <eiffel>make_from_other</eiffel> which allows initializing the component from another instance of [[ref:libraries/com/reference/ecom_interface_chart| <eiffel>ECOM_INTERFACE</eiffel> ]] .
[[Image:interface-inheritance-server]]
In a project implementing a new component, the Eiffel classes corresponding to component coclasses inherit from the class [[ref:libraries/com/reference/ecom_stub_chart| <eiffel>ECOM_STUB</eiffel> ]] , which is part of the EiffelCOM library. This class includes the feature [[ref:libraries/com/reference/ecom_stub_chart]] which allows initializing the component.
In a project implementing a new component, the Eiffel classes corresponding to component coclasses inherit from the class [[ref:libraries/com/reference/ecom_stub_chart|<eiffel>ECOM_STUB</eiffel>]], which is part of the EiffelCOM library. This class includes the feature [[ref:libraries/com/reference/ecom_stub_chart|<eiffel>create_item</eiffel>]] which allows initializing the component.
The '''Interface_proxy''' folder includes Eiffel classes wrapping interfaces that may be returned by functions on other interfaces. These classes inherit from both the deferred interface class located in '''Common\Interfaces''' and [[ref:libraries/com/reference/ecom_queriable_chart| <eiffel>ECOM_QUERIABLE</eiffel> ]] .
[[Image:implemented-interface]]

View File

@@ -9,7 +9,7 @@ The facade class should be designed so that it exposes the functionality of the
There are some rules that the facade class must follow for the COM wizard to be able to generate correct IDL:
* The facade class must have a creation procedure called <eiffel>make</eiffel> that does not take any argument. This is the procedure that will be called by the EiffelCOM runtime to initialize the Eiffel object when a COM call arrives from a client.
* The arguments and objects returned by the public routines of the facade class must be of one of the following types: [[ref:libraries/base/reference/character_8_chart| <eiffel>CHARACTER_8</eiffel> ]] , [[ref:libraries/base/reference/integer_32_chart| <eiffel>INTEGER_32</eiffel> ]] , [[ref:libraries/base/reference/real_32_chart| <eiffel>REAL_32</eiffel> ]] , [[ref:libraries/base/reference/real_64_chart| <eiffel>REAL_64</eiffel> ]] , [[ref:libraries/base/reference/boolean_chart| <eiffel>BOOLEAN</eiffel> ]] , [[ref:libraries/base/reference/integer_32_ref_chart| <eiffel>INTEGER_32_REF</eiffel> ]] , [[ref:libraries/base/reference/boolean_ref_chart| <eiffel>BOOLEAN_REF</eiffel> ]] , [[ref:libraries/base/reference/real_32_ref_chart| <eiffel>REAL_32_REF</eiffel> ]] , [[ref:libraries/base/reference/character_8_ref_chart| <eiffel>CHARACTER_8_REF</eiffel> ]] , [[ref:libraries/base/reference/real_64_ref_chart| <eiffel>REAL_64_REF</eiffel> ]] , [[ref:libraries/base/reference/string_8_chart| <eiffel>STRING_8</eiffel> ]] , [[ref:libraries/com/reference/ecom_currency_chart| <eiffel>ECOM_CURRENCY</eiffel> ]] , [[ref:libraries/com/reference/ecom_decimal_chart| <eiffel>ECOM_DECIMAL</eiffel> ]] , [[ref:libraries/com/reference/ecom_interface_chart]] , or [[ref:libraries/com/reference/ecom_array_chart]] . Features with arguments or return objects that are of a type not in this list are excluded from the generated IDL file and are not accessible to clients.
* The arguments and objects returned by the public routines of the facade class must be of one of the following types: [[ref:libraries/base/reference/character_8_chart| <eiffel>CHARACTER_8</eiffel> ]] , [[ref:libraries/base/reference/integer_32_chart| <eiffel>INTEGER_32</eiffel> ]] , [[ref:libraries/base/reference/real_32_chart| <eiffel>REAL_32</eiffel> ]] , [[ref:libraries/base/reference/real_64_chart| <eiffel>REAL_64</eiffel> ]] , [[ref:libraries/base/reference/boolean_chart| <eiffel>BOOLEAN</eiffel> ]] , [[ref:libraries/base/reference/integer_32_ref_chart| <eiffel>INTEGER_32_REF</eiffel> ]] , [[ref:libraries/base/reference/boolean_ref_chart| <eiffel>BOOLEAN_REF</eiffel> ]] , [[ref:libraries/base/reference/real_32_ref_chart| <eiffel>REAL_32_REF</eiffel> ]] , [[ref:libraries/base/reference/character_8_ref_chart| <eiffel>CHARACTER_8_REF</eiffel> ]] , [[ref:libraries/base/reference/real_64_ref_chart| <eiffel>REAL_64_REF</eiffel> ]] , [[ref:libraries/base/reference/string_8_chart| <eiffel>STRING_8</eiffel> ]] , [[ref:libraries/com/reference/ecom_currency_chart| <eiffel>ECOM_CURRENCY</eiffel> ]] , [[ref:libraries/com/reference/ecom_decimal_chart| <eiffel>ECOM_DECIMAL</eiffel> ]] , [[ref:libraries/com/reference/ecom_interface_chart| <eiffel>ECOM_INTERFACE</eiffel>]] , or [[ref:libraries/com/reference/ecom_array_chart| <eiffel>ECOM_ARRAY</eiffel>]] . Features with arguments or return objects that are of a type not in this list are excluded from the generated IDL file and are not accessible to clients.
* The facade class should not contain any public attribute, only routines can be exported to COM clients.
* The facade class must belong to a successfully compiled Eiffel project.

View File

@@ -4,14 +4,7 @@
Type: Wizard <br/>
Platform: Windows
See: <br/>
* [[EiffelCOM Wizard Introduction|Introduction]]
* [[EiffelCOM Wizard Guided Tour|Guided Tour]]
* [[EiffelCOM Wizard Reference|Reference]]
{{seealso| '''See Also''' <br/>
[[EiffelCOM|The Component Object Model]] <br/>
[[EiffelCOM Library|EiffelCOM library]] }}

View File

@@ -4,21 +4,5 @@
[[Property:uuid|b6513eee-a12c-1f9f-4257-b08d2e18cef4]]
== Eiffel with Microsoft Windows ==
Primary source for Eiffel platform specific support for Microsoft Windows
* [[.NET| Eiffel for .NET documentation]]
** [[.NET Installation instructions|Installation instructions]]
** [[Building a .NET application|Building a .NET application]]
** [[The Eiffel for .NET language|Eiffel for .NET language description]]
** [[Samples|Samples]]
* EiffelEnvision documentation ?
* [[Eiffel for ASP.NET Documentation|Eiffel for ASP.NET]]
* [[WEL Library|WEL]]
** [[WEL Interface Content|WEL introduction]]
** [[ref:libraries/wel/reference/index|WEL class reference]]
** [[WEL Samples|WEL Samples]]
* [[EiffelCOM Wizard|EiffelCOM Wizard]]
* [[ResourceBench|ResourceBench]]
The primary source for Eiffel platform specific support for Microsoft Windows.

View File

@@ -1,12 +1,17 @@
[[Property:title|The Eiffel for .NET language]]
[[Property:weight|2]]
[[Property:uuid|ba6cd8d3-683c-4167-bdef-a0274c392f34]]
* [[Eiffel for .NET: Introduction|Introduction]]
* [[Eiffel for .NET Conventions|Using Eiffel on .NET]]
* [[Eiffel for .NET|Summary of the Eiffel Language]]
* [[Eiffel for .NET Limitations|Difference between Eiffel and Eiffel for .NET]]
* [[Known issues|Known issues with Eiffel for .NET compiler]]
This section focuses on defining Eiffel for .NET. The key requirement for Eiffel for .NET is the exclusive use of the common language runtime with a minimum Eiffel-specific runtime. The second requirement is to generate IL code that is CLS compliant, meaning that other CLS compliant languages/compilers/tools will be able to reuse .NET components written in Eiffel for .NET. The last requirement is to generate verifiable IL code.
Because not all Eiffel functionalities are present in .NET, the task of the Eiffel compiler is made more complicated since it has to emulate those mechanisms instead of reusing what .NET provides. For example the common language runtime of .NET does not support:
* multiple inheritance
* genericity
* covariance
* agents
We will see:
* what is Eiffel on .NET
* which Eiffel mechanisms have been implemented and which haven't.

View File

@@ -8,7 +8,7 @@ The [[ref:libraries/wel/reference/wel_choose_color_dialog_chart|WEL_CHOOSE_COLOR
<br/>
{{seealso| '''See also''' <br/>
[[Standard Dialogs|Standard dialogs]] }}
[[stddlgs cluster|Standard dialogs]] }}

View File

@@ -8,7 +8,7 @@ The [[ref:libraries/wel/reference/wel_choose_folder_dialog_chart|WEL_CHOOSE_FOLD
<br/>
{{seealso| '''See also''' <br/>
[[Standard Dialogs|Standard dialogs]] }}
[[stddlgs cluster|Standard dialogs]] }}

View File

@@ -8,7 +8,7 @@ The [[ref:libraries/wel/reference/wel_choose_font_dialog_chart|WEL_CHOOSE_FONT_D
<br/>
{{seealso| '''See also''' <br/>
[[Standard Dialogs|Standard dialogs]] }}
[[stddlgs cluster|Standard dialogs]] }}

View File

@@ -8,7 +8,7 @@ The [[ref:libraries/wel/reference/wel_open_file_dialog_chart|WEL_OPEN_FILE_DIALO
<br/>
{{seealso| '''See also''' <br/>
[[Standard Dialogs|Standard dialogs]] <br/>
[[stddlgs cluster|Standard dialogs]] <br/>
[[WEL_SAVE_FILE_DIALOG|WEL_SAVE_FILE_DIALOG]] }}

View File

@@ -8,7 +8,7 @@ The [[ref:libraries/wel/reference/wel_print_dialog_chart|WEL_PRINT_DIALOG]] is
<br/>
{{seealso| '''See also''' <br/>
[[Standard Dialogs|Standard dialogs]] }}
[[stddlgs cluster|Standard dialogs]] }}

View File

@@ -8,7 +8,7 @@ The [[ref:libraries/wel/reference/wel_save_file_dialog_chart|WEL_SAVE_FILE_DIALO
<br/>
{{seealso| '''See also''' <br/>
[[Standard Dialogs|Standard dialogs]] <br/>
[[stddlgs cluster|Standard dialogs]] <br/>
[[WEL_OPEN_FILE_DIALOG|WEL_OPEN_FILE_DIALOG]] }}

View File

@@ -22,7 +22,7 @@ After launching the program, a window will be displayed as shown above. The prog
Both the menu items and the tool bar buttons are handled by on_menu_command which has been redefined in MAIN_WINDOW.
Four of the [[Standard Dialogs|standard dialogs]] provided by WEL are used to receive input from the user.
Four of the [[stddlgs cluster|standard dialogs]] provided by WEL are used to receive input from the user.
This sample contains the following classes:
* APPLICATION_IDS
* MAIN_WINDOW