News:

The new Release 25.03 is out! You can download binaries for Windows and many major Linux distros here .

Main Menu

code complete cannot list the lua's function

Started by momocc, April 20, 2012, 03:18:12 AM

Previous topic - Next topic

momocc

my codeblocks cannot list the functions of lua.
i try to find out the reason why codeblocks cannot do it.
i found that there is a small difference between lua's function declaration and our usual practice.

Usually, we define a function like this:
void func(); ???
but the defination in lua is:
void (func)();

so, the code completion cannot recognize the functions..
if i remove the brackets, the code completion will list the function name correctly

ollydbg

Code::Blocks is a C/C++ IDE, and its codecompletion parser is also for C/C++ currently.
Lua language is not supported right now.

BTW: There is a FORTRAN codecompletion plugin for FORTRAN language. So we welcome user contribution for lua language. :)
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

momocc

Oh, the way i expressed has some wrong, i mean the code completion cannot list the functions of lua's C API.
i am doing a lua binding library for c++, so i often need to call the lua's C API to achieve some features :P

ollydbg

Quote from: momocc on April 20, 2012, 06:09:47 AM
Oh, the way i expressed has some wrong, i mean the code completion cannot list the functions of lua's C API.
i am doing a lua binding library for c++, so i often need to call the lua's C API to achieve some features :P
Still not clear about your idea. If you would like to show C API, should should have C code parsed by the CC's parser. Where is you C API declaration? Please give more details.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

jarod42

int (bar_not_visible)();
int bar_visible();

void foo()
{
    ba|Ctrl+Space
}


code completion (for ba ) suggests only bar_visible, and not bar_not_visible.

ollydbg

Ok, does it a .c file?
Another question is:

int (bar_not_visible)();

Do you think this is a valid C function declaration? I don't.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Freem

It is an uncommon style, but I think it is valid.

In short, when you declare a callback, you declare a function pointer. So, a pointer which know the address of a function (I know that you perfectly know that, I am just going step by step to make things clear as best as I can).

For a classic variable, we use this:
int foo;
For a classic pointer:
int *pfoo;[code]

For function pointers:
[code]int (*pbar)(void);

So there are no reasons to think removing the pointer operand is not legal.
In fact, we could probably say that removing parenthesis is just a shortcut for easier read, and the parenthesis write is the good one.

To conclude, I have tried a very little program (which do nothing) and compiled it with "gcc foo.c -ansi" and it gaves me no error or warning.
Here it is:

int (bar_not_v)();
int (bar_v)();

void main()
{
bar_v();
bar_not_v();
}

int bar_not_v()
{
}

int (bar_v)()
{
}

[/code][/code]

momocc

Quote from: ollydbg on April 20, 2012, 01:32:52 PM
Quote from: momocc on April 20, 2012, 06:09:47 AM
Oh, the way i expressed has some wrong, i mean the code completion cannot list the functions of lua's C API.
i am doing a lua binding library for c++, so i often need to call the lua's C API to achieve some features :P
Still not clear about your idea. If you would like to show C API, should should have C code parsed by the CC's parser. Where is you C API declaration? Please give more details.

the C API declarations are in the Lua's header files
for example:

// in lua.h
LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);