# SparseMatrixCSC allocation

**URL:** <https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478>\
**Category:** General Usage\
**Tags:** question, embedding\
**Created:** [June 26, 2017, 10:15pm UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478 "2017-06-26T22:15:39Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![tastelessjolt](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@tastelessjolt](https://discourse.julialang.org/u/tastelessjolt)\
**Post date:** [June 26, 2017, 10:15pm UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/1 "2017-06-26T22:15:39Z")

</div>

How to allocate an uninitialised `SparseMatrixCSC` in the C Embedding API? I mean I couldn’t find/create the type variable for `SparseMatrixCSC`.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [June 26, 2017, 10:24pm UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/2 "2017-06-26T22:24:28Z")

</div>

Does the docs at [https://docs.julialang.org/en/release-0.6/manual/arrays/#Compressed-Sparse-Column-(CSC)-Storage-1](https://docs.julialang.org/en/release-0.6/manual/arrays/#Compressed-Sparse-Column-(CSC)-Storage-1) help?

---

<div class="post-metadata">

**Author:** ![tastelessjolt](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@tastelessjolt](https://discourse.julialang.org/u/tastelessjolt)\
**Post date:** [June 26, 2017, 11:03pm UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/3 "2017-06-26T23:03:27Z")

</div>

No, sorry, I wasn’t clear in my question, it is to allocate in the C Embedding API.

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [June 26, 2017, 11:14pm UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/4 "2017-06-26T23:14:34Z")

</div>

Apart from a few special types (ones that users might be interested in includes `DataType`, `Module`, `Tuple`, `Array`, `String`, `Symbol`) all types are defined in julia so there isn’t and won’t be C-API for them. You should write your own julia functions or make use of existing ones (using `jl_get_global`, `jl_eval_string` etc) to call julia code that does the allocation.

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [June 26, 2017, 11:57pm UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/5 "2017-06-26T23:57:08Z")

</div>

You seem to want to make your life difficult by writing Julia in C++. You should write Julia in Julia instead. What are you trying to do? There should be a simpler way to go about it.

---

<div class="post-metadata">

**Author:** ![tastelessjolt](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@tastelessjolt](https://discourse.julialang.org/u/tastelessjolt)\
**Post date:** [June 27, 2017, 2:36am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/6 "2017-06-27T02:36:01Z")

</div>

No, I’m writing an interface for Scilab, another language, to call any function from Julia.

---

<div class="post-metadata">

**Author:** ![tastelessjolt](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@tastelessjolt](https://discourse.julialang.org/u/tastelessjolt)\
**Post date:** [June 27, 2017, 2:42am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/7 "2017-06-27T02:42:10Z")

</div>

Then, how do I check whether, given a variable, it is of type `SparseMatrixCSC`?

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [June 27, 2017, 2:59am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/8 "2017-06-27T02:59:49Z")

</div>

The type is accessible using the same C API.

---

<div class="post-metadata">

**Author:** ![tastelessjolt](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@tastelessjolt](https://discourse.julialang.org/u/tastelessjolt)\
**Post date:** [June 27, 2017, 3:37am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/9 "2017-06-27T03:37:14Z")

</div>

I didn’t quite get you and if you’re telling me to check with type in the C API, I couldn’t find the type.  
I’d appreciate if you give me an example.  
Thank you so much.

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [June 27, 2017, 5:33am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/10 "2017-06-27T05:33:11Z")

</div>

If what you want is equivalent to julia code `isa(v, SparseMatrixCSC)` then you can just do sth like

```nohighlight
jl_typeis(v, jl_get_global(jl_base_module, jl_symbol("SparseMatrixCSC")))

```

---

<div class="post-metadata">

**Author:** ![tastelessjolt](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@tastelessjolt](https://discourse.julialang.org/u/tastelessjolt)\
**Post date:** [June 29, 2017, 3:29am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/11 "2017-06-29T03:29:22Z")

</div>

I tried this

```julia
jl_value_t *empty = jl_eval_string("sparse([0 4325; 23 0; 0 0; 245 2352])");
jl_typeis(empty, jl_get_global(jl_base_module, jl_symbol("SparseMatrixCSC")));
jl_typeis(empty, jl_get_global(jl_base_module, jl_symbol("SparseMatrixCSC{Int64}")));
jl_typeis(empty, jl_get_global(jl_base_module, jl_symbol("SparseMatrixCSC{Int64,Int64}")));

```

And none of them gave positive. Why is this?

Thank you

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [June 29, 2017, 4:20am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/12 "2017-06-29T04:20:24Z")

</div>

Seems that `jl_typeis` is `typeof(...) == ...` not `isa`, so replace that with `jl_isa`.

Note that `SparseMatrixCSC{Int64}` isn’t the name of a global. You should either evaluate it as a string or apply the type.

---

<div class="post-metadata">

**Author:** ![tastelessjolt](https://avatars.discourse-cdn.com/v4/letter/t/f14d63/32.png) [@tastelessjolt](https://discourse.julialang.org/u/tastelessjolt)\
**Post date:** [June 29, 2017, 8:00am UTC](https://discourse.julialang.org/t/sparsematrixcsc-allocation/4478/13 "2017-06-29T08:00:32Z")

</div>

I forgot to mention I’m using julia-0.5, and I couldn’t find `jl_isa` in 0.5. I see it is in 0.6. Is there an equivalent function in 0.5?
