vector: Traversal, retrieval, insert and locking enhancements
Renamed AST_VECTOR_INSERT to AST_VECTOR_REPLACE because it really does replace not insert. The few users of AST_VECTOR_INSERT were refactored. Because these are macros, there should be no ABI compatibility issues. Added AST_VECTOR_INSERT_AT that actually inserts an element into the vector at a specific index pushing existing elements to the right. Added AST_VECTOR_GET_CMP that can retrieve from the vector based on a user-provided compare function. Added AST_VECTOR_CALLBACK function that will execute a function for each element in the vector. Similar to ao2_callback and ao2_callback_data functions although the vector callback can take a variable number of arguments. This should allow easy migration to a vector where a container might be too heavy. Added read/write locked vector and lock manipulation macros. Added unit tests. ASTERISK-25045 #close Change-Id: I2e07ecc709d2f5f91bcab8904e5e9340609b00e0
Showing
- include/asterisk/vector.h 208 additions, 6 deletionsinclude/asterisk/vector.h
- main/format_cap.c 1 addition, 1 deletionmain/format_cap.c
- main/rtp_engine.c 4 additions, 4 deletionsmain/rtp_engine.c
- tests/test_message.c 8 additions, 8 deletionstests/test_message.c
- tests/test_vector.c 428 additions, 0 deletionstests/test_vector.c
Loading
Please register or sign in to comment