Bug #17768 2010-12-04 07:22

jiminy

Parser does not get all symbols in an include

Code Blocks v 10.05
Gentoo 
Include file linux/videodev2.h

A section in this include file lists some #defines in the middle of a structure definition, see below.  All declarations in the include after this point did not make it into the symbol database.  By moving the semicolon up before the #defines, the include  file was able to be fully parsed.

line 457
struct v4l2_jpegcompression {
	int quality;

	int  APPn;              /* Number of APP segment to be written,
				 * must be 0..15 */
	int  APP_len;           /* Length of data in JPEG APPn segment */
	char APP_data[60];      /* Data in the JPEG APPn segment. */

	int  COM_len;           /* Length of data in JPEG COM segment */
	char COM_data[60];      /* Data in JPEG COM segment */

	__u32 jpeg_markers;     /* Which markers should go into the JPEG
				 * output. Unless you exactly know what
				 * you do, leave them untouched.
				 * Inluding less markers will make the
				 * resulting code smaller, but there will
				 * be fewer aplications which can read it.
				 * The presence of the APP and COM marker
				 * is influenced by APP_len and COM_len
				 * ONLY, not by this property! */

#define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */
#define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */
#define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */
#define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */
#define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will
					* allways use APP0 */

};
Category
Plugin::CodeCompletion
Group
 
Status
Open
Close date
 
Assigned to
ollydbg
jiminy 2010-12-04 07:24

I meant closing bracket and semicolon :)

ollydbg 2010-12-07 09:41

I would like to check this bug. did you mean that the member variables of the struct v4l2_jpegcompression was missing after several

#define

??

Am I right?

ollydbg

jiminy 2010-12-08 03:09

ollydbg

No, the v4l2_jpegcompression was fine. But every symbol declared after it in the include was missing, until I moved the #defines out of the struct. However, I was unable to recreate the behavior tonight, even after moving the defines back into the struct.

jiminy 2010-12-23 06:58

I've been playing with this some more, and the issue is not whether the #defines are inside the structure or not. The original include file looks like this at the end of v4l2_jpegcompression:

#define V4L2_JPEG_MARKER_APP (1<<7) /* App segment, driver will

* allways use APP0 */

};

If I insert a space after the last "*/", or insert a line before the last "};", then everything is fine.

I confirmed this with the following code:

struct test {

int a;

int b;

#define something 1 /* something */

};

struct test2 {

int c;

int d;

};

int main()

{

struct test t;

struct test2 t2;

t.

}

the code completion for t in this case will include structure test2 as well as function main as members of structure test. If I put a space after the comment or a blank line after it, everything is ok.

ollydbg 2011-01-12 01:06

@jiminy

It seems I did not receive any notification when you reply here, so my comment was a bit late.

If you still use 10.05 version, can you try the latest nightly build version. because the CodeCompletion has improved a lot after the 10.05.

and if the problem still exist, I will check it and try to fix it.

It would be better that you can wrote a post in the Codeblocks' forum discussion.

asmwarrior

ollydbg @ Codeblocks' forum

ollydbg 2011-01-12 01:12

@jiminy

It seems I did not receive any notification when you reply here, so my comment was a bit late.

If you still use 10.05 version, can you try the latest nightly build version. because the CodeCompletion has improved a lot after the 10.05.

and if the problem still exist, I will check it and try to fix it.

It would be better that you can wrote a post in the Codeblocks' forum discussion.

asmwarrior

ollydbg @ Codeblocks' forum