saqut-compiler/src/tools.hpp

56 lines
1.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ============================================================================
// saQut Compiler — Yardımcı Fonksiyonlar
// ============================================================================
//
// DİZİN: src/tools.hpp
// KATMAN: Tüm katmanlar tarafından kullanılabilir
// BAĞIMLI: Yok (sadece <string>)
//
// AMAÇ:
// Tüm derleyici modüllerinin ihtiyaç duyduğu ortak yardımcı fonksiyonlar.
//
// ============================================================================
#ifndef SAQUT_TOOLS
#define SAQUT_TOOLS
#include <string>
// --------------------------------------------------------------------------
// padRight: String'i sağdan boşluk ile belirtilen uzunluğa tamamla.
// --------------------------------------------------------------------------
inline std::string padRight(std::string str, size_t totalLen) {
if (str.size() < totalLen) {
str.append(totalLen - str.size(), ' ');
}
return str;
}
// --------------------------------------------------------------------------
// jsonIndent: JSON çıktısı için girinti (her seviye 2 boşluk)
// --------------------------------------------------------------------------
inline std::string jsonIndent(int n) {
return std::string(static_cast<size_t>(n) * 2, ' ');
}
// --------------------------------------------------------------------------
// jsonEscape: JSON string değerleri için kaçış karakterleri
// --------------------------------------------------------------------------
inline std::string jsonEscape(const std::string& s) {
std::string out;
out.reserve(s.size() + 4);
for (char c : s) {
switch (c) {
case '"': out += "\\\""; break;
case '\\': out += "\\\\"; break;
case '\n': out += "\\n"; break;
case '\r': out += "\\r"; break;
case '\t': out += "\\t"; break;
default: out += c;
}
}
return out;
}
#endif // SAQUT_TOOLS