Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0be524f
CDF readers and resulting schema structure updates
cpiker Jul 27, 2026
b0932e6
Example streams updated to current schemas
cpiker Jul 27, 2026
66ae0dc
Date string updated for schemas
cpiker Jul 27, 2026
92f9bc2
Variable refactor: Sets own Generators, Structure and an Algebra: 1 of ?
cpiker Jul 27, 2026
d96c384
Variable refactor 2 of ?: The library speaks DasSet
cpiker Jul 29, 2026
d1fe35e
Bug fix: DasAry_subSetIn dropped refcount, units and usage flags
cpiker Jul 29, 2026
40af7ea
Variable refactor 3 of ?: Port the subset functions, fix bugs
cpiker Jul 29, 2026
32c39c2
Variable refactor 4 of ?: <ops> replaces <formalism>
cpiker Jul 29, 2026
754b023
Variable refactor 5 of ?: Examples updated to `<ops>`
cpiker Jul 30, 2026
b6aebd6
Variable refactor 6 of ?: Index vocabulary splits by audience
cpiker Jul 30, 2026
49013b2
Bug fix: das3 parser var-state init at open, deinit at close
cpiker Jul 30, 2026
a202242
Variable refactor 7 of ?: One set class per schema element
cpiker Jul 30, 2026
abb05c5
Variable refactor 8 of ?: Formalisms become classes
cpiker Jul 31, 2026
c2fc9ee
Variable refactor 9 of ?: geovec split, parser deligates to forms
cpiker Jul 31, 2026
5b17c2e
Variable refactor 10 of ?: Context registry rejected
cpiker Aug 1, 2026
277149e
The Great Rename: When das2 became das3
cpiker Aug 1, 2026
25c6f80
Variable refactor 11 of ?: The library links
cpiker Aug 1, 2026
cf2b272
Variable refactor 12 of ?: The DasVar API settles
cpiker Aug 3, 2026
0e4ac74
Variable refactor 13 of ?: The Examples Catch Up
cpiker Aug 3, 2026
f3aa00a
Variable refactor 14 of 15: DasVar explicit Qubes, cplx nums
cpiker Aug 3, 2026
3b9d4da
Variable refactor 15 of 15: das3_spice catches up
cpiker Aug 17, 2026
02fc3af
DasForm ownership settled and composites labeling updated
cpiker Sep 11, 2026
64f19e1
Correct misspellings in comments and messages
cpiker Sep 11, 2026
5ce6ad8
All composite values are now readable as datums
cpiker Sep 11, 2026
ef6a150
das3_csv completed as a dataset flattner
cpiker Sep 11, 2026
65fb971
Composite variable refactor complete
cpiker Sep 12, 2026
422f6c7
Variable info printing restored, bug fixes
cpiker Sep 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -819,7 +819,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.

INPUT = das2
INPUT = das3

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand Down Expand Up @@ -2125,7 +2125,7 @@ SEARCH_INCLUDES = YES
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.

INCLUDE_PATH = das2
INCLUDE_PATH = das3

# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
Expand Down
63 changes: 58 additions & 5 deletions buildfiles/Android.mak
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@ HDRS=defs.h time.h das1.h util.h log.h buffer.h utf8.h value.h units.h \
UTIL_PROGS=das1_inctime das2_prtime das1_fxtime das2_ascii das2_bin_avg \
das2_bin_avgsec das2_bin_peakavgsec das2_from_das1 das2_from_tagged_das1 \
das1_ascii das1_bin_avg das2_bin_ratesec das2_psd das2_hapi das2_histo \
das2_cache_rdr
das2_cache_rdr das3_csv das3_info das3_text

TEST_PROGS=TestUnits TestArray TestVariable LoadStream TestBuilder TestAuth \
TestCatalog
TEST_PROGS=TestUnits TestArray TestDs TestBuilder \
TestAuth TestCatalog TestTT2000 ex_das_cli ex_das_ephem TestCredMngr \
TestV3Read TestProp TestIter TestUri TestFilter TestValue TestRaggedEncode \
TestGen TestForm TestCplx TestVar TestVarSubset TestDim TestDatum

