001/****************************************************************************
002 * Copyright/Copyleft:
003 *
004 * For this source the LGPL Lesser General Public License,
005 * published by the Free Software Foundation is valid.
006 * It means:
007 * 1) You can use this source without any restriction for any desired purpose.
008 * 2) You can redistribute copies of this source to everybody.
009 * 3) Every user of this source, also the user of redistribute copies
010 *    with or without payment, must accept this license for further using.
011 * 4) But the LPGL is not appropriate for a whole software product,
012 *    if this source is only a part of them. It means, the user
013 *    must publish this part of source,
014 *    but don't need to publish the whole source of the own product.
015 * 5) You can study and modify (improve) this source
016 *    for own using or for redistribution, but you have to license the
017 *    modified sources likewise under this LGPL Lesser General Public License.
018 *    You mustn't delete this Copyright/Copyleft inscription in this source file.
019 *
020 * @author Hartmut Schorrig: hartmut.schorrig@vishia.de, www.vishia.org
021 * @version 0.93 2011-01-05  (year-month-day)
022 *******************************************************************************/ 
023package org.vishia.java2C.test;
024
025public interface Ifc2
026{
027  /**Example for an interface method with the same name but other parameter types,
028   * which is implemented together with {@link Ifc#processIfcMethod(int)} in {@link ImplIfc}.
029   * In Java that are two different methods of course, and also in C.
030   * In both interfaces, this methods are independent, this method is declared with an method type
031   * in its headerFile, adequate to the other method in Ifc:
032   * <pre class="CCode">
033   * typedef float MT_processIfcMethod_Ifc2_Test(ObjectJc* ithis, float input, ThCxt* _thCxt);
034   * </pre> 
035   */
036  float processIfcMethod(float input);
037
038  /**Another method. */
039  float testIfc2(float input);
040
041  /**Example for an interface method, which has the same name and same paremeters like the method
042   * {@link Ifc#anotherIfcmethod(float)}. Therefore only one implementation is necessary. 
043   * In this interface the method type
044   * <pre class="CCode">
045   * METHOD_C float anotherIfcmethod_Ifc2_Test(ObjectJc* ithis, float input, ThCxt* _thCxt);
046   * </pre>
047   * is declared for it. In opposite the method type of the same method {@link Ifc#anotherIfcmethod(float)} is
048   * <pre class="CCode">
049   * METHOD_C float anotherIfcmethod_f_Ifc_Test(ObjectJc* ithis, float input, ThCxt* _thCxt);
050   * </pre>
051   * Both declarations are independent, because the interface definitions are so. But the implementation
052   * for both methods are the same, and the implementation are compatible to both declarations of function type.
053   * See {@link ImplIfc#anotherIfcmethod(float)}.
054   */
055  float anotherIfcmethod(float input);
056  
057  
058}