Difference between revisions of "Team !YOU - OOP344"

From CDOT Wiki
Jump to: navigation, search
(Team Members)
m (adding name to skype list)
 
(48 intermediate revisions by 8 users not shown)
Line 5: Line 5:
  
  
== Team Members ==
+
== <big>Team Members</big> ==
 
{| class="wikitable sortable" border="1" cellpadding="5"
 
{| class="wikitable sortable" border="1" cellpadding="5"
 
|+ OOP344 - 2010 Team !YOU -  
 
|+ OOP344 - 2010 Team !YOU -  
  
[mailto:mdadams1@learn.senecac.on.ca,mddaniels@learn.senecac.on.ca,fmdeoliveira@learn.senecac.on.ca,ammisko@learn.senecac.on.ca,amward1@learn.senecac.on.ca,mziaei1@learn.senecac.on.ca,nsimmalavong@learn.senecac.on.ca,tjcatibog@learn.senecac.on.ca,mlin25@learn.senecac.on.ca  Email All]
+
[mailto:mdadams1@learn.senecac.on.ca,mddaniels@learn.senecac.on.ca,fmdeoliveira@learn.senecac.on.ca,ammisko@learn.senecac.on.ca,amward1@learn.senecac.on.ca,mziaei1@learn.senecac.on.ca,nsimmalavong@learn.senecac.on.ca,tjcatibog@learn.senecac.on.ca  Email All]
 
! Last Name !! Name !! Seneca ID !! Section !! Blog URL !! IRC nick !! My Contributions
 
! Last Name !! Name !! Seneca ID !! Section !! Blog URL !! IRC nick !! My Contributions
 
|-
 
|-
| Adams|| [http://zenit.senecac.on.ca/wiki/index.php/User:Mdadams1 Matthew]|| [mailto:mdadams1@learn.senecac.on.ca mdadams1]|| A || http://www.tandemwebdesign.ca/blog || MattAdams|| [[Special:Contributions/mdadams1 | Contributions]]
+
| (A)Adams|| [http://zenit.senecac.on.ca/wiki/index.php/User:Mdadams1 Matthew]|| [mailto:mdadams1@learn.senecac.on.ca mdadams1]|| A || http://www.tandemwebdesign.ca/blog || MattAdams|| [[Special:Contributions/mdadams1 | Contributions]]
 
|-
 
|-
| Catibog|| [http://zenit.senecac.on.ca/wiki/index.php/User:Tjcatibog Timothy]|| [mailto:tjcatibog@learn.senecac.on.ca tjcatibog]|| A|| http://tjprogramming.blogspot.com/ || tjcatibog|| [[Special:Contributions/tjcatibog | Contributions]]
+
| (A)Catibog|| [http://zenit.senecac.on.ca/wiki/index.php/User:Tjcatibog Timothy]|| [mailto:tjcatibog@learn.senecac.on.ca tjcatibog]|| A|| http://tjprogramming.blogspot.com/ || tjcatibog|| [[Special:Contributions/tjcatibog | Contributions]]
 
|-
 
|-
 
| Daniels|| [http://zenit.senecac.on.ca/wiki/index.php/User:Mddaniels Matthew]|| [mailto:mddaniels@learn.senecac.on.ca?subject=OOP344 mddaniels]|| A || http://cdnpadawan.wordpress.com/ ||  CDNPadawan || [[Special:Contributions/mddaniels | Contributions]]
 
| Daniels|| [http://zenit.senecac.on.ca/wiki/index.php/User:Mddaniels Matthew]|| [mailto:mddaniels@learn.senecac.on.ca?subject=OOP344 mddaniels]|| A || http://cdnpadawan.wordpress.com/ ||  CDNPadawan || [[Special:Contributions/mddaniels | Contributions]]
 
|-
 
|-
| De Oliveira|| [http://zenit.senecac.on.ca/wiki/index.php/User:fmdeoliveira Felipe]|| [mailto:fmdeoliveira@learn.senecac.on.ca fmdeoliveira]|| A || http://feliploko.wordpress.com/  || fmDeOliveira  || [[Special:Contributions/fmdeoliveira | Contributions]]
+
| (A)De Oliveira|| [http://zenit.senecac.on.ca/wiki/index.php/User:fmdeoliveira Felipe]|| [mailto:fmdeoliveira@learn.senecac.on.ca fmdeoliveira]|| A || http://feliploko.wordpress.com/  || fmDeOliveira  || [[Special:Contributions/fmdeoliveira | Contributions]]
 
|-
 
|-
| Misko|| [http://zenit.senecac.on.ca/wiki/index.php/User:ammisko Andrew]|| [mailto:ammisko@learn.senecac.on.ca ammisko]|| A || http://ammisko.blogspot.com  || ammisko  || [[Special:Contributions/ammisko | Contributions]]
+
| (A)Misko|| [http://zenit.senecac.on.ca/wiki/index.php/User:ammisko Andrew]|| [mailto:ammisko@learn.senecac.on.ca ammisko]|| A || http://ammisko.blogspot.com  || ammisko  || [[Special:Contributions/ammisko | Contributions]]
 
|-
 
|-
 
| Simmalavong|| [http://zenit.senecac.on.ca/wiki/index.php/User:nsimmalavong Niki]|| [mailto:nsimmalavong@learn.senecac.on.ca nsimmalavong]|| A || http://oop344-niki.blogspot.com/ || nsimmalavong || [[Special:Contributions/nsimmalavong | Contributions]]
 
| Simmalavong|| [http://zenit.senecac.on.ca/wiki/index.php/User:nsimmalavong Niki]|| [mailto:nsimmalavong@learn.senecac.on.ca nsimmalavong]|| A || http://oop344-niki.blogspot.com/ || nsimmalavong || [[Special:Contributions/nsimmalavong | Contributions]]
 
|-
 
|-
| Ward||  [http://zenit.senecac.on.ca/wiki/index.php/User:Amward1 Amy]|| [mailto:amward1@learn.senecac.on.ca amward1]|| A || http://amward1.wordpress.com/ || award|| [[Special:Contributions/amward1 | Contributions]]
+
| (A)Ward||  [http://zenit.senecac.on.ca/wiki/index.php/User:Amward1 Amy]|| [mailto:amward1@learn.senecac.on.ca amward1]|| A || http://amward1.wordpress.com/ || award|| [[Special:Contributions/amward1 | Contributions]]
 
|-
 
|-
| Ziaei|| [http://zenit.senecac.on.ca/wiki/index.php/User:Mziaei1 Minoo] || [mailto:mziaei1@learn.senecac.on.ca mziaei1]|| A || http://minooz.wordpress.com/ || Minooz || [[Special:Contributions/mziaei1 | Contributions]]
+
| (A)Ziaei|| [http://zenit.senecac.on.ca/wiki/index.php/User:Mziaei1 Minoo] || [mailto:mziaei1@learn.senecac.on.ca mziaei1]|| A || http://minooz.wordpress.com/ || Minooz || [[Special:Contributions/mziaei1 | Contributions]]
|-
 
| Lin || [http://zenit.senecac.on.ca/wiki/index.php/User:Mlin25 Michael || [mailto:mlin25@learn.senecac.on.ca mlin25] || A || http://krazyazn.blogspot.com/ || mlin25 || [[Special:Contributions/mlin25 | Contributions]] ||
 
 
|-
 
|-
 
|}
 
|}
  
== IRC ==
+
== <big>Discussions</big> ==
Our IRC channel is #oop344_!you on freenode. Please join the channel whenever you are on IRC.
+
Please visit the [http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_Discussions Discussion Page] often, so we can share resources and opinions with others in between our weekly meetings.
  
=== IRC Meetings ===
 
We need to decide when we should have our meetings.
 
  
{| class="wikitable" border="1"
+
== <big>Skype</big> ==
|+ Discussion
 
! Name !! Comment
 
|-
 
| fmDeOliveira || Evenings work better for me... It is hard to find some time in the morning or afternoon that all or most of us are able to be on IRC.
 
|-
 
| ammisko || Evening are also good for me.  I don't have class later than 320 every day. As long as I know a few days in advance I shouldn't have a problem with meeting any time after 320.
 
|-
 
  
| MattAdams || Evening is probably better, because that is when I do all of my programming. I normally work from Thursday to Sunday, so early week is better for me.
+
{| class="wikitable sortable" border="1" cellpadding="5"
|-
+
|+ Skype Name
  
| Mziaei1 || Evenings are better for me too. Any evening, unless something unexpected happens.
+
! Name !! SkyName
 
|-
 
|-
| Timothy || Any evening or weekend is good for me. Most school days I'm home by 6:30 p.m. at the latest so anytime after that would be perfect.
+
| Matthew Adams || matt_adams21
 
 
 
|-
 
|-
 
+
| Amy Ward || AmyWard11
| Mddaniels || Evenings are good for me, I have a paper route that keeps me busy until 7pm on Tuesdays and Thursdays but asside from that I'm available
 
 
|-
 
|-
 
+
| Minoo Ziaei || mziaei53
| Nsimmalavong || Anytime after 7 pm is good except on Tuesdays and Fridays, it would be preferred after 9 because I tend to work later those days. I can be made available at anytime on IRC outside those times if needed.
 
 
|-
 
|-
 
+
| Timothy Catibog || jordyy.catibog
| Amward1 || Evenings are good.
 
 
|-
 
|-
|}
+
| Felipe de Oliveira || feliploko
 
 
== Team Programming Standards ==
 
An area for listing our teams programming standards that we will use when constructing the project. Please follow these rules when writing code for this project. This will make it easier for us to help each other and collaborate in the whole process.
 
 
 
{| class="wikitable" border="1" cellpadding="5"
 
|
 
! Name !! Comment
 
 
|-
 
|-
| ammisko || What does everyone think about creating a sub-team page for all our programming standards discussions? We could move all our discussions below onto a Team Programming Discussion Page and then only post the standards we all agree upon on the team page.  We could do the same for Assignments as well.
+
| Andrew Misko || ammisko
 
|-
 
|-
 +
 
|}
 
|}
  
 +
== <big>IRC</big> ==
 +
Our IRC channel is #oop344_!you on freenode. Please join the channel whenever you are on IRC.
  
 +
The channel is restricted to Fardad and the team members. There is an access list that will automatically kick and ban anyone not listed. For this reason, we should always make sure we are using our official IRC nicks (or one within our nick group) and that we are identified with the nickserv (/nickserv identify ''mypassword'') before issuing the join command.
  
 +
If you are getting a message that you are banned on our channel, make sure you are identified and then issue the command
  
 +
  /chanserv unban #oop344_!you
  
=== Declare only one variable in each line. ===
+
before trying to join again.
This makes it easier to scan the code and find the type of a variable that you see somewhere else in the code.
 
  
Do:
+
=== [http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_IRC_Meetings IRC Meetings] ===
  int a;
+
Our first meeting was on Wednesday, January 27th, from 10pm to midnight. On the following weeks, we will meet regularly on Mondays from 8pm to 10pm.
  int b = 0;
 
  int c = a;
 
  
Don't:
+
To view information about past or upcoming meetings, please visit [http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_IRC_Meetings http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_IRC_Meetings].
  int a, b = 0, c = a;
 
 
 
 
 
=== Do not use tabs when indenting. ===
 
The tab space is interpreted different across different software and operating systems. Use normal spaces to add indentation instead.
 
 
 
 
 
==== (Discussion: Indentation) ====
 
Something simple, but that should be standard for all pieces of the code.
 
  
 +
== <big>Team Programming Standards</big> ==
 +
An area for listing our teams programming standards that we will use when constructing the project. Please follow these rules when writing code for this project. This will make it easier for us to help each other and collaborate in the whole process.
  
{| class="wikitable" border="1"
+
=== [http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_Official_Standards Official Team !You Programming Standards] ===
|+ Discussion
 
! Name !! Comment
 
|-
 
| fmDeOliveira || I usually put two spaces for a new indent, and keep a blank line between new big blocks of code and whatever comes before it (usually an if statement, a for loop, or the signature of a function).
 
|-
 
| MattAdams || Please only indent to 4 spaces. If we all use the same indenting, when it comes to putting our code together it will looks the same.
 
NOTE: Most text editors have the option to change tabs to spaces, so you are still able to press the tab key, however it will convert it to spaces when the file is saved.
 
|-
 
| Mziaei1 || I actually agree with 2 spaces more than 4 spaces. There was an example here before!!
 
    main() {
 
      for (i = 0; i <10; i++) {
 
        printf("Hi!");
 
      }
 
    }
 
|-
 
  
| Timothy || What I do in Visual Studio is change the indentation settings to input 2 spaces instead of tabs, and I prefer it this way just in case there is a situation where multiple nested code is required and it's not all running off the page to view it properly.
+
To view a list of our agreeded upon programming standards, please visit [http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_Official_Standards http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_Official_Standards].
  
|-
 
  
| Mddaniels || I myself have always used the tab just for speed and ease of programming, plus I like having my code spaced out so that I can locate blocks of code better. But if the general opinion is to use two spaces then I will modify the visual studio software to use two spaces.
 
|-
 
  
| Nsimmalavong || As most of you have said, I also use 2 spaces as indentation. Along with fmDeOliveira, I've put a blank line to separate blocks of code
 
|-
 
|}
 
  
=== Put the pointer identifier(*) right after the target variable type. ===
+
== <big>The Project</big> ==
Pointers are hard enough to deal with. It only makes it more complicated if they are declared differently throughout the code.
 
  
Do:
+
An area for us to post information and links for our team project.
  int* p1;
 
  char* p2;
 
  
Don't:
+
=== [[Team !YOU - BIO Library | Basic Input Output Library]] ===
  int *p1;
 
  char *p2;
 
  
 +
Our page for the basic input output library, the first part of our project.
  
=== (Discussion: Use of iterating variables on for loops) ===
+
=== [[!You's OpText - OOP344 | OpText]] ===
There are two major ways of dealing with the iteration variable on '''for''' loops. We should come to a consensus on how to deal with it on our project.
 
  
Option 1: Declare the variables outside the loop; initialize them inside the loop; keep their exit values for future use.
+
====Part1: [http://zenit.senecac.on.ca/wiki/index.php/Create_Class_Prototypes_-_!You_-_OOP344 Create Class Prototypes]====
  int i;                                // counter
 
  for (i = 0; i<5; i++) printf(".");    // Prints .....
 
  printf("%d",i);                      // Prints 5
 
  
Option 2: Declare and initialize variables inside the loop; lose the variable at the end of the loop scope;
+
====Part2: [http://zenit.senecac.on.ca/wiki/index.php/Code_all_member_functions_-_!You_-_OOP3444 Code all member functions]====
  for (int i = 0; i<5; i++) printf("."); // Once the loop is done, variable i cannot be accessed anymore.
 
  
 +
====Part3: Code BForm functions====
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
|+ Discussion
+
|+ Class Member Functions
! Name !! Comment
 
|-
 
| fmDeOliveira || I definitely prefer option 2. It is much easier to keep recycling the loop variables without having to worry if they already exist or not. In case we need the value of the loop variable after the loop is done, we should just copy it to another variable before the end of the loop.
 
|-
 
| ammisko || I like option 1 better (I changed it a bit).  I think it looks cleaner and is much easier to read for someone who doesn't know what the code does (especially with comments).  Also what if we need to use a loop variable from outside the for loop?  Or if we need to use the first part of the for-loop for other code?  Option 1 could accommodate that better I think.
 
|-
 
 
 
| MattAdams || I like both ways. I use option1 when I need to use the counter for something else. And I use option2 when I need to right a quick for loop. As for a standard, I think option1 should be used, that way all of the variables are declared at the top of every function, and that way we don't have to copy the counter to another variable.
 
  
 +
! Tasks || Members Working On It !! Status !! Due Date
 
|-
 
|-
 
+
| BForm::edit || MattAdams || In Progress || -
| Mddaniels || I agree with option one, there are plenty of times when you need the counters saved for use later in the function.
 
 
|-
 
|-
 
+
| BForm Constructor/Destructor || Minoo || committed || March 23, 2010 midnight
| Nsimmalavong || Agreed with fmDeOliveira, I prefer option 2 the same reasoning. Having amibiguous variables floating around can get confusing and we may just end up needing more than what the 26 letter alphabet provides (which results in some unique variables like a13). If the variable is needed after the loop, it should be copied into another variable before the end of loop
+
|-
 +
| BForm::display() || Amy || committed || March 23, 2010 midnight
 
|-
 
|-
|}
+
| BForm::add() x2 || Timothy || committed || March 23, 2010 midnight
 
 
=== (Discussion: Variable names) ===
 
How should we name the variables that we create on our project?
 
 
 
 
 
{| class="wikitable" border="1"
 
|+ Discussion
 
! Name !! Comment
 
|-
 
| fmDeOliveira || I suggest we avoid abbreviations, since what might be obvious for some could be confusing for others. Full words or short expressions could be used where the first letter is always lower case, and the first letter of the following words are upper case. Examples: cost, totalPrice, numberOfPeople.
 
|-
 
 
 
| MattAdams || I also agree w/ Felipe. Using Camle notation is a nice and easy way to name variables. However, I would have said numOfPeople, instead of 'numberOfPeople'. As for #define goes. Use UPPER case, and separate words by the underscore(_). ie. #define ISBN_LENGTH, #define AREA_MAX, #define MAX, #define LENGTH
 
 
 
|-
 
| Mddaniels || Defines should always be caps, and camel notation is very good, just as long as the variable names make sense I'll be happy. I got sick and tired of last semester's group giving variable names like "ptr".
 
 
|-
 
|-
 +
| BForm::editable, fieldNum, curField, operator[] || Felipe || committed || March 23, 2010 midnight
 
|}
 
|}
  
=== (Discussion: Use of comments) ===
+
== <big>Helpful External Links</big> ==
When should we use double slash (//) and when should we use slash-asterisk (/* */)?
 
 
 
 
 
{| class="wikitable" border="1"
 
|+ Discussion
 
! Name !! Comment
 
|-
 
| fmDeOliveira || I prefer using // for single-line comments and /* */ for blocks of commented code. This would avoid problems commenting out blocks of code that already have single-line comments (the end of the single-line comment would not be interpreted as the end of the block comment).
 
|-
 
 
 
| MattAdams || I also like using // for end of the line comments to slitly explain whats going on, and use /* */ for commented out code, as well as explaining a certain block of code that is confusing to understand.
 
 
 
|-
 
 
 
| Mddaniels|| What you need to remember is that we are coding in C the // for single line comments does not work in C. All coments need to be in the /* */ format. Also try and use the comments to reflect the Art of Programming. Code should be written that any programmer can look at the code and understand what is going on.
 
  
|-
+
[http://www.microsoft.com/express/Downloads/ Microsoft Visual Studio Express Edition Download]
|}
 
 
 
=== (Discussion: Nesting) ===
 
How do we deal with else statements?
 
 
 
Option 1: else right after the end of the if block
 
  if (a > 0) {
 
    printf(".");
 
  } else {
 
    printf(",");
 
  }
 
 
 
Option 2: else on a line below the end of the if block
 
  if (a > 0) {
 
    printf(".");
 
  }
 
  else {
 
    printf(",");
 
  }
 
 
 
Mddaniels example: This is how I was taught in IPC144 by Murray Saul
 
  if (a > 0)
 
  {
 
    printf(".");
 
  }
 
  else
 
  {
 
    printf(",");
 
  }
 
 
 
{| class="wikitable" border="1"
 
|+ Discussion
 
! Name !! Comment
 
|-
 
| fmDeOliveira || I prefer option 2.
 
|-
 
 
 
| MattAdams || Option 2 all the way.
 
 
 
|-
 
 
 
| Mziaei1 || Agree with option 2.
 
 
 
|-
 
 
 
| Mddaniels || I agree with option 2. Although I am used to coding my braces on seperate lines, see my small example above.
 
|}
 
 
 
== Code Examples ==
 
 
 
Below we all will post our OOP244 Assignment 4 from last semester. Please zip all of the files, and upload it.
 
 
 
This will help all of us create our coding "rules". I, of all people, know how hard it is to break coding habits. So if we upload examples of how we code, then we can have a better understanding of each other's habits, and create rules that make us all happy.
 
 
 
The sooner everyone posts their code, the sooner everyone else can read it, and the sooner we can create our programming rules.
 
<br /><br  />
 
{| class="wikitable" border="1"
 
|+ Code Example
 
! Name !! Code
 
|-
 
| MattAdams || [http://matrix.senecac.on.ca/~mdadams1/assign4.zip assign4.zip]
 
|-
 
| Mziaei1 || [http://matrix.senecac.on.ca/~mziaei1/Assign4/a4.zip a4.zip]
 
|-
 
| fmDeOliveira || [http://matrix.senecac.on.ca/~fmdeoliveira/a4.zip a4.zip]
 
|-
 
|}
 
 
 
{| class="wikitable" border="1"
 
|+ Discussion
 
! Name !! Comment
 
|-
 
| Mddaniels || The only problem I have with this is that 1) I do not  have any code left from previous semesters on my computers due to a system's crash. If it is really needed  then I will write a piece of dummy code in my prefered style and post it  here to the team page.
 
|-
 
| ammisko || I don't have a coding example from last semester either.  I took OOP244 a while ago so I'll have to find something to upload from then.
 
|-
 
|}
 

Latest revision as of 20:15, 30 March 2010


OOP344 | Weekly Schedule | Student List | Teams | Project | Student Resources
This is Team !YOU's Project Page

You will find all project related information here


Team Members

OOP344 - 2010 Team !YOU - Email All
Last Name Name Seneca ID Section Blog URL IRC nick My Contributions
(A)Adams Matthew mdadams1 A http://www.tandemwebdesign.ca/blog MattAdams Contributions
(A)Catibog Timothy tjcatibog A http://tjprogramming.blogspot.com/ tjcatibog Contributions
Daniels Matthew mddaniels A http://cdnpadawan.wordpress.com/ CDNPadawan Contributions
(A)De Oliveira Felipe fmdeoliveira A http://feliploko.wordpress.com/ fmDeOliveira Contributions
(A)Misko Andrew ammisko A http://ammisko.blogspot.com ammisko Contributions
Simmalavong Niki nsimmalavong A http://oop344-niki.blogspot.com/ nsimmalavong Contributions
(A)Ward Amy amward1 A http://amward1.wordpress.com/ award Contributions
(A)Ziaei Minoo mziaei1 A http://minooz.wordpress.com/ Minooz Contributions

Discussions

Please visit the Discussion Page often, so we can share resources and opinions with others in between our weekly meetings.


Skype

Skype Name
Name SkyName
Matthew Adams matt_adams21
Amy Ward AmyWard11
Minoo Ziaei mziaei53
Timothy Catibog jordyy.catibog
Felipe de Oliveira feliploko
Andrew Misko ammisko

IRC

Our IRC channel is #oop344_!you on freenode. Please join the channel whenever you are on IRC.

The channel is restricted to Fardad and the team members. There is an access list that will automatically kick and ban anyone not listed. For this reason, we should always make sure we are using our official IRC nicks (or one within our nick group) and that we are identified with the nickserv (/nickserv identify mypassword) before issuing the join command.

If you are getting a message that you are banned on our channel, make sure you are identified and then issue the command

 /chanserv unban #oop344_!you 

before trying to join again.

IRC Meetings

Our first meeting was on Wednesday, January 27th, from 10pm to midnight. On the following weeks, we will meet regularly on Mondays from 8pm to 10pm.

To view information about past or upcoming meetings, please visit http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_IRC_Meetings.

Team Programming Standards

An area for listing our teams programming standards that we will use when constructing the project. Please follow these rules when writing code for this project. This will make it easier for us to help each other and collaborate in the whole process.

Official Team !You Programming Standards

To view a list of our agreeded upon programming standards, please visit http://zenit.senecac.on.ca/wiki/index.php/Team_!YOU_-_Official_Standards.



The Project

An area for us to post information and links for our team project.

Basic Input Output Library

Our page for the basic input output library, the first part of our project.

OpText

Part1: Create Class Prototypes

Part2: Code all member functions

Part3: Code BForm functions

Class Member Functions
Tasks Members Working On It Status Due Date
BForm::edit MattAdams In Progress -
BForm Constructor/Destructor Minoo committed March 23, 2010 midnight
BForm::display() Amy committed March 23, 2010 midnight
BForm::add() x2 Timothy committed March 23, 2010 midnight
BForm::editable, fieldNum, curField, operator[] Felipe committed March 23, 2010 midnight

Helpful External Links

Microsoft Visual Studio Express Edition Download