Lines Matching refs:sb
33 StringBuilder sb; in EmitInterface() local
34 EmitInterface(sb); in EmitInterface()
35 String data = sb.ToString(); in EmitInterface()
51 void RustCodeEmitter::EmitInterface(StringBuilder& sb) in EmitInterface() argument
54 EmitLicense(sb); in EmitInterface()
55 sb.Append("\n"); in EmitInterface()
57 EmitMacros(sb); in EmitInterface()
58 EmitHeaders(sb); in EmitInterface()
59 sb.Append("\n"); in EmitInterface()
60 EmitCommands(sb); in EmitInterface()
61 sb.Append("\n"); in EmitInterface()
62 EmitRemoteObject(sb); in EmitInterface()
63 sb.Append("\n"); in EmitInterface()
64 EmitBrokers(sb); in EmitInterface()
65 sb.Append("\n"); in EmitInterface()
66 EmitRemoteRequest(sb); in EmitInterface()
67 sb.Append("\n"); in EmitInterface()
68 EmitStub(sb); in EmitInterface()
69 sb.Append("\n"); in EmitInterface()
70 EmitProxy(sb); in EmitInterface()
73 void RustCodeEmitter::EmitLicense(StringBuilder& sb) in EmitLicense() argument
75 sb.Append(metaInterface_->license_).Append("\n"); in EmitLicense()
78 void RustCodeEmitter::EmitMacros(StringBuilder& sb) in EmitMacros() argument
80 sb.Append("#![allow(missing_docs)]\n"); in EmitMacros()
81 sb.Append("#![allow(unused_variables)]\n"); in EmitMacros()
82 sb.Append("#![allow(unused_mut)]\n"); in EmitMacros()
83 sb.Append("\n"); in EmitMacros()
85 void RustCodeEmitter::EmitHeaders(StringBuilder& sb) in EmitHeaders() argument
87 EmitCommonHeaders(sb); in EmitHeaders()
88 EmitIPCHeaders(sb); in EmitHeaders()
89 if (EmitCustomHeaders(sb)) { in EmitHeaders()
90 sb.Append("\n"); in EmitHeaders()
94 void RustCodeEmitter::EmitIPCHeaders(StringBuilder& sb) in EmitIPCHeaders() argument
96 sb.Append("extern crate ipc_rust;\n"); in EmitIPCHeaders()
97 sb.Append("\n"); in EmitIPCHeaders()
98 sb.Append("use ipc_rust::{\n"); in EmitIPCHeaders()
99 sb.Append(" IRemoteBroker, IRemoteObj, RemoteStub, Result,\n"); in EmitIPCHeaders()
100 sb.Append(" RemoteObj, define_remote_object, FIRST_CALL_TRANSACTION\n"); in EmitIPCHeaders()
101 sb.Append("};\n"); in EmitIPCHeaders()
102 sb.Append("use ipc_rust::{MsgParcel, BorrowedMsgParcel};\n"); in EmitIPCHeaders()
103 sb.Append("\n"); in EmitIPCHeaders()
106 void RustCodeEmitter::EmitCommonHeaders(StringBuilder& sb) in EmitCommonHeaders() argument
114 sb.Append("use std::collections::HashMap;\n"); in EmitCommonHeaders()
125 sb.Append("\n"); in EmitCommonHeaders()
181 bool RustCodeEmitter::AppendRealPath(StringBuilder& sb, const String& fpnpp) in AppendRealPath() argument
187 sb.Append("use ").Append(result).Append(";\n"); in AppendRealPath()
191 bool RustCodeEmitter::EmitCustomHeaders(StringBuilder& sb) in EmitCustomHeaders() argument
196 bool addPathMsRes = AppendRealPath(sb, String(ms->namespace_) + String(ms->name_)); in EmitCustomHeaders()
203 bool addPathMiRes = AppendRealPath(sb, String(mi->namespace_) + String(mi->name_)); in EmitCustomHeaders()
210 void RustCodeEmitter::EmitCommands(StringBuilder& sb) in EmitCommands() argument
212 EmitCommandEnums(sb); in EmitCommands()
215 void RustCodeEmitter::AppendCommandEnums(StringBuilder& sb) in AppendCommandEnums() argument
218 sb.AppendFormat(" %s = FIRST_CALL_TRANSACTION,\n", in AppendCommandEnums()
224 sb.AppendFormat(" %s,\n", GetCodeFromMethod(mm->name_).string(), i); in AppendCommandEnums()
230 StringBuilder sb; in GetCodeFromMethod() local
231 sb.Append("Code"); in GetCodeFromMethod()
237 sb.Append(toupper(*p)); in GetCodeFromMethod()
240 sb.Append(*p); in GetCodeFromMethod()
247 return sb.ToString(); in GetCodeFromMethod()
252 StringBuilder sb; in GetNameFromParameter() local
258 sb.Append('p'); in GetNameFromParameter()
264 sb.Append('_'); in GetNameFromParameter()
265 sb.Append(tolower(*p)); in GetNameFromParameter()
267 sb.Append(*p); in GetNameFromParameter()
271 return sb.ToString(); in GetNameFromParameter()
274 void RustCodeEmitter::EmitCommandEnums(StringBuilder& sb) in EmitCommandEnums() argument
276 sb.AppendFormat("pub enum %sCode {\n", interfaceName_.string()); in EmitCommandEnums()
277 AppendCommandEnums(sb); in EmitCommandEnums()
278 sb.Append("}\n"); in EmitCommandEnums()
281 void RustCodeEmitter::EmitRemoteObject(StringBuilder& sb) in EmitRemoteObject() argument
283 sb.Append("define_remote_object!(\n"); in EmitRemoteObject()
285 sb.AppendFormat(" %s[\"%s\"] {\n", interfaceName_.string(), interfaceName_.string()); in EmitRemoteObject()
287 sb.AppendFormat(" %s[\"%s\"] {\n", interfaceName_.string(), interfaceFullName_.string()); in EmitRemoteObject()
289 sb.AppendFormat(" stub: %s(on_remote_request),\n", stubName_.string()); in EmitRemoteObject()
290 sb.AppendFormat(" proxy: %s,\n", proxyName_.string()); in EmitRemoteObject()
291 sb.Append(" }\n"); in EmitRemoteObject()
292 sb.Append(");\n"); in EmitRemoteObject()
295 void RustCodeEmitter::EmitBrokers(StringBuilder& sb) in EmitBrokers() argument
297 sb.AppendFormat("pub trait %s: IRemoteBroker {\n", interfaceName_.string()); in EmitBrokers()
298 AppendBrokerMethods(sb); in EmitBrokers()
299 sb.Append("}\n"); in EmitBrokers()
302 void RustCodeEmitter::WrapLine(StringBuilder& sb, int index, const String& prefix) in WrapLine() argument
305 sb.AppendFormat(",\n%s", prefix.string()); in WrapLine()
307 sb.Append(", "); in WrapLine()
311 void RustCodeEmitter::AppendBrokerMethods(StringBuilder& sb) in AppendBrokerMethods() argument
315 sb.AppendFormat(" fn %s(&self", mm->name_); in AppendBrokerMethods()
317 WrapLine(sb, i, " "); in AppendBrokerMethods()
318 AppendBrokerParameters(sb, mm->parameters_[i]); in AppendBrokerMethods()
320 …sb.AppendFormat(") -> Result<%s>;\n", ConvertType(metaComponent_->types_[mm->returnTypeIndex_]).st… in AppendBrokerMethods()
324 void RustCodeEmitter::AppendBrokerParameters(StringBuilder& sb, MetaParameter* mp) in AppendBrokerParameters() argument
326 sb.AppendFormat("%s: &%s", in AppendBrokerParameters()
371 void RustCodeEmitter::EmitRemoteRequest(StringBuilder& sb) in EmitRemoteRequest() argument
373 sb.AppendFormat("fn on_remote_request(stub: &dyn %s, code: u32, data: &BorrowedMsgParcel,\n", in EmitRemoteRequest()
375 sb.Append(" reply: &mut BorrowedMsgParcel) -> Result<()> {\n"); in EmitRemoteRequest()
376 sb.Append(" match code {\n"); in EmitRemoteRequest()
377 AddRemoteRequestMethods(sb); in EmitRemoteRequest()
378 sb.Append(" _ => Err(-1)\n"); in EmitRemoteRequest()
379 sb.Append(" }\n"); in EmitRemoteRequest()
380 sb.Append("}\n"); in EmitRemoteRequest()
383 void RustCodeEmitter::AddRemoteRequestParameters(StringBuilder& sb, MetaMethod* mm) in AddRemoteRequestParameters() argument
387 sb.AppendFormat("&%s", GetNameFromParameter(mp->name_).string()); in AddRemoteRequestParameters()
389 WrapLine(sb, i, " "); in AddRemoteRequestParameters()
394 void RustCodeEmitter::ReadListFromParcel(StringBuilder& sb, MetaType* mt, const String& result, in ReadListFromParcel() argument
397 sb.Append(prefix).AppendFormat("let %s : %s = %s.read()?;\n", in ReadListFromParcel()
401 void RustCodeEmitter::ReadMapFromParcel(StringBuilder& sb, MetaType* mt, const String& result, in ReadMapFromParcel() argument
404 sb.Append(prefix).AppendFormat("let mut %s = HashMap::new();\n", name.string()); in ReadMapFromParcel()
405 sb.Append(prefix).AppendFormat("let len = %s.read()?;\n", result.string()); in ReadMapFromParcel()
406 sb.Append(prefix).Append("for i in 0..len {\n"); in ReadMapFromParcel()
411 ReadFromParcel(sb, metaComponent_->types_[mt->nestedTypeIndexes_[0]], in ReadMapFromParcel()
413 ReadFromParcel(sb, metaComponent_->types_[mt->nestedTypeIndexes_[1]], in ReadMapFromParcel()
415 sb.Append(prefix + " ").AppendFormat("%s.insert(%s, %s);\n", in ReadMapFromParcel()
417 sb.Append(prefix).Append("}\n"); in ReadMapFromParcel()
420 void RustCodeEmitter::ReadFromParcel(StringBuilder& sb, MetaType* mt, const String& result, in ReadFromParcel() argument
424 ReadMapFromParcel(sb, mt, result, name, prefix); in ReadFromParcel()
426 ReadListFromParcel(sb, mt, result, name, prefix); in ReadFromParcel()
428 sb.Append(prefix).AppendFormat("let %s : %s = %s.read()?;\n", in ReadFromParcel()
433 void RustCodeEmitter::WriteListToParcel(StringBuilder& sb, MetaType* mt, const String& result, in WriteListToParcel() argument
436 sb.Append(prefix).AppendFormat("%s.write(&%s)?;\n", result.string(), name.string()); in WriteListToParcel()
439 void RustCodeEmitter::WriteMapToParcel(StringBuilder& sb, MetaType* mt, const String& result, in WriteMapToParcel() argument
442 …sb.Append(prefix).AppendFormat("%s.write(&(%s.len() as u32))?;\n", result.string(), name.string()); in WriteMapToParcel()
443 sb.Append(prefix).AppendFormat("for (key, value) in %s.iter() {\n", name.string()); in WriteMapToParcel()
444 …WriteToParcel(sb, metaComponent_->types_[mt->nestedTypeIndexes_[0]], result, "key", prefix + " … in WriteMapToParcel()
445 …WriteToParcel(sb, metaComponent_->types_[mt->nestedTypeIndexes_[1]], result, "value", prefix + " … in WriteMapToParcel()
446 sb.Append(prefix).Append("}\n"); in WriteMapToParcel()
449 void RustCodeEmitter::WriteToParcel(StringBuilder& sb, MetaType* mt, const String& result, in WriteToParcel() argument
453 WriteMapToParcel(sb, mt, result, name, prefix); in WriteToParcel()
455 WriteListToParcel(sb, mt, result, name, prefix); in WriteToParcel()
457 sb.Append(prefix).AppendFormat("%s.write(&%s)?;\n", result.string(), name.string()); in WriteToParcel()
461 void RustCodeEmitter::AddRemoteRequestMethods(StringBuilder& sb) in AddRemoteRequestMethods() argument
465 sb.AppendFormat(" %d => {\n", i + 1); in AddRemoteRequestMethods()
467 ReadFromParcel(sb, metaComponent_->types_[mm->parameters_[j]->typeIndex_], "data", in AddRemoteRequestMethods()
472 sb.AppendFormat(" let result = stub.%s(", mm->name_); in AddRemoteRequestMethods()
474 sb.AppendFormat(" stub.%s(", mm->name_); in AddRemoteRequestMethods()
476 AddRemoteRequestParameters(sb, mm); in AddRemoteRequestMethods()
477 sb.Append(")?;\n"); in AddRemoteRequestMethods()
479 WriteToParcel(sb, mt, "reply", "result", " "); in AddRemoteRequestMethods()
481 sb.Append(" Ok(())\n"); in AddRemoteRequestMethods()
482 sb.Append(" }\n"); in AddRemoteRequestMethods()
486 void RustCodeEmitter::EmitStub(StringBuilder& sb) in EmitStub() argument
488 sb.AppendFormat("impl %s for RemoteStub<%s> {\n", interfaceName_.string(), stubName_.string()); in EmitStub()
489 AppendStubMethods(sb); in EmitStub()
490 sb.Append("}\n"); in EmitStub()
493 void RustCodeEmitter::AppendStubParameters(StringBuilder& sb, MetaMethod* mm) in AppendStubParameters() argument
496 sb.Append(GetNameFromParameter(mm->parameters_[i]->name_)); in AppendStubParameters()
498 WrapLine(sb, i, " "); in AppendStubParameters()
503 void RustCodeEmitter::AppendStubMethods(StringBuilder& sb) in AppendStubMethods() argument
507 sb.AppendFormat(" fn %s(&self", mm->name_); in AppendStubMethods()
509 WrapLine(sb, i, " "); in AppendStubMethods()
510 AppendBrokerParameters(sb, mm->parameters_[i]); in AppendStubMethods()
513 sb.AppendFormat(") -> Result<%s> {\n", in AppendStubMethods()
515 sb.AppendFormat(" self.0.%s(", mm->name_); in AppendStubMethods()
516 AppendStubParameters(sb, mm); in AppendStubMethods()
517 sb.Append(")\n"); in AppendStubMethods()
518 sb.Append(" }\n"); in AppendStubMethods()
520 sb.Append("\n"); in AppendStubMethods()
525 void RustCodeEmitter::EmitProxy(StringBuilder& sb) in EmitProxy() argument
527 sb.AppendFormat("impl %s for %s {\n", interfaceName_.string(), proxyName_.string()); in EmitProxy()
528 AppendProxyMethods(sb); in EmitProxy()
529 sb.Append("}\n"); in EmitProxy()
532 void RustCodeEmitter::AppendProxyMethods(StringBuilder& sb) in AppendProxyMethods() argument
536 sb.AppendFormat(" fn %s(&self", mm->name_); in AppendProxyMethods()
538 WrapLine(sb, i, " "); in AppendProxyMethods()
539 AppendBrokerParameters(sb, mm->parameters_[i]); in AppendProxyMethods()
541 sb.AppendFormat(") -> Result<%s> {\n", in AppendProxyMethods()
543 … sb.Append(" let mut data = MsgParcel::new().expect(\"MsgParcel should success\");\n"); in AppendProxyMethods()
545 WriteToParcel(sb, metaComponent_->types_[mm->parameters_[j]->typeIndex_], "data", in AppendProxyMethods()
550 … sb.AppendFormat(" let _reply = self.remote.send_request(%sCode", interfaceName_.string()); in AppendProxyMethods()
552 … sb.AppendFormat(" let reply = self.remote.send_request(%sCode", interfaceName_.string()); in AppendProxyMethods()
554 sb.AppendFormat("::%s as u32, &data, ", GetCodeFromMethod(mm->name_).string()); in AppendProxyMethods()
556 sb.Append("true"); in AppendProxyMethods()
558 sb.Append("false"); in AppendProxyMethods()
560 sb.Append(")?;\n"); in AppendProxyMethods()
562 sb.Append(" ").Append("Ok(())\n"); in AppendProxyMethods()
564 ReadFromParcel(sb, mt, "reply", "result", " "); in AppendProxyMethods()
565 sb.Append(" ").Append("Ok(result)\n"); in AppendProxyMethods()
567 sb.Append(" }\n"); in AppendProxyMethods()
570 sb.Append("\n"); in AppendProxyMethods()