Lines Matching full:info
111 auto &info = NodeInfos[node];
112 if (info.Creator) {
116 info.Creator = creationRule;
124 auto &info = NodeInfos[node];
125 if (info.Override) {
130 info.Override = overrideRule;
138 auto &info = NodeInfos[node];
139 if (info.ReadHelper) {
144 info.ReadHelper = helperRule;
162 auto &info = CasedTypeInfos[type];
163 if (info.KindRule) {
167 info.KindRule = kindRule;
194 [&](HasProperties node, const NodeInfo &info) {
195 for (Property prop : info.Properties) {
206 function_ref<void(HasProperties node, const NodeInfo &info)> visit) {
225 auto info = ReaderWriterInfo::forReader<NodeClass>();
226 emitNodeReaderWriterClass<NodeClass>(info);
230 auto info = ReaderWriterInfo::forWriter<NodeClass>();
231 emitNodeReaderWriterClass<NodeClass>(info);
235 void emitNodeReaderWriterClass(const ReaderWriterInfo &info);
238 void emitNodeReaderWriterMethod(NodeClass node, const ReaderWriterInfo &info);
241 const ReaderWriterInfo &info);
252 void emitBasicReaderWriterFile(const ReaderWriterInfo &info);
253 void emitDispatcherTemplate(const ReaderWriterInfo &info);
254 void emitPackUnpackOptionalTemplate(const ReaderWriterInfo &info);
255 void emitBasicReaderWriterTemplate(const ReaderWriterInfo &info);
259 const ReaderWriterInfo &info);
351 void ASTPropsEmitter::emitNodeReaderWriterClass(const ReaderWriterInfo &info) {
352 StringRef suffix = info.ClassSuffix;
353 StringRef var = info.HelperVariable;
357 "class Abstract" << info.HierarchyName << suffix << " {\n"
362 Out << " Abstract" << info.HierarchyName << suffix
368 Out << " " << info.ResultType << " " << info.MethodPrefix << "(";
369 if (info.IsReader)
372 Out << "const " << info.HierarchyName << " *node";
375 if (info.IsReader)
382 Out << " case " << info.HierarchyName << "::" << node.getId() << ":\n"
383 " return " << info.MethodPrefix << node.getClassName() << "(";
384 if (!info.IsReader)
397 emitNodeReaderWriterMethod(node, info);
407 const ReaderWriterInfo &info) {
409 Out << " " << info.ResultType << " "
410 << info.MethodPrefix << node.getClassName() << "(";
411 if (!info.IsReader)
414 if (info.IsReader)
415 Out << " auto &ctx = " << info.HelperVariable << ".getASTContext();\n";
417 emitPropertiedReaderWriterBody(node, info);
424 const ReaderWriterInfo &info) {
434 if (info.IsReader) {
445 if (!info.IsReader && nodeInfo.ReadHelper) {
452 if (info.IsReader && !creationCode.contains(prop.getName()))
459 if (info.IsReader)
460 emitReadOfProperty(info.HelperVariable, prop);
462 emitWriteOfProperty(info.HelperVariable, prop);
466 if (info.IsReader)
617 ASTPropsEmitter::emitDispatcherTemplate(const ReaderWriterInfo &info) {
619 StringRef dispatcherPrefix = (info.IsReader ? "Read" : "Write");
628 StringRef var = info.HelperVariable;
632 Out << " template <class Basic" << info.ClassSuffix << ", class... Args>\n"
633 " static " << (info.IsReader ? cxxTypeName : "void") << " "
634 << info.MethodPrefix
635 << "(Basic" << info.ClassSuffix << " &" << var
638 << info.MethodPrefix << methodSuffix
650 if (!info.IsReader && type.isConstWhenWriting()) {
665 ASTPropsEmitter::emitPackUnpackOptionalTemplate(const ReaderWriterInfo &info) {
666 StringRef classPrefix = (info.IsReader ? "Unpack" : "Pack");
667 StringRef methodName = (info.IsReader ? "unpack" : "pack");
679 << (info.IsReader ? "std::optional<" : "") << typeName
680 << (info.IsReader ? "> " : " ") << methodName << "("
681 << (info.IsReader ? "" : "std::optional<") << typeName
682 << (info.IsReader ? "" : ">")
692 StringRef code = (info.IsReader ? type.getUnpackOptionalCode()
698 if (type.isConstWhenWriting() && !info.IsReader)
705 ASTPropsEmitter::emitBasicReaderWriterTemplate(const ReaderWriterInfo &info) {
708 "class Basic" << info.ClassSuffix << "Base {\n";
712 << info.ClassSuffix << "Base" << ("(ASTContext &ctx) : C(ctx)")
723 Out << " " << (info.IsReader ? cxxTypeName : "void")
724 << " " << info.MethodPrefix << abstractTypeName << "(";
725 if (!info.IsReader)
750 emitCasedReaderWriterMethodBody(type, casedIter->second, info);
755 if (info.IsReader)
764 if (info.IsReader)
783 const ReaderWriterInfo &info) {
795 auto var = info.HelperVariable;
799 if (info.IsReader)
804 << info.MethodPrefix << "Object();\n";
810 if (info.IsReader) {
821 ReaderWriterInfo subInfo = info;
830 if (!info.IsReader)
839 void ASTPropsEmitter::emitBasicReaderWriterFile(const ReaderWriterInfo &info) {
840 emitDispatcherTemplate(info);
841 emitPackUnpackOptionalTemplate(info);
842 emitBasicReaderWriterTemplate(info);
852 auto info = ReaderWriterInfo::forReader<TypeNode>();
853 ASTPropsEmitter(records, out).emitBasicReaderWriterFile(info);
863 auto info = ReaderWriterInfo::forWriter<TypeNode>();
864 ASTPropsEmitter(records, out).emitBasicReaderWriterFile(info);