Klassen des Pakets AstroOL: Zur Doku-Startseite Zurück zur Homepage

Klasse NativeCalculator

Javadoc von NativeCalculator   NativeCalculator.java herunterladen

package AstroOL;

/** Planeten- und Hausposition direkt mit der Swiss Ephemeris berechnen. Die Klasse
<code>NativeCalculator</code> verwendet das <i>Java Native Interface</i> (JNI), um
die C-Routinen der Swiss Ephemeris aufzurufen. Hierzu ist neben der Swiss Ephemeris eine
kleine Wrapper-Bibliothek <a href="./doc-files/NativeCalculator.dll">NativeCalculator.dll</a> erforderlich,
die im wesentlichen die Typumwandlungen der C- in die Java-Datentypen besorgt.
<p>Wenn der NativeCalculator in einem Applet verwendet werden soll, muss das Applet
auf dem Client-PC die Berechtigung <code>java.lang.RuntimePermission "loadLibrary.NativeCalculator"</code>
zum Laden der native Library
besitzen, sonst kommt es zu einer <code>SecurityException</code>.
@see <a href="./doc-files/NativeCalculator.html">Verwendung des NativeCalculators</a>

*/
public class NativeCalculator implements ICalculator  {

  static {
   System.loadLibrary("NativeCalculator");
   }

    private String _msg;

    /** Leere Implementierung, da die Klasse NativeCalculator keine Serververbindung braucht. */
    public void setServletURL( String x ) {}
    /** Leere Implementierung, da die Klasse NativeCalculator keine Serververbindung braucht. */
    public String getServletURL( ) { return null; }

    /** Planeten und Häuser berechnen. Die Methode ist vollständig in C implementiert und
    ruft die Funktionen swe_calc() und swe_houses() der Swiss Ephemeris Bibliothek auf. */
    public native boolean getPlanetsAndHouses(double jd_ut,
                                              double lon,
                                              double lat,
	                                          double[] pl,
                                              double[] h) ;

    /** Einen einzelnen Planeten berechnen. Implementierung der Interface-Methode. */
    public double[] getPlanet( double jd_ut,
                               int planet,
                               StringBuffer msg) {

       return getPlanet( jd_ut, planet, 0, msg);


    }


    /** Einen einzelnen Planeten berechnen. Direkter Zugriff in Java auf die zentrale
    Routine <code>swe_calc()</code> der Swiss Ephemeris. */
    public double[] getPlanet( double jd_ut,
                               int planet,
                               int iflag,
                               StringBuffer msg) {
	  double[] x = getPlanet( jd_ut, planet, iflag );
	  if (msg == null)
	    msg = new StringBuffer(_msg);
	  else
	    msg.append(_msg);
	  return x;
      }

    /** Etwaige Fehlermeldung zurückgeben. */
    public String getMessage() {
      return _msg;
      }


    /** Native Methode zur Planetenberechnung. Die Signatur unterscheidet sich von
    der öffentlichen Methode dadurch, dass der StringBuffer für die Nachricht fehlt.
    Die Meldungen werden von der nativen Methode direkt in einen privaten String übergeben
    und können von dort mit der Methode {@link #getMessage(void)} abgeholt werden. */
    private native double[] getPlanet(
		                       double jd_ut,
                               int planet,
                               int iflag);

    /** Länge eines einzelnen Hauses berechnen. */
    public native double getHouse( double jd_ut,
                            double lon,
                            double lat,
                            double houseNumber,
                            StringBuffer serr) ;



}


Zum Seitenanfang Lizenzbedingungen Der Quellcode wird mit dem GNU source-highlight 1.7 dargestellt