Skip to main content

EventPtrRaw

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 EventPtr table (used by referencing metadata)
  • Physical Index: Value stored in EventPtr entry (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

Fields§

§rid: u32

Row 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: Token

Metadata 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: usize

Byte 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: u32

Event 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

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<()>

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

§

fn clone(&self) -> EventPtrRaw

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for EventPtrRaw

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
§

impl RowReadable for EventPtrRaw

§

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 data
  • offset - Current position in the stream (updated after reading)
  • rid - Row identifier for this EventPtr entry (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
§

const TABLE_ID: TableId = TableId::EventPtr

The table ID for this row type. Read more
§

impl RowWritable for EventPtrRaw

§

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 stream
  • offset - Current write position (updated after writing)
  • rid - Row identifier for this event pointer entry (unused for EventPtr)
  • sizes - Table sizing information for writing table indexes
§Returns
  • Ok(()) - Successfully serialized event pointer row
  • Err(crate::Error) - If buffer is too small or write fails
§Binary Format

Fields are written in the exact order specified by ECMA-335:

  1. Event table index (2/4 bytes, little-endian)
§

impl TableRow for EventPtrRaw

§

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§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Source§

fn type_name(&self) -> &'static str

Gets the type name of self
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: AsAny + ?Sized,

Source§

fn is<T>(&self) -> bool
where T: AsAny,

Returns true if the boxed type is the same as T. Read more
Source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: AsAny,

Forward to the method defined on the type Any.
Source§

fn downcast_mut<T>(&mut self) -> Option<&mut T>
where T: AsAny,

Forward to the method defined on the type Any.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, A> IntoAst<A> for T
where T: Into<A>, A: Ast,

Source§

fn into_ast(self, _a: &A) -> A

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryClone for T
where T: Clone,

Source§

fn try_clone(&self) -> Result<T, Error>

Clones self, possibly returning an error.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more