[LLVMdev] Need some brief explanation about llvm::MemoryBuffer and llvm::SourceMgr

Journeyer J. Joh oosaprogrammer at gmail.com
Mon Jan 14 20:46:55 PST 2013


Hello Justin Holewinski,

I tested MemoryBuffer class.
And this test gives understanding of how to use it.
Though this is simple issue, I think I'd better post it here for
someone who might appear after me.

~/Projects/build/Debug+Asserts/bin/clang++ MemoryBufferTest.cpp
`~/Projects/build/Debug+Asserts/bin/llvm-config --cppflags --ldflags
--libs core` -o memorybuffertest

./memorybuffertest <any .txt file input>
--> tests input of a file

./memorybuffertest -
--> tests input of STDIN

MemoryBufferTest.cpp follows below.

#include "llvm/ADT/OwningPtr.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/system_error.h"

using namespace llvm;

int main(int argc, char **argv)
{
  if (argc != 2) return 1;
  OwningPtr<MemoryBuffer> Buf;
  if (MemoryBuffer::getFileOrSTDIN(argv[1], Buf))
    return 1;

  llvm::errs() << "size : " << Buf->getBufferSize() << "\n";
  llvm::errs() << "start : " << Buf->getBufferStart() << "\n";
  llvm::errs() << "end : " << Buf->getBufferEnd() << "\n";
  llvm::errs() << "buffer : " << Buf->getBuffer() << "\n";

  return 0;
}

Thank you.
Sincerely
Journeyer

2013/1/15 Journeyer J. Joh <oosaprogrammer at gmail.com>:
> And for this kind of question I think I would better hold in.
> There would be more important issue worth on this list.
>
> For this reason I am sorry.
>
> Sincerely
> Journeyer
>
> 2013/1/15 Journeyer J. Joh <oosaprogrammer at gmail.com>:
>> Hi Justin Holewinski,
>>
>>>> As far as I know, there is not a good way to implement user prompts with the LLVM APIs.
>>
>> This info helps me a lot.
>> I tried to do a thing that is not possible.
>>
>> Thank you very much.
>>
>> Sincerely
>> Journeyer
>>
>> 2013/1/15 Justin Holewinski <justin.holewinski at gmail.com>:
>>> Is this for user prompts, or just reading data from stdin?  You can use
>>> MemoryBuffer::getSTDIN to read the contents of stdin into a memory buffer.
>>> Then you can get the data pointer and size and read it in.  As far as I
>>> know, there is not a good way to implement user prompts with the LLVM APIs.
>>>
>>>
>>> On Mon, Jan 14, 2013 at 4:57 AM, Journeyer J. Joh <oosaprogrammer at gmail.com>
>>> wrote:
>>>>
>>>> Hello list,
>>>>
>>>> I learned that under LLVM, #including of <iostream> is forbidden.
>>>> Instead LLVM provides llvm::raw_ostream(for std::cout, std::cerr) and
>>>> llvm::MemoryBuffer(for input stream).
>>>>
>>>> And using of llvm::raw_ostream is pretty easy but for me learning of
>>>> how to use llvm::MemoryBuffer is pretty much difficult.
>>>>
>>>> I found a good sample code; utils/yaml2obj/yaml2obj.cpp.
>>>> The function, main() in this file provides a hint which is not enough
>>>> for me though.
>>>>
>>>> I still cannot figure out how to use llvm::MemoryBuffer.
>>>> What I need is just a means of doing std::cin.
>>>>
>>>> Could someone explain about this?
>>>>
>>>> Thank you in advance.
>>>> --
>>>> ----------------------------------------
>>>> Journeyer J. Joh
>>>> o o s a p r o g r a m m e r
>>>> a t
>>>> g m a i l  d o t  c o m
>>>> ----------------------------------------
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>>
>>>
>>>
>>> --
>>>
>>> Thanks,
>>>
>>> Justin Holewinski
>>
>>
>>
>> --
>> ----------------------------------------
>> Journeyer J. Joh
>> o o s a p r o g r a m m e r
>> a t
>> g m a i l  d o t  c o m
>> ----------------------------------------
>
>
>
> --
> ----------------------------------------
> Journeyer J. Joh
> o o s a p r o g r a m m e r
> a t
> g m a i l  d o t  c o m
> ----------------------------------------



-- 
----------------------------------------
Journeyer J. Joh
o o s a p r o g r a m m e r
a t
g m a i l  d o t  c o m
----------------------------------------



More information about the llvm-dev mailing list