[][src]Type Definition moore_vhdl::ty2::PhysicalSubtype

type PhysicalSubtype<'t> = ScalarSubtype<'t, dyn PhysicalType, BigInt>;

A subtype of an integer type.

Methods

impl<'t> PhysicalSubtype<'t>
[src]

pub fn new(
    mark: &'t TypeMark<'t>,
    range: Range<BigInt>
) -> Option<PhysicalSubtype<'t>>
[src]

Create a new integer subtype.

Returns Some(...) if range is a subrange of the integer, or None otherwise.

Example

use moore_vhdl::ty2::{Type, TypeMark, PhysicalUnit, PhysicalBasetype, PhysicalSubtype, Range};
use moore_vhdl::common::name::get_name_table;

let ty = PhysicalBasetype::new(Range::ascending(-1000isize, 1000isize), vec![
    PhysicalUnit::primary(get_name_table().intern("fs", false), 1),
    PhysicalUnit::secondary(get_name_table().intern("ps", false), 1000, 1000, 0),
], 0);
let tm = TypeMark::new(
    get_name_table().intern("TIME", false),
    &ty,
);
let a = PhysicalSubtype::new(&tm, Range::ascending(0isize, 100isize)).unwrap();
let b = PhysicalSubtype::new(&tm, Range::descending(100isize, 0isize)).unwrap();

assert_eq!(format!("{}", a), "TIME range 0 to 100");
assert_eq!(format!("{}", b), "TIME range 100 downto 0");

Trait Implementations

impl<'t> Type for PhysicalSubtype<'t>
[src]

fn is_equal(&self, other: &dyn Type) -> bool
[src]

Check if two types are equal.

fn is_implicitly_castable(&self, _into: &dyn Type) -> bool
[src]

Check if the type can be implicitly cast to another.

impl<'t> PhysicalType for PhysicalSubtype<'t>
[src]

fn resolution_func(&self) -> Option<usize>
[src]

The resolution function associated with this type.

fn as_basetype(&self) -> Option<&PhysicalBasetype>
[src]

Returns Some if self is a PhysicalBasetype, None otherwise.

fn unwrap_basetype(&self) -> &PhysicalBasetype
[src]

Returns an &PhysicalBasetype or panics if the type is not a basetype.

fn unwrap_subtype(&self) -> &PhysicalSubtype
[src]

Returns an &PhysicalSubtype or panics if the type is not a subtype.

impl<'t> Display for PhysicalSubtype<'t>
[src]