Phase 3: Built-in Functions Implementation
Phase 3: Built-in Functions Implementation
Objective
Implement built-in functions for file I/O, data serialization, and data manipulation to make XMD more powerful and user-friendly.
Tasks
1. File I/O Functions
- Implement
writefunction for file creation - Implement
appendfunction for file appending - Implement
existsfunction for file existence checks - Implement
readfunction for file reading - Add proper error handling and permissions
2. Data Serialization Functions
- Implement
to_jsonfor converting XMD data to JSON - Implement
from_jsonfor parsing JSON strings - Implement
to_yamlfor converting XMD data to YAML - Implement
from_yamlfor parsing YAML strings
3. Data Manipulation Functions
- Implement
keysfunction for object key extraction - Implement
valuesfunction for object value extraction - Implement
mergefunction for object merging - Implement
filterfunction for array filtering - Implement
mapfunction for array transformation - Implement
lengthfunction for arrays and strings
4. Function System Infrastructure
- Create function registry system
- Implement function dispatcher
- Add function validation and type checking
- Create comprehensive error messaging
File Structure
src/
โโโ functions/
โ โโโ file_io/
โ โ โโโ write_function/
โ โ โ โโโ write_function.c # write(path, content)
โ โ โโโ append_function/
โ โ โ โโโ append_function.c # append(path, content)
โ โ โโโ exists_function/
โ โ โ โโโ exists_function.c # exists(path)
โ โ โโโ read_function/
โ โ โโโ read_function.c # read(path)
โ โโโ serialization/
โ โ โโโ to_json_function/
โ โ โ โโโ to_json_function.c # to_json(data)
โ โ โโโ from_json_function/
โ โ โ โโโ from_json_function.c # from_json(string)
โ โ โโโ to_yaml_function/
โ โ โ โโโ to_yaml_function.c # to_yaml(data)
โ โ โโโ from_yaml_function/
โ โ โโโ from_yaml_function.c # from_yaml(string)
โ โโโ data_manipulation/
โ โ โโโ keys_function/
โ โ โ โโโ keys_function.c # keys(object)
โ โ โโโ values_function/
โ โ โ โโโ values_function.c # values(object)
โ โ โโโ merge_function/
โ โ โ โโโ merge_function.c # merge(obj1, obj2)
โ โ โโโ filter_function/
โ โ โ โโโ filter_function.c # filter(array, condition)
โ โ โโโ map_function/
โ โ โ โโโ map_function.c # map(array, transform)
โ โ โโโ length_function/
โ โ โโโ length_function.c # length(data)
โ โโโ registry/
โ โโโ function_registry/
โ โ โโโ function_registry.c # Function registration
โ โโโ function_dispatcher/
โ โ โโโ function_dispatcher.c # Function call dispatch
โ โโโ function_validator/
โ โโโ function_validator.c # Argument validation
Tests
- test/functions/file_io/test_write_function.c
- test/functions/file_io/test_append_function.c
- test/functions/file_io/test_exists_function.c
- test/functions/file_io/test_read_function.c
- test/functions/serialization/test_to_json_function.c
- test/functions/serialization/test_from_json_function.c
- test/functions/serialization/test_to_yaml_function.c
- test/functions/serialization/test_from_yaml_function.c
- test/functions/data_manipulation/test_keys_function.c
- test/functions/data_manipulation/test_values_function.c
- test/functions/data_manipulation/test_merge_function.c
- test/functions/data_manipulation/test_filter_function.c
- test/functions/data_manipulation/test_map_function.c
- test/functions/data_manipulation/test_length_function.c
- test/functions/registry/test_function_registry.c
Function Usage Examples
File I/O Functions
Data Serialization
Data Manipulation
Dependencies
- json-c for JSON serialization
- libyaml for YAML serialization
- Phase 2 data structures (xmd_object, xmd_array)
- Existing expression evaluation system
Acceptance Criteria
- All file I/O functions work with proper error handling
- Data serialization functions maintain data integrity
- Data manipulation functions handle edge cases
- Function registry allows dynamic function calls
- Comprehensive argument validation and type checking
- Memory safety for all function operations
- Clear error messages for function failures
- All functions follow one-function-per-file rule
- Complete test coverage for all functions
- Documentation with usage examples
- Integration with existing XMD expression system