summaryrefslogtreecommitdiff
path: root/src/viewmodel/vcard.rs
diff options
context:
space:
mode:
authorjelemux <jeremias.weber@protonmail.com>2021-02-03 07:08:49 +0100
committerjelemux <jeremias.weber@protonmail.com>2021-02-03 07:08:49 +0100
commit51bf8e89ce07864b70d7138bbc3958faf499cc67 (patch)
tree31e870adb0bcd539135059613e05a0f31e08e987 /src/viewmodel/vcard.rs
parent94a0e361e180223adf2bc9760c8810dfa3c2681f (diff)
downloadwasm-card-51bf8e89ce07864b70d7138bbc3958faf499cc67.tar.gz
wasm-card-51bf8e89ce07864b70d7138bbc3958faf499cc67.tar.bz2
now it compiles
Diffstat (limited to 'src/viewmodel/vcard.rs')
-rw-r--r--src/viewmodel/vcard.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/viewmodel/vcard.rs b/src/viewmodel/vcard.rs
new file mode 100644
index 0000000..2d415b7
--- /dev/null
+++ b/src/viewmodel/vcard.rs
@@ -0,0 +1,32 @@
+use yewtil::ptr::Irc;
+use crate::viewmodel::telephone::Telephone;
+use crate::viewmodel::address::Address;
+use crate::viewmodel::name::Name;
+
+#[derive(Clone, Debug)]
+pub struct VCardData {
+ pub names: Vec<Irc<Name>>,
+ pub addresses: Vec<Irc<Address>>,
+ pub telephones: Vec<Irc<Telephone>>,
+}
+
+macro_rules! make_vec_adder_fn {
+ ( $fnname:ident $property:ident $($arg_name:ident : $arg_type:ty),* ) => {
+ pub fn $fnname(&mut self, $( $arg_name : $arg_type ),*) {
+ $(self.$property.push($arg_name);)*
+ }
+ };
+}
+
+impl VCardData {
+ pub fn new() -> Self {
+ Self {
+ names: Vec::new(),
+ addresses: Vec::new(),
+ telephones: Vec::new(),
+ }
+ }
+ make_vec_adder_fn!( add_name names name: Irc<Name> );
+ make_vec_adder_fn!( add_address addresses address: Irc<Address> );
+ make_vec_adder_fn!( add_telephone telephones telephone: Irc<Telephone> );
+} \ No newline at end of file