ffi library

Raw FFI surface for the official Taiyin extension packages (package:ephemeris_bazi, package:ephemeris_ziwei).

This library exposes the generated bindings and the interop helpers the extension packages need to share core contexts and load their own native modules. Its shape tracks the native ABI and may change without a major version bump of package:ephemeris; application code should prefer package:ephemeris/ephemeris.dart.

Classes

taiyin_aberration_model_id
taiyin_angular_separation_result
taiyin_apparent_config
taiyin_apparent_deflector
taiyin_apparent_flags
taiyin_apparent_frame_id
taiyin_apparent_position
taiyin_astro_model_config
taiyin_astrology_target_id
taiyin_atmosphere
taiyin_atmosphere_policy_flags
taiyin_ayanamsha_id
taiyin_bazi_branch_relation_flags
taiyin_bazi_branch_triple_relation_flags
taiyin_bazi_chart
taiyin_bazi_context
taiyin_bazi_context_config
taiyin_bazi_dayun
taiyin_bazi_dayun_boundary_model
taiyin_bazi_earth_palace_mode
taiyin_bazi_gender
taiyin_bazi_qiyun_direction_mode
taiyin_bazi_qiyun_result
taiyin_bazi_qiyun_time_model
taiyin_bazi_relation
taiyin_bazi_relation_kind
taiyin_bazi_relation_pillar_flags
taiyin_bazi_renyuan_siling_origin_kind
taiyin_bazi_renyuan_siling_result
taiyin_bazi_renyuan_siling_segment
taiyin_bazi_renyuan_siling_table_model
taiyin_bazi_renyuan_siling_time_model
taiyin_bazi_shen_sha_id
taiyin_bazi_shen_sha_target_kind
taiyin_bazi_stem_relation_flags
taiyin_bazi_wuxing
taiyin_bazi_xiaoyun
taiyin_body_apsis_kind
taiyin_body_apsis_search_result
taiyin_body_id
taiyin_body_node_kind
taiyin_body_node_search_result
taiyin_body_orbit_reference_point
taiyin_body_orbit_reference_points
taiyin_body_osculating_orbit
taiyin_body_phenomena
taiyin_body_star_angular_separation_result
taiyin_calendar_datetime
taiyin_capability
taiyin_cartesian_state
taiyin_chinese_calendar_config
taiyin_chinese_calendar_context
taiyin_chinese_calendar_day_boundary_mode
taiyin_chinese_calendar_mode
taiyin_chinese_calendar_month
taiyin_chinese_calendar_month_name
taiyin_chinese_calendar_year
taiyin_chinese_new_moon_event
taiyin_chinese_solar_term_event
taiyin_context
taiyin_deflection_model_id
taiyin_delta_t_model_id
taiyin_eclipse_kind_flags
taiyin_eclipse_moon_radius_model_id
taiyin_eclipse_shadow_model_id
taiyin_ephemeris_diagnostic
taiyin_ephemeris_family_id
taiyin_equation_of_time_result
taiyin_estimated_time_scales
taiyin_frame_route_id
taiyin_ganzhi_four_pillars
taiyin_ganzhi_pillar_historical_mode
taiyin_ganzhi_rat_hour_mode
taiyin_ganzhi_wuxing
taiyin_greatest_elongation_kind
taiyin_greatest_elongation_result
taiyin_heliacal_event_kind
taiyin_heliacal_visibility_conditions
taiyin_heliacal_visibility_model_id
taiyin_heliacal_visibility_result
taiyin_heliacal_visibility_search_result
taiyin_horizontal_coordinates
taiyin_horizontal_rates
taiyin_house_position_result
taiyin_house_result
taiyin_house_result_flags
taiyin_house_system_dispatch_data
taiyin_house_system_id
taiyin_local_lunar_eclipse_result_tt
taiyin_local_lunar_eclipse_result_ut
taiyin_local_solar_eclipse_boundary
taiyin_local_solar_eclipse_circumstances_tt
taiyin_local_solar_eclipse_circumstances_ut
taiyin_local_solar_eclipse_result_tt
taiyin_local_solar_eclipse_result_ut
taiyin_local_solar_transit_result
taiyin_lunar_apsis_definition
taiyin_lunar_apsis_position
taiyin_lunar_date
taiyin_lunar_eclipse_result_tt
taiyin_lunar_eclipse_result_ut
taiyin_lunar_node_kind
taiyin_lunar_node_position
taiyin_lunar_occultation_local_visibility
taiyin_lunar_occultation_path_point
taiyin_lunar_occultation_phenomena
taiyin_lunar_occultation_result
taiyin_lunar_occultation_visibility_interval
taiyin_lunar_occultation_visibility_sample
taiyin_lunar_occultation_where_result
taiyin_model_selection_id
taiyin_nutation_model_id
taiyin_observed_flags
taiyin_observed_position
taiyin_observer_location
taiyin_occultation_kind
taiyin_occultation_type_flags
taiyin_occultation_visibility_flags
taiyin_occultation_visibility_sample_flags
taiyin_position_flags
taiyin_precession_model_id
taiyin_precise_time_scales
taiyin_refraction_model_id
taiyin_result_flag
taiyin_runtime_config
taiyin_runtime_data_source_flags
taiyin_runtime_data_source_format
taiyin_runtime_data_source_kind
taiyin_runtime_registered_data_source
taiyin_sidereal_coordinate_frame
taiyin_sidereal_coordinates
taiyin_sidereal_position
taiyin_solar_besselian_elements
taiyin_solar_besselian_polynomial
taiyin_solar_date
taiyin_solar_eclipse_path_point
taiyin_solar_eclipse_result_tt
taiyin_solar_eclipse_result_ut
taiyin_solar_eclipse_route_curve_point
taiyin_solar_eclipse_route_product_point
taiyin_solar_eclipse_route_product_summary
taiyin_solar_eclipse_route_row
taiyin_solar_eclipse_where
taiyin_solar_rise_set_fast_result
taiyin_solar_route_curve_kind
taiyin_solar_route_product_flags
taiyin_solar_transit_fast_result
taiyin_solar_transit_kind
taiyin_solar_transit_result
taiyin_solar_transit_visibility_flags
taiyin_split_estimated_time_scales
taiyin_split_julian_date
taiyin_split_precise_time_scales
taiyin_status_category
taiyin_status_code
taiyin_tdb_model
taiyin_tdb_model_id
taiyin_time_scale_diagnostic
taiyin_time_scale_diagnostic_flags
taiyin_time_scale_fallback_reason
taiyin_time_scale_route
taiyin_vector3
taiyin_visibility_altitude_state
taiyin_visibility_crossing_direction
taiyin_visibility_event_kind
taiyin_visibility_event_result
taiyin_visibility_flags
taiyin_visibility_limb_kind
taiyin_visibility_twilight_kind
taiyin_ziwei_birth_options
taiyin_ziwei_brightness
taiyin_ziwei_chart
taiyin_ziwei_chart_mode
taiyin_ziwei_childhood_strategy
taiyin_ziwei_context
taiyin_ziwei_data_catalog
taiyin_ziwei_flow_level
taiyin_ziwei_flow_month_palace_strategy
taiyin_ziwei_flow_options
taiyin_ziwei_flow_summary
taiyin_ziwei_gender
taiyin_ziwei_json_rule_module
taiyin_ziwei_leap_month_strategy
taiyin_ziwei_option_component
taiyin_ziwei_option_override
taiyin_ziwei_pillar_boundary
taiyin_ziwei_reverse_candidate
taiyin_ziwei_reverse_query
taiyin_ziwei_reverse_request
taiyin_ziwei_ruleset
taiyin_ziwei_star_category
taiyin_ziwei_star_transform_mark
taiyin_ziwei_transform_set
TaiyinBindings
Generated bindings for the Taiyin C ABI.

