Consolidate Operand code
diff --git a/codegen/src/main.rs b/codegen/src/main.rs
index c128e06..cc48ddd 100644
--- a/codegen/src/main.rs
+++ b/codegen/src/main.rs
@@ -17,6 +17,7 @@
mod full;
mod gen;
mod json;
+mod operand;
mod parse;
mod version;
mod visit;
diff --git a/codegen/src/operand.rs b/codegen/src/operand.rs
new file mode 100644
index 0000000..db3bd18
--- /dev/null
+++ b/codegen/src/operand.rs
@@ -0,0 +1,38 @@
+use proc_macro2::TokenStream;
+use quote::quote;
+
+pub enum Operand {
+ Borrowed(TokenStream),
+ Owned(TokenStream),
+}
+
+pub use self::Operand::*;
+
+impl Operand {
+ pub fn tokens(&self) -> &TokenStream {
+ match self {
+ Borrowed(n) | Owned(n) => n,
+ }
+ }
+
+ pub fn ref_tokens(&self) -> TokenStream {
+ match self {
+ Borrowed(n) => n.clone(),
+ Owned(n) => quote!(&#n),
+ }
+ }
+
+ pub fn ref_mut_tokens(&self) -> TokenStream {
+ match self {
+ Borrowed(n) => n.clone(),
+ Owned(n) => quote!(&mut #n),
+ }
+ }
+
+ pub fn owned_tokens(&self) -> TokenStream {
+ match self {
+ Borrowed(n) => quote!(*#n),
+ Owned(n) => n.clone(),
+ }
+ }
+}
diff --git a/codegen/src/visit.rs b/codegen/src/visit.rs
index 818ad61..9f85df9 100644
--- a/codegen/src/visit.rs
+++ b/codegen/src/visit.rs
@@ -1,3 +1,4 @@
+use crate::operand::*;
use crate::{file, full, gen};
use inflections::Inflect;
use proc_macro2::{Span, TokenStream};
@@ -17,35 +18,6 @@
Ident::new(&name.to_snake_case(), Span::call_site())
}
-enum Operand {
- Borrowed(TokenStream),
- Owned(TokenStream),
-}
-
-use self::Operand::*;
-
-impl Operand {
- fn tokens(&self) -> &TokenStream {
- match self {
- Borrowed(n) | Owned(n) => n,
- }
- }
-
- fn ref_tokens(&self) -> TokenStream {
- match self {
- Borrowed(n) => n.clone(),
- Owned(n) => quote!(&#n),
- }
- }
-
- fn owned_tokens(&self) -> TokenStream {
- match self {
- Borrowed(n) => quote!(*#n),
- Owned(n) => n.clone(),
- }
- }
-}
-
fn simple_visit(item: &str, name: &Operand) -> TokenStream {
let ident = under_name(item);
let method = Ident::new(&format!("visit_{}", ident), Span::call_site());
diff --git a/codegen/src/visit_mut.rs b/codegen/src/visit_mut.rs
index 51d0c81..850ba56 100644
--- a/codegen/src/visit_mut.rs
+++ b/codegen/src/visit_mut.rs
@@ -1,3 +1,4 @@
+use crate::operand::*;
use crate::{file, full, gen};
use inflections::Inflect;
use proc_macro2::{Span, TokenStream};
@@ -17,35 +18,6 @@
Ident::new(&name.to_snake_case(), Span::call_site())
}
-enum Operand {
- Borrowed(TokenStream),
- Owned(TokenStream),
-}
-
-use self::Operand::*;
-
-impl Operand {
- fn tokens(&self) -> &TokenStream {
- match self {
- Borrowed(n) | Owned(n) => n,
- }
- }
-
- fn ref_mut_tokens(&self) -> TokenStream {
- match self {
- Borrowed(n) => n.clone(),
- Owned(n) => quote!(&mut #n),
- }
- }
-
- fn owned_tokens(&self) -> TokenStream {
- match self {
- Borrowed(n) => quote!(*#n),
- Owned(n) => n.clone(),
- }
- }
-}
-
fn simple_visit(item: &str, name: &Operand) -> TokenStream {
let ident = under_name(item);
let method = Ident::new(&format!("visit_{}_mut", ident), Span::call_site());