DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Untracked file

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
#!/usr/bin/env perl

use Getopt::Std;
getopts('i:');

# the argument should be the path to the restriction datafile, usually
# design-data/restrictions.csv        
open(F,"$ARGV[0]") || die "Can't open restriction data file $ARGV[0]:$!";

# Write the file inline by copying everything before a demarcation
# line, and putting the generated data after the demarcation

if ($opt_i) {

  open(IN,$opt_i) || die "Can't open input file $opt_i";

  while(<IN>){

    if (/Do not edit/){
      last;
    }

    print;

  }    

  print "/* Everything below this line is machine generated. Do not edit. */\n";


  close IN;
}

# First build the property restriction table 
print "icalrestriction_property_record icalrestriction_property_records[] = {\n";

while(<F>)
{

  chop;

  s/\#.*$//;

  my($method,$targetcomp,$prop,$subcomp,$restr,$sub) = split(/,/,$_);

  next if !$method;
  
  if(!$sub) {
    $sub = "0";
  } else {
    $sub = "icalrestriction_".$sub;
  }

  if($prop ne "NONE"){
    print("    \{ICAL_METHOD_${method},ICAL_${targetcomp}_COMPONENT,ICAL_${prop}_PROPERTY,ICAL_RESTRICTION_${restr},$sub},\n");
  }

}


# Print the terminating line 
print "    {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_PROPERTY,ICAL_RESTRICTION_NONE}\n";

print "};\n";

print "icalrestriction_component_record icalrestriction_component_records[] = {\n";


# Go back through the entire file and build the component restriction table
close(F);  
open(F,"$ARGV[0]") || die "Can't open restriction data file $ARGV[0]:$!";

while(<F>)
{

  chop;

  s/\#.*$//;

  my($method,$targetcomp,$prop,$subcomp,$restr,$sub) = split(/,/,$_);

  next if !$method;
  
  if(!$sub) {
    $sub = "0";
  } else {
    $sub = "icalrestriction_".$sub;
  }


    if($subcomp ne "NONE"){
      print("    \{ICAL_METHOD_${method},ICAL_${targetcomp}_COMPONENT,ICAL_${subcomp}_COMPONENT,ICAL_RESTRICTION_${restr},$sub\},\n");
    }

}

# print the terminating line 
print "    {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_COMPONENT,ICAL_RESTRICTION_NONE}\n";
print "};\n";