下面是ADT介面標頭檔DynamicDLA.h的內容,各函數的實現源碼放在最後一部分。#define cplusplus控制在c還是c++中編譯。在c++中使用時,各函數放在命名空間dynamic_dimensionality_length_array中,別名ddla。
#ifndef DYNAMICDLA_H<br />#define DYNAMICDLA_H</p><p>#ifndef __cplusplus</p><p>#include <stddef.h></p><p>#ifndef BOOl<br />#define BOOL<br />typedef enum { false, true } bool;<br />#endif</p><p>#else</p><p>#include <cstddef></p><p>namespace dynamic_dimensionality_length_array<br />{</p><p>#endif</p><p>void* new_a( size_t, size_t, ... );<br />void* new0_a( size_t, size_t, ... );<br />void* new_pa( size_t, size_t, size_t* );<br />void* resize_a( void*, size_t, ... );<br />void* resize_pa( void*, size_t, size_t* );<br />bool assign_pa( void*, void*, size_t* );<br />bool assign_va( void*, void*, ... );<br />bool value_pa( void*, void*, size_t* );<br />bool value_va( void*, void*, ... );<br />void* address_pa( void*, size_t, size_t* );<br />void* address_va( void*, size_t, ... );<br />size_t sizeof_a( void* );<br />size_t sizeof_pa( void*, size_t, size_t* );<br />size_t sizeof_va( void*, size_t, ... );<br />size_t dimen_a( void* );<br />size_t* dimenlen_a( void*, size_t* );<br />size_t elmntsize_a( void* );<br />bool process_a( void*, void (*)(void*, size_t* ) );<br />void delete_a( void* );<br />void delete_all();</p><p>#ifdef __cplusplus</p><p>}</p><p>namespace ddla = dynamic_dimensionality_length_array;</p><p>#endif</p><p>#endif<br />