Struct EventPtrRaw
pub struct EventPtrRaw {
pub rid: u32,
pub token: Token,
pub offset: usize,
pub event: u32,
}Expand description
Raw EventPtr table row with unresolved event index
Represents the binary format of an EventPtr metadata table entry (table ID 0x13) as stored
in the metadata tables stream. EventPtr entries provide indirection for event table access,
primarily used in edit-and-continue scenarios where event ordering has been modified.
The EventPtr table serves as a mapping layer between logical event positions and physical
event locations in the Event table, enabling non-contiguous event arrangements while
maintaining consistent logical references.
§Indirection Logic
EventPtr provides the following indirection pattern:
- Logical Index: Position in
EventPtrtable (used by referencing metadata) - Physical Index: Value stored in
EventPtrentry (actual Event table position) - Resolution: Logical →
EventPtr[Logical]→Event[Physical]
§Edit-and-Continue Context
EventPtr tables are typically present only when needed for edit-and-continue scenarios:
- Original event ordering disrupted by code modifications
- Logical event references must remain stable across edit sessions
- Physical event locations may change but logical access remains consistent
§Reference
- ECMA-335 II.22.14 -
EventPtrtable specification
Fields§
§rid: u32Row identifier within the EventPtr metadata table
The 1-based index of this EventPtr row. Used for metadata token generation
and logical event indexing in indirection scenarios.
token: TokenMetadata token for this EventPtr row
Combines the table identifier (0x13 for EventPtr) with the row ID to create
a unique token. Format: 0x13000000 | rid
offset: usizeByte offset of this row within the metadata tables stream
Physical location of the raw EventPtr data within the metadata binary format.
Used for debugging and low-level metadata analysis.
event: u32Event table index (unresolved)
1-based index into the Event table pointing to the actual event. This provides
the physical location mapping for the logical event position represented by
this EventPtr entry’s row ID.
Implementations§
§impl EventPtrRaw
impl EventPtrRaw
pub fn to_owned(&self) -> Result<EventPtrRc>
pub fn to_owned(&self) -> Result<EventPtrRc>
Convert to owned EventPtr with validated data
This method converts the raw EventPtr entry into a fully validated EventPtr
structure with owned data. Since EventPtr entries contain only a single event
reference, the conversion is straightforward and primarily serves to establish
the owned data pattern consistent with other metadata tables.
§Returns
Returns EventPtrRc (Arc-wrapped EventPtr) on success, providing
shared ownership of the validated EventPtr data.
§Errors
Currently doesn’t fail, but returns Result for consistency with other
table conversion methods and future validation requirements.
pub fn apply(&self) -> Result<()>
pub fn apply(&self) -> Result<()>
Apply this EventPtr entry during metadata loading
Processes the raw EventPtr entry as part of the metadata loading framework.
Unlike other metadata tables, EventPtr entries don’t directly modify other
metadata structures since they serve purely as an indirection mechanism.
§Returns
Always returns Ok(()) since EventPtr entries don’t perform cross-table
modifications during the initial loading phase.
§Errors
This function never returns an error; it always returns Ok(()).
Trait Implementations§
§impl Clone for EventPtrRaw
impl Clone for EventPtrRaw
§fn clone(&self) -> EventPtrRaw
fn clone(&self) -> EventPtrRaw
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for EventPtrRaw
impl Debug for EventPtrRaw
§impl RowReadable for EventPtrRaw
impl RowReadable for EventPtrRaw
§fn row_read(
data: &[u8],
offset: &mut usize,
rid: u32,
sizes: &TableInfoRef,
) -> Result<Self>
fn row_read( data: &[u8], offset: &mut usize, rid: u32, sizes: &TableInfoRef, ) -> Result<Self>
Read an EventPtr row from the metadata tables stream
Parses one EventPtr table row from the binary metadata stream, handling
variable-size indexes based on table size information. Advances the offset
to point to the next row after successful parsing.
§Arguments
data- The metadata tables stream binary dataoffset- Current position in the stream (updated after reading)rid- Row identifier for thisEventPtrentry (1-based)sizes- Table size information for determining index sizes
§Returns
Returns a parsed EventPtrRaw instance with all fields populated
from the binary data.
§Errors
- The data stream is truncated or corrupted
- Event index values exceed expected ranges
- Binary parsing encounters invalid data
§impl RowWritable for EventPtrRaw
impl RowWritable for EventPtrRaw
§fn row_write(
&self,
data: &mut [u8],
offset: &mut usize,
_rid: u32,
sizes: &TableInfoRef,
) -> Result<()>
fn row_write( &self, data: &mut [u8], offset: &mut usize, _rid: u32, sizes: &TableInfoRef, ) -> Result<()>
Write a EventPtr table row to binary data
Serializes one EventPtr table entry to the metadata tables stream format, handling
variable-width table indexes based on the table size information.
§Arguments
data- Target binary buffer for metadata tables streamoffset- Current write position (updated after writing)rid- Row identifier for this event pointer entry (unused forEventPtr)sizes- Table sizing information for writing table indexes
§Returns
Ok(())- Successfully serialized event pointer rowErr(crate::Error)- If buffer is too small or write fails
§Binary Format
Fields are written in the exact order specified by ECMA-335:
- Event table index (2/4 bytes, little-endian)
§impl TableRow for EventPtrRaw
impl TableRow for EventPtrRaw
§fn row_size(sizes: &TableInfoRef) -> u32
fn row_size(sizes: &TableInfoRef) -> u32
Calculate the binary size of one EventPtr table row
Computes the total byte size required for one EventPtr row based on the
current metadata table sizes. The row size depends on whether the Event
table uses 2-byte or 4-byte indices.
§Arguments
sizes- Table sizing information for calculating variable-width fields
§Returns
Total byte size of one EventPtr table row
Auto Trait Implementations§
impl Freeze for EventPtrRaw
impl RefUnwindSafe for EventPtrRaw
impl Send for EventPtrRaw
impl Sync for EventPtrRaw
impl Unpin for EventPtrRaw
impl UnsafeUnpin for EventPtrRaw
impl UnwindSafe for EventPtrRaw
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for T
impl<T> Downcast for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.