Editing User:Ksuzee/Proposal
From BRL-CAD
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 6: | Line 6: | ||
= Detailed description = | = Detailed description = | ||
− | I decided to choose this project, because, I am sure, I have enough knowledge in c/c++ for doing it. I've been working with it since 19.03.2012. Unfortunately | + | I decided to choose this project, because, I am sure, I have enough knowledge in c/c++ for doing it. I've been working with it since 19.03.2012. Unfortunately I have a lot of subjects (about 12) this year, so I don't have enough time for working with BRL-CAD and patches every day. Nevertheless, after the 1-5 of May I will be absolutely free and ready to work hard. |
== Proposes for reduction == | == Proposes for reduction == | ||
BRL-CAD has quite useful Virtual Machine, which helped me to do my first steps with it. Mentor Sean helped me to become quite familiar with it. After several tests with "Simian" I understood that the work for reduction will be really huge. There are a lot of duplications (e.g. just copy-pasts). After testing I can propose such ideas: | BRL-CAD has quite useful Virtual Machine, which helped me to do my first steps with it. Mentor Sean helped me to become quite familiar with it. After several tests with "Simian" I understood that the work for reduction will be really huge. There are a lot of duplications (e.g. just copy-pasts). After testing I can propose such ideas: | ||
*Duplication in one file. | *Duplication in one file. | ||
− | Example: | + | Example: |
− | + | int | |
− | + | bu_strcmp(const char *string1, const char *string2) | |
− | + | { | |
− | + | const char *s1 = ""; | |
− | + | const char *s2 = ""; | |
− | + | /* "" and NULL are considered equivalent which helps prevent | |
− | + | * strcmp() from crashing. | |
− | + | */ | |
− | + | if (string1) s1 = string1; | |
− | + | if (string2) s2 = string2; | |
− | + | return strcmp(s1, s2); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | int | |
+ | bu_strncmp(const char *string1, const char *string2, size_t n) | ||
+ | { | ||
+ | /* the same body */ | ||
+ | return strncmp(s1, s2, n); | ||
+ | } | ||
− | + | int | |
− | + | bu_strcasecmp(const char *string1, const char *string2) | |
− | + | { | |
− | + | /* the same body */ | |
− | + | return strcasecmp(s1, s2); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | int | |
+ | bu_strncasecmp(const char *string1, const char *string2, size_t n) | ||
+ | { | ||
+ | /* the same body */ | ||
+ | return strncasecmp(s1, s2, n); | ||
+ | } | ||
− | ... | + | These functions are situated in file src/libbu/str.c. All these functions have the same bodies. So I propose to change these four functions and have function with such body: |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | . | + | int |
+ | bu_strcmp(const char *string1, const char *string2, size_t n, unsigned char cases_cmp) | ||
+ | { | ||
+ | const char *s1 = ""; | ||
+ | const char *s2 = ""; | ||
+ | /* "" and NULL are considered equivalent which helps prevent | ||
+ | * strncmp() from crashing. | ||
+ | */ | ||
+ | if (string1) s1 = string1; | ||
+ | if (string2) s2 = string2; | ||
+ | if (cases_cmp) | ||
+ | { | ||
+ | if (n == 0) return strncasecmp(s1, s2); | ||
+ | return strncasecmp(s1, s2, n); | ||
+ | } | ||
+ | if (n == 0) return strcmp(s1, s2); | ||
+ | return strncmp(s1, s2, n); | ||
+ | } | ||
− | + | The next step is to find functions' calls and correct them | |
*Duplication in one directory but different files | *Duplication in one directory but different files | ||
Line 94: | Line 85: | ||
I think the tool "Simian" is really useful and easy in use. Also it works rather fast. If I am involved into this project I want to use it specifically. But, of course, if my mentor advises me something else, I will improve my skills in other tool | I think the tool "Simian" is really useful and easy in use. Also it works rather fast. If I am involved into this project I want to use it specifically. But, of course, if my mentor advises me something else, I will improve my skills in other tool | ||
− | + | to be continued | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |