1#************************************************************** 2# 3# Licensed to the Apache Software Foundation (ASF) under one 4# or more contributor license agreements. See the NOTICE file 5# distributed with this work for additional information 6# regarding copyright ownership. The ASF licenses this file 7# to you under the Apache License, Version 2.0 (the 8# "License"); you may not use this file except in compliance 9# with the License. You may obtain a copy of the License at 10# 11# http://www.apache.org/licenses/LICENSE-2.0 12# 13# Unless required by applicable law or agreed to in writing, 14# software distributed under the License is distributed on an 15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16# KIND, either express or implied. See the License for the 17# specific language governing permissions and limitations 18# under the License. 19# 20#************************************************************** 21 22 23 24# operation mode (1 = identifiers, 2 = names, 3 = plain) 25$op = shift @ARGV; 26die "Error: invalid operation" unless( $op >= 1 && $op <= 3); 27 28# number of bits to shift the namespace identifier 29$shift = 16; 30 31if( $op == 1 ) { 32 print( "const size_t NMSP_SHIFT = $shift;\n" ); 33} 34 35$i = 1; 36while( <> ) { 37 # trim newline 38 chomp( $_ ); 39 # trim leading/trailing whitespace 40 $_ =~ s/^\s*//g; 41 $_ =~ s/\s*$//g; 42 # trim comments 43 $_ =~ s/^#.*//; 44 # skip empty lines 45 if( $_ ) { 46 # check for valid characters 47 $_ =~ /^([a-zA-Z]+)\s+([a-zA-Z0-9-.:\/]+)\s*$/ or die "Error: invalid entry: '$_'"; 48 # generate output 49 $id = $i << $shift; 50 if( $op == 1 ) { print( "const sal_Int32 NMSP_$1 = $i << NMSP_SHIFT;\n" ); } 51 elsif( $op == 2 ) { print( "{ $id, \"$2\" },\n" ); } 52 elsif( $op == 3 ) { print( "$id $1 $2\n" ); } 53 ++$i; 54 } 55} 56