sub ParseConstantFile()

in d3d/archive/images/d3d11/postproc.pl [110:147]


    sub ParseConstantFile
    {
        my ($ConstFile) = @_;
        open(CONSTLIST,$ConstFile) || die("Can't open file $ConstFile");
        while(<CONSTLIST>) {
            if(/^\s*(\w+)\s*=/)
            {
                if(undef!=$D3DConstant{$1})
                {
                    die("$1 defined multiple times!");
                }
            }
            if(/^\s*(\w+)\s*=\s*([+-]?(\d+\.\d+|\d+\.|\.\d+|\d+)([eE][+-]?\d+)?(f)?)\s+/)  # float
            {
                $D3DConstant{"$1"} = "$2";
            }
            elsif(/^\s*(\w+)\s*=\s*(0x([a-f]|[A-F]|[0-9])+)\s+/)  # hex
            {
                $D3DConstant{"$1"} = "$2";
            }
            elsif(/^\s*(\w+)\s*=\s*(\w+)\s+/) # word
            {
                if(!exists($D3DConstant{"$2"}))
                {
                    die("$1 being assigned undefined value $2!");
                }
                else
                {
                    $D3DConstant{"$1"} = $D3DConstant{"$2"};   
                }        
            }
            elsif(/^\s*(\w+)\s*=/)
            {
                die("Unrecognized or unsupported assignement of $1 in constant list.");
            }
        }
        close(CONSTLIST);    
    }