2012-08-08 3 views
0

[주의] 질문을 편집하려고합니다. 이것이 맞으면 받아들이십시오. 원래의 질문은 매우 모호합니다.3 레벨 구조 검색 (양방향)

할일이 있습니다. 사용자는 함수 이름과 선택적으로 클래스 및 파일의 이름을 입력 할 수 있습니다. 체크리스트에 따라이 함수 이름에 대해 몇 가지 검사를 수행해야합니다. 그러나 문제는 파일이 아닌 검사 목록의 검사가 설명된다는 것입니다. 즉, 각 파일에 나타나는 모든 클래스와 함수에 대한 검사를 설명합니다. 그래서, 사용자가 함수 이름을 입력하면, 나는 그것을 올바른 파일에 매핑하고 정확한 수표를 찾아야합니다.

일부 효율적인 방법을 제안 해 주시겠습니까?

는 편집 :은 (내가 할 수있는 한 간단하게, 미안 내 영어 최고의 아니다)

것은 이제 우리가 응용 프로그램 (스크립트가 있다고 가정 해 봅시다)) 우리가 프로파일 할 일 (그래 우리?! 프로파일 러! : D)와 같은 것을 만들지 만 모든 것을 검사하지 않고 단지 몇 가지 기능 만 검사합니다. 그러나 문제가 있습니다. 우리 프로파일 러의 사용자는 약간 이상한 방식으로 프로파일 목록에 함수 목록을 제공하려고합니다.

- 기능의 이름 - 모든 파일 또는 모든 클래스 또는 표준과 같은 이름이 될 수있는 모든 함수 (또는 메소드)를 프로파일 링해야합니다. 라이브러리 (이 경우에는 파일 이름이 없습니다)). - 클래스 이름 -이 클래스의 모든 함수/메소드를 프로파일 링해야하지만 클래스 자체는 거의 모든 파일에있을 수 없습니다 (동일한 이름을 가진 다른 클래스를 가질 수 있습니다) - 파일 이름 - 모든 것을 프로파일 링해야합니다. 이 파일에는 이름이 같은 파일이 거의 없을 수 있습니다 (따라서 모든 함수/메소드를 프로파일 링해야합니다).

위의 모든 조합이므로 클래스 ("Bar"라고 부름)와 함수 ("foo")가 있으면이 함수 "foo"를 "Bar"클래스에서 프로파일 링해야하지만 여전히 클래스는 어떤 파일에도있을 수 있습니다 (몇몇 파일에는 "Bar"클래스가 거의 없을 수 있습니다.) 파일 이름과 함수 이름이있는 경우 파일에 해당 이름이있는 모든 함수 (모든 클래스의 내부 또는 외부에 관계없이)를 프로파일 링해야합니다 이미 (예, 프로파일 자체가 작동) 프로파일에서 실행 기능을 대체했기 때문에,

몇몇 파일이나 몇 가지 클래스가 정말 문제가되지 않습니다. (하지만 여전히이 같은 이름을 가진 몇 개의 파일을 할 수 있습니다)하지만 문제는 함수의 이름을 저장하는 방법 (그리고 클래스와 파일) 그래서 가능한 한 빨리 될 수 있습니다 (메모리는 실제로 빠르지 않아도 상관 없습니다). (즉, 실행 함수는이 함수를 프로파일 링해야한다는 것에 대해 물어 본다. 응답 함수를 제공해야한다.) 함수 이름 (확실히), 클래스 이름 (함수가 클래스의 메소드 인 경우) 및 파일 이름 (함수가 표준 라이브러리가 아닌 경우).

+0

uhhmmm ... 작은 예제가 내 문제를 이해하는 데 도움이 될 것이라고 생각합니다. –

+0

나는 아무 것도 이해하지 못했습니다. –

+0

당신이 무엇을 요구하고 있는지 전혀 모르겠습니다. – acraig5075

답변

0

체크리스트 정보를 저장할 XML 파일을 생성 할 수 있습니다. 로 :

<file name="file1"...> 
    <class name="class1" ...> 
     <func name=" func1" ... /> 
    </class> 
</file> 

당신이 당신의 프로그램을 실행

는 메모리에 XML을 읽고, 각 계층은 객체와 높은 계층 구조 개체는 하위 개체를 포함 구축 할 수 있습니다. 그리고 첫 번째 'string'은 파일 또는 클래스 또는 func의 이름이고 두 번째 'object *'는 xml에 의해 만들어진 객체에 대한 지점입니다.

정보를 얻으면 map :: find를 사용하여 정보를 검색 할 수 있습니다. 'object1'을 찾으면 'object1'과 그 포함 된 객체에 정의 된 메소드를 수행 할 수 있습니다.

+0

질문에 맞게 문장을 의도적으로 선택 했습니까? 이 대답은 매우 모호한 것 같습니다. 예 : '지도 목록'이란 무엇입니까? 지도 또는 목록? '대상을 가리킨다'는 무엇입니까? 포인터라고 했니? – PermanentGuest

+0

지도의 두 번째 요소는 포인터입니다. – aasa

0

모든 파일 -> 클래스 -> 함수를 한 번 살펴보고 함수 이름을 키로, 클래스 및 파일 정보를 값으로 사용하여지도 (해시 -지도)를 만들 수 있습니다.

사용자가 함수 이름 입력 -> 사용자가지도를 검색하여 즉시 파일/클래스 이름을 가져옴 -> 파일 이름에 대한 규칙 목록을 검색하고 규칙을 적용합니다.

+0

사용자가 클래스 이름 (클래스의 모든 함수에 대해 내 작업을 수행해야 함을 의미) 또는 파일 이름 (예 : 파일 및/또는 모든 함수/메소드의 모든 함수와 동일)을 제공하는 경우 작동하지 않습니다. 파일의 모든 클래스에서). – Matthew

+0

클래스 이름에 대해 같은 종류의지도를 만드는 경우 작동합니다 - 파일 이름보다 찾을 수 있습니다. 그리고 클래스에서 함수로 순방향으로 트래버스 할 수 있습니다. 이것은 쉽습니다. 사용자가 파일 이름을 제공하면 내부의 모든 클래스와 함수를 열거하고 작업을 수행 할 수 있습니다. 하나의 파일에 너무 많은 기능이 포함되어 있기 때문에 시간이 오래 걸리지 않습니다. – Steed