Astro-Nova

 view release on metacpan or  search on metacpan

XS/EllipticMotion.xs  view on Meta::CPAN

    CODE:
      Newx(RETVAL, 1, struct ln_equ_posn);
      ln_get_ell_body_equ_coords(JD, orbit, RETVAL);
    OUTPUT:
      RETVAL

void
ln_get_ell_body_rst(double JD, struct ln_lnlat_posn* observer, struct ln_ell_orbit* orbit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_ell_body_rst(JD, observer, orbit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_ell_body_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_ell_orbit* orbit, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_ell_body_rst_horizon(JD, observer, orbit, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_ell_body_next_rst(double JD, struct ln_lnlat_posn* observer, struct ln_ell_orbit* orbit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_ell_body_next_rst(JD, observer, orbit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_ell_body_next_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_ell_orbit* orbit, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_ell_body_next_rst_horizon(JD, observer, orbit, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_ell_body_next_rst_horizon_future(double JD, struct ln_lnlat_posn* observer, struct ln_ell_orbit* orbit, double horizon, int day_limit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_ell_body_next_rst_horizon_future(JD, observer, orbit, horizon, day_limit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

double
ln_get_ell_last_perihelion(double epoch_JD, double M, double n)

XS/HyperbolicMotion.xs  view on Meta::CPAN

double
ln_get_hyp_body_phase_angle(double JD, struct ln_hyp_orbit* orbit)

double
ln_get_hyp_body_elong(double JD, struct ln_hyp_orbit* orbit)

void
ln_get_hyp_body_rst(double JD, struct ln_lnlat_posn* observer, struct ln_hyp_orbit* orbit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_hyp_body_rst(JD, observer, orbit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_hyp_body_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_hyp_orbit* orbit, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_hyp_body_rst_horizon(JD, observer, orbit, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_hyp_body_next_rst(double JD, struct ln_lnlat_posn* observer, struct ln_hyp_orbit* orbit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_hyp_body_next_rst(JD, observer, orbit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_hyp_body_next_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_hyp_orbit* orbit, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_hyp_body_next_rst_horizon(JD, observer, orbit, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_hyp_body_next_rst_horizon_future(double JD, struct ln_lnlat_posn* observer, struct ln_hyp_orbit* orbit, double horizon, int day_limit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_hyp_body_next_rst_horizon_future(JD, observer, orbit, horizon, day_limit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

XS/Jupiter.xs  view on Meta::CPAN

double
ln_get_jupiter_equ_sdiam(double JD)

double
ln_get_jupiter_pol_sdiam(double JD)

void
ln_get_jupiter_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_jupiter_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_jupiter_helio_coords(double JD)
    INIT:

XS/Lunar.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

double
ln_get_lunar_sdiam (double JD)

void
ln_get_lunar_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_lunar_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_rect_posn*
ln_get_lunar_geo_posn(double JD, double precision)
    INIT:

XS/Mars.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

double
ln_get_mars_sdiam(double JD)
        
void
ln_get_mars_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_mars_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_mars_helio_coords(double JD)
    INIT:

XS/Mercury.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

double
ln_get_mercury_sdiam(double JD)
        
void
ln_get_mercury_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_mercury_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_mercury_helio_coords(double JD)
    INIT:

XS/Neptune.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

double
ln_get_neptune_sdiam(double JD)
        
void
ln_get_neptune_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_neptune_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_neptune_helio_coords(double JD)
    INIT:

XS/ParabolicMotion.xs  view on Meta::CPAN

double
ln_get_par_body_phase_angle(double JD, struct ln_par_orbit* orbit)

double
ln_get_par_body_elong(double JD, struct ln_par_orbit* orbit)

void
ln_get_par_body_rst(double JD, struct ln_lnlat_posn* observer, struct ln_par_orbit* orbit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_par_body_rst(JD, observer, orbit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_par_body_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_par_orbit* orbit, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_par_body_rst_horizon(JD, observer, orbit, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_par_body_next_rst(double JD, struct ln_lnlat_posn* observer, struct ln_par_orbit* orbit)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_par_body_next_rst(JD, observer, orbit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_par_body_next_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_par_orbit* orbit, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_par_body_next_rst_horizon(JD, observer, orbit, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_par_body_next_rst_horizon_future(double JD, struct ln_lnlat_posn* observer, struct ln_par_orbit* orbit, int day_limit, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_par_body_next_rst_horizon_future(JD, observer, orbit, horizon, day_limit, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

XS/Pluto.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

double
ln_get_pluto_sdiam(double JD)
        
void
ln_get_pluto_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_pluto_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_pluto_helio_coords(double JD)
    INIT:

XS/RiseSet.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

void
ln_get_object_rst(double JD, struct ln_lnlat_posn* observer, struct ln_equ_posn* object)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_object_rst(JD, observer, object, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_object_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_equ_posn* object, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_object_rst_horizon(JD, observer, object, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_object_next_rst(double JD, struct ln_lnlat_posn* observer, struct ln_equ_posn* object)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_object_next_rst(JD, observer, object, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_object_next_rst_horizon(double JD, struct ln_lnlat_posn* observer, struct ln_equ_posn* object, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_object_next_rst_horizon(JD, observer, object, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

####  NOT IMPLEMENTED DUE TO FUNCTION POINTER MADNESS!
#### int LIBNOVA_EXPORT ln_get_body_rst_horizon (double JD, struct ln_lnlat_posn * observer, void (*get_equ_body_coords) (double, struct ln_equ_posn *), double horizon, struct ln_rst_time * rst);
#### int LIBNOVA_EXPORT ln_get_body_next_rst_horizon (double JD, struct ln_lnlat_posn * observer, void (*get_equ_body_coords) (double, struct ln_equ_posn *), double horizon, struct ln_rst_time * rst);

XS/Saturn.xs  view on Meta::CPAN

double
ln_get_saturn_equ_sdiam(double JD)

double
ln_get_saturn_pol_sdiam(double JD)

void
ln_get_saturn_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_saturn_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_saturn_helio_coords(double JD)
    INIT:

XS/Solar.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

void
ln_get_solar_rst_horizon(double JD, struct ln_lnlat_posn* observer, double horizon)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_solar_rst_horizon(JD, observer, horizon, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

void
ln_get_solar_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_solar_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);
        

struct ln_helio_posn*
ln_get_solar_geom_coords(double JD)

XS/Uranus.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

double
ln_get_uranus_sdiam(double JD)
        
void
ln_get_uranus_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_uranus_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_uranus_helio_coords(double JD)
    INIT:

XS/Venus.xs  view on Meta::CPAN


MODULE = Astro::Nova		PACKAGE = Astro::Nova		PREFIX=ln_

double
ln_get_venus_sdiam(double JD)
        
void
ln_get_venus_rst(double JD, struct ln_lnlat_posn* observer)
    INIT:
      struct ln_rst_time* rst;
    PPCODE:
      Newx(rst, 1, struct ln_rst_time);
      int res = ln_get_venus_rst(JD, observer, rst);
      EXTEND(SP, 2);
      PUSHs(sv_2mortal(newSViv(res)));
      PUSHs(sv_newmortal());
      sv_setref_pv(ST(1), "Astro::Nova::RstTime", (void*)rst);

struct ln_helio_posn*
ln_get_venus_helio_coords(double JD)
    INIT:

buildtools/makeNovaClass.pl  view on Meta::CPAN

	$name* self
    CODE:
	RETVAL = self->$field;
    OUTPUT:
	RETVAL

void
set_$field( self, val )
	$name* self
	$type val
    PPCODE:
	self->$field = val;
HERE
    }
    else {
      my $field_class = $structs_hash->{$type}{package};
      die "Can't find class for type '$type'" if not defined $field_class;
      push @code, <<HERE;
$type*
get_$field( self )
	$name* self

buildtools/makeNovaClass.pl  view on Meta::CPAN

		XSRETURN_UNDEF;
	}
        Copy(&(self->$field), (RETVAL), 1, $type);
    OUTPUT:
	RETVAL

void
set_$field( self, val )
	$name* self
	$type* val
    PPCODE:
        Copy(val, &(self->$field), 1, $type);
HERE
    }
  }
  return join("\n\n", @code)."\n";
}


sub destructor {
  my ($struct) = @_;



( run in 2.688 seconds using v1.01-cache-2.11-cpan-71847e10f99 )