Changes

Jump to: navigation, search

Oop344 20102 - iof functions

199 bytes added, 07:57, 17 September 2010
no edit summary
{{OOP344 Index20102}}
As your first assignment this semester, you are to write a multi-platform Set of Basic Input Output Functions (IOF) for direct terminal interaction and later use the IOF to create a text editor. Assignment One, like the main project is done collaboratively and is divided in two parts:
** Create directories under branches named as your learn id.
** Branch trunk into your branches/learnID directory and start working.
* Complex io functions: Jun 20th 23rd @ 23:59== Tester Program and demo ==<!--<big> ** iofmain.c V0R0.8 9 is released svn://zenit.senecac.on.ca/oop344/trunk/AS1/iofmain.c** You can run the demo (compiled version) of iof functions tester on matrix by running:</big><pre>~fardad.soleimanloo/iof--</pre></big>
== File Names ==
NOTE: The following corrections should be done to '''"*curpos"''' and '''"*offset"''' in case they hold invalid values before editing begins:
# If '''"*curpos"''' exceeds is greater than or equal to the value of fieldlen, correct the '''"*curpos"''' so that cursor stands at the last position inside the field.
# If '''"*offset"''' is greater than the length of the string, set the '''"*offset"''' so the “last character of str” is hidden right before the first space in the field. (See '''“[[Oop344 20102 - iof functions#IsTextEditor:|IsTextEditor Section #1]]”''' for more)
# After the above, if cursor is past the last character of '''“str”''', set '''"*curpos"''' so the cursor stands right after the last character of "str".
* '''TAB''':
** if '''IsTextEditor''' is false, TAB will simply terminate the function like a Function key
** if '''IsTextEditor''' is true, TAB will insert '''CIO_TAB_SIZE''' number of spaces into the string.'''CIO_TAB_SIZE''' should be a defined "tab size" value in cioliof.h. If '''CIO_TAB_SIZE''' spaces cannot be inserted into the string for any reason then the inputted tab should be ignored. (See '''“[[Oop344 20102 - iof functions#IsTextEditor:|IsTextEditor Section #2]]”''' for more)
* '''ESCAPE''' - Terminates iof_edit() and aborts editing: '''"str"''' will contain originally passed data when leaving function. (See '''“[[Oop344 20102 - iof functions#IsTextEditor:|IsTextEditor Section #3]]”''' for exception)
* '''INSERT''' - toggle Insert/Overstrike mode
**Finally, if the cursor is at the end of the field, instead of moving to right, the characters are shifted to left.
=== = <big>IsTextEditor: </big> ====
===='''[Section #1] IsTextEditor and *offset===='''<br/>
If IsTextEditor is true, then it means that the function is being used to edit text by editing one line of text at a time. In this case, shifting a line to the left or right should not only cause the editing line to be shifted, but also the rest of the lines in the text. To do this, iof_edit() should let the calling function know that a shift has happened. Since shifting essentially means modifying '''“*offset”''' when '''“IsTextEditor”''' is true, and that there are times when you find that '''“*offset”''' needs to be modified, you should terminate the function afterwards. With termination, the function should return the terminating key.
Note that at the beginning of the execution of iof_edit(), validating '''*offset''' may require the value of '''*offset''' to change. If so, make sure to correct the offset and then terminate the function before any editing happens returning the default value of key.
===='''[Section #2]===='''<br/>
# The iof_edit() function always shows blanks in any the part of the field that is not occupied by the data in the string.
#<u>UNDER NO CIRCUMSTANCES DOES THE FUNCTION CHANGE ANY POSITION ON THE SCREEN OUTSIDE OF THE FIELD</u>.
===='''[Section #3] IsTextEditor and ESCAPE KEY===='''<br/>
# When '"IsTextEditor"' is true and ESCAPE KEY is hit, do not abort the editing, and simply terminate the function returning the ESCAPE KEY.
# If memory allocation for aborting the edit (ESCAPE KEY) fails, quit the function returning -1.
===='''[Section #4] Others===='''<br/>
# Any normal printable key is simply placed into the string according to the rules laid out in the discussion of the INSERT key above.(The keys from the space character to the tilde character in the ASCII table are considered "printable".)
# Like most C library functions, your iof_edit() may assume that it is the calling program's responsibility is to ensure that the array is large enough to handle the specified number of characters, and that the starting screen position provides enough room (on the screen) for the field, etc.
 
=== Selection Editor ===

Navigation menu