Struct reproto_backend::Environment
[−]
[src]
pub struct Environment { pub types: LinkedHashMap<RpTypeId, Loc<RpRegistered>>, pub decls: LinkedHashMap<RpTypeId, Rc<Loc<RpDecl>>>, pub used: LinkedHashMap<(RpVersionedPackage, String), RpVersionedPackage>, // some fields omitted }
Fields
types: LinkedHashMap<RpTypeId, Loc<RpRegistered>>
decls: LinkedHashMap<RpTypeId, Rc<Loc<RpDecl>>>
used: LinkedHashMap<(RpVersionedPackage, String), RpVersionedPackage>
Methods
impl Environment
[src]
Environment containing all loaded declarations.
fn new(
package_prefix: Option<RpPackage>,
resolver: Box<Resolver>
) -> Environment
package_prefix: Option<RpPackage>,
resolver: Box<Resolver>
) -> Environment
fn is_assignable_from(
&self,
package: &RpVersionedPackage,
target: &RpType,
source: &RpType
) -> Result<bool>
&self,
package: &RpVersionedPackage,
target: &RpType,
source: &RpType
) -> Result<bool>
Check if source is assignable to target.
fn constant<'a>(
&'a self,
pos: &Pos,
package: &'a RpVersionedPackage,
constant: &RpName,
target: &RpName
) -> Result<&'a RpRegistered>
&'a self,
pos: &Pos,
package: &'a RpVersionedPackage,
constant: &RpName,
target: &RpName
) -> Result<&'a RpRegistered>
Lookup registered constant.
fn instance<'a>(
&'a self,
pos: &Pos,
package: &'a RpVersionedPackage,
instance: &RpInstance,
target: &RpName
) -> Result<(&'a RpRegistered, InitFields)>
&'a self,
pos: &Pos,
package: &'a RpVersionedPackage,
instance: &RpInstance,
target: &RpName
) -> Result<(&'a RpRegistered, InitFields)>
Convert instance arguments to the known registered type of the instance, and a map containing the arguments being instantiated.
fn lookup<'a>(
&'a self,
package: &'a RpVersionedPackage,
lookup_name: &RpName
) -> Result<(&RpVersionedPackage, &'a RpRegistered)>
&'a self,
package: &'a RpVersionedPackage,
lookup_name: &RpName
) -> Result<(&RpVersionedPackage, &'a RpRegistered)>
Lookup the declaration matching the custom type.
fn load_object<O: Into<Box<Object>>>(
&mut self,
object: O,
version: Option<Version>,
package: Option<RpPackage>
) -> Result<Option<(RpVersionedPackage, RpFile)>>
&mut self,
object: O,
version: Option<Version>,
package: Option<RpPackage>
) -> Result<Option<(RpVersionedPackage, RpFile)>>
Load the provided Object into a RpFile
.
fn process_uses(
&mut self,
package: &RpVersionedPackage,
uses: Vec<Loc<RpUseDecl>>
) -> Result<()>
&mut self,
package: &RpVersionedPackage,
uses: Vec<Loc<RpUseDecl>>
) -> Result<()>
Process use declarations.
fn process_decls<I>(
&self,
package: &RpVersionedPackage,
input: I
) -> Result<LinkedHashMap<RpTypeId, Rc<Loc<RpDecl>>>> where
I: IntoIterator<Item = Loc<RpDecl>>,
&self,
package: &RpVersionedPackage,
input: I
) -> Result<LinkedHashMap<RpTypeId, Rc<Loc<RpDecl>>>> where
I: IntoIterator<Item = Loc<RpDecl>>,
Process and merge declarations.
Declarations are considered the same if they have the same type_id.
The same declarations are merged using Merge
.
fn process_types(
&mut self,
package: &RpVersionedPackage,
decls: &LinkedHashMap<RpTypeId, Rc<Loc<RpDecl>>>
) -> Result<LinkedHashMap<RpTypeId, Loc<RpRegistered>>>
&mut self,
package: &RpVersionedPackage,
decls: &LinkedHashMap<RpTypeId, Rc<Loc<RpDecl>>>
) -> Result<LinkedHashMap<RpTypeId, Loc<RpRegistered>>>
fn process_file(
&mut self,
package: &RpVersionedPackage,
file: RpFile
) -> Result<()>
&mut self,
package: &RpVersionedPackage,
file: RpFile
) -> Result<()>
fn find_visited_by_required(
&self,
required: &RpRequiredPackage
) -> Option<RpVersionedPackage>
&self,
required: &RpRequiredPackage
) -> Option<RpVersionedPackage>
fn import_file<P: AsRef<Path>>(
&mut self,
path: P
) -> Result<Option<RpVersionedPackage>>
&mut self,
path: P
) -> Result<Option<RpVersionedPackage>>
fn import(
&mut self,
required: &RpRequiredPackage
) -> Result<Option<RpVersionedPackage>>
&mut self,
required: &RpRequiredPackage
) -> Result<Option<RpVersionedPackage>>