| | 1 | ,,SVN revion 2009-11-02 - !r43404,, |
| | 2 | [[TOC]] |
| | 3 | |
| | 4 | '''Important Note''': the included code should be used only as conceptual idea of how something works. |
| | 5 | |
| | 6 | |
| | 7 | == Eina == |
| | 8 | |
| | 9 | === Accessor === |
| | 10 | Accessors allow a random access of the data of a container. They can access an element at any position. |
| | 11 | |
| | 12 | === Arrays === |
| | 13 | Create and manage arrays, very fast access to data list. |
| | 14 | |
| | 15 | === Benchmarks === |
| | 16 | Allow you to add benchmark framework in a project for timing critical part and detect slow parts of code. |
| | 17 | |
| | 18 | === Convert === |
| | 19 | These functions allow you to convert integer or real numbers to string or conversely. |
| | 20 | |
| | 21 | === Cpu === |
| | 22 | Get the features of a cpu, like mmx, se, altivec, etc |
| | 23 | |
| | 24 | |
| | 25 | === File === |
| | 26 | * list the content of a directory, recusrsively or not, and can call a callback function for eachfound file. |
| | 27 | * split a path into all the subdirectories that compose it, according to the separator of the file system. |
| | 28 | |
| | 29 | === Hash === |
| | 30 | Hash management |
| | 31 | |
| | 32 | Hash functions are mostly used to speed up table lookup or data comparison tasks such as finding items in a database, detecting duplicated or similar records in a large file, finding similar stretches in DNA sequences, and so on. |
| | 33 | |
| | 34 | === Rectangle === |
| | 35 | Rectangle coordenades and calculations |
| | 36 | |
| | 37 | === Stringshare === |
| | 38 | These functions allow you to store one copy of a string, and use it throughout your program. |
| | 39 | |
| | 40 | It sounds like micro-optimizing, but profiling has shown this can have a significant impact as you scale the number of copies up. It improves string creation/destruction speed, reduces memory use and decreases memory fragmentation, so a win all-around. |
| | 41 | |
| | 42 | === Trash === |
| | 43 | Instead to malloc/free pointers, just put them in the trash, you can reuse it later too, you can free the entire trash later. FIXME: is that ok ? |
| | 44 | |
| | 45 | === List === |
| | 46 | Lists management |
| | 47 | * for (foreach) |
| | 48 | * free lists |
| | 49 | * next/prev/last |
| | 50 | * append/prepend/*relative |
| | 51 | * data get |
| | 52 | * counter |
| | 53 | * find |
| | 54 | * sort |
| | 55 | * remove |
| | 56 | * promote: move the specified data to the first of the list |
| | 57 | * nth: get the nth number of the member in the list |
| | 58 | * merge/split |
| | 59 | * iterator |
| | 60 | |
| | 61 | |
| | 62 | === Iterator === |
| | 63 | This is like a cursor to access the elements sequentially in a container |
| | 64 | |
| | 65 | === Lalloc === |
| | 66 | Lazy Allocator, that is, for lazy developers or ppl that has a cheapo keyboard. FIXME |
| | 67 | |
| | 68 | === Log === |
| | 69 | Functions to add logs in your code with level of verbosity control and the management of specific-code logs |
| | 70 | {{{ |
| | 71 | #!C |
| | 72 | EINA_LOG_ERR("BIG FAT ERROR!"); |
| | 73 | EINA_LOG_INFO("Message only visible running app with high log level set"); |
| | 74 | EINA_LOG_DBG("Running foo, only with big verbosity"); |
| | 75 | }}} |
| | 76 | |
| | 77 | === Error === |
| | 78 | The Eina error module provides a way to manage errors in a simple but powerful way in libraries and modules. |
| | 79 | |
| | 80 | You can register your own error messages, and so get the last error message ocurred too. |
| | 81 | |
| | 82 | {{{ |
| | 83 | #!C |
| | 84 | Eina_Error MY_ERROR_NEGATIVE; |
| | 85 | |
| | 86 | void *data_new() |
| | 87 | { |
| | 88 | eina_error_set(MY_ERROR_NEGATIVE); |
| | 89 | return; |
| | 90 | } |
| | 91 | |
| | 92 | int main(void) |
| | 93 | { |
| | 94 | Eina_Error err; |
| | 95 | void *data; |
| | 96 | |
| | 97 | MY_ERROR_NEGATIVE = eina_error_msg_register("Your data is Negative!"); |
| | 98 | |
| | 99 | if (err) |
| | 100 | printf ("Error is: %s\n", eina_error_msg_get(err)); |
| | 101 | |
| | 102 | data = data_new(); // We set the state of an error |
| | 103 | err = eina_error_get(); // We get the message for the ID of the error |
| | 104 | |
| | 105 | if (err) |
| | 106 | printf ("Error is: %s\n", eina_error_msg_get(err)); |
| | 107 | } |
| | 108 | }}} |
| | 109 | |
| | 110 | === Magic === |
| | 111 | Magic checks (WTF, better description) FIXME. |
| | 112 | Add example FIXME |
| | 113 | |
| | 114 | |
| | 115 | === Matrix Sparse === |
| | 116 | What's that for, what means the sparse thing there ? FIXME |
| | 117 | |
| | 118 | === Red & Black Tree === |
| | 119 | Self-balancing binary search tree, a data structure, good for use in associative arays, very efficient and fast, removes and insert intelligently the data on the tree, so it is balanced for optimization reasons. FIXME ? |
| | 120 | |
| | 121 | === Memory Pool === |
| | 122 | FIXME: description |
| | 123 | FIXME: elements: |
| | 124 | * register/unregister ? |
| | 125 | * malloc/realloc ? |
| | 126 | * add/del/free ? |
| | 127 | * statistics |
| | 128 | |
| | 129 | === Modules === |
| | 130 | Which kind of modules ? eina modules so extra libs features ? FIXME |
| | 131 | |
| | 132 | === Safety Checks === |
| | 133 | Set of macros to check for parameters or values that should never happen, doesn't abort the program but it logs instead |
| | 134 | |
| | 135 | The meant of this is to remove possible segfaults when they will be not so important and continue with the process of program |
| | 136 | |
| | 137 | FIXME: is this code good ? |
| | 138 | {{{ |
| | 139 | #!C |
| | 140 | EAPI void |
| | 141 | my_func(Ethumb *e) |
| | 142 | { |
| | 143 | EINA_SAFETY_ON_NULL_RETURN(e); // return if our pointer is null |
| | 144 | do_something; |
| | 145 | }}} |
| | 146 | |
| | 147 | |
| | 148 | === Tiler === |
| | 149 | FIXME: description |
| | 150 | repetitive fill for rectangles (???) |
| | 151 | |
| | 152 | === MACROS === |
| | 153 | FIXME: Add description of these usages: |
| | 154 | * EINA_WARN_UNUSED_RESULT |
| | 155 | * EINA_ARG_NONNULL |
| | 156 | * EINA_DEPRECATED |
| | 157 | * EINA_PURE |
| | 158 | * EINA_UNLIKELY/LIKELY |
| | 159 | * EINA_FALSE/TRUE: equivalent to FALSE/TRUE macros |