[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-886-g558ff91

Stefan Metzmacher metze at samba.org
Fri Aug 7 03:50:38 MDT 2009


The branch, master has been updated
       via  558ff911df1e16e28e3a1efa0849c9083d08c617 (commit)
       via  20a6fb5cdb15b138021076e14c1df8f4ebb06184 (commit)
       via  bfa9624946a35e5645effbb20e02abba2c34a8c2 (commit)
       via  7d7a9210cddd291f86e313554c83affb73dfda52 (commit)
       via  cdfaaed9a87e27b1019cc119be4296f66a389c56 (commit)
       via  282375791297b83806d9d9ed6e47b5408e3da850 (commit)
      from  8e419aab48ace1fe0d075e2a25935e650805a23c (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 558ff911df1e16e28e3a1efa0849c9083d08c617
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 5 13:40:38 2009 +0200

    pidl: parse idl 'pipe' typedefs, but print out a not supported message for now
    
    metze

commit 20a6fb5cdb15b138021076e14c1df8f4ebb06184
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Aug 4 15:00:13 2009 +0200

    pidl: fix formatting in expr.yp
    
    metze

commit bfa9624946a35e5645effbb20e02abba2c34a8c2
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Aug 4 14:59:33 2009 +0200

    pidl: fix formatting in idl.yp
    
    metze

commit 7d7a9210cddd291f86e313554c83affb73dfda52
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 5 13:03:37 2009 +0200

    librpc: fix callers after epmapper.idl changes
    
    metze

commit cdfaaed9a87e27b1019cc119be4296f66a389c56
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 5 13:05:20 2009 +0200

    librpc: rerun 'make idl' after epmapper.idl changes
    
    metze

commit 282375791297b83806d9d9ed6e47b5408e3da850
Author: Stefan Metzmacher <metze at samba.org>
Date:   Wed Aug 5 13:04:59 2009 +0200

    epmapper.idl: avoid usage of 'pipe', this is a reserved word in IDL
    
    We now use 'named_pipe' instead.
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 librpc/gen_ndr/epmapper.h     |    8 +-
 librpc/gen_ndr/ndr_epmapper.c |   26 +-
 librpc/gen_ndr/ndr_epmapper.h |    2 +-
 librpc/idl/epmapper.idl       |    8 +-
 librpc/rpc/binding.c          |   18 +-
 pidl/expr.yp                  |  202 +++--
 pidl/idl.yp                   |  708 +++++++++------
 pidl/lib/Parse/Pidl/Expr.pm   |  116 ++--
 pidl/lib/Parse/Pidl/IDL.pm    | 2137 +++++++++++++++++++++--------------------
 pidl/lib/Parse/Pidl/NDR.pm    |   20 +-
 10 files changed, 1785 insertions(+), 1460 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/epmapper.h b/librpc/gen_ndr/epmapper.h
index ff80fbb..2030e1e 100644
--- a/librpc/gen_ndr/epmapper.h
+++ b/librpc/gen_ndr/epmapper.h
@@ -26,7 +26,7 @@ enum epm_protocol
 	EPM_PROTOCOL_UUID=0x0d,
 	EPM_PROTOCOL_IPX=0x0e,
 	EPM_PROTOCOL_SMB=0x0f,
-	EPM_PROTOCOL_PIPE=0x10,
+	EPM_PROTOCOL_NAMED_PIPE=0x10,
 	EPM_PROTOCOL_NETBIOS=0x11,
 	EPM_PROTOCOL_NETBEUI=0x12,
 	EPM_PROTOCOL_SPX=0x13,
@@ -55,7 +55,7 @@ enum epm_protocol
 #define EPM_PROTOCOL_UUID ( 0x0d )
 #define EPM_PROTOCOL_IPX ( 0x0e )
 #define EPM_PROTOCOL_SMB ( 0x0f )
-#define EPM_PROTOCOL_PIPE ( 0x10 )
+#define EPM_PROTOCOL_NAMED_PIPE ( 0x10 )
 #define EPM_PROTOCOL_NETBIOS ( 0x11 )
 #define EPM_PROTOCOL_NETBEUI ( 0x12 )
 #define EPM_PROTOCOL_SPX ( 0x13 )
@@ -116,7 +116,7 @@ struct epm_rhs_smb {
 	const char * unc;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
 };
 
-struct epm_rhs_pipe {
+struct epm_rhs_named_pipe {
 	const char * path;/* [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
 };
 
@@ -189,7 +189,7 @@ union epm_rhs {
 	struct epm_rhs_uuid uuid;/* [case(EPM_PROTOCOL_UUID)] */
 	struct epm_rhs_ipx ipx;/* [case(EPM_PROTOCOL_IPX)] */
 	struct epm_rhs_smb smb;/* [case(EPM_PROTOCOL_SMB)] */
-	struct epm_rhs_pipe pipe;/* [case(EPM_PROTOCOL_PIPE)] */
+	struct epm_rhs_named_pipe named_pipe;/* [case(EPM_PROTOCOL_NAMED_PIPE)] */
 	struct epm_rhs_netbios netbios;/* [case(EPM_PROTOCOL_NETBIOS)] */
 	struct epm_rhs_netbeui netbeui;/* [case(EPM_PROTOCOL_NETBEUI)] */
 	struct epm_rhs_spx spx;/* [case(EPM_PROTOCOL_SPX)] */
diff --git a/librpc/gen_ndr/ndr_epmapper.c b/librpc/gen_ndr/ndr_epmapper.c
index e39356f..7bcd8dd 100644
--- a/librpc/gen_ndr/ndr_epmapper.c
+++ b/librpc/gen_ndr/ndr_epmapper.c
@@ -35,7 +35,7 @@ _PUBLIC_ void ndr_print_epm_protocol(struct ndr_print *ndr, const char *name, en
 		case EPM_PROTOCOL_UUID: val = "EPM_PROTOCOL_UUID"; break;
 		case EPM_PROTOCOL_IPX: val = "EPM_PROTOCOL_IPX"; break;
 		case EPM_PROTOCOL_SMB: val = "EPM_PROTOCOL_SMB"; break;
-		case EPM_PROTOCOL_PIPE: val = "EPM_PROTOCOL_PIPE"; break;
+		case EPM_PROTOCOL_NAMED_PIPE: val = "EPM_PROTOCOL_NAMED_PIPE"; break;
 		case EPM_PROTOCOL_NETBIOS: val = "EPM_PROTOCOL_NETBIOS"; break;
 		case EPM_PROTOCOL_NETBEUI: val = "EPM_PROTOCOL_NETBEUI"; break;
 		case EPM_PROTOCOL_SPX: val = "EPM_PROTOCOL_SPX"; break;
@@ -391,7 +391,7 @@ _PUBLIC_ void ndr_print_epm_rhs_smb(struct ndr_print *ndr, const char *name, con
 	ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_epm_rhs_pipe(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_pipe *r)
+static enum ndr_err_code ndr_push_epm_rhs_named_pipe(struct ndr_push *ndr, int ndr_flags, const struct epm_rhs_named_pipe *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
@@ -407,7 +407,7 @@ static enum ndr_err_code ndr_push_epm_rhs_pipe(struct ndr_push *ndr, int ndr_fla
 	return NDR_ERR_SUCCESS;
 }
 
-static enum ndr_err_code ndr_pull_epm_rhs_pipe(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_pipe *r)
+static enum ndr_err_code ndr_pull_epm_rhs_named_pipe(struct ndr_pull *ndr, int ndr_flags, struct epm_rhs_named_pipe *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
@@ -423,9 +423,9 @@ static enum ndr_err_code ndr_pull_epm_rhs_pipe(struct ndr_pull *ndr, int ndr_fla
 	return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_epm_rhs_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_pipe *r)
+_PUBLIC_ void ndr_print_epm_rhs_named_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_named_pipe *r)
 {
-	ndr_print_struct(ndr, name, "epm_rhs_pipe");
+	ndr_print_struct(ndr, name, "epm_rhs_named_pipe");
 	ndr->depth++;
 	ndr_print_string(ndr, "path", r->path);
 	ndr->depth--;
@@ -916,8 +916,8 @@ static enum ndr_err_code ndr_push_epm_rhs(struct ndr_push *ndr, int ndr_flags, c
 					NDR_CHECK(ndr_push_epm_rhs_smb(ndr, NDR_SCALARS, &r->smb));
 				break; }
 
-				case EPM_PROTOCOL_PIPE: {
-					NDR_CHECK(ndr_push_epm_rhs_pipe(ndr, NDR_SCALARS, &r->pipe));
+				case EPM_PROTOCOL_NAMED_PIPE: {
+					NDR_CHECK(ndr_push_epm_rhs_named_pipe(ndr, NDR_SCALARS, &r->named_pipe));
 				break; }
 
 				case EPM_PROTOCOL_NETBIOS: {
@@ -1022,7 +1022,7 @@ static enum ndr_err_code ndr_push_epm_rhs(struct ndr_push *ndr, int ndr_flags, c
 				case EPM_PROTOCOL_SMB:
 				break;
 
-				case EPM_PROTOCOL_PIPE:
+				case EPM_PROTOCOL_NAMED_PIPE:
 				break;
 
 				case EPM_PROTOCOL_NETBIOS:
@@ -1131,8 +1131,8 @@ static enum ndr_err_code ndr_pull_epm_rhs(struct ndr_pull *ndr, int ndr_flags, u
 					NDR_CHECK(ndr_pull_epm_rhs_smb(ndr, NDR_SCALARS, &r->smb));
 				break; }
 
-				case EPM_PROTOCOL_PIPE: {
-					NDR_CHECK(ndr_pull_epm_rhs_pipe(ndr, NDR_SCALARS, &r->pipe));
+				case EPM_PROTOCOL_NAMED_PIPE: {
+					NDR_CHECK(ndr_pull_epm_rhs_named_pipe(ndr, NDR_SCALARS, &r->named_pipe));
 				break; }
 
 				case EPM_PROTOCOL_NETBIOS: {
@@ -1236,7 +1236,7 @@ static enum ndr_err_code ndr_pull_epm_rhs(struct ndr_pull *ndr, int ndr_flags, u
 				case EPM_PROTOCOL_SMB:
 				break;
 
-				case EPM_PROTOCOL_PIPE:
+				case EPM_PROTOCOL_NAMED_PIPE:
 				break;
 
 				case EPM_PROTOCOL_NETBIOS:
@@ -1345,8 +1345,8 @@ _PUBLIC_ void ndr_print_epm_rhs(struct ndr_print *ndr, const char *name, const u
 				ndr_print_epm_rhs_smb(ndr, "smb", &r->smb);
 			break;
 
-			case EPM_PROTOCOL_PIPE:
-				ndr_print_epm_rhs_pipe(ndr, "pipe", &r->pipe);
+			case EPM_PROTOCOL_NAMED_PIPE:
+				ndr_print_epm_rhs_named_pipe(ndr, "named_pipe", &r->named_pipe);
 			break;
 
 			case EPM_PROTOCOL_NETBIOS:
diff --git a/librpc/gen_ndr/ndr_epmapper.h b/librpc/gen_ndr/ndr_epmapper.h
index 797c68d..8053d07 100644
--- a/librpc/gen_ndr/ndr_epmapper.h
+++ b/librpc/gen_ndr/ndr_epmapper.h
@@ -40,7 +40,7 @@ void ndr_print_epm_rhs_ncacn(struct ndr_print *ndr, const char *name, const stru
 void ndr_print_epm_rhs_uuid(struct ndr_print *ndr, const char *name, const struct epm_rhs_uuid *r);
 void ndr_print_epm_rhs_ipx(struct ndr_print *ndr, const char *name, const struct epm_rhs_ipx *r);
 void ndr_print_epm_rhs_smb(struct ndr_print *ndr, const char *name, const struct epm_rhs_smb *r);
-void ndr_print_epm_rhs_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_pipe *r);
+void ndr_print_epm_rhs_named_pipe(struct ndr_print *ndr, const char *name, const struct epm_rhs_named_pipe *r);
 void ndr_print_epm_rhs_netbios(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbios *r);
 void ndr_print_epm_rhs_netbeui(struct ndr_print *ndr, const char *name, const struct epm_rhs_netbeui *r);
 void ndr_print_epm_rhs_spx(struct ndr_print *ndr, const char *name, const struct epm_rhs_spx *r);
diff --git a/librpc/idl/epmapper.idl b/librpc/idl/epmapper.idl
index 0a110a1..3d91138 100644
--- a/librpc/idl/epmapper.idl
+++ b/librpc/idl/epmapper.idl
@@ -52,7 +52,7 @@ interface epmapper
 		EPM_PROTOCOL_UUID 			= 0x0d,
 		EPM_PROTOCOL_IPX  			= 0x0e,
 		EPM_PROTOCOL_SMB     		= 0x0f,
-		EPM_PROTOCOL_PIPE    		= 0x10,
+		EPM_PROTOCOL_NAMED_PIPE		= 0x10,
 		EPM_PROTOCOL_NETBIOS 		= 0x11,
 		EPM_PROTOCOL_NETBEUI   		= 0x12,
 		EPM_PROTOCOL_SPX     		= 0x13,
@@ -113,8 +113,8 @@ interface epmapper
 	} epm_rhs_smb;
 
 	typedef struct {
-		astring path;	
-	} epm_rhs_pipe;
+		astring path;
+	} epm_rhs_named_pipe;
 
 	typedef struct {
 		astring name;
@@ -178,7 +178,7 @@ interface epmapper
 		[case(EPM_PROTOCOL_UUID)] epm_rhs_uuid uuid;
 		[case(EPM_PROTOCOL_IPX)] epm_rhs_ipx ipx;
 		[case(EPM_PROTOCOL_SMB)] epm_rhs_smb smb;
-		[case(EPM_PROTOCOL_PIPE)] epm_rhs_pipe pipe;
+		[case(EPM_PROTOCOL_NAMED_PIPE)] epm_rhs_named_pipe named_pipe;
 		[case(EPM_PROTOCOL_NETBIOS)] epm_rhs_netbios netbios;
 		[case(EPM_PROTOCOL_NETBEUI)] epm_rhs_netbeui netbeui;
 		[case(EPM_PROTOCOL_SPX)] epm_rhs_spx spx;
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c
index ba99239..652927b 100644
--- a/librpc/rpc/binding.c
+++ b/librpc/rpc/binding.c
@@ -45,7 +45,7 @@ static const struct {
 	{ "ncadg_ip_udp", NCACN_IP_UDP, 3, 
 		{ EPM_PROTOCOL_NCADG, EPM_PROTOCOL_UDP, EPM_PROTOCOL_IP } },
 	{ "ncalrpc", NCALRPC, 2, 
-		{ EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_PIPE } },
+		{ EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_NAMED_PIPE } },
 	{ "ncacn_unix_stream", NCACN_UNIX_STREAM, 2, 
 		{ EPM_PROTOCOL_NCACN, EPM_PROTOCOL_UNIX_DS } },
 	{ "ncadg_unix_dgram", NCADG_UNIX_DGRAM, 2, 
@@ -130,8 +130,8 @@ const char *epm_floor_string(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor)
 		case EPM_PROTOCOL_IP:
 			return talloc_asprintf(mem_ctx, "IP:%s", epm_floor->rhs.ip.ipaddr);
 
-		case EPM_PROTOCOL_PIPE:
-			return talloc_asprintf(mem_ctx, "PIPE:%s", epm_floor->rhs.pipe.path);
+		case EPM_PROTOCOL_NAMED_PIPE:
+			return talloc_asprintf(mem_ctx, "NAMED-PIPE:%s", epm_floor->rhs.named_pipe.path);
 
 		case EPM_PROTOCOL_SMB:
 			return talloc_asprintf(mem_ctx, "SMB:%s", epm_floor->rhs.smb.unc);
@@ -440,9 +440,9 @@ const char *dcerpc_floor_get_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm
 		if (strlen(epm_floor->rhs.smb.unc) == 0) return NULL;
 		return talloc_strdup(mem_ctx, epm_floor->rhs.smb.unc);
 
-	case EPM_PROTOCOL_PIPE:
-		if (strlen(epm_floor->rhs.pipe.path) == 0) return NULL;
-		return talloc_strdup(mem_ctx, epm_floor->rhs.pipe.path);
+	case EPM_PROTOCOL_NAMED_PIPE:
+		if (strlen(epm_floor->rhs.named_pipe.path) == 0) return NULL;
+		return talloc_strdup(mem_ctx, epm_floor->rhs.named_pipe.path);
 
 	case EPM_PROTOCOL_NETBIOS:
 		if (strlen(epm_floor->rhs.netbios.name) == 0) return NULL;
@@ -510,9 +510,9 @@ static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx,
 		NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.smb.unc);
 		return NT_STATUS_OK;
 
-	case EPM_PROTOCOL_PIPE:
-		epm_floor->rhs.pipe.path = talloc_strdup(mem_ctx, data);
-		NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.pipe.path);
+	case EPM_PROTOCOL_NAMED_PIPE:
+		epm_floor->rhs.named_pipe.path = talloc_strdup(mem_ctx, data);
+		NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.named_pipe.path);
 		return NT_STATUS_OK;
 
 	case EPM_PROTOCOL_NETBIOS:
diff --git a/pidl/expr.yp b/pidl/expr.yp
index a807487..ef8eee3 100644
--- a/pidl/expr.yp
+++ b/pidl/expr.yp
@@ -2,70 +2,120 @@
 # Copyright (C) 2006 Jelmer Vernooij <jelmer at samba.org>
 # Published under the GNU GPL
 # 
-%left   '->'
-%right  '!' '~' 
-%left   '*' '/' '%'
-%left   '+' '-'
+%left	'->'
+%right	'!' '~'
+%left	'*' '/' '%'
+%left	'+' '-'
 %left	'<<' '>>'
-%left   '>' '<'
-%left   '==' '!=' 
-%left   '&'
-%left   '|'
-%left   '&&'
-%left   '||'
+%left	'>' '<'
+%left	'==' '!='
+%left	'&'
+%left	'|'
+%left	'&&'
+%left	'||'
 %left	'?' ':'
-%left   NEG DEREF ADDROF INV
-%left 	'.'
+%left	NEG DEREF ADDROF INV
+%left	'.'
 
 %%
-exp:        NUM
-		|	TEXT				{ "\"$_[1]\"" }
-		|	func
-		|   var
-        |   '~' exp %prec INV   { "~$_[2]" }
-        |   exp '+' exp         { "$_[1] + $_[3]" }
-        |   exp '-' exp         { "$_[1] - $_[3]" }
-        |   exp '*' exp         { "$_[1] * $_[3]" }
-        |   exp '%' exp         { "$_[1] % $_[3]" }
-        |   exp '<' exp         { "$_[1] < $_[3]" }
-        |   exp '>' exp         { "$_[1] > $_[3]" }
-        |   exp '|' exp         { "$_[1] | $_[3]" }
-        |   exp '==' exp         { "$_[1] == $_[3]" }
-        |   exp '<=' exp         { "$_[1] <= $_[3]" }
-        |   exp '=>' exp         { "$_[1] => $_[3]" }
-        |   exp '<<' exp         { "$_[1] << $_[3]" }
-        |   exp '>>' exp         { "$_[1] >> $_[3]" }
-        |   exp '!=' exp         { "$_[1] != $_[3]" }
-        |   exp '||' exp        { "$_[1] || $_[3]" }
-        |   exp '&&' exp        { "$_[1] && $_[3]" }
-        |   exp '&' exp         { "$_[1] & $_[3]" }
-		|	exp '?' exp ':' exp { "$_[1]?$_[3]:$_[5]" }
-		|	'~' exp				{ "~$_[1]" }
-		|	'!' exp				{ "not $_[1]" }
-        |   exp '/' exp         { "$_[1] / $_[3]" }
-        |   '-' exp %prec NEG   { "-$_[2]" }
-        |   '&' exp %prec ADDROF { "&$_[2]" }
-        |   exp '^' exp         { "$_[1]^$_[3]" }
-        |   '(' exp ')'         { "($_[2])" }
+exp:
+	NUM
+	|
+	TEXT                { "\"$_[1]\"" }
+	|
+	func
+	|
+	var
+	|
+	'~' exp %prec INV   { "~$_[2]" }
+	|
+	exp '+' exp         { "$_[1] + $_[3]" }
+	|
+	exp '-' exp         { "$_[1] - $_[3]" }
+	|
+	exp '*' exp         { "$_[1] * $_[3]" }
+	|
+	exp '%' exp         { "$_[1] % $_[3]" }
+	|
+	exp '<' exp         { "$_[1] < $_[3]" }
+	|
+	exp '>' exp         { "$_[1] > $_[3]" }
+	|
+	exp '|' exp         { "$_[1] | $_[3]" }
+	|
+	exp '==' exp        { "$_[1] == $_[3]" }
+	|
+	exp '<=' exp        { "$_[1] <= $_[3]" }
+	|
+	exp '=>' exp        { "$_[1] => $_[3]" }
+	|
+	exp '<<' exp        { "$_[1] << $_[3]" }
+	|
+	exp '>>' exp        { "$_[1] >> $_[3]" }
+	|
+	exp '!=' exp        { "$_[1] != $_[3]" }
+	|
+	exp '||' exp        { "$_[1] || $_[3]" }
+	|
+	exp '&&' exp        { "$_[1] && $_[3]" }
+	|
+	exp '&' exp         { "$_[1] & $_[3]" }
+	|
+	exp '?' exp ':' exp { "$_[1]?$_[3]:$_[5]" }
+	|
+	'~' exp             { "~$_[1]" }
+	|
+	'!' exp             { "not $_[1]" }
+	|
+	exp '/' exp         { "$_[1] / $_[3]" }
+	|
+	'-' exp %prec NEG   { "-$_[2]" }
+	|
+	'&' exp %prec ADDROF { "&$_[2]" }
+	|
+	exp '^' exp         { "$_[1]^$_[3]" }
+	|
+	'(' exp ')'         { "($_[2])" }
 ;
 
-possible_pointer: 
-            VAR                 { $_[0]->_Lookup($_[1]) }
-        |   '*' possible_pointer %prec DEREF { $_[0]->_Dereference($_[2]); "*$_[2]" }
-		;
+possible_pointer:
+	VAR                              { $_[0]->_Lookup($_[1]) }
+	|
+	'*' possible_pointer %prec DEREF { $_[0]->_Dereference($_[2]); "*$_[2]" }
+;
+
+var:
+	possible_pointer    { $_[0]->_Use($_[1]) }
+	|
+	var '.'	VAR         { $_[0]->_Use("$_[1].$_[3]") }
+	|
+	'(' var ')'         { "($_[2])" }
+	|
+	var '->' VAR        { $_[0]->_Use("*$_[1]"); $_[1]."->".$_[3] }
+;
+
+
+func:
+	VAR '(' opt_args ')' { "$_[1]($_[3])" }
+;
 
-var: 	possible_pointer        { $_[0]->_Use($_[1]) }
-		|	var '.'	VAR			{ $_[0]->_Use("$_[1].$_[3]") }
-		|   '(' var ')'         { "($_[2])" }
-		|	var '->' VAR 		{ $_[0]->_Use("*$_[1]"); $_[1]."->".$_[3] }
+opt_args:
+	#empty
+	{ "" }
+	|
+	args
 ;
 
+exp_or_possible_pointer:
+	exp
+	|
+	possible_pointer
+;
 
-func: VAR '(' opt_args ')' { "$_[1]($_[3])" };
-opt_args: { "" } | args;
-exp_or_possible_pointer: exp | possible_pointer;
-args: exp_or_possible_pointer 
-    | exp_or_possible_pointer ',' args { "$_[1], $_[3]" }
+args:
+	exp_or_possible_pointer
+	|
+	exp_or_possible_pointer ',' args { "$_[1], $_[3]" }
 ;
 
 %%
@@ -73,22 +123,22 @@ args: exp_or_possible_pointer
 package Parse::Pidl::Expr;
 
 sub _Lexer {
-    my($parser)=shift;
+	my($parser)=shift;
 
-    $parser->YYData->{INPUT}=~s/^[ \t]//;
+	$parser->YYData->{INPUT}=~s/^[ \t]//;
 
-    for ($parser->YYData->{INPUT}) {
-        if (s/^(0x[0-9A-Fa-f]+)//) {
+	for ($parser->YYData->{INPUT}) {
+		if (s/^(0x[0-9A-Fa-f]+)//) {
 			$parser->YYData->{LAST_TOKEN} = $1;
-            return('NUM',$1);
+			return('NUM',$1);
 		}
-        if (s/^([0-9]+(?:\.[0-9]+)?)//) {
+		if (s/^([0-9]+(?:\.[0-9]+)?)//) {
 			$parser->YYData->{LAST_TOKEN} = $1;
-            return('NUM',$1);
+			return('NUM',$1);
 		}
-        if (s/^([A-Za-z_][A-Za-z0-9_]*)//) {
+		if (s/^([A-Za-z_][A-Za-z0-9_]*)//) {
 			$parser->YYData->{LAST_TOKEN} = $1;
-        	return('VAR',$1);
+			return('VAR',$1);
 		}
 		if (s/^\"(.*?)\"//) {
 			$parser->YYData->{LAST_TOKEN} = $1;
@@ -96,13 +146,13 @@ sub _Lexer {
 		}
 		if (s/^(==|!=|<=|>=|->|\|\||<<|>>|&&)//s) {
 			$parser->YYData->{LAST_TOKEN} = $1;
-            return($1,$1);
+			return($1,$1);
 		}
-        if (s/^(.)//s) {
+		if (s/^(.)//s) {
 			$parser->YYData->{LAST_TOKEN} = $1;
-            return($1,$1);
+			return($1,$1);
 		}
-    }
+	}
 }
 
 sub _Use($$)
@@ -139,12 +189,14 @@ sub _Error($)
 }
 
 sub Run {
-    my($self, $data, $error, $lookup, $deref, $use) = @_;
-    $self->YYData->{FULL_INPUT} = $data;
-    $self->YYData->{INPUT} = $data;
-    $self->YYData->{LOOKUP} = $lookup;
-    $self->YYData->{DEREFERENCE} = $deref;
-    $self->YYData->{ERROR} = $error;
-    $self->YYData->{USE} = $use;
-    return $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error);
+	my($self, $data, $error, $lookup, $deref, $use) = @_;
+
+	$self->YYData->{FULL_INPUT} = $data;
+	$self->YYData->{INPUT} = $data;
+	$self->YYData->{LOOKUP} = $lookup;
+	$self->YYData->{DEREFERENCE} = $deref;
+	$self->YYData->{ERROR} = $error;
+	$self->YYData->{USE} = $use;
+
+	return $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error);
 }
diff --git a/pidl/idl.yp b/pidl/idl.yp
index d557590..dc8e293 100644
--- a/pidl/idl.yp
+++ b/pidl/idl.yp
@@ -16,119 +16,148 @@
 %%
 idl: 
 	#empty  { {} }
-	| idl interface { push(@{$_[1]}, $_[2]); $_[1] }
-	| idl coclass { push(@{$_[1]}, $_[2]); $_[1] }
-	| idl import { push(@{$_[1]}, $_[2]); $_[1] }
-	| idl include { push(@{$_[1]}, $_[2]); $_[1] }
-	| idl importlib { push(@{$_[1]}, $_[2]); $_[1] }
-	| idl cpp_quote { push(@{$_[1]}, $_[2]); $_[1] }
-;
-
-import: 'import' commalist ';' {{
-			"TYPE" => "IMPORT", 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list