Constants

TAIYIN_C_LOCAL_SOLAR_CONTACT_COUNT → const int
TAIYIN_C_LUNAR_ECLIPSE_CONTACT_COUNT → const int
TAIYIN_C_OCCULTATION_MAX_VISIBILITY_INTERVALS → const int
TAIYIN_C_OCCULTATION_WHERE_MAX_PATH_POINTS → const int
TAIYIN_C_OCCULTATION_WHERE_MAX_POLYGON_POINTS → const int
TAIYIN_C_SOLAR_BESSELIAN_COEFF_COUNT → const int
TAIYIN_C_SOLAR_ECLIPSE_CONTACT_COUNT → const int
taiyinBaziCapability → const int
taiyinBaziSymbols → const Set<String>
BaZi symbols, verified by package:ephemeris_bazi only when the loaded library advertises the BaZi capability. The symbols do not exist in a build without TAIYIN_BUILD_BAZI_EXTENSION=ON, so they must never be looked up otherwise.
taiyinChineseCalendarCapability → const int
taiyinGanzhiCalendarCapability → const int
taiyinRequiredAbi9Symbols → const Set<String>
Symbols required by the ABI-10 native baseline used by this package.
taiyinSplitTimeCapability → const int
taiyinSupportedAbiVersion → const int
taiyinZiweiCapability → const int
taiyinZiweiSymbols → const Set<String>
Ziwei symbols, verified only when the loaded library advertises the Ziwei capability. The symbols do not exist in a build without TAIYIN_BUILD_ZIWEI_EXTENSION=ON, so they must never be looked up otherwise.

Functions

decodeNativeCallResult(int rawResult) DecodedCallResult
Decodes an ABI-10 packed call result or a retained legacy status return.
readCalendarDateTime(taiyin_calendar_datetime value) AstroDateTime
Converts a native calendar struct into an AstroDateTime using the same second rounding the time API applies to reverseJulianDay.
readJulianDate<S extends TimeScale>(taiyin_split_julian_date value) JulianDate<S>
Reads a split Julian date returned by the C ABI into a JulianDate.
validatedNativeArrayCount(int count, String noun) int
Validates a native-required element count before allocating the buffer.
validatedNativeResultCount(int count, int capacity) int
Validates the element count reported by a native array fill against the capacity of the buffer that was passed in.
validateNativeCalendar(AstroDateTime value) → void
Validates fields that can narrow at the native calendar ABI boundary.
validateNativeFinite(double value, String name) → void
Requires a finite floating-point value at an FFI boundary.
validateNativeInt32(int value, String name) → void
Validates a Dart integer before passing it to a native int32_t field.
validateNativeJulianDate<S extends TimeScale>(JulianDate<S> value) → void
Validates fields that can narrow at the native split-JD ABI boundary.
validateNativeSize(int value, String name) → void
Validates a non-negative Dart integer before passing it as native size_t.
validateNativeUint16(int value, String name) → void
Validates a Dart integer before passing it to a native uint16_t field.
validateNativeUint32(int value, String name) → void
Validates a Dart integer before passing it to a native uint32_t field.
validateNativeUint8(int value, String name) → void
Validates a Dart integer before passing it to a native uint8_t field.
validateTaiyinNativeCompatibility({required int abiVersion, required int capabilities}) → void
Validates the native metadata available before any optional symbol lookup.
validateTaiyinRequiredSymbols({required bool providesSymbol(String symbol), Set<String> requiredSymbols = taiyinRequiredAbi9Symbols}) → void
Rejects incomplete ABI-10 builds before generated bindings lazily look up a missing symbol.
writeJulianDate<S extends TimeScale>(Arena arena, JulianDate<S> value) Pointer<taiyin_split_julian_date>
Marshals a split Julian date into an arena-owned C ABI struct.
writeNativeCalendar(TaiyinBindings bindings, Arena arena, AstroDateTime value) Pointer<taiyin_calendar_datetime>
Marshals an astronomical calendar value into an arena-owned C ABI struct.

Typedefs

Dart__darwin_clock_t = int
Dart__darwin_ct_rune_t = int
Dart__darwin_fsblkcnt_t = int
Dart__darwin_fsfilcnt_t = int
Dart__darwin_intptr_t = int
Dart__darwin_natural_t = int
Dart__darwin_nl_item = int
Dart__darwin_pthread_key_t = int
Dart__darwin_ptrdiff_t = int
Dart__darwin_size_t = int
Dart__darwin_ssize_t = int
Dart__darwin_time_t = int
Dart__darwin_wchar_t = int
Dart__darwin_wctrans_t = int
Dart__darwin_wint_t = int
Dart__int16_t = int
Dart__int32_t = int
Dart__int64_t = int
Dart__int8_t = int
Dart__uint16_t = int
Dart__uint32_t = int
Dart__uint64_t = int
Dart__uint8_t = int
Dartint_fast16_t = int
Dartint_fast32_t = int
Dartint_fast64_t = int
Dartint_fast8_t = int
Dartint_least16_t = int
Dartint_least32_t = int
Dartint_least64_t = int
Dartint_least8_t = int
Dartintmax_t = int
Dartregister_t = int
Darttaiyin_ayanamsha_evaluator_fnFunction = Darttaiyin_status Function(Pointer<taiyin_context> context, Pointer<taiyin_split_julian_date> jd_tt, int native_position_flags, Pointer<Double> out_ayanamsha_rad, Pointer<Void> user_data)
Darttaiyin_bool = int
Darttaiyin_call_result = int
Darttaiyin_ganzhi = int
Darttaiyin_house_system_evaluator_fnFunction = Darttaiyin_bool Function(Pointer<taiyin_house_system_dispatch_data> data, Pointer<Double> out_cusp_longitude_rad, Pointer<Void> user_data)
Darttaiyin_native_position_evaluator_fnFunction = Darttaiyin_status Function(Pointer<taiyin_context> context, int target_id, Pointer<taiyin_split_julian_date> jd_tdb, Pointer<taiyin_split_julian_date> jd_tt, int flags, Pointer<Double> out_position, Pointer<taiyin_ephemeris_diagnostic> diagnostic, Pointer<Void> user_data)
Darttaiyin_native_state_evaluator_fnFunction = Darttaiyin_status Function(Pointer<taiyin_context> context, int target_id, Pointer<taiyin_split_julian_date> jd_tdb, Pointer<taiyin_split_julian_date> jd_tt, int flags, Pointer<taiyin_cartesian_state> out_state, Pointer<taiyin_ephemeris_diagnostic> diagnostic, Pointer<Void> user_data)
Darttaiyin_status = int
Dartu_int16_t = int
Dartu_int32_t = int
Dartu_int64_t = int
Dartu_int8_t = int
Dartuint_fast16_t = int
Dartuint_fast32_t = int
Dartuint_fast64_t = int
Dartuint_fast8_t = int
Dartuint_least16_t = int
Dartuint_least32_t = int
Dartuint_least64_t = int
Dartuint_least8_t = int
Dartuintmax_t = int
Dartuser_long_t = int
Dartuser_off_t = int
Dartuser_ssize_t = int
Dartuser_time_t = int
DecodedCallResult = ({ResultFlags flags, int status})
Decoded status and execution facts from a native ABI call.
int_fast16_t = Int16
int_fast32_t = Int32
int_fast64_t = Int64
int_fast8_t = Int8
int_least16_t = Int16
int_least32_t = Int32
int_least64_t = Int64
int_least8_t = Int8
intmax_t = Long
ptrdiff_t = __darwin_ptrdiff_t
register_t = Int64
rsize_t = __darwin_size_t
syscall_arg_t = u_int64_t
taiyin_ayanamsha_evaluator_fn = Pointer<NativeFunction<taiyin_ayanamsha_evaluator_fnFunction>>
taiyin_ayanamsha_evaluator_fnFunction = taiyin_status Function(Pointer<taiyin_context> context, Pointer<taiyin_split_julian_date> jd_tt, Uint64 native_position_flags, Pointer<Double> out_ayanamsha_rad, Pointer<Void> user_data)
taiyin_bool = Uint8
taiyin_call_result = Int64
taiyin_ganzhi = Uint8
taiyin_house_system_evaluator_fn = Pointer<NativeFunction<taiyin_house_system_evaluator_fnFunction>>
taiyin_house_system_evaluator_fnFunction = taiyin_bool Function(Pointer<taiyin_house_system_dispatch_data> data, Pointer<Double> out_cusp_longitude_rad, Pointer<Void> user_data)
taiyin_native_position_evaluator_fn = Pointer<NativeFunction<taiyin_native_position_evaluator_fnFunction>>
taiyin_native_position_evaluator_fnFunction = taiyin_status Function(Pointer<taiyin_context> context, Int32 target_id, Pointer<taiyin_split_julian_date> jd_tdb, Pointer<taiyin_split_julian_date> jd_tt, Uint32 flags, Pointer<Double> out_position, Pointer<taiyin_ephemeris_diagnostic> diagnostic, Pointer<Void> user_data)
taiyin_native_state_evaluator_fn = Pointer<NativeFunction<taiyin_native_state_evaluator_fnFunction>>
taiyin_native_state_evaluator_fnFunction = taiyin_status Function(Pointer<taiyin_context> context, Int32 target_id, Pointer<taiyin_split_julian_date> jd_tdb, Pointer<taiyin_split_julian_date> jd_tt, Uint32 flags, Pointer<taiyin_cartesian_state> out_state, Pointer<taiyin_ephemeris_diagnostic> diagnostic, Pointer<Void> user_data)
taiyin_status = Int32
u_int16_t = UnsignedShort
u_int32_t = UnsignedInt
u_int64_t = UnsignedLongLong
u_int8_t = UnsignedChar
uint_fast16_t = Uint16
uint_fast32_t = Uint32
uint_fast64_t = Uint64
uint_fast8_t = Uint8
uint_least16_t = Uint16
uint_least32_t = Uint32
uint_least64_t = Uint64
uint_least8_t = Uint8
uintmax_t = UnsignedLong
user_addr_t = u_int64_t
user_long_t = Int64
user_off_t = Int64
user_size_t = u_int64_t
user_ssize_t = Int64
user_time_t = Int64
user_ulong_t = u_int64_t
wint_t = __darwin_wint_t