IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 31, 2012, 3:59:03 PM (14 years ago)
Author:
eugene
Message:

add TRAIL models; autocode PS1_DV? and PS1_SV1 I/O formats

Location:
trunk/psModules
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules

  • trunk/psModules/src/objects

    • Property svn:ignore
      •  

        old new  
        99pmSourceIO_CMF_PS1_V3.c
        1010pmSourceIO_CMF_PS1_V4.c
        11 pmSourceIO_CMF_PS1_V3.v1.c
        12 pmSourceIO_CMF_PS1_V1.v1.c
        13 pmSourceIO_CMF_PS1_V2.v1.c
        14 
         11pmSourceIO_CMF_PS1_SV1.c
         12pmSourceIO_CMF_PS1_DV1.c
         13pmSourceIO_CMF_PS1_DV2.c
  • trunk/psModules/src/objects/mksource.pl

    r32633 r34259  
    11#!/usr/bin/env perl
     2$DEBUG = 0;
    23
    34# this program takes the pmSourceIO_CMF.in.c template file and generates the .c version based on the given I/O format made
     
    1718             "PS1_V2", 2,
    1819             "PS1_V3", 3,
    19              "PS1_V4", 4);
    20 
    21 print "1: $cmfmodes{1}\n";
    22 print "PS1_V1: $cmfmodes{'PS1_V1'}\n";
     20             "PS1_V4", 4,
     21    );
    2322
    2423open (FILE, "$template") || die "failed to open template $template\n";
     
    3534# @<MODE@ : remove and keep if cmfmode > MODE
    3635
     36# XXX need to add features: split @foo,bar,baz@ by commas
     37# treat each chunk as a rule
     38# add the following options:
     39# !MODE -- exclude the given entry (defaults to all, or is ALL required?)
     40# * and ? regexp
     41
     42# some examples:
     43# @ALL,!PS1_V1@
     44# @PS1_DV?@
     45# @PS1_V?,!PS1_V1@
     46
    3747foreach $line (@list) {
    3848
     
    4050    $line =~ s|\@CMFMODE\@|$cmfmode|g;
    4151   
    42     if ($line =~ m|\@ALL\@|) {
    43         $line =~ s|\@ALL\@\s*||;
     52    # print and continue if we do not match @RULES@
     53    unless ($line =~ m|\@.*\@|) {
     54        print "no rule\n" if $DEBUG;
     55        print FILE $line;
     56        next;
    4457    }
    4558
    46     ($isMode) = ($line =~ m|\@=(\S*)\@|);
    47     ($gtMode) = ($line =~ m|\@>(\S*)\@|);
    48     ($ltMode) = ($line =~ m|\@<(\S*)\@|);
     59    # grab the rules and the rest of the line
     60    ($prefix,$rules,$content) = ($line =~ m|(.*)\@(.*)\@\s*(.*)|);
    4961   
    50     if ($isMode) {
    51         if ($isMode ne $cmfmode) { next; }
    52         $line =~ s|\@=\S*\@\s*||;
     62    # split the rules into separate items
     63    @rules = split (",", $rules);
     64
     65    $keepLine = 0;
     66    # does $cmfmode match any of the rules?
     67    foreach $rule (@rules) {
     68        print "rule: $rule\n" if $DEBUG;
     69
     70        # special rule "ALL"
     71        if ($rule eq "ALL") {
     72            print "ALL match\n" if $DEBUG;
     73            $keepLine = 1;
     74            next;
     75        } # look for other rules (esp !foo)
     76
     77        # pure match
     78        if ($cmfmode eq $rule) {
     79            print "simple match\n" if $DEBUG;
     80            $keepLine = 1;
     81            next;
     82        } # skip to end?
     83
     84        # NOT match
     85        if ($rule =~ m|^!|) {
     86            print "NOT rule: $rule\n" if $DEBUG;
     87            ($realrule) = ($rule =~ m|^!(.*)|);
     88            if ($cmfmode eq $realrule) { $keepLine = 0; } # skip to end?
     89            next;
     90        }
     91
     92        # simple regexp: foo*
     93        if ($rule =~ m|\*$|) {
     94            print "regexp * rule: $rule\n" if $DEBUG;
     95            ($realrule) = ($rule =~ m|(.*)\*$|);
     96            if ($cmfmode =~ m|$realrule|) { $keepLine = 1; } # skip to end?
     97            next;
     98        }
     99
     100        # simple regexp: foo?
     101        if ($rule =~ m|\?$|) {
     102            print "regexp ? rule: $rule\n" if $DEBUG;
     103            ($realrule) = ($rule =~ m|(.*)\?$|);
     104            if (substr($cmfmode,0,-1) eq $realrule) { $keepLine = 1; } # skip to end?
     105            next;
     106        }
     107
     108        # rule: =FOO
     109        if ($rule =~ m|^=|) {
     110            print "= rule: $rule\n" if $DEBUG;
     111            $realrule = substr($cmfmode,1);
     112            if ($cmfmode eq $realrule) { $keepLine = 1; } # skip to end?
     113            next;
     114        }
     115
     116        # only apply the < > <= >= rules if cmfmode is one of cmfmodes
     117        # rule: >=FOO
     118        if ($rule =~ m|^>=|) {
     119            print ">= rule: $rule\n" if $DEBUG;
     120            if ($cmfmodes{$cmfmode} == 0) { next; }
     121            $realrule = substr($rule,2);
     122            $thisLevel = $cmfmodes{$realrule};
     123            $myLevel = $cmfmodes{$cmfmode};
     124            print "levels: $cmfmode, $realrule, $myLevel, $thisLevel\n" if $DEBUG;
     125            if ($myLevel >= $thisLevel) { $keepLine = 1; }
     126            next;
     127        }
     128
     129        # rule: >FOO
     130        if ($rule =~ m|^>|) {
     131            print "> rule: $rule\n" if $DEBUG;
     132            if ($cmfmodes{$cmfmode} == 0) { next; }
     133            $realrule = substr($rule,1);
     134            $thisLevel = $cmfmodes{$realrule};
     135            $myLevel = $cmfmodes{$cmfmode};
     136            print "levels: $cmfmode, $realrule, $myLevel, $thisLevel\n" if $DEBUG;
     137            if ($myLevel > $thisLevel) { $keepLine = 1; }
     138            next;
     139        }
     140
     141        # rule: <=FOO
     142        if ($rule =~ m|^<=|) {
     143            print "<= rule: $rule\n" if $DEBUG;
     144            if ($cmfmodes{$cmfmode} == 0) { next; }
     145            $realrule = substr($rule,2);
     146            $thisLevel = $cmfmodes{$realrule};
     147            $myLevel = $cmfmodes{$cmfmode};
     148            print "levels: $cmfmode, $realrule, $myLevel, $thisLevel\n" if $DEBUG;
     149            if ($myLevel <= $thisLevel) { $keepLine = 1; }
     150            next;
     151        }
     152
     153        # rule: <FOO
     154        if ($rule =~ m|^<|) {
     155            print "< rule: $rule\n" if $DEBUG;
     156            if ($cmfmodes{$cmfmode} == 0) { next; }
     157            $realrule = substr($rule,1);
     158            $thisLevel = $cmfmodes{$realrule};
     159            $myLevel = $cmfmodes{$cmfmode};
     160            print "levels: $cmfmode, $realrule, $myLevel, $thisLevel\n" if $DEBUG;
     161            if ($myLevel < $thisLevel) { $keepLine = 1; }
     162            next;
     163        }
     164
    53165    }
     166    print "line: $line\n" if $DEBUG;
    54167
    55     if ($gtMode) {
    56         # print "gtMode : $line\n";
    57         $thisLevel = $cmfmodes{$gtMode};
    58         $myLevel = $cmfmodes{$cmfmode};
    59         print "gtMode : $gtMode vs $cmfmode, $thisLevel, $myLevel\n";
    60         if ($myLevel <= $thisLevel) { next; }
    61         $line =~ s|\@>\S*\@\s*||;
     168    if ($keepLine) {
     169        print FILE "$prefix $content\n";
    62170    }
    63 
    64     if ($ltMode) {
    65         # print "ltMode : $line\n";
    66         $thisLevel = $cmfmodes{$ltMode};
    67         $myLevel = $cmfmodes{$cmfmode};
    68         print "ltMode : $ltMode vs $cmfmode, $thisLevel, $myLevel\n";
    69         if ($myLevel >= $thisLevel) { next; }
    70         $line =~ s|\@<\S*\@\s*||;
    71     }
    72 
    73     print FILE $line;
    74171}
    75172
Note: See TracChangeset for help on using the changeset viewer.