-rwxr-xr-x | scripts/q_add_function | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/scripts/q_add_function b/scripts/q_add_function new file mode 100755 index 0000000..cc14db7 --- a/dev/null +++ b/scripts/q_add_function | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # Script to add a new function to an existing class | ||
4 | # | ||
5 | # Copyright 1999-2000 Trolltech AS. All rights reserved. | ||
6 | # | ||
7 | |||
8 | |||
9 | # load the helper functions | ||
10 | . q_functions | ||
11 | |||
12 | |||
13 | if [ $# -lt 4 ] | ||
14 | then | ||
15 | echo "Usage: q_add_function AccessModifier RetType ExistingClassName NewFunctionName ArgList" | ||
16 | print_example_usage | ||
17 | exit | ||
18 | fi | ||
19 | |||
20 | |||
21 | ACCESS_MODIFIER=$1 | ||
22 | RET_TYPE=$2 | ||
23 | EXISTING_CLASS_NAME=`echo $3 | cut -d ":" -f 1` | ||
24 | NEW_FUNCTION_NAME=`echo $3 | cut -d ":" -f 3` | ||
25 | ARG_LIST=$4 | ||
26 | |||
27 | |||
28 | EXISTING_CLASS_NAME_LOWER=`echo $EXISTING_CLASS_NAME | tr "[A-Z]" "[a-z]"` | ||
29 | EXISTING_CLASS_HEADER_FILE="$EXISTING_CLASS_NAME_LOWER".h | ||
30 | EXISTING_CLASS_SOURCE_FILE="$EXISTING_CLASS_NAME_LOWER".cpp | ||
31 | ORIGINAL_CLASS_HEADER_FILE="$EXISTING_CLASS_NAME_LOWER".h.orig | ||
32 | |||
33 | |||
34 | function print_source_file | ||
35 | { | ||
36 | cat << END | ||
37 | |||
38 | |||
39 | $RET_TYPE $EXISTING_CLASS_NAME::$NEW_FUNCTION_NAME$ARG_LIST | ||
40 | { | ||
41 | } | ||
42 | END | ||
43 | } | ||
44 | |||
45 | |||
46 | function print_function_definition | ||
47 | { | ||
48 | cat << END | ||
49 | $ACCESS_MODIFIER | ||
50 | $RET_TYPE $NEW_FUNCTION_NAME$ARG_LIST; | ||
51 | END | ||
52 | } | ||
53 | |||
54 | |||
55 | function print_new_header_file | ||
56 | { | ||
57 | get_number_of_lines | ||
58 | get_first_line_of_class_definition | ||
59 | if [ -z "$LINE" ] | ||
60 | then | ||
61 | cat << END | ||
62 | /* | ||
63 | No good, can't find $EXISTING_CLASS_NAME class definition anywhere. | ||
64 | You'll have to manually edit the header file to add the | ||
65 | following function definition to the $EXISTING_CLASS_NAME class: | ||
66 | |||
67 | END | ||
68 | print_function_definition | ||
69 | echo -e "\n*/" | ||
70 | cat $ORIGINAL_CLASS_HEADER_FILE | ||
71 | else | ||
72 | head -n $LINE $ORIGINAL_CLASS_HEADER_FILE | ||
73 | print_function_definition | ||
74 | tail -n `expr $LINES - $LINE` $ORIGINAL_CLASS_HEADER_FILE | ||
75 | fi | ||
76 | } | ||
77 | |||
78 | |||
79 | [ -f $EXISTING_CLASS_HEADER_FILE ] || { echo "file $EXISTING_CLASS_HEADER_FILE not found" ; exit ; } | ||
80 | |||
81 | # Backup file | ||
82 | mv $EXISTING_CLASS_HEADER_FILE $ORIGINAL_CLASS_HEADER_FILE | ||
83 | |||
84 | |||
85 | print_source_file >> $EXISTING_CLASS_SOURCE_FILE | ||
86 | print_new_header_file >> $EXISTING_CLASS_HEADER_FILE | ||
87 | |||
88 | |||