Lines Matching refs:std
75 static const std::string DocCopyright;
76 static const std::string DocComment1;
77 static const std::string DocComment2;
87 static std::string styleStr(enumStyle_t s) {
92 friend std::ostream& operator<<(std::ostream&, const TPrinter&);
94 virtual void printAll(std::ostream&) const;
95 virtual void printComments(std::ostream&) const;
96 virtual void printPrologue(std::ostream&) const { }
97 virtual void printDefs(std::ostream&) const;
98 virtual void printEpilogue(std::ostream&) const { }
99 virtual void printMeta(std::ostream&) const;
100 virtual void printTypes(std::ostream&) const { }
101 virtual void printHasResultType(std::ostream&) const { };
103 virtual std::string escapeComment(const std::string& s) const;
106 virtual std::string commentBeg() const { return ""; }
107 virtual std::string commentEnd(bool isLast) const { return ""; }
108 virtual std::string commentBOL() const { return ""; }
109 virtual std::string commentEOL(bool isLast) const { return ""; }
111 typedef std::pair<unsigned, std::string> valpair_t;
114 virtual std::string enumBeg(const std::string&, enumStyle_t) const { return ""; }
115 virtual std::string enumEnd(const std::string&, enumStyle_t, bool isLast = false) const {
118 virtual std::string enumFmt(const std::string&, const valpair_t&,
122 virtual std::string maxEnumFmt(const std::string&, const valpair_t&,
127 virtual std::string fmtConstInt(unsigned val, const std::string& name,
132 std::vector<valpair_t> getSortedVals(const Json::Value&) const;
134 virtual std::string indent(int count = 1) const {
135 return std::string(count * 4, ' '); // default indent level = 4
138 static std::string fmtNum(const char* fmt, unsigned val) {
145 static std::string fmtStyleVal(unsigned v, enumStyle_t style);
149 static std::string prependIfDigit(const std::string& ename, const std::string& vname) {
150 return (std::isdigit(vname[0]) ? ename : std::string("")) + vname;
153 void addComment(Json::Value& node, const std::string& str);
159 std::string TPrinter::fmtStyleVal(unsigned v, enumStyle_t style)
167 return std::to_string(v);
171 const std::string TPrinter::DocCopyright =
196 const std::string TPrinter::DocComment1 =
200 const std::string TPrinter::DocComment2 =
240 const std::string enumName = enumSet.codeName;
243 std::string name = enumRow.name;
255 std::string name = enumRow.name;
264 void TPrinter::addComment(Json::Value& node, const std::string& str)
266 std::istringstream cstream(str);
267 std::string cline;
270 while (std::getline(cstream, cline)) // fmt each line
275 // Return a list of values sorted by enum value. The std::vector
277 std::vector<TPrinter::valpair_t>
280 std::vector<valpair_t> values;
287 std::stable_sort(values.begin(), values.end());
293 std::string TPrinter::escapeComment(const std::string& s) const { return s; }
296 void TPrinter::printComments(std::ostream& out) const
306 commentEOL((line+1) == comment.size()) << std::endl;
308 out << commentEnd(++commentNum == commentCount) << std::endl;
313 void TPrinter::printMeta(std::ostream& out) const
329 void TPrinter::printDefs(std::ostream& out) const
348 std::string maxEnum = maxEnumFmt(opName, valpair_t(0x7FFFFFFF, "Max"), enumHex);
364 void TPrinter::printAll(std::ostream& out) const
376 std::ostream& operator<<(std::ostream& out, const TPrinter &p)
386 void printPrologue(std::ostream& out) const override { out << "{\n" + indent() + "\"spv\":\n" + indent() + "{\n"; }
387 void printEpilogue(std::ostream& out) const override { out << indent() + "}\n}\n"; }
389 std::string escapeComment(const std::string& s) const override {
390 std::string newStr;
402 std::string fmtConstInt(unsigned val, const std::string& name,
407 void printMeta(std::ostream& out) const override
415 std::string commentBeg() const override { return indent(4) + "[\n"; }
416 std::string commentEnd(bool isLast) const override { return indent(4) + (isLast ? "]" : "],"); }
417 std::string commentBOL() const override { return indent(5) + '"'; }
418 std::string commentEOL(bool isLast) const override { return (isLast ? "\"" : "\","); }
420 void printComments(std::ostream& out) const override
427 void printDefs(std::ostream& out) const override
434 void printAll(std::ostream& out) const override
442 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
452 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
459 std::string enumFmt(const std::string& s, const valpair_t& v,
471 virtual void printPrologue(std::ostream& out) const override {
472 out << "#ifndef spirv_" << headerGuardSuffix() << std::endl
473 << "#define spirv_" << headerGuardSuffix() << std::endl
474 << std::endl;
477 void printMeta(std::ostream& out) const override {
478 out << "#define SPV_VERSION 0x" << std::hex << DocVersion << std::dec << "\n";
485 virtual void printEpilogue(std::ostream& out) const override {
486 out << "#endif" << std::endl;
489 virtual void printTypes(std::ostream& out) const override {
493 virtual std::string fmtConstInt(unsigned val, const std::string& name,
496 return std::string("static const unsigned int ") + pre() + name +
500 virtual std::string pre() const { return ""; } // C name prefix
501 virtual std::string headerGuardSuffix() const = 0;
503 virtual std::string fmtEnumUse(const std::string& opPrefix, const std::string& name) const { return pre() + name; }
505 virtual void printHasResultType(std::ostream& out) const override
509 std::set<unsigned> seenValues;
517 out << "#ifdef SPV_ENABLE_UTILITY_CODE" << std::endl;
518 out << "#ifndef __cplusplus" << std::endl;
519 out << "#include <stdbool.h>" << std::endl;
520 out << "#endif" << std::endl;
521 out << "inline void " << pre() << "HasResultAndType(" << pre() << opName << " opcode, bool *hasResult, bool *hasResultType) {" << std::endl;
522 out << " *hasResult = *hasResultType = false;" << std::endl;
523 out << " switch (opcode) {" << std::endl;
524 out << " default: /* unknown opcode */ break;" << std::endl;
535 std::string name = inst.name;
536 out << " case " << fmtEnumUse("Op", name) << ": *hasResult = " << (inst.hasResult() ? "true" : "false") << "; *hasResultType = " << (inst.hasType() ? "true" : "false") << "; break;" << std::endl;
539 out << " }" << std::endl;
540 out << "}" << std::endl;
541 out << "#endif /* SPV_ENABLE_UTILITY_CODE */" << std::endl << std::endl;
549 std::string commentBeg() const override { return "/*\n"; }
550 std::string commentEnd(bool isLast) const override { return "*/\n"; }
551 std::string commentBOL() const override { return "** "; }
553 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
554 return std::string("typedef enum ") + pre() + s + styleStr(style) + "_ {\n";
557 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
561 std::string enumFmt(const std::string& s, const valpair_t& v,
566 std::string maxEnumFmt(const std::string& s, const valpair_t& v,
571 std::string pre() const override { return "Spv"; } // C name prefix
572 std::string headerGuardSuffix() const override { return "H"; }
578 void printMaskOperators(std::ostream& out, const std::string& specifiers) const {
606 void printPrologue(std::ostream& out) const override {
611 void printEpilogue(std::ostream& out) const override {
614 out << "#endif // #ifndef spirv_" << headerGuardSuffix() << std::endl;
617 std::string commentBOL() const override { return "// "; }
620 virtual std::string enumBeg(const std::string& s, enumStyle_t style) const override {
621 return std::string("enum ") + s + styleStr(style) + " {\n";
624 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
628 virtual std::string enumFmt(const std::string& s, const valpair_t& v,
633 virtual std::string maxEnumFmt(const std::string& s, const valpair_t& v,
640 std::string headerGuardSuffix() const override { return "HPP"; }
642 std::string operators;
648 void printEpilogue(std::ostream& out) const override {
651 out << "#endif // #ifndef spirv_" << headerGuardSuffix() << std::endl;
653 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
654 return std::string("enum class ") + s + styleStr(style) + " : unsigned {\n";
657 std::string enumFmt(const std::string& s, const valpair_t& v,
662 std::string maxEnumFmt(const std::string& s, const valpair_t& v,
668 virtual std::string fmtEnumUse(const std::string& opPrefix, const std::string& name) const override { return opPrefix + "::" + name; }
670 std::string headerGuardSuffix() const override { return "HPP"; }
676 void printPrologue(std::ostream& out) const override { out << "spv = {\n"; }
678 void printEpilogue(std::ostream& out) const override { out << "}\n"; }
680 std::string commentBOL() const override { return "-- "; }
682 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
686 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
690 std::string enumFmt(const std::string& s, const valpair_t& v,
695 virtual std::string fmtConstInt(unsigned val, const std::string& name,
705 void printPrologue(std::ostream& out) const override { out << "spv = {\n"; }
707 void printEpilogue(std::ostream& out) const override { out << "}\n"; }
709 std::string commentBOL() const override { return "# "; }
711 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
715 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
719 std::string enumFmt(const std::string& s, const valpair_t& v,
724 std::string fmtConstInt(unsigned val, const std::string& name,
734 std::string commentBOL() const override { return "// "; }
736 void printPrologue(std::ostream& out) const override {
742 void printEpilogue(std::ostream& out) const override {
747 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
751 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
755 std::string enumFmt(const std::string& s, const valpair_t& v,
760 std::string fmtConstInt(unsigned val, const std::string& name,
762 return indent(2) + std::string("public const uint ") + name +
770 std::string commentBeg() const override { return "/+\n"; }
771 std::string commentBOL() const override { return " + "; }
772 std::string commentEnd(bool isLast) const override { return " +/\n"; }
774 void printPrologue(std::ostream& out) const override {
778 void printEpilogue(std::ostream& out) const override {
781 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
785 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
786 return std::string("}\n\n");
789 std::string enumFmt(const std::string& s, const valpair_t& v,
794 std::string fmtConstInt(unsigned val, const std::string& name,
796 return std::string("enum uint ") + name +
804 std::string commentBOL() const override { return "// "; }
806 void printPrologue(std::ostream& out) const override {
813 void printEpilogue(std::ostream& out) const override {
818 std::string enumBeg(const std::string& s, enumStyle_t style) const override {
822 std::string enumEnd(const std::string& s, enumStyle_t style, bool isLast) const override {
826 std::string enumFmt(const std::string& s, const valpair_t& v,
831 std::string fmtConstInt(unsigned val, const std::string& name,
833 return indent(2) + std::string("public const uint32 ") + name +
844 std::vector<std::pair<TLanguage, std::string>> langInfo;
846 langInfo.push_back(std::make_pair(ELangC, "spirv.h"));
847 langInfo.push_back(std::make_pair(ELangCPP, "spirv.hpp"));
848 langInfo.push_back(std::make_pair(ELangCPP11, "spirv.hpp11"));
849 langInfo.push_back(std::make_pair(ELangJSON, "spirv.json"));
850 langInfo.push_back(std::make_pair(ELangLua, "spirv.lua"));
851 langInfo.push_back(std::make_pair(ELangPython, "spirv.py"));
852 langInfo.push_back(std::make_pair(ELangCSharp, "spirv.cs"));
853 langInfo.push_back(std::make_pair(ELangD, "spv.d"));
854 langInfo.push_back(std::make_pair(ELangBeef, "spirv.bf"));
857 std::ofstream out(lang.second, std::ios::out);
859 if ((out.rdstate() & std::ifstream::failbit)) {
860 std::cerr << "Unable to open file: " << lang.second << std::endl;
868 void PrintHeader(TLanguage lang, std::ostream& out)
870 typedef std::unique_ptr<TPrinter> TPrinterPtr;
885 std::cerr << "Unknown language." << std::endl;
891 out << *p << std::endl;