133d722a9Sopenharmony_ciuse proc_macro2::Ident; 233d722a9Sopenharmony_ci 333d722a9Sopenharmony_ci#[derive(Copy, Clone, PartialEq, Debug)] 433d722a9Sopenharmony_cipub enum Block<'a> { 533d722a9Sopenharmony_ci AnonymousNamespace, 633d722a9Sopenharmony_ci Namespace(&'static str), 733d722a9Sopenharmony_ci UserDefinedNamespace(&'a Ident), 833d722a9Sopenharmony_ci InlineNamespace(&'static str), 933d722a9Sopenharmony_ci ExternC, 1033d722a9Sopenharmony_ci} 1133d722a9Sopenharmony_ci 1233d722a9Sopenharmony_ciimpl<'a> Block<'a> { 1333d722a9Sopenharmony_ci pub fn write_begin(self, out: &mut String) { 1433d722a9Sopenharmony_ci if let Block::InlineNamespace(_) = self { 1533d722a9Sopenharmony_ci out.push_str("inline "); 1633d722a9Sopenharmony_ci } 1733d722a9Sopenharmony_ci self.write_common(out); 1833d722a9Sopenharmony_ci out.push_str(" {\n"); 1933d722a9Sopenharmony_ci } 2033d722a9Sopenharmony_ci 2133d722a9Sopenharmony_ci pub fn write_end(self, out: &mut String) { 2233d722a9Sopenharmony_ci out.push_str("} // "); 2333d722a9Sopenharmony_ci self.write_common(out); 2433d722a9Sopenharmony_ci out.push('\n'); 2533d722a9Sopenharmony_ci } 2633d722a9Sopenharmony_ci 2733d722a9Sopenharmony_ci fn write_common(self, out: &mut String) { 2833d722a9Sopenharmony_ci match self { 2933d722a9Sopenharmony_ci Block::AnonymousNamespace => out.push_str("namespace"), 3033d722a9Sopenharmony_ci Block::Namespace(name) => { 3133d722a9Sopenharmony_ci out.push_str("namespace "); 3233d722a9Sopenharmony_ci out.push_str(name); 3333d722a9Sopenharmony_ci } 3433d722a9Sopenharmony_ci Block::UserDefinedNamespace(name) => { 3533d722a9Sopenharmony_ci out.push_str("namespace "); 3633d722a9Sopenharmony_ci out.push_str(&name.to_string()); 3733d722a9Sopenharmony_ci } 3833d722a9Sopenharmony_ci Block::InlineNamespace(name) => { 3933d722a9Sopenharmony_ci out.push_str("namespace "); 4033d722a9Sopenharmony_ci out.push_str(name); 4133d722a9Sopenharmony_ci } 4233d722a9Sopenharmony_ci Block::ExternC => out.push_str("extern \"C\""), 4333d722a9Sopenharmony_ci } 4433d722a9Sopenharmony_ci } 4533d722a9Sopenharmony_ci} 46