Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Visual Assist
 Feature Requests
 Parsing Excluding List

You must be registered to post a reply.
Click here to register.

Screensize:
UserName:
Password:
Format: BoldItalicizeUnderlineStrikethrough Align leftCenterAlign right Insert horizontal ruleUpload and insert imageInsert hyperlinkInsert email addressInsert codeInsert quoted textInsert listInsert Emoji
   
Message:

Forum code is on.
Html is off.

 
Check to subscribe to this topic.
   

T O P I C    R E V I E W
netics Posted - Apr 05 2007 : 8:37:20 PM

Allthough latest VAX freezed while parsing Function.h of Loki library, I don't want to use veeeery old 14XX build of VAX.

How about adding list of Excluding Parsing header/cpp list.

Also, VAX sometimes make PC so slowly almost like freezing when doing Find References of template function.

You may know 'DoNotStepInto' feature of Autoexp.dat.

As same, How about adding "Do Not parse this class/function" list??

4   L A T E S T    R E P L I E S    (Newest First)
netics Posted - Apr 15 2007 : 8:22:33 PM
No Problem with 1553~!!
feline Posted - Apr 12 2007 : 10:59:16 AM
Can you try this version and see if it makes any difference:

http://www.wholetomato.com/downloads/VA_X_Setup1552.exe

If this build passes internal testing it will be posted in the next couple of days. Using this version, and simply copy / pasting your code into a header file here I am not seeing any problems.
netics Posted - Apr 10 2007 : 8:10:36 PM
when i open the file and cursor is in the template TypeContainerImpl~~~ or TypeContainer,

the IDE become freezed.


this code should be compiled with Loki.



and VA_IGNORE_THIS_START tricks don't work.







////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	ListAfter
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
template<typename TList, typename T>
struct ListAfter
{
	typedef typename TList::Tail						NextTList;
	typedef typename ListAfter<NextTList, T>::Type		Type;
};
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
template<typename T, typename Tail>
struct ListAfter< Typelist<T, Tail>, T>
{
	typedef Typelist<T, Tail>							Type;
};
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
template<typename T>
struct ListAfter<NullType, T>
{
	typedef NullType									Type;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	TypeContainer
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
template< template <class> class T, typename TList >
struct TypeContainerImpl : public TypeContainerImpl<T, typename TList::Tail>
{
	typedef typename TList::Head				TemplateArgType;
	typedef typename TList::Tail				NextTList;
	typedef T<TemplateArgType>					Instance;
	typedef TypeContainerImpl<T, NextTList>		Parent;

	Instance					data;

};
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
template< template <class> class T >
struct TypeContainerImpl<T, NullType>
{
};
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
template<template <class> class T, typename Seq>
struct TypeContainer : public TypeContainerImpl<T, typename Seq::Type>
{
	typedef typename Seq::Type					AllList;
	typedef TypeContainerImpl<T, AllList>		ImplType;

	template<typename U>
	struct TypeAccesor
	{
		typedef typename ListAfter<AllList, U>::Type	List;
		typedef TypeContainerImpl<T, List>				Type;
	};
	template<unsigned int Index>
	struct ToType
	{
		typedef typename TL::TypeAt<AllList, Index>::Result		Type;
	};

	//-----------------------------------------------------------------------------------------------------------------------------------------------
	template<typename U>
	T<U>&			Get()				{ return static_cast< typename TypeAccesor<U>::Type* >(const_cast<TypeContainer*>(this))->data; }
	template<typename U>
	const T<U>&		Get() const			{ return static_cast< const typename TypeAccesor<U>::Type* >(this)->data; }
	//-----------------------------------------------------------------------------------------------------------------------------------------------
	template<unsigned int Index>
	T< typename ToType<Index>::Type >&			Get()			{ return Get< typename ToType<Index>::Type >(); }
	template<unsigned int Index>
	const T< typename ToType<Index>::Type >&	Get()			{ return Get< typename ToType<Index>::Type >(); }
	
	//-----------------------------------------------------------------------------------------------------------------------------------------------
	template<typename U>
	operator T<U>&()					{ return Get<U>(); }
	template<typename U>
	operator const T<U>&()				{ return Get<U>(); }
};



//////////////////////////////////////
// Instantiate like this

typedef Loki::Seq<int, doulbe, float>       Instances;
typedef TypeContainer<Some_Template_Type, Instances>    Container;

Container cont;


feline Posted - Apr 06 2007 : 08:45:06 AM
The problem with function.h should be fixed in the next build.

When we need to work around specific problems sometimes this can be done by editing VA's stdafx.h file

http://docs.wholetomato.com?W302

To produce "do not parse" it is possible to wrap the function / code in #define statements, like this:

#define VA_IGNORE_THIS_START
#define VA_IGNORE_THIS_END

VA_IGNORE_THIS_START

void problemFunction()
{
}

VA_IGNORE_THIS_END


and then add:

#define VA_IGNORE_THIS_START /*
#define VA_IGNORE_THIS_END */


to VA's stdafx.h file.

Ideally we try to fix problems with VA's parser, but this sort of solution can work well as a work around.

Do you have a simple code example for this find references problem? Using the extremely simple test:

template<typename T>
T *rememberAndReturn(T *pValue)
{
	static T *pStored;

	if(0 != pValue)
		pStored = pValue;

	return pStored;
}

static void callTemplateFn()
{
	int *pn;
	rememberAndReturn(pn);
}


I am not seeing any problems when using Find References on "rememberAndReturn"

© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000