+gras_error_t
+gras_dd_cbps_new(gras_dd_cbps_t **dst) {
+ gras_error_t errcode;
+ gras_dd_cbps_t *res;
+
+ if (!(res=malloc(sizeof(gras_dd_cbps_t))))
+ RAISE_MALLOC;
+
+ TRY(gras_dict_new(&(res->space)));
+ /* FIXME:leaking on content of dynars*/
+ TRY(gras_dynar_new(&(res->stack), sizeof(gras_dynar_t*), NULL));
+ TRY(gras_dynar_new(&(res->globals), sizeof(char*), NULL));
+
+ *dst = res;
+ return no_error;
+}
+
+void
+gras_dd_cbps_free(gras_dd_cbps_t **state) {
+
+ gras_dict_free ( &( (*state)->space ) );
+ gras_dynar_free( (*state)->stack );
+ gras_dynar_free( (*state)->globals );
+
+ free(*state);
+ *state = NULL;
+}
+