Carry full company issue calendar tuples
This commit is contained in:
parent
3b99f6f626
commit
126a637bc2
7 changed files with 95 additions and 10 deletions
|
|
@ -70,8 +70,9 @@ The fixed-world finance neighborhood itself is now widened to 16 dwords rooted a
|
||||||
so future issue-`0x38/0x39` closure can build on a broader owned restore-state window rather than
|
so future issue-`0x38/0x39` closure can build on a broader owned restore-state window rather than
|
||||||
another narrow one-off probe. The next company-side seam is now bundled too: a shared company
|
another narrow one-off probe. The next company-side seam is now bundled too: a shared company
|
||||||
market reader now exposes outstanding shares, assigned shares, public float, rounded cached share
|
market reader now exposes outstanding shares, assigned shares, public float, rounded cached share
|
||||||
price, salary lanes, bonus amount, and issue-calendar words from the owned annual-finance state
|
price, salary lanes, bonus amount, and the full two-word current/prior issue-calendar tuples from
|
||||||
instead of leaving that logic spread across summary helpers. The same annual-finance state now also
|
the owned annual-finance state instead of leaving that logic spread across summary helpers. The
|
||||||
|
same annual-finance state now also
|
||||||
derives elapsed years since founding, last dividend, and last bankruptcy from the runtime calendar,
|
derives elapsed years since founding, last dividend, and last bankruptcy from the runtime calendar,
|
||||||
which lines up directly with the grounded annual finance-policy gates in the atlas. Live bond-slot
|
which lines up directly with the grounded annual finance-policy gates in the atlas. Live bond-slot
|
||||||
count is now carried through the same owned company market and annual-finance state too, which
|
count is now carried through the same owned company market and annual-finance state too, which
|
||||||
|
|
|
||||||
|
|
@ -5057,7 +5057,9 @@ mod tests {
|
||||||
last_bankruptcy_year: 0,
|
last_bankruptcy_year: 0,
|
||||||
last_dividend_year: 1837,
|
last_dividend_year: 1837,
|
||||||
current_issue_calendar_word: 5,
|
current_issue_calendar_word: 5,
|
||||||
|
current_issue_calendar_word_2: 6,
|
||||||
prior_issue_calendar_word: 4,
|
prior_issue_calendar_word: 4,
|
||||||
|
prior_issue_calendar_word_2: 5,
|
||||||
city_connection_latch: true,
|
city_connection_latch: true,
|
||||||
linked_transit_latch: false,
|
linked_transit_latch: false,
|
||||||
stat_band_root_0cfb_candidates: Vec::new(),
|
stat_band_root_0cfb_candidates: Vec::new(),
|
||||||
|
|
@ -5106,7 +5108,9 @@ mod tests {
|
||||||
last_bankruptcy_year: 0,
|
last_bankruptcy_year: 0,
|
||||||
last_dividend_year: 0,
|
last_dividend_year: 0,
|
||||||
current_issue_calendar_word: 3,
|
current_issue_calendar_word: 3,
|
||||||
|
current_issue_calendar_word_2: 4,
|
||||||
prior_issue_calendar_word: 2,
|
prior_issue_calendar_word: 2,
|
||||||
|
prior_issue_calendar_word_2: 3,
|
||||||
city_connection_latch: false,
|
city_connection_latch: false,
|
||||||
linked_transit_latch: true,
|
linked_transit_latch: true,
|
||||||
stat_band_root_0cfb_candidates: Vec::new(),
|
stat_band_root_0cfb_candidates: Vec::new(),
|
||||||
|
|
@ -6398,7 +6402,9 @@ mod tests {
|
||||||
last_bankruptcy_year: 0,
|
last_bankruptcy_year: 0,
|
||||||
last_dividend_year: 1838,
|
last_dividend_year: 1838,
|
||||||
current_issue_calendar_word: 4,
|
current_issue_calendar_word: 4,
|
||||||
|
current_issue_calendar_word_2: 5,
|
||||||
prior_issue_calendar_word: 3,
|
prior_issue_calendar_word: 3,
|
||||||
|
prior_issue_calendar_word_2: 4,
|
||||||
city_connection_latch: false,
|
city_connection_latch: false,
|
||||||
linked_transit_latch: true,
|
linked_transit_latch: true,
|
||||||
stat_band_root_0cfb_candidates: Vec::new(),
|
stat_band_root_0cfb_candidates: Vec::new(),
|
||||||
|
|
|
||||||
|
|
@ -85,8 +85,12 @@ pub struct RuntimeCompanyMarketState {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub current_issue_calendar_word: u32,
|
pub current_issue_calendar_word: u32,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
pub current_issue_calendar_word_2: u32,
|
||||||
|
#[serde(default)]
|
||||||
pub prior_issue_calendar_word: u32,
|
pub prior_issue_calendar_word: u32,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
pub prior_issue_calendar_word_2: u32,
|
||||||
|
#[serde(default)]
|
||||||
pub city_connection_latch: bool,
|
pub city_connection_latch: bool,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub linked_transit_latch: bool,
|
pub linked_transit_latch: bool,
|
||||||
|
|
@ -125,7 +129,11 @@ pub struct RuntimeCompanyAnnualFinanceState {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub years_since_last_dividend: Option<u32>,
|
pub years_since_last_dividend: Option<u32>,
|
||||||
pub current_issue_calendar_word: u32,
|
pub current_issue_calendar_word: u32,
|
||||||
|
#[serde(default)]
|
||||||
|
pub current_issue_calendar_word_2: u32,
|
||||||
pub prior_issue_calendar_word: u32,
|
pub prior_issue_calendar_word: u32,
|
||||||
|
#[serde(default)]
|
||||||
|
pub prior_issue_calendar_word_2: u32,
|
||||||
pub city_connection_latch: bool,
|
pub city_connection_latch: bool,
|
||||||
pub linked_transit_latch: bool,
|
pub linked_transit_latch: bool,
|
||||||
}
|
}
|
||||||
|
|
@ -373,7 +381,9 @@ pub enum RuntimeCompanyMarketMetric {
|
||||||
ChairmanSalaryCurrent,
|
ChairmanSalaryCurrent,
|
||||||
ChairmanBonusAmount,
|
ChairmanBonusAmount,
|
||||||
CurrentIssueCalendarWord,
|
CurrentIssueCalendarWord,
|
||||||
|
CurrentIssueCalendarWord2,
|
||||||
PriorIssueCalendarWord,
|
PriorIssueCalendarWord,
|
||||||
|
PriorIssueCalendarWord2,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
|
|
@ -1955,7 +1965,9 @@ pub fn runtime_company_annual_finance_state(
|
||||||
years_since_last_bankruptcy,
|
years_since_last_bankruptcy,
|
||||||
years_since_last_dividend,
|
years_since_last_dividend,
|
||||||
current_issue_calendar_word: market_state.current_issue_calendar_word,
|
current_issue_calendar_word: market_state.current_issue_calendar_word,
|
||||||
|
current_issue_calendar_word_2: market_state.current_issue_calendar_word_2,
|
||||||
prior_issue_calendar_word: market_state.prior_issue_calendar_word,
|
prior_issue_calendar_word: market_state.prior_issue_calendar_word,
|
||||||
|
prior_issue_calendar_word_2: market_state.prior_issue_calendar_word_2,
|
||||||
city_connection_latch: market_state.city_connection_latch,
|
city_connection_latch: market_state.city_connection_latch,
|
||||||
linked_transit_latch: market_state.linked_transit_latch,
|
linked_transit_latch: market_state.linked_transit_latch,
|
||||||
})
|
})
|
||||||
|
|
@ -1997,9 +2009,15 @@ pub fn runtime_company_market_value(
|
||||||
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord => {
|
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord => {
|
||||||
Some(annual_finance_state.current_issue_calendar_word as i64)
|
Some(annual_finance_state.current_issue_calendar_word as i64)
|
||||||
}
|
}
|
||||||
|
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord2 => {
|
||||||
|
Some(annual_finance_state.current_issue_calendar_word_2 as i64)
|
||||||
|
}
|
||||||
RuntimeCompanyMarketMetric::PriorIssueCalendarWord => {
|
RuntimeCompanyMarketMetric::PriorIssueCalendarWord => {
|
||||||
Some(annual_finance_state.prior_issue_calendar_word as i64)
|
Some(annual_finance_state.prior_issue_calendar_word as i64)
|
||||||
}
|
}
|
||||||
|
RuntimeCompanyMarketMetric::PriorIssueCalendarWord2 => {
|
||||||
|
Some(annual_finance_state.prior_issue_calendar_word_2 as i64)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4262,7 +4280,9 @@ mod tests {
|
||||||
last_bankruptcy_year: 0,
|
last_bankruptcy_year: 0,
|
||||||
last_dividend_year: 1841,
|
last_dividend_year: 1841,
|
||||||
current_issue_calendar_word: 5,
|
current_issue_calendar_word: 5,
|
||||||
|
current_issue_calendar_word_2: 6,
|
||||||
prior_issue_calendar_word: 4,
|
prior_issue_calendar_word: 4,
|
||||||
|
prior_issue_calendar_word_2: 5,
|
||||||
city_connection_latch: true,
|
city_connection_latch: true,
|
||||||
linked_transit_latch: false,
|
linked_transit_latch: false,
|
||||||
..RuntimeCompanyMarketState::default()
|
..RuntimeCompanyMarketState::default()
|
||||||
|
|
@ -4295,7 +4315,9 @@ mod tests {
|
||||||
years_since_last_bankruptcy: None,
|
years_since_last_bankruptcy: None,
|
||||||
years_since_last_dividend: None,
|
years_since_last_dividend: None,
|
||||||
current_issue_calendar_word: 5,
|
current_issue_calendar_word: 5,
|
||||||
|
current_issue_calendar_word_2: 6,
|
||||||
prior_issue_calendar_word: 4,
|
prior_issue_calendar_word: 4,
|
||||||
|
prior_issue_calendar_word_2: 5,
|
||||||
city_connection_latch: true,
|
city_connection_latch: true,
|
||||||
linked_transit_latch: false,
|
linked_transit_latch: false,
|
||||||
})
|
})
|
||||||
|
|
@ -4390,7 +4412,9 @@ mod tests {
|
||||||
last_bankruptcy_year: 0,
|
last_bankruptcy_year: 0,
|
||||||
last_dividend_year: 1842,
|
last_dividend_year: 1842,
|
||||||
current_issue_calendar_word: 9,
|
current_issue_calendar_word: 9,
|
||||||
|
current_issue_calendar_word_2: 10,
|
||||||
prior_issue_calendar_word: 8,
|
prior_issue_calendar_word: 8,
|
||||||
|
prior_issue_calendar_word_2: 9,
|
||||||
..RuntimeCompanyMarketState::default()
|
..RuntimeCompanyMarketState::default()
|
||||||
},
|
},
|
||||||
)]),
|
)]),
|
||||||
|
|
@ -4446,6 +4470,14 @@ mod tests {
|
||||||
),
|
),
|
||||||
Some(9)
|
Some(9)
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
runtime_company_market_value(
|
||||||
|
&state,
|
||||||
|
7,
|
||||||
|
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord2
|
||||||
|
),
|
||||||
|
Some(10)
|
||||||
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
runtime_company_market_value(
|
runtime_company_market_value(
|
||||||
&state,
|
&state,
|
||||||
|
|
@ -4454,6 +4486,14 @@ mod tests {
|
||||||
),
|
),
|
||||||
Some(8)
|
Some(8)
|
||||||
);
|
);
|
||||||
|
assert_eq!(
|
||||||
|
runtime_company_market_value(
|
||||||
|
&state,
|
||||||
|
7,
|
||||||
|
RuntimeCompanyMarketMetric::PriorIssueCalendarWord2
|
||||||
|
),
|
||||||
|
Some(9)
|
||||||
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
runtime_company_market_value(
|
runtime_company_market_value(
|
||||||
&state,
|
&state,
|
||||||
|
|
|
||||||
|
|
@ -3497,7 +3497,9 @@ const SAVE_COMPANY_RECORD_MERGER_COOLDOWN_OFFSET: usize = 0x15f;
|
||||||
const SAVE_COMPANY_RECORD_FOUNDING_YEAR_OFFSET: usize = 0x157;
|
const SAVE_COMPANY_RECORD_FOUNDING_YEAR_OFFSET: usize = 0x157;
|
||||||
const SAVE_COMPANY_RECORD_LAST_BANKRUPTCY_YEAR_OFFSET: usize = 0x163;
|
const SAVE_COMPANY_RECORD_LAST_BANKRUPTCY_YEAR_OFFSET: usize = 0x163;
|
||||||
const SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET: usize = 0x16b;
|
const SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET: usize = 0x16b;
|
||||||
|
const SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2: usize = 0x16f;
|
||||||
const SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET: usize = 0x173;
|
const SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET: usize = 0x173;
|
||||||
|
const SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2: usize = 0x177;
|
||||||
const SAVE_COMPANY_RECORD_TAKEOVER_COOLDOWN_OFFSET: usize = 0x289;
|
const SAVE_COMPANY_RECORD_TAKEOVER_COOLDOWN_OFFSET: usize = 0x289;
|
||||||
const SAVE_COMPANY_RECORD_LAST_DIVIDEND_YEAR_OFFSET: usize = 0x0d2d;
|
const SAVE_COMPANY_RECORD_LAST_DIVIDEND_YEAR_OFFSET: usize = 0x0d2d;
|
||||||
const SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET: usize = 0x0d18;
|
const SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET: usize = 0x0d18;
|
||||||
|
|
@ -3511,7 +3513,7 @@ const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_0CFB_OFFSET: usize = 0x0cfb;
|
||||||
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_0D7F_OFFSET: usize = 0x0d7f;
|
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_0D7F_OFFSET: usize = 0x0d7f;
|
||||||
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_1C47_OFFSET: usize = 0x1c47;
|
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_1C47_OFFSET: usize = 0x1c47;
|
||||||
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS: usize = 32;
|
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS: usize = 32;
|
||||||
const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 7] = [
|
const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 9] = [
|
||||||
("mutable_support_scalar", 0x4f),
|
("mutable_support_scalar", 0x4f),
|
||||||
("young_company_support_scalar", 0x57),
|
("young_company_support_scalar", 0x57),
|
||||||
(
|
(
|
||||||
|
|
@ -3527,10 +3529,18 @@ const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 7] = [
|
||||||
"current_issue_calendar_word",
|
"current_issue_calendar_word",
|
||||||
SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET,
|
SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
"current_issue_calendar_word_2",
|
||||||
|
SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2,
|
||||||
|
),
|
||||||
(
|
(
|
||||||
"prior_issue_calendar_word",
|
"prior_issue_calendar_word",
|
||||||
SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET,
|
SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
"prior_issue_calendar_word_2",
|
||||||
|
SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2,
|
||||||
|
),
|
||||||
];
|
];
|
||||||
const SAVE_COMPANY_RECORD_POST_CAPACITY_CANDIDATE_FIELDS: [(&str, usize); 6] = [
|
const SAVE_COMPANY_RECORD_POST_CAPACITY_CANDIDATE_FIELDS: [(&str, usize); 6] = [
|
||||||
("post_capacity_word_1", 0x7684),
|
("post_capacity_word_1", 0x7684),
|
||||||
|
|
@ -3650,10 +3660,18 @@ fn parse_save_company_roster_probe(
|
||||||
bytes,
|
bytes,
|
||||||
record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET,
|
record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET,
|
||||||
)?;
|
)?;
|
||||||
|
let current_issue_calendar_word_2 = read_u32_at(
|
||||||
|
bytes,
|
||||||
|
record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2,
|
||||||
|
)?;
|
||||||
let prior_issue_calendar_word = read_u32_at(
|
let prior_issue_calendar_word = read_u32_at(
|
||||||
bytes,
|
bytes,
|
||||||
record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET,
|
record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET,
|
||||||
)?;
|
)?;
|
||||||
|
let prior_issue_calendar_word_2 = read_u32_at(
|
||||||
|
bytes,
|
||||||
|
record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2,
|
||||||
|
)?;
|
||||||
let city_connection_latch = read_u8_at(
|
let city_connection_latch = read_u8_at(
|
||||||
bytes,
|
bytes,
|
||||||
record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET,
|
record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET,
|
||||||
|
|
@ -3725,7 +3743,9 @@ fn parse_save_company_roster_probe(
|
||||||
last_bankruptcy_year,
|
last_bankruptcy_year,
|
||||||
last_dividend_year,
|
last_dividend_year,
|
||||||
current_issue_calendar_word,
|
current_issue_calendar_word,
|
||||||
|
current_issue_calendar_word_2,
|
||||||
prior_issue_calendar_word,
|
prior_issue_calendar_word,
|
||||||
|
prior_issue_calendar_word_2,
|
||||||
city_connection_latch,
|
city_connection_latch,
|
||||||
linked_transit_latch,
|
linked_transit_latch,
|
||||||
stat_band_root_0cfb_candidates: stat_band_root_0cfb_candidates
|
stat_band_root_0cfb_candidates: stat_band_root_0cfb_candidates
|
||||||
|
|
@ -15958,7 +15978,9 @@ mod tests {
|
||||||
last_bankruptcy_year,
|
last_bankruptcy_year,
|
||||||
last_dividend_year,
|
last_dividend_year,
|
||||||
current_issue_calendar_word,
|
current_issue_calendar_word,
|
||||||
|
current_issue_calendar_word_2,
|
||||||
prior_issue_calendar_word,
|
prior_issue_calendar_word,
|
||||||
|
prior_issue_calendar_word_2,
|
||||||
city_connection_latch,
|
city_connection_latch,
|
||||||
linked_transit_latch,
|
linked_transit_latch,
|
||||||
),
|
),
|
||||||
|
|
@ -15984,7 +16006,9 @@ mod tests {
|
||||||
1851u32,
|
1851u32,
|
||||||
1848u32,
|
1848u32,
|
||||||
7u32,
|
7u32,
|
||||||
|
8u32,
|
||||||
6u32,
|
6u32,
|
||||||
|
7u32,
|
||||||
true,
|
true,
|
||||||
false,
|
false,
|
||||||
),
|
),
|
||||||
|
|
@ -16009,7 +16033,9 @@ mod tests {
|
||||||
0u32,
|
0u32,
|
||||||
1850u32,
|
1850u32,
|
||||||
3u32,
|
3u32,
|
||||||
|
4u32,
|
||||||
2u32,
|
2u32,
|
||||||
|
3u32,
|
||||||
false,
|
false,
|
||||||
true,
|
true,
|
||||||
),
|
),
|
||||||
|
|
@ -16095,9 +16121,15 @@ mod tests {
|
||||||
bytes[record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET
|
bytes[record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET
|
||||||
..record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET + 4]
|
..record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET + 4]
|
||||||
.copy_from_slice(¤t_issue_calendar_word.to_le_bytes());
|
.copy_from_slice(¤t_issue_calendar_word.to_le_bytes());
|
||||||
|
bytes[record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2
|
||||||
|
..record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2 + 4]
|
||||||
|
.copy_from_slice(¤t_issue_calendar_word_2.to_le_bytes());
|
||||||
bytes[record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET
|
bytes[record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET
|
||||||
..record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET + 4]
|
..record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET + 4]
|
||||||
.copy_from_slice(&prior_issue_calendar_word.to_le_bytes());
|
.copy_from_slice(&prior_issue_calendar_word.to_le_bytes());
|
||||||
|
bytes[record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2
|
||||||
|
..record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2 + 4]
|
||||||
|
.copy_from_slice(&prior_issue_calendar_word_2.to_le_bytes());
|
||||||
bytes[record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET] =
|
bytes[record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET] =
|
||||||
u8::from(city_connection_latch);
|
u8::from(city_connection_latch);
|
||||||
bytes[record_offset + SAVE_COMPANY_RECORD_LINKED_TRANSIT_LATCH_OFFSET] =
|
bytes[record_offset + SAVE_COMPANY_RECORD_LINKED_TRANSIT_LATCH_OFFSET] =
|
||||||
|
|
@ -16177,7 +16209,9 @@ mod tests {
|
||||||
assert_eq!(market_state.last_bankruptcy_year, 1851);
|
assert_eq!(market_state.last_bankruptcy_year, 1851);
|
||||||
assert_eq!(market_state.last_dividend_year, 1848);
|
assert_eq!(market_state.last_dividend_year, 1848);
|
||||||
assert_eq!(market_state.current_issue_calendar_word, 7);
|
assert_eq!(market_state.current_issue_calendar_word, 7);
|
||||||
|
assert_eq!(market_state.current_issue_calendar_word_2, 8);
|
||||||
assert_eq!(market_state.prior_issue_calendar_word, 6);
|
assert_eq!(market_state.prior_issue_calendar_word, 6);
|
||||||
|
assert_eq!(market_state.prior_issue_calendar_word_2, 7);
|
||||||
assert!(market_state.city_connection_latch);
|
assert!(market_state.city_connection_latch);
|
||||||
assert!(!market_state.linked_transit_latch);
|
assert!(!market_state.linked_transit_latch);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|
@ -16221,7 +16255,9 @@ mod tests {
|
||||||
assert_eq!(second_market_state.chairman_bonus_amount, 0);
|
assert_eq!(second_market_state.chairman_bonus_amount, 0);
|
||||||
assert_eq!(second_market_state.last_dividend_year, 1850);
|
assert_eq!(second_market_state.last_dividend_year, 1850);
|
||||||
assert_eq!(second_market_state.current_issue_calendar_word, 3);
|
assert_eq!(second_market_state.current_issue_calendar_word, 3);
|
||||||
|
assert_eq!(second_market_state.current_issue_calendar_word_2, 4);
|
||||||
assert_eq!(second_market_state.prior_issue_calendar_word, 2);
|
assert_eq!(second_market_state.prior_issue_calendar_word, 2);
|
||||||
|
assert_eq!(second_market_state.prior_issue_calendar_word_2, 3);
|
||||||
assert!(!second_market_state.city_connection_latch);
|
assert!(!second_market_state.city_connection_latch);
|
||||||
assert!(second_market_state.linked_transit_latch);
|
assert!(second_market_state.linked_transit_latch);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1981,7 +1981,9 @@ mod tests {
|
||||||
last_bankruptcy_year: 0,
|
last_bankruptcy_year: 0,
|
||||||
last_dividend_year: 1841,
|
last_dividend_year: 1841,
|
||||||
current_issue_calendar_word: 5,
|
current_issue_calendar_word: 5,
|
||||||
|
current_issue_calendar_word_2: 6,
|
||||||
prior_issue_calendar_word: 4,
|
prior_issue_calendar_word: 4,
|
||||||
|
prior_issue_calendar_word_2: 5,
|
||||||
city_connection_latch: true,
|
city_connection_latch: true,
|
||||||
linked_transit_latch: false,
|
linked_transit_latch: false,
|
||||||
stat_band_root_0cfb_candidates: vec![
|
stat_band_root_0cfb_candidates: vec![
|
||||||
|
|
|
||||||
|
|
@ -124,9 +124,9 @@ The highest-value next passes are now:
|
||||||
reader seam for assigned shares, public float, and rounded cached share price; the fixed-world
|
reader seam for assigned shares, public float, and rounded cached share price; the fixed-world
|
||||||
finance neighborhood is now widened to 16 dwords rooted at `[world+0x11]` so later issue-family
|
finance neighborhood is now widened to 16 dwords rooted at `[world+0x11]` so later issue-family
|
||||||
closure can target a broader owned restore-state window; the same annual-finance state now also
|
closure can target a broader owned restore-state window; the same annual-finance state now also
|
||||||
feeds a shared company market reader for stock-capital, salary, bonus, and issue-calendar values,
|
feeds a shared company market reader for stock-capital, salary, bonus, and the full two-word
|
||||||
and now derives elapsed years since founding, last dividend, and last bankruptcy for later annual
|
current/prior issue-calendar tuples, and now derives elapsed years since founding, last dividend,
|
||||||
finance-policy rehosting; live bond-slot count now travels through that same owned annual-finance
|
and last bankruptcy for later annual finance-policy rehosting; live bond-slot count now travels through that same owned annual-finance
|
||||||
state for the stock-capital branch gate, and the grounded bond table now also contributes both
|
state for the stock-capital branch gate, and the grounded bond table now also contributes both
|
||||||
the largest live bond principal and the chosen highest-coupon live bond principal into that same
|
the largest live bond principal and the chosen highest-coupon live bond principal into that same
|
||||||
owner-state surface
|
owner-state surface
|
||||||
|
|
|
||||||
|
|
@ -212,10 +212,10 @@ cached share price, which is a better base for later dividend / issue-calendar s
|
||||||
scattered single-field helpers. The fixed-world finance neighborhood is now widened to 16 dwords
|
scattered single-field helpers. The fixed-world finance neighborhood is now widened to 16 dwords
|
||||||
rooted at `[world+0x11]`, so later issue-`0x38/0x39` closure can build on a broader owned
|
rooted at `[world+0x11]`, so later issue-`0x38/0x39` closure can build on a broader owned
|
||||||
restore-state window instead of another narrow probe. The same owned company annual-finance state
|
restore-state window instead of another narrow probe. The same owned company annual-finance state
|
||||||
now also drives a shared company market reader seam for stock-capital, salary, bonus, and
|
now also drives a shared company market reader seam for stock-capital, salary, bonus, and the full
|
||||||
issue-calendar values, which is a better base for shellless finance simulation than summary-only
|
two-word current/prior issue-calendar tuples, which is a better base for shellless finance
|
||||||
helpers. That same owned annual-finance state now also derives elapsed years since founding, last
|
simulation than summary-only helpers. That same owned annual-finance state now also derives elapsed
|
||||||
dividend, and last bankruptcy from the runtime calendar, which lines up directly with the grounded
|
years since founding, last dividend, and last bankruptcy from the runtime calendar, which lines up directly with the grounded
|
||||||
annual finance-policy gates in the atlas. Live bond-slot count now also flows through that same
|
annual finance-policy gates in the atlas. Live bond-slot count now also flows through that same
|
||||||
owned company market and annual-finance state, matching the stock-capital branch gate that needs
|
owned company market and annual-finance state, matching the stock-capital branch gate that needs
|
||||||
at least two live bonds. The same grounded bond table now also contributes both the largest live
|
at least two live bonds. The same grounded bond table now also contributes both the largest live
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue