C/C++ Tip Dönüştürücü (Type Normalizer)

  • Konuyu açan Konuyu açan Sys
  • Açılış Tarihi Açılış Tarihi
  • Seçkin
  • Yanıt Yanıt 17
  • Gösterim Gösterim 505

Sys

MT Üye
MT Üye
Mesaj
164
Çözümler
4
Beğeni
229
Puan
734
Ticaret Puanı
0
C/C++ Type Normalizer – Eski tipleri modernleştir


Projelerde kullanılan DWORD, WORD, BYTE, long long int gibi geleneksel veri tiplerini, otomatik olarak uint32_t, uint16_t, int64_t gibi <stdint.h> standart tiplerine dönüştürür.
Tüm .c, .cpp, .h, .hpp dosyalarını tarar, orijinalini .bak olarak yedekler, projeye doğrudan entegre edilebilir.
VSCode ile uyumlu ve JSON tabanlı yapı sayesinde kolayca özelleştirilebilir.


1750243154959.webp



Detaylar ve kaynak için:
🔗
Linkleri görebilmek için giriş yap veya kayıt ol.
 
pyye bi kod eklemiş system32yi sildi telefondan yazıyorum
 
Acil yardım, deniyim bi neymiş diye indirdim, çalıştırdım. Bilgisayarım bat mat, bat bat diye diye konuşmayı öğrendi önce batman batman diye gezerken şimdi sarı kola istiyor. Acill taktik verin napcam. 😂😂😂

Paylaşım için teşekkürler. Sarı kolası olanlara yararlı konu. 😍😍
 
Dev hizmet 👏👏👏

Acil yardım, deniyim bi neymiş diye indirdim, çalıştırdım. Bilgisayarım bat mat, bat bat diye diye konuşmayı öğrendi önce batman batman diye gezerken şimdi sarı kola istiyor. Acill taktik verin napcam. 😂😂😂

Paylaşım için teşekkürler. Sarı kolası olanlara yararlı konu. 😍😍
Yakıtı bitmiş işte, sarı kula ver düzelir xD
 
Biraz daha geliştirsem mi diye kafama takıldı, vakit bulursam mini güncelleme yapacağım.
 
Güzel proje fikri, eline sağlık. Fixed-size tipleri 32 Bit için kullanma olayı hakkında yorum yapasım geldi ama sonra Taksim meydanında idam edilme ihtimalim sebebiyle vazgeçtim, sevgiler. :aman:
 
Güzel proje fikri, eline sağlık. Fixed-size tipleri 32 Bit için kullanma olayı hakkında yorum yapasım geldi ama sonra Taksim meydanında idam edilme ihtimalim sebebiyle vazgeçtim, sevgiler. :aman:
Çıkar göster telefonunu haddiiiii çıkkkarrrr.
 
Güzel proje fikri, eline sağlık. Fixed-size tipleri 32 Bit için kullanma olayı hakkında yorum yapasım geldi ama sonra Taksim meydanında idam edilme ihtimalim sebebiyle vazgeçtim, sevgiler. :aman:
Eyvallah, güzel yorumun için teşekkür ederim 🙏
Bu çalışmayı Metin2 özelinde değil, genel C/C++ projeleri için hazırladım.

Amacım, DWORD, WORD, long long, unsigned gibi platforma özel ya da eski tipleri, stdint.h’deki uint32_t, int64_t gibi sabit boyutlu ve modern karşılıklarıyla değiştirmekti.
Yani olay tamamen “modern C++ uyumluluğu ve taşınabilirlik”. Metin2’ye özel bir yapılandırma değil.

Windows API gibi bazı (kısmi) yerlerde DWORD vs. kalması gerektiğinin farkındayım, onları type_map.json’a özel istisna olarak ayırmak da mümkün. kılınabilir müsait zamanda fikir ve önerilere göre güncellerim.

Taksim’de idama hayır 😄
Ama gerekirse int ve long için darağacına çıkarım, orası ayrı... 😅
 
kimse denememiş heralde gayet güzel çalışıyor ben bilgisini vereyim. hata verdiği dosyadan 1 sonraki dosya muhtemelen utf-8 formatında değildir. notepad ile açıp diller menüsünden utf-8'e dönüştüre basarsanız devam eder.
 
kimse denememiş heralde gayet güzel çalışıyor ben bilgisini vereyim. hata verdiği dosyadan 1 sonraki dosya muhtemelen utf-8 formatında değildir. notepad ile açıp diller menüsünden utf-8'e dönüştüre basarsanız devam eder.
Kendi projelerimde utf8 kullandığım için utf8 ayarladım mini Update vereyim mi?
 
Kendi projelerimde utf8 kullandığım için utf8 ayarladım mini Update vereyim mi?
aşağıdaki gibi güncelledim ben utf-8 değilse utf-8e çeviriyor

Python:
Genişlet Daralt Kopyala
import re
import json
import os
import chardet  # Dosya encoding'ini tespit etmek için

# Tip haritasını yükle
with open('type_map.json', 'r', encoding='utf-8') as f:
    type_map = json.load(f)

# Uzun tipleri önce işle (öncelik sırasına göre)
sorted_map = sorted(type_map.items(), key=lambda x: -len(x[0]))

# Regex desenleri hazırla
patterns = [(re.compile(r'\b' + re.escape(old) + r'\b'), new) for old, new in sorted_map]

def detect_encoding(file_path):
    with open(file_path, 'rb') as f:
        raw_data = f.read()
        result = chardet.detect(raw_data)
        return result['encoding'] or 'utf-8'

def convert_to_utf8_if_needed(file_path):
    encoding = detect_encoding(file_path)
    if encoding.lower() != 'utf-8':
        print(f"⏳ Converting {file_path} from {encoding} to UTF-8")
        with open(file_path, 'r', encoding=encoding, errors='replace') as f:
            content = f.read()
        with open(file_path, 'w', encoding='utf-8') as f:
            f.write(content)
        print(f"✅ Converted {file_path} to UTF-8")

def replace_types_in_file(file_path):
    convert_to_utf8_if_needed(file_path)
    
    with open(file_path, 'r', encoding='utf-8') as f:
        original_code = f.read()

    modified_code = original_code
    for pattern, replacement in patterns:
        modified_code = pattern.sub(replacement, modified_code)

    # Yedekle
    backup_path = file_path + '.bak'
    with open(backup_path, 'w', encoding='utf-8') as f:
        f.write(original_code)

    # Güncellenmiş hali kaydet
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(modified_code)

    print(f"✓ Updated: {file_path} | Backup: {backup_path}")

def scan_and_replace(directory, extensions=(".c", ".cpp", ".h", ".hpp")):
    for root, _, files in os.walk(directory):
        for file in files:
            if file.endswith(extensions):
                replace_types_in_file(os.path.join(root, file))

# Script çalıştırıldığında
if __name__ == "__main__":
    scan_and_replace("src")
 
herşey den önce Game Source\libthecore\include\typedef.h içeriğini düzenlemek gerekmez mi? En azından game source kısmı için.
 
Utf8 formatı olmadığında hata veriyordu utf8 olmasa 'da devam etmesi için güncelleme verdim.
 
Geri
Üst