view user/anatofuz/note/2021/01/15.md @ 24:f0bc0289de97

backup 2021-01-16
author autobackup
date Sat, 16 Jan 2021 00:10:03 +0900
parents
children
line wrap: on
line source

# c/extern.h

- `__code`のexternが並んでいるやつ
    - gccの場合のプロトタイプ宣言避け
    - ここはgenricsの`<>`が埋め込まれてしまうので更新する必要がある
        - `.c`自体を書き換えてしまえばいらない説

- enum関係
    - あんま関係ない

```perl
[
    [0] {
        name             "AtomicT",
        typed_variable   [
            [0] {
                type    "T",
                vname   "newData"
            },
            [1] {
                type    "T",
                vname   "init"
            }
        ]
    },
    [1] {
        name             "AtomicT",
        typed_variable   [
            [0] {
                type    "T",
                vname   "atomic"
            },
            [1] {
                type    "T",
                vname   "init"
            }
        ]
    },
    [2] {
        generics   [
            [0] {
                generics   "int",
                type       "AtomicT",
                vname      "Leftfork"
            },
            [1] {
                generics   "int",
                type       "AtomicT",
                vname      "Rightfork"
            }
        ],
        name       "Phils"
    }
]
```

```perl
use strict;
use warnings;

my $line = 'AtomicT<int> fork0 = setAtomicT(int)';


 if ($line =~ /^\s*(\w+)<(.+)>\*?\s*(\w+)\s*=\s*(.+)\(?/) {
   my $interface = $1;
   my $generics  = $2;
   my $method    = $3;

   print "interface $interface\n";
   print "generics $generics\n";
 }
```