summaryrefslogtreecommitdiff
path: root/codegen.bash
blob: f9837e4a5104445ee8cd1722bb9ea3b8a89449ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
for type in byte char short int long; do
    case $type in
        int) object=Integer ;;
        char) object=Character ;;
        *) object=${type^} ;;
    esac
    hash='(int) key'
    if [ $type = long ]; then
        hash='(int) (key ^ (key >>> 32))'
    fi
    mkdir -p target/generated-sources/collections/java
    for file in `find src/main/templates -name '*.template'`; do
        filename=$(basename $file | sed "s/K/${type^}/;s/\.template/.java/")
        sed -e "s/@k@/${type}/g" \
            -e "s/@K@/${type^}/g" \
            -e "s/@O@/${object}/g" \
            -e "s/@KEY_NUMBER_METHOD@/${type}Value/g" \
            -e "s/@HASH_CODE@/${hash}/g" \
            $file > target/generated-sources/collections/java/$filename
    done
done