BD=$(BUILD_DIR)

Expand Down Expand Up @@ -135,21 +137,72 @@ $(BD)/das2_psd:$(BD)/das2_psd.o $(BD)/send.o $(BD)/$(TARG)


# Run tests

# Fixture lists mirror Linux.mak; see the comment there for why both wildcards
# are load bearing and why notimp_/reject_/ex28 drop out.
V3_FIXTURES := \
$(filter-out examples/ex28_%,$(wildcard examples/*.d3b examples/*.d3t)) \
$(filter-out test/streams/notimp_% test/streams/reject_%,$(wildcard test/streams/*.d3b test/streams/*.d3t))

V2_FIXTURES := $(wildcard test/streams/*.d2s test/streams/*.d2t examples/*.d2s examples/*.d2t)

test: $(BD) $(BD)/$(TARG) $(BUILD_TEST_PROGS) $(BULID_UTIL_PROGS)
@echo "INFO: Running unit test to test units, $(BD)/TestUnits..."
@echo "INFO: Running unit test for the value layer, $(BD)/TestValue..."
@$(BD)/TestValue
@echo "INFO: Running unit test for the datum layer, $(BD)/TestDatum..."
@$(BD)/TestDatum
@echo "INFO: Running unit test for the DasGen value sources, $(BD)/TestGen..."
@$(BD)/TestGen
@echo "INFO: Running unit test for the DasForm formalisms, $(BD)/TestForm..."
@$(BD)/TestForm
@echo "INFO: Running unit test for complex arithmetic, $(BD)/TestCplx..."
@$(BD)/TestCplx
@echo "INFO: Running unit test for the DasVar layer, $(BD)/TestVar..."
@$(BD)/TestVar
@echo "INFO: Running unit test for DasVar bulk reads, $(BD)/TestVarSubset..."
@$(BD)/TestVarSubset
@echo "INFO: Running unit test for the DasDim container, $(BD)/TestDim..."
@$(BD)/TestDim
@echo "INFO: Running unit test to test units, $(BD)/TestUnits..."
@$(BD)/TestUnits
@echo "INFO: Running unit test for TT2000 leap seconds, $(BD)/TestTT2000..."
@$(BD)/TestTT2000
@echo "INFO: Running unit test for dynamic arrays, $(BD)/TestArray..."
@$(BD)/TestArray
@echo "INFO: Running unit test for dataset shape/length merge, $(BD)/TestDs..."
@$(BD)/TestDs
@echo "INFO: Running unit test for dataset builder, $(BD)/TestBuilder..."
@$(BD)/TestBuilder
@echo "INFO: Running unit test for dataset loader, $(BD)/das3_info..."
@$(BD)/das3_info -q examples/ex07_cassini_rpws_wbr.d2s
@echo "INFO: Running unit test for credentials manager, $(BD)/TestCredMngr..."
@$(BD)/TestCredMngr $(BD)
@echo "INFO: Running unit test for stream parsing over all fixtures, $(BD)/TestV3Read..."
$(BD)/TestV3Read test/streams/tag_test.dNt $(V2_FIXTURES) $(V3_FIXTURES)
@echo "INFO: Running unit test for ragged and unique iteration, $(BD)/TestIter..."
$(BD)/TestIter
@echo "INFO: Running unit test for ragged binary re-encode, $(BD)/TestRaggedEncode..."
$(BD)/TestRaggedEncode examples/ex30_cassini_ragged_notlast.d3b \
examples/ex31_efi_ragged_vec.d3b examples/ex32_marsis_2d_ragged.d3b \
examples/ex34_ragged_fixstr.d3b examples/ex38_wbr_wfrm_tags.d3b \
examples/ex39_sandwich.d3b
@echo "INFO: Running unit test for filter dataset ops (copy/swap), $(BD)/TestFilter..."
$(BD)/TestFilter
@echo "INFO: Running unit test for CSVs with variable length item data, $(BD)/das3_csv"
$(BD)/das3_csv < examples/ex21_tracers_cdpu_status.d3b > $(BD)/ex21_tracers_cdpu_status.csv
$(BD)/TestUri $(BD)/uri_tplt
test/das1_fxtime_test.sh $(BD)
test/das2_ascii_test1.sh $(BD)
test/das2_ascii_test2.sh $(BD)
test/das2_ascii_test2.sh $(BD)
test/das2_bin_avgsec_test1.sh $(BD)
test/das2_bin_avgsec_test2.sh $(BD)
test/das2_bin_peakavgsec_test1.sh $(BD)
test/das2_from_das1_test1.sh $(BD)
test/das2_from_das1_test2.sh $(BD)
test/das2_histo_test1.sh $(BD)
test/das_prop_test.sh $(BD)
test/das3_text_test.sh $(BD)
test/das3_csv_test.sh $(BD)

# Install C-lib and C Utilities
install:$(INST_NAT_LIB)/$(TARG) $(INST_HDRS) $(INST_UTIL_PROGS)
Expand Down
88 changes: 69 additions & 19 deletions buildfiles/Darwin.arm64.mak
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@ endif
UTIL_PROGS=das1_inctime das2_prtime das1_fxtime das2_ascii das2_bin_avg \
das2_bin_avgsec das2_bin_peakavgsec das2_from_das1 das2_from_tagged_das1 \
das1_ascii das1_bin_avg das2_bin_ratesec das2_psd das2_hapi das2_histo \
das2_cache_rdr das_node
das2_cache_rdr das_node das3_csv das3_info das3_text

TEST_PROGS:=TestUnits TestArray TestVariable LoadStream TestBuilder \
TestAuth TestCatalog TestTT2000 ex_das_cli ex_das_ephem TestCredMngr
TEST_PROGS:=TestUnits TestArray TestDs TestBuilder \
TestAuth TestCatalog TestTT2000 ex_das_cli ex_das_ephem TestCredMngr \
TestV3Read TestProp TestIter TestUri TestFilter TestValue TestRaggedEncode \
TestGen TestForm TestCplx TestVar TestVarSubset TestDim TestDatum

ifeq ($(SPICE),yes)
TEST_PROGS:=$(TEST_PROGS) TestSpice
Expand Down Expand Up @@ -164,31 +166,79 @@ $(BD)/das2_psd:$(BD)/das2_psd.o $(BD)/send.o $(BD)/$(TARG)


# Run tests

# Fixture lists mirror Linux.mak; see the comment there for why both wildcards
# are load bearing and why notimp_/reject_/ex28 drop out.
V3_FIXTURES := \
$(filter-out examples/ex28_%,$(wildcard examples/*.d3b examples/*.d3t)) \
$(filter-out test/streams/notimp_% test/streams/reject_%,$(wildcard test/streams/*.d3b test/streams/*.d3t))

V2_FIXTURES := $(wildcard test/streams/*.d2s test/streams/*.d2t examples/*.d2s examples/*.d2t)

test: $(BD) $(BD)/$(TARG) $(BUILD_TEST_PROGS) $(BULID_UTIL_PROGS)
test/das1_fxtime_test.sh $(BD)
test/das2_ascii_test1.sh $(BD)
test/das2_ascii_test2.sh $(BD)
test/das2_bin_avgsec_test1.sh $(BD)
test/das2_bin_avgsec_test2.sh $(BD)
test/das2_bin_peakavgsec_test1.sh $(BD)
test/das2_from_das1_test1.sh $(BD)
test/das2_from_das1_test2.sh $(BD)
test/das2_histo_test1.sh $(BD)
@echo "INFO: Running unit test to test units, $(BD)/TestUnits..."
@echo "INFO: Running unit test for the value layer, $(BD)/TestValue..."
@$(BD)/TestValue
@echo "INFO: Running unit test for the datum layer, $(BD)/TestDatum..."
@$(BD)/TestDatum
@echo "INFO: Running unit test for the DasGen value sources, $(BD)/TestGen..."
@$(BD)/TestGen
@echo "INFO: Running unit test for the DasForm formalisms, $(BD)/TestForm..."
@$(BD)/TestForm
@echo "INFO: Running unit test for complex arithmetic, $(BD)/TestCplx..."
@$(BD)/TestCplx
@echo "INFO: Running unit test for the DasVar layer, $(BD)/TestVar..."
@$(BD)/TestVar
@echo "INFO: Running unit test for DasVar bulk reads, $(BD)/TestVarSubset..."
@$(BD)/TestVarSubset
@echo "INFO: Running unit test for the DasDim container, $(BD)/TestDim..."
@$(BD)/TestDim
@echo "INFO: Running unit test to test units, $(BD)/TestUnits..."
@$(BD)/TestUnits
@echo "INFO: Running unit test for TT2000 leap seconds, $(BD)/TestTT2000..."
@echo "INFO: Running unit test for TT2000 leap seconds, $(BD)/TestTT2000..."
@$(BD)/TestTT2000
@echo "INFO: Running unit test for dynamic arrays, $(BD)/TestArray..."
@$(BD)/TestArray
@echo "INFO: Running unit test for index space mapping, $(BD)/TestVariable..."
@$(BD)/TestVariable
@echo "INFO: Running unit test for catalog reader, $(BD)/TestCatalog..."
@$(BD)/TestCatalog
@echo "INFO: Running unit test for dataset shape/length merge, $(BD)/TestDs..."
@$(BD)/TestDs
@echo "INFO: Running unit test for dataset builder, $(BD)/TestBuilder..."
@$(BD)/TestBuilder
@echo "INFO: Running unit test for dataset loader, $(BD)/das3_info..."
@$(BD)/das3_info -q examples/ex07_cassini_rpws_wbr.d2s
@echo "INFO: Running unit test for credentials manager, $(BD)/TestCredMngr..."
@$(BD)/TestCredMngr $(BD)
@echo "INFO: All test programs completed without errors"
@echo "INFO: Running unit test for stream parsing over all fixtures, $(BD)/TestV3Read..."
$(BD)/TestV3Read test/streams/tag_test.dNt $(V2_FIXTURES) $(V3_FIXTURES)
@echo "INFO: Running unit test for ragged and unique iteration, $(BD)/TestIter..."
$(BD)/TestIter
@echo "INFO: Running unit test for ragged binary re-encode, $(BD)/TestRaggedEncode..."
$(BD)/TestRaggedEncode examples/ex30_cassini_ragged_notlast.d3b \
examples/ex31_efi_ragged_vec.d3b examples/ex32_marsis_2d_ragged.d3b \
examples/ex34_ragged_fixstr.d3b examples/ex38_wbr_wfrm_tags.d3b \
examples/ex39_sandwich.d3b
@echo "INFO: Running unit test for filter dataset ops (copy/swap), $(BD)/TestFilter..."
$(BD)/TestFilter
@echo "INFO: Running unit test for CSVs with variable length item data, $(BD)/das3_csv"
$(BD)/das3_csv < examples/ex21_tracers_cdpu_status.d3b > $(BD)/ex21_tracers_cdpu_status.csv
$(BD)/TestUri $(BD)/uri_tplt
@echo "INFO: ==============================================="
@echo "INFO: All core test programs completed without errors"
@echo "INFO: ==============================================="
@echo "INFO: Running unit test for catalog reader, $(BD)/TestCatalog..."
@echo "INFO: (network-dependent, runs last; a failure here does not affect core tests)"
@$(BD)/TestCatalog
@echo "INFO: --- golden-file comparisons (a mismatch here stops only the goldens) ---"
test/das1_fxtime_test.sh $(BD)
test/das2_ascii_test1.sh $(BD)
test/das2_ascii_test2.sh $(BD)
test/das2_bin_avgsec_test1.sh $(BD)
test/das2_bin_avgsec_test2.sh $(BD)
test/das2_bin_peakavgsec_test1.sh $(BD)
test/das2_from_das1_test1.sh $(BD)
test/das2_from_das1_test2.sh $(BD)
test/das2_histo_test1.sh $(BD)
test/das_prop_test.sh $(BD)
test/das3_text_test.sh $(BD)
test/das3_csv_test.sh $(BD)


# Install C-lib and C Utilities
Expand Down
91 changes: 68 additions & 23 deletions buildfiles/Darwin.mak
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@ endif
UTIL_PROGS=das1_inctime das2_prtime das1_fxtime das2_ascii das2_bin_avg \
das2_bin_avgsec das2_bin_peakavgsec das2_from_das1 das2_from_tagged_das1 \
das1_ascii das1_bin_avg das2_bin_ratesec das2_psd das2_hapi das2_histo \
das2_cache_rdr das3_node das3_csv das3_test
das2_cache_rdr das3_node das3_csv das3_info das3_text

TEST_PROGS:=TestUnits TestArray TestVariable TestBuilder \
TEST_PROGS:=TestUnits TestArray TestDs TestBuilder \
TestAuth TestCatalog TestTT2000 ex_das_cli ex_das_ephem TestCredMngr \
TestV3Read TestIter
TestV3Read TestProp TestIter TestUri TestFilter TestValue TestRaggedEncode \
TestGen TestForm TestCplx TestVar TestVarSubset TestDim TestDatum

CDF_PROGS:=das3_cdf

Expand Down Expand Up @@ -202,42 +203,86 @@ $(BD)/das3_cdf:utilities/das3_cdf.c $(BD)/$(TARG).a


# Run tests

# Fixture lists mirror Linux.mak; see the comment there for why both wildcards
# are load bearing and why notimp_/reject_/ex28 drop out.
V3_FIXTURES := \
$(filter-out examples/ex28_%,$(wildcard examples/*.d3b examples/*.d3t)) \
$(filter-out test/streams/notimp_% test/streams/reject_%,$(wildcard test/streams/*.d3b test/streams/*.d3t))

V2_FIXTURES := $(wildcard test/streams/*.d2s test/streams/*.d2t examples/*.d2s examples/*.d2t)

test: $(BD) $(BD)/$(TARG).a $(BUILD_TEST_PROGS) $(BULID_UTIL_PROGS)
test/das1_fxtime_test.sh $(BD)
test/das2_ascii_test1.sh $(BD)
test/das2_ascii_test2.sh $(BD)
test/das2_bin_avgsec_test1.sh $(BD)
test/das2_bin_avgsec_test2.sh $(BD)
test/das2_bin_peakavgsec_test1.sh $(BD)
test/das2_from_das1_test1.sh $(BD)
test/das2_from_das1_test2.sh $(BD)
test/das2_histo_test1.sh $(BD)
@echo "INFO: Running unit test to test units, $(BD)/TestUnits..."
@echo "INFO: Running unit test for the value layer, $(BD)/TestValue..."
@$(BD)/TestValue
@echo "INFO: Running unit test for the datum layer, $(BD)/TestDatum..."
@$(BD)/TestDatum
@echo "INFO: Running unit test for the DasGen value sources, $(BD)/TestGen..."
@$(BD)/TestGen
@echo "INFO: Running unit test for the DasForm formalisms, $(BD)/TestForm..."
@$(BD)/TestForm
@echo "INFO: Running unit test for complex arithmetic, $(BD)/TestCplx..."
@$(BD)/TestCplx
@echo "INFO: Running unit test for the DasVar layer, $(BD)/TestVar..."
@$(BD)/TestVar
@echo "INFO: Running unit test for DasVar bulk reads, $(BD)/TestVarSubset..."
@$(BD)/TestVarSubset
@echo "INFO: Running unit test for the DasDim container, $(BD)/TestDim..."
@$(BD)/TestDim
@echo "INFO: Running unit test to test units, $(BD)/TestUnits..."
@$(BD)/TestUnits
@echo "INFO: Running unit test for TT2000 leap seconds, $(BD)/TestTT2000..."
@echo "INFO: Running unit test for TT2000 leap seconds, $(BD)/TestTT2000..."
@$(BD)/TestTT2000
@echo "INFO: Running unit test for dynamic arrays, $(BD)/TestArray..."
@$(BD)/TestArray
@echo "INFO: Running unit test for index space mapping, $(BD)/TestVariable..."
@$(BD)/TestVariable
@echo "INFO: Running unit test for catalog reader, $(BD)/TestCatalog..."
@$(BD)/TestCatalog
@echo "INFO: Running unit test for dataset shape/length merge, $(BD)/TestDs..."
@$(BD)/TestDs
@echo "INFO: Running unit test for dataset builder, $(BD)/TestBuilder..."
@$(BD)/TestBuilder
@echo "INFO: Running unit test for dataset loader, $(BD)/das3_info..."
@$(BD)/das3_info -q examples/ex07_cassini_rpws_wbr.d2s
@echo "INFO: Running unit test for credentials manager, $(BD)/TestCredMngr..."
@$(BD)/TestCredMngr $(BD)
@echo "INFO: All test programs completed without errors"
$(BD)/TestV3Read
@echo "INFO: Running unit test for stream parsing over all fixtures, $(BD)/TestV3Read..."
$(BD)/TestV3Read test/streams/tag_test.dNt $(V2_FIXTURES) $(V3_FIXTURES)
@echo "INFO: Running unit test for ragged and unique iteration, $(BD)/TestIter..."
$(BD)/TestIter
@echo "INFO: All test programs completed without errors"
@echo "INFO: Running unit test for ragged binary re-encode, $(BD)/TestRaggedEncode..."
$(BD)/TestRaggedEncode examples/ex30_cassini_ragged_notlast.d3b \
examples/ex31_efi_ragged_vec.d3b examples/ex32_marsis_2d_ragged.d3b \
examples/ex34_ragged_fixstr.d3b examples/ex38_wbr_wfrm_tags.d3b \
examples/ex39_sandwich.d3b
@echo "INFO: Running unit test for filter dataset ops (copy/swap), $(BD)/TestFilter..."
$(BD)/TestFilter
@echo "INFO: Running unit test for CSVs with variable length item data, $(BD)/das3_csv"
$(BD)/das3_csv < examples/ex21_tracers_cdpu_status.d3b > $(BD)/ex21_tracers_cdpu_status.csv
$(BD)/TestUri $(BD)/uri_tplt
@echo "INFO: ==============================================="
@echo "INFO: All core test programs completed without errors"
@echo "INFO: ==============================================="
@echo "INFO: Running unit test for catalog reader, $(BD)/TestCatalog..."
@echo "INFO: (network-dependent, runs last; a failure here does not affect core tests)"
@$(BD)/TestCatalog
@echo "INFO: --- golden-file comparisons (a mismatch here stops only the goldens) ---"
test/das1_fxtime_test.sh $(BD)
test/das2_ascii_test1.sh $(BD)
test/das2_ascii_test2.sh $(BD)
test/das2_bin_avgsec_test1.sh $(BD)
test/das2_bin_avgsec_test2.sh $(BD)
test/das2_bin_peakavgsec_test1.sh $(BD)
test/das2_from_das1_test1.sh $(BD)
test/das2_from_das1_test2.sh $(BD)
test/das2_histo_test1.sh $(BD)
test/das_prop_test.sh $(BD)
test/das3_text_test.sh $(BD)
test/das3_csv_test.sh $(BD)

# Can't test CDF creation this way due to stupid embedded time stamps
# cmp $(BD)/ex12_sounder_xyz.cdf test/ex12_sounder_xyz.cdf
# cmp $(BD)/ex12_sounder_xyz.cdf examples/ex12_sounder_xyz.cdf

test_cdf:$(BD) $(BD)/das3_cdf $(BD)/$(TARG).a
@echo "INFO: Testing CDF creation"
$(BD)/das3_cdf -l warning -i test/ex12_sounder_xyz.d3t -o $(BD) -r
$(BD)/das3_cdf -l warning -i examples/ex12_sounder_xyz.d3t -o $(BD) -r
@echo "INFO: CDF was created"

test_spice:$(BD) $(BD)/$(TARG).a $(BUILD_TEST_PROGS) $(BULID_UTIL_PROGS)
Expand Down
Loading
Loading