Thank you for your answer! You are right, but I still don't know how to build such a list dynamically using LLVM API with user type inside (I don't know this type yet ofc). 2013/4/15 Cristianno Martins <cristiannomartins at gmail.com>> Hi, > > I guess you could use a template with a std::vector: you don't need to > define right away the type, if you create a template of it. > > It should look something like that: > > template<class B> class List { > std::vector<B> myList; > void insert (int pos, B elem); > } > > template <class B> > void List::add (int pos, B elem) { > myList.insert(myList.begin()+pos, elem); > } > > Then, wherever you'll use this class, you should define for which class B > your class List should match (such as "List<int> intList;" or "List< > std::vector<long> > longVectors;"). > > -- > Cristianno Martins > > On Monday, 15 de April de 2013 at 07:13, B B wrote: > > Hi! > I want to implement a list (which operates like ArrayList in Java). > > I can use ArrayType from llvm, but at creation time I have to specify > size so there is a problem when I want to extend it (I can reallocate > it ofc). Moreover I need to implement all the operations (inserting, > removing etc.) manually. > > I though that maybe I can use std::vector, but there is another > problem - std::vector is a template class, so I have to specify type > before compiling it to llvm bytecode. Is there some solution to > specify that type dynamically? > > What is the best method to implement such things in llvm? > > I would be grateful for any solutions or tips. > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130416/4f50d244/attachment.html>
Hi, Sorry, but I'm not sure I understand what you're trying to do. I guess you want some kind of superclass of some set of classes that are defined in the llvm api(?). In that case, which are specifically the types you could have in this list you're trying to define? -- Cristianno Martins On Tuesday, 16 de April de 2013 at 04:22, B B wrote:> Thank you for your answer! > > You are right, but I still don't know how to build such a list dynamically using LLVM API with user type inside (I don't know this type yet ofc). > > > 2013/4/15 Cristianno Martins <cristiannomartins at gmail.com (mailto:cristiannomartins at gmail.com)> > > Hi, > > > > I guess you could use a template with a std::vector: you don't need to define right away the type, if you create a template of it. > > > > It should look something like that: > > > > template<class B> class List { > > std::vector<B> myList; > > void insert (int pos, B elem); > > } > > > > template <class B> > > void List::add (int pos, B elem) { > > myList.insert(myList.begin()+pos, elem); > > } > > > > Then, wherever you'll use this class, you should define for which class B your class List should match (such as "List<int> intList;" or "List< std::vector<long> > longVectors;"). > > > > -- > > Cristianno Martins > > > > > > On Monday, 15 de April de 2013 at 07:13, B B wrote: > > > > > > > > > Hi! > > > I want to implement a list (which operates like ArrayList in Java). > > > > > > I can use ArrayType from llvm, but at creation time I have to specify > > > size so there is a problem when I want to extend it (I can reallocate > > > it ofc). Moreover I need to implement all the operations (inserting, > > > removing etc.) manually. > > > > > > I though that maybe I can use std::vector, but there is another > > > problem - std::vector is a template class, so I have to specify type > > > before compiling it to llvm bytecode. Is there some solution to > > > specify that type dynamically? > > > > > > What is the best method to implement such things in llvm? > > > > > > I would be grateful for any solutions or tips. > > > _______________________________________________ > > > LLVM Developers mailing list > > > LLVMdev at cs.uiuc.edu (mailto:LLVMdev at cs.uiuc.edu) http://llvm.cs.uiuc.edu > > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > > > > > > > > > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130416/f2603124/attachment.html>
Hi! In my compiler I want to give user a list of user defined classes. I tried to use generated bitcode of my own wrapper of std::vector, but there is no possibility to generate bitcode of template, so I finally build it with std::vector<void*>. Do you know about any better solutions how to build such a type with llvm? Maybe there is a llvm built in type that is better choice than external c++ wrapper? 2013/4/16 Cristianno Martins <cristiannomartins at gmail.com>> Hi, > > Sorry, but I'm not sure I understand what you're trying to do. I guess you > want some kind of superclass of some set of classes that are defined in the > llvm api(?). In that case, which are specifically the types you could have > in this list you're trying to define? > > -- > Cristianno Martins > > On Tuesday, 16 de April de 2013 at 04:22, B B wrote: > > Thank you for your answer! > > You are right, but I still don't know how to build such a list dynamically > using LLVM API with user type inside (I don't know this type yet ofc). > > > 2013/4/15 Cristianno Martins <cristiannomartins at gmail.com> > > Hi, > > I guess you could use a template with a std::vector: you don't need to > define right away the type, if you create a template of it. > > It should look something like that: > > template<class B> class List { > std::vector<B> myList; > void insert (int pos, B elem); > } > > template <class B> > void List::add (int pos, B elem) { > myList.insert(myList.begin()+pos, elem); > } > > Then, wherever you'll use this class, you should define for which class B > your class List should match (such as "List<int> intList;" or "List< > std::vector<long> > longVectors;"). > > -- > Cristianno Martins > > On Monday, 15 de April de 2013 at 07:13, B B wrote: > > Hi! > I want to implement a list (which operates like ArrayList in Java). > > I can use ArrayType from llvm, but at creation time I have to specify > size so there is a problem when I want to extend it (I can reallocate > it ofc). Moreover I need to implement all the operations (inserting, > removing etc.) manually. > > I though that maybe I can use std::vector, but there is another > problem - std::vector is a template class, so I have to specify type > before compiling it to llvm bytecode. Is there some solution to > specify that type dynamically? > > What is the best method to implement such things in llvm? > > I would be grateful for any solutions or tips. > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130419/13a3d1ac/attachment.html>