C++をSwift風に記述するライブラリ作った

C++のコードをSwift風に記述するための仕組みを発明した。

LLVM/Clangをフォークだなんてそんなセコい真似はしていない。

とりあえずこいつを見てほしい。

swift.cpp

#include "Cpp2Swifty.h"

class Number {
  
  Int value = 0
  
  func foo() {
    if (let val = number()) {
      println(val)
    }
  }
  
  func bar() {
    guard (val, number()) else {
      if (let msg = message()) {
        for (Character ch in String(msg)) {
          print(ch)
        }
      }
      return;
    }
    println(1.0 / val)
  }
  
  func number() -> Int {
    return value;
  }
  
  func message() -> Character* {
    return "hello swift!\n";
  }
}

func main() -> Int {
  var a = Number();
  a.value = 99;
  a.foo();     // 99
  a.value = 0;
  a.bar();     // hello swift!
}

とってもSwiftyである。

これはC++14でコンパイルすることができる。

$ clang++ -std=c++14 swift.cpp

おっと、その前に。
肝心なライブラリの方を貼り忘れていた。

Cpp2Swifty.h

#define class struct
#define var auto
#define let auto const
#define func ; auto
#define return ; return
#define in :
#define guard(var, val) auto var = val; if (var) {}
#define Character const char
#define Void void
#define Int int
#define String std::string
#define println(val) std::cout << val << std::endl;
#define print(val) std::cout << val;
#include <iostream>
#include <string>

広告