77 lines
2.3 KiB
Markdown
77 lines
2.3 KiB
Markdown
# OdwetaLibC
|
|
|
|
I got bored with having to use complicated checking and stuff when working with files and arrays in C, so I implemented a new `file_t` struct which can load the contents of a file into a dynamically allocated array (yes, there is an implementation of those here as well... (`vector_t` struct)). The struct also stores the number of lines the file has.
|
|
|
|
Also, I managed to come up with an implementation of a kind-of-Python-like list (a vector of vectors of any type interpreted as just one vector). Quite handy, I'd say. The `list_t` struct is what you want to use when working with lists.
|
|
|
|
The difference between a `vector_t` and a `list_t` is that a vector can only be of one type, whereas a list can have values of any type inside it (in this context, any means types defined in this library and default types in C).
|
|
|
|
Examples of this work of art are in the `/examples/` directory of this repo.
|
|
|
|
## Files
|
|
|
|
#### What works so far:
|
|
|
|
1. Reading files into a 2D vector
|
|
2. Converting a file into a string
|
|
|
|
#### TODO:
|
|
|
|
1. File writing logic
|
|
2. File appending logic
|
|
3. Copy a file to another file
|
|
4. Move a file to another file
|
|
5. Rename a file
|
|
6. Delete a file?
|
|
8. Add line numbers at the beggining of each line in a file
|
|
|
|
+ You tell me
|
|
|
|
## Vectors (dynamic arrays)
|
|
|
|
#### What works so far:
|
|
|
|
1. Dynamically allocated arrays (vectors)
|
|
2. Converting a vector into a string (has to be a `char` vector)
|
|
3. Popping the last value of a vector and returning it
|
|
4. Getting and setting a value of a vector on a given index
|
|
5. Pushing a value at the end of a vector
|
|
6. Inserting a value into a vector at a given index
|
|
7. Insertion of a vector into another vector
|
|
|
|
#### TODO:
|
|
|
|
1. Removing an element at a given index
|
|
2. Vectors of lists
|
|
3. Remove a value at a given index
|
|
|
|
+ You tell me
|
|
|
|
## Lists (vectors with dynamic types)
|
|
|
|
#### What works so far:
|
|
|
|
+ Creating a list
|
|
+ Pushing into a list
|
|
+ Printing a list
|
|
+ Popping the last value of a list
|
|
+ Cleanup of a list
|
|
+ Vectors inside of a list
|
|
|
|
#### TODO:
|
|
|
|
1. Inserting at a given index
|
|
2. Verify multi-dimensional lists working - lists of lists
|
|
3. Get/set at a given index
|
|
4. Remove at a given index
|
|
|
|
## Installation
|
|
|
|
`git clone https://gitlab.com/Odweta/odwetalibc.git && cd odwetalibc && make install`
|
|
|
|
#### Run demo
|
|
|
|
(the library has to be installed with `make install`)
|
|
|
|
`make && ./demo`